Patchwork bridge netpoll support: mismatch between net core and bridge headers

login
register
mail settings
Submitter David Miller
Date Dec. 2, 2010, 12:33 a.m.
Message ID <20101201.163319.193705748.davem@davemloft.net>
Download mbox | patch
Permalink /patch/73920/
State RFC
Delegated to: David Miller
Headers show

Comments

David Miller - Dec. 2, 2010, 12:33 a.m.
From: Mike Frysinger <vapier.adi@gmail.com>
Date: Wed, 1 Dec 2010 16:53:31 -0500

> can you post a patch i can try in my randconfig tree ?

Attached.  Also please provide one of the failing ".config" files,
and please test if simply going "make oldconfig" unbreaks things.
It may be that randconfig allows configurations that the config
system normally does not allow.

From 2212481a102ab53f485ddf76cb1be21e4ace5b7e Mon Sep 17 00:00:00 2001
From: David S. Miller <davem@davemloft.net>
Date: Wed, 1 Dec 2010 11:28:48 -0800
Subject: [PATCH] bridge: Fix randconfig builds.

Currently it is possible to turn on NET_POLL_CONTROLLER
without NETPOLL.

The bridging netpoll support code doesn't make any real
sense unless both options are enabled because the netdev's
->npinfo has to be present for the code to operate properly.

So for now just require that both config options are enabled.

Longer term it's probably a good idea to just get rid of
NET_POLL_CONTROLLER and have everything hinge upon just the
NETPOLL option.

Reported-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
 net/bridge/br_device.c  |    4 ++--
 net/bridge/br_private.h |    4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)
Mike Frysinger - Dec. 2, 2010, 8:29 a.m.
On Wed, Dec 1, 2010 at 19:33, David Miller wrote:
> Attached.  Also please provide one of the failing ".config" files,
> and please test if simply going "make oldconfig" unbreaks things.
> It may be that randconfig allows configurations that the config
> system normally does not allow.

hrm, so your patch does fix things.  the downside is that it might be
caused by kgdboe (which isnt in mainline yet).  that's the only
randconfig i can find so far to cause the issue.
-mike
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Dec. 2, 2010, 5:51 p.m.
From: Mike Frysinger <vapier.adi@gmail.com>
Date: Thu, 2 Dec 2010 03:29:17 -0500

> On Wed, Dec 1, 2010 at 19:33, David Miller wrote:
>> Attached.  Also please provide one of the failing ".config" files,
>> and please test if simply going "make oldconfig" unbreaks things.
>> It may be that randconfig allows configurations that the config
>> system normally does not allow.
> 
> hrm, so your patch does fix things.  the downside is that it might be
> caused by kgdboe (which isnt in mainline yet).  that's the only
> randconfig i can find so far to cause the issue.

If that's the case you just need to check and make sure that kgdboe
handles dependencies properly in it's Kconfig changes.

I suspect that simply adding kgdboe as a new "or" case to the
"def_bool" statement of NETPOLL in driver/net/Kconfig will fix the
problem.

If kgdboe is using "select" to handle these dependencies, that's the
bug.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mike Frysinger - Dec. 2, 2010, 9:57 p.m.
On Thu, Dec 2, 2010 at 12:51, David Miller wrote:
> From: Mike Frysinger <vapier.adi@gmail.com>
>> On Wed, Dec 1, 2010 at 19:33, David Miller wrote:
>>> Attached.  Also please provide one of the failing ".config" files,
>>> and please test if simply going "make oldconfig" unbreaks things.
>>> It may be that randconfig allows configurations that the config
>>> system normally does not allow.
>>
>> hrm, so your patch does fix things.  the downside is that it might be
>> caused by kgdboe (which isnt in mainline yet).  that's the only
>> randconfig i can find so far to cause the issue.
>
> If that's the case you just need to check and make sure that kgdboe
> handles dependencies properly in it's Kconfig changes.
>
> I suspect that simply adding kgdboe as a new "or" case to the
> "def_bool" statement of NETPOLL in driver/net/Kconfig will fix the
> problem.
>
> If kgdboe is using "select" to handle these dependencies, that's the
> bug.

it is using select to enable reverse depends.  i'll look at sending a
fix as you suggest to the kgdb devs.  thanks !
-mike
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index 17cb0b6..96ecb02 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -217,7 +217,7 @@  static int br_set_flags(struct net_device *netdev, u32 data)
 	return ethtool_op_set_flags(netdev, data, ETH_FLAG_TXVLAN);
 }
 
-#ifdef CONFIG_NET_POLL_CONTROLLER
+#if defined(CONFIG_NETPOLL) && defined(CONFIG_NET_POLL_CONTROLLER)
 static void br_poll_controller(struct net_device *br_dev)
 {
 }
@@ -321,7 +321,7 @@  static const struct net_device_ops br_netdev_ops = {
 	.ndo_set_multicast_list	 = br_dev_set_multicast_list,
 	.ndo_change_mtu		 = br_change_mtu,
 	.ndo_do_ioctl		 = br_dev_ioctl,
-#ifdef CONFIG_NET_POLL_CONTROLLER
+#if defined(CONFIG_NETPOLL) && defined(CONFIG_NET_POLL_CONTROLLER)
 	.ndo_netpoll_setup	 = br_netpoll_setup,
 	.ndo_netpoll_cleanup	 = br_netpoll_cleanup,
 	.ndo_poll_controller	 = br_poll_controller,
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 75c90ed..ad1bec6 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -146,7 +146,7 @@  struct net_bridge_port
 	char				sysfs_name[IFNAMSIZ];
 #endif
 
-#ifdef CONFIG_NET_POLL_CONTROLLER
+#if defined(CONFIG_NETPOLL) && defined(CONFIG_NET_POLL_CONTROLLER)
 	struct netpoll			*np;
 #endif
 };
@@ -287,7 +287,7 @@  static inline int br_is_root_bridge(const struct net_bridge *br)
 extern void br_dev_setup(struct net_device *dev);
 extern netdev_tx_t br_dev_xmit(struct sk_buff *skb,
 			       struct net_device *dev);
-#ifdef CONFIG_NET_POLL_CONTROLLER
+#if defined(CONFIG_NETPOLL) && defined(CONFIG_NET_POLL_CONTROLLER)
 static inline struct netpoll_info *br_netpoll_info(struct net_bridge *br)
 {
 	return br->dev->npinfo;