From patchwork Wed Jan 6 23:39:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hannes Frederic Sowa X-Patchwork-Id: 564140 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 54FE9140556 for ; Thu, 7 Jan 2016 10:40:08 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=stressinduktion.org header.i=@stressinduktion.org header.b=pbpH754Y; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.b=VuC5xqJO; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752735AbcAFXkB (ORCPT ); Wed, 6 Jan 2016 18:40:01 -0500 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:52394 "EHLO out5-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752709AbcAFXju (ORCPT ); Wed, 6 Jan 2016 18:39:50 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 3CCEC20566 for ; Wed, 6 Jan 2016 18:39:50 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute1.internal (MEProxy); Wed, 06 Jan 2016 18:39:50 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= stressinduktion.org; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=xm8Gr fC5WcMp7+J00hPCEqMxvvU=; b=pbpH754YzM8mviLWSJd9pRhVYYOAacOL12C/b cUTveaKV4K7NifkxOmiWa3MkKMD65TsHuMypXuUQtLzScOJRSFtxJdNMFC5gxmuJ CCy0RSE+KbgzSE311Bftrjh/Cynn4n1DTtXQl/kBDxZjGBFag1vLQvMwNGExZkAc DDu8yo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=xm8G rfC5WcMp7+J00hPCEqMxvvU=; b=VuC5xqJO5Fly8EUB/gdX2BZYYEyK7yJFZDja 3RqasfFgzmfIKPBp5bMzSw9j/GS9I248YoXtuVrMxrkpKrWgyrmeuA/0eJqnXtfl MN1yT/qotpA6vuBkzah31hTuF2IQ5JjKV6u0y6yiv7gJYrK4sLRxffqJcsOGlHtj FDo0NzA= X-Sasl-enc: JzJAbaEhEin7ioEk5YHFXJM1B86zT57bFLGPFaDWaYwy 1452123589 Received: from z.localhost.localdomain (unknown [213.55.184.180]) by mail.messagingengine.com (Postfix) with ESMTPA id 3F847C00017; Wed, 6 Jan 2016 18:39:49 -0500 (EST) From: Hannes Frederic Sowa To: netdev@vger.kernel.org Cc: jesse@kernel.org Subject: [PATCH net-next v3 7/8] vxlan: break dependency to network drivers Date: Thu, 7 Jan 2016 00:39:30 +0100 Message-Id: <1452123571-19140-8-git-send-email-hannes@stressinduktion.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1452123571-19140-1-git-send-email-hannes@stressinduktion.org> References: <1452123571-19140-1-git-send-email-hannes@stressinduktion.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Hannes Frederic Sowa --- drivers/net/vxlan.c | 17 +++++++++++------ include/net/vxlan.h | 5 +---- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index fecf7b6c732e96..10f1304d58e1ea 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -2468,7 +2468,7 @@ static struct device_type vxlan_type = { * supply the listening VXLAN udp ports. Callers are expected * to implement the ndo_add_vxlan_port. */ -void vxlan_get_rx_port(struct net_device *dev) +static void vxlan_notify_refresh_netdev(struct net_device *dev) { struct vxlan_sock *vs; struct net *net = dev_net(dev); @@ -2488,7 +2488,6 @@ void vxlan_get_rx_port(struct net_device *dev) } spin_unlock(&vn->sock_lock); } -EXPORT_SYMBOL_GPL(vxlan_get_rx_port); /* Initialize the device structure. */ static void vxlan_setup(struct net_device *dev) @@ -3164,20 +3163,26 @@ static void vxlan_handle_lowerdev_unregister(struct vxlan_net *vn, unregister_netdevice_many(&list_kill); } -static int vxlan_lowerdev_event(struct notifier_block *unused, - unsigned long event, void *ptr) +static int vxlan_notifier(struct notifier_block *unused, + unsigned long event, void *ptr) { struct net_device *dev = netdev_notifier_info_to_dev(ptr); struct vxlan_net *vn = net_generic(dev_net(dev), vxlan_net_id); - if (event == NETDEV_UNREGISTER) + switch (event) { + case NETDEV_REFRESH_OFFLOADS: + vxlan_notify_refresh_netdev(dev); + break; + case NETDEV_UNREGISTER: vxlan_handle_lowerdev_unregister(vn, dev); + break; + } return NOTIFY_DONE; } static struct notifier_block vxlan_notifier_block __read_mostly = { - .notifier_call = vxlan_lowerdev_event, + .notifier_call = vxlan_notifier, }; static __net_init int vxlan_init_net(struct net *net) diff --git a/include/net/vxlan.h b/include/net/vxlan.h index 0fb86442544b26..48d0450160c91f 100644 --- a/include/net/vxlan.h +++ b/include/net/vxlan.h @@ -242,13 +242,10 @@ static inline netdev_features_t vxlan_features_check(struct sk_buff *skb, /* IPv6 header + UDP + VXLAN + Ethernet header */ #define VXLAN6_HEADROOM (40 + 8 + 8 + 14) -#if IS_ENABLED(CONFIG_VXLAN) -void vxlan_get_rx_port(struct net_device *netdev); -#else static inline void vxlan_get_rx_port(struct net_device *netdev) { + call_netdevice_notifiers(NETDEV_REFRESH_OFFLOADS, netdev); } -#endif static inline unsigned short vxlan_get_sk_family(struct vxlan_sock *vs) {