* Re: bridge netfilter output bug on 2.6.39
From: David Miller @ 2011-05-24 17:30 UTC (permalink / raw)
To: eric.dumazet; +Cc: shemminger, herbert, netdev
In-Reply-To: <1306251543.3026.57.camel@edumazet-laptop>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Tue, 24 May 2011 17:39:03 +0200
> [PATCH] net: fix __dst_destroy_metrics_generic()
>
> dst_default_metrics is readonly, we dont want to kfree() it later.
>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Good catch, applied, thanks.
^ permalink raw reply
* Re: bridge netfilter output bug on 2.6.39
From: David Miller @ 2011-05-24 17:31 UTC (permalink / raw)
To: eric.dumazet; +Cc: shemminger, herbert, netdev
In-Reply-To: <1306254457.3026.69.camel@edumazet-laptop>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Tue, 24 May 2011 18:27:37 +0200
> It seems bridge code uses one fake_rtable
Ugh, forgot about this turd. :-/
All route objects should be dynamically allocated, otherwise we'll
constantly have to attend to these static route instances when we make
any changes to dst_alloc() or similar.
I'll apply the fix you posted for now, but long term this code
needs to accomplish it's goals in a different way.
^ permalink raw reply
* Re: [PATCH] be2net: hash key for rss-config cmd not set
From: David Miller @ 2011-05-24 17:34 UTC (permalink / raw)
To: sathya.perla; +Cc: netdev
In-Reply-To: <edb3e5b8-a38f-4efe-b267-9b5b332f16a4@exht1.ad.emulex.com>
From: Sathya Perla <sathya.perla@emulex.com>
Date: Tue, 24 May 2011 11:59:09 +0530
> A non-zero, non-descript value is needed as the hash key. The hash variable was left un-initialized; but sometimes it gets a zero value
> and hashing is not effective. The constant value used now (not of any significance) seems to work fine.
>
> Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Applied.
^ permalink raw reply
* Re: bridge netfilter output bug on 2.6.39
From: Stephen Hemminger @ 2011-05-24 17:40 UTC (permalink / raw)
To: Eric Dumazet; +Cc: David Miller, Herbert Xu, netdev
In-Reply-To: <1306255587.3026.76.camel@edumazet-laptop>
On Tue, 24 May 2011 18:46:27 +0200
Eric Dumazet <eric.dumazet@gmail.com> wrote:
> Le mardi 24 mai 2011 à 18:27 +0200, Eric Dumazet a écrit :
> > Le mardi 24 mai 2011 à 17:39 +0200, Eric Dumazet a écrit :
> >
> > > I would say its more likely a problem with dst metrics changes
> > >
> > > In this crash, we dereference a NULL dst->_metrics 'pointer' in
> > > dst_metric_raw(dst, RTAX_MTU);
> >
> > It seems bridge code uses one fake_rtable
> >
> > You probably want to properly init its _metric field.
> >
> > I can do the patch in one hour eventually, if nobody beats me.
> >
> >
>
> Here is the patch :
>
> [PATCH] bridge: initialize fake_rtable metrics
>
> bridge netfilter code uses a fake_rtable, and we must init its _metric
> field or risk NULL dereference later.
>
> Ref: https://bugzilla.kernel.org/show_bug.cgi?id=35672
>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
> CC: Stephen Hemminger <shemminger@vyatta.com>
> CC: Herbert Xu <herbert@gondor.apana.org.au>
> ---
> net/bridge/br_netfilter.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
> index e1f5ec7..3fa1231 100644
> --- a/net/bridge/br_netfilter.c
> +++ b/net/bridge/br_netfilter.c
> @@ -117,6 +117,10 @@ static struct dst_ops fake_dst_ops = {
> * ipt_REJECT needs it. Future netfilter modules might
> * require us to fill additional fields.
> */
> +static const u32 br_dst_default_metrics[RTAX_MAX] = {
> + [RTAX_MTU - 1] = 1500,
> +};
> +
> void br_netfilter_rtable_init(struct net_bridge *br)
> {
> struct rtable *rt = &br->fake_rtable;
> @@ -124,7 +128,7 @@ void br_netfilter_rtable_init(struct net_bridge *br)
> atomic_set(&rt->dst.__refcnt, 1);
> rt->dst.dev = br->dev;
> rt->dst.path = &rt->dst;
> - dst_metric_set(&rt->dst, RTAX_MTU, 1500);
> + dst_init_metrics(&rt->dst, br_dst_default_metrics, true);
> rt->dst.flags = DST_NOXFRM;
> rt->dst.ops = &fake_dst_ops;
> }
This part is fine.
Acked-by: Stephen Hemminger <shemminger@vyatta.com>
I think there should be BUG_ON any calls to dst_metric_set where
dst has no metrics available.
[PATCH] dst: catch uninitialized metrics
Catch cases where dst_metric_set() and other functions are called
but _metrics is NULL.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
--- a/include/net/dst.h 2011-05-24 10:36:07.597962703 -0700
+++ b/include/net/dst.h 2011-05-24 10:36:54.382509111 -0700
@@ -111,6 +111,8 @@ static inline u32 *dst_metrics_write_ptr
{
unsigned long p = dst->_metrics;
+ BUG_ON(!p);
+
if (p & DST_METRICS_READ_ONLY)
return dst->ops->cow_metrics(dst, p);
return __DST_METRICS_PTR(p);
^ permalink raw reply
* Re: bridge netfilter output bug on 2.6.39
From: David Miller @ 2011-05-24 17:49 UTC (permalink / raw)
To: shemminger; +Cc: eric.dumazet, herbert, netdev
In-Reply-To: <20110524104022.212b0b71@nehalam>
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Tue, 24 May 2011 10:40:22 -0700
> I think there should be BUG_ON any calls to dst_metric_set where
> dst has no metrics available.
Yeah I'll add this too, we can kill it later after we're sure that
we've snuffed out all of these kinds of bugs.
Thanks.
^ permalink raw reply
* Re: net: enable dynamic lro disabling for vlans
From: Neil Horman @ 2011-05-24 17:54 UTC (permalink / raw)
To: Ben Hutchings; +Cc: netdev, davem
In-Reply-To: <1306257769.17233.61.camel@localhost>
On Tue, May 24, 2011 at 10:22:49AM -0700, Ben Hutchings wrote:
> On Tue, 2011-05-24 at 13:15 -0400, Neil Horman wrote:
> > Hey there-
> > Noted recently that, while physical devices have lro disabled when
> > attached to a bridge, vlan devices do not.
>
> Good point.
>
> > This is because the vlan netdev has
> > no get/set flags method in its ethtool_ops struct. This series adds those
> > methods as passthrough calls to the underlying physical devices, so that whe
> > dev_disable_lro is called on a vlan device, the physical device underneath has
> > lro properly disabled.
>
> But I don't think this is correct.
>
> The get_flags() result should be masked with vlan_features. And
> set_flags() shouldn't be allowed; the VLAN device should normally follow
> the parent device and not the other way round. I think
I'm not sure thats entirely true (see vlan_ethtool_get_settings, it does a
passthrough to the physical device just like I'm doing, although you're correct
we don't do any passthrough of the set methods).
> dev_disable_lro() needs to handle VLAN devices explicitly, instead.
>
I suppose that will work just as well as this, and likely will be more concise.
I'll respin shortly.
Best
Neil
> Ben.
>
> --
> Ben Hutchings, Senior Software Engineer, Solarflare
> Not speaking for my employer; that's the marketing department's job.
> They asked us to note that Solarflare product names are trademarked.
>
> --
> 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
>
^ permalink raw reply
* net: enable dynamic lro disabling for vlans (v2)
From: Neil Horman @ 2011-05-24 18:31 UTC (permalink / raw)
To: netdev; +Cc: Neil Horman, davem, bhutchings
In-Reply-To: <1306257314-3925-1-git-send-email-nhorman@tuxdriver.com>
Noted recently that, while physical devices have lro disabled when
attached to a bridge, vlan devices do not. This is because the vlan netdev has
no get/set flags method in its ethtool_ops struct. This series teaches
dev_disable_lro to recognize vlan interfaces and operate on the underlying
physical device instead.
Change notes:
v2) Rewrite of my origional solution As per Ben H.- instead of passing ethtool
command from the vlan device to the physical device, instead teach
dev_disable_lro to recognize vlans and operate on the underlying physical device
directly. This lets us avoid the various oddities of operating with ethtool on
a vlan device, and is more consice to boot.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: davem@davemloft.net
CC: bhutchings@solarflare.com
^ permalink raw reply
* [PATCH 1/2] net: move is_vlan_dev into public header file (v2)
From: Neil Horman @ 2011-05-24 18:31 UTC (permalink / raw)
To: netdev; +Cc: Neil Horman, davem, bhutchings
In-Reply-To: <1306261869-7276-1-git-send-email-nhorman@tuxdriver.com>
Migrate is_vlan_dev() to if_vlan.h so that core networkig can use it
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: davem@davemloft.net
CC: bhutchings@solarflare.com
---
include/linux/if_vlan.h | 5 +++++
net/8021q/vlan.h | 5 -----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index 290bd8a..dc01681 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -110,6 +110,11 @@ static inline void vlan_group_set_device(struct vlan_group *vg,
array[vlan_id % VLAN_GROUP_ARRAY_PART_LEN] = dev;
}
+static inline int is_vlan_dev(struct net_device *dev)
+{
+ return dev->priv_flags & IFF_802_1Q_VLAN;
+}
+
#define vlan_tx_tag_present(__skb) ((__skb)->vlan_tci & VLAN_TAG_PRESENT)
#define vlan_tx_tag_get(__skb) ((__skb)->vlan_tci & ~VLAN_TAG_PRESENT)
diff --git a/net/8021q/vlan.h b/net/8021q/vlan.h
index c3408de..9da07e3 100644
--- a/net/8021q/vlan.h
+++ b/net/8021q/vlan.h
@@ -118,11 +118,6 @@ extern void vlan_netlink_fini(void);
extern struct rtnl_link_ops vlan_link_ops;
-static inline int is_vlan_dev(struct net_device *dev)
-{
- return dev->priv_flags & IFF_802_1Q_VLAN;
-}
-
extern int vlan_net_id;
struct proc_dir_entry;
--
1.7.5.1
^ permalink raw reply related
* [PATCH 2/2] net: make dev_disable_lro use physical device if passed a vlan dev (v2)
From: Neil Horman @ 2011-05-24 18:31 UTC (permalink / raw)
To: netdev; +Cc: Neil Horman, davem, bhutchings
In-Reply-To: <1306261869-7276-1-git-send-email-nhorman@tuxdriver.com>
If the device passed into dev_disable_lro is a vlan, then repoint the dev
poniter so that we actually modify the underlying physical device.
Signed-of-by: Neil Horman <nhorman@tuxdriver.com>
CC: davem@davemloft.net
CC: bhutchings@solarflare.com
---
net/core/dev.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index d945379..da16c6a 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1308,6 +1308,13 @@ void dev_disable_lro(struct net_device *dev)
{
u32 flags;
+ /*
+ * If we're trying to disable lro on a vlan device
+ * use the underlying physical device instead
+ */
+ if (is_vlan_dev(dev))
+ dev = vlan_dev_real_dev(dev);
+
if (dev->ethtool_ops && dev->ethtool_ops->get_flags)
flags = dev->ethtool_ops->get_flags(dev);
else
--
1.7.5.1
^ permalink raw reply related
* Re: linux-next: Tree for May 24 (ratelimits, CONFIG_PRINTK not enabled)
From: Randy Dunlap @ 2011-05-24 18:33 UTC (permalink / raw)
To: Stephen Rothwell, Joe Perches, netdev; +Cc: linux-next, LKML, davem
In-Reply-To: <20110524140212.a4f19769.sfr@canb.auug.org.au>
On Tue, 24 May 2011 14:02:12 +1000 Stephen Rothwell wrote:
> Hi all,
>
> Changes since 20110523:
when CONFIG_PRINTK is not enabled:
net/core/filter.c:353: warning: type defaults to 'int' in declaration of 'DEFINE_RATELIMIT_STATE'
net/core/filter.c:353: warning: parameter names (without types) in function declaration
net/core/filter.c:353: error: invalid storage class for function 'DEFINE_RATELIMIT_STATE'
net/core/filter.c:353: error: implicit declaration of function '__ratelimit'
net/core/filter.c:353: error: '_rs' undeclared (first use in this function)
Adding <linux/ratelimit.h> to <asm-generic/bug.h> causes other problems:
In file included from linux-next-20110524/include/linux/thread_info.h:53,
from linux-next-20110524/include/linux/preempt.h:9,
from linux-next-20110524/include/linux/spinlock.h:50,
from linux-next-20110524/include/linux/ratelimit.h:5,
from linux-next-20110524/include/asm-generic/bug.h:5,
from linux-next-20110524/arch/x86/include/asm/bug.h:38,
from linux-next-20110524/include/linux/kernel.h:23,
from linux-next-20110524/arch/x86/include/asm/percpu.h:44,
from linux-next-20110524/arch/x86/include/asm/current.h:5,
from linux-next-20110524/arch/x86/include/asm/processor.h:15,
from linux-next-20110524/arch/x86/include/asm/atomic.h:6,
from linux-next-20110524/include/linux/crypto.h:20,
from linux-next-20110524/arch/x86/kernel/asm-offsets.c:8:
linux-next-20110524/arch/x86/include/asm/thread_info.h:34: error: expected specifier-qualifier-list before 'mm_segment_t'
In file included from linux-next-20110524/include/linux/thread_info.h:53,
from linux-next-20110524/include/linux/preempt.h:9,
from linux-next-20110524/include/linux/spinlock.h:50,
from linux-next-20110524/include/linux/ratelimit.h:5,
from linux-next-20110524/include/asm-generic/bug.h:5,
from linux-next-20110524/arch/x86/include/asm/bug.h:38,
from linux-next-20110524/include/linux/kernel.h:23,
from linux-next-20110524/arch/x86/include/asm/percpu.h:44,
from linux-next-20110524/arch/x86/include/asm/current.h:5,
from linux-next-20110524/arch/x86/include/asm/processor.h:15,
from linux-next-20110524/arch/x86/include/asm/atomic.h:6,
from linux-next-20110524/include/linux/crypto.h:20,
from linux-next-20110524/arch/x86/kernel/asm-offsets.c:8:
linux-next-20110524/arch/x86/include/asm/thread_info.h:217: error: expected declaration specifiers or '...' before 'kernel_stack'
linux-next-20110524/arch/x86/include/asm/thread_info.h:217: warning: data definition has no type or storage class
linux-next-20110524/arch/x86/include/asm/thread_info.h:217: warning: type defaults to 'int' in declaration of 'DECLARE_PER_CPU'
linux-next-20110524/arch/x86/include/asm/thread_info.h: In function 'current_thread_info':
linux-next-20110524/arch/x86/include/asm/thread_info.h:222: error: implicit declaration of function 'percpu_read_stable'
linux-next-20110524/arch/x86/include/asm/thread_info.h:222: error: 'kernel_stack' undeclared (first use in this function)
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
^ permalink raw reply
* Re: [PATCH 1/2] net: move is_vlan_dev into public header file (v2)
From: Joe Perches @ 2011-05-24 18:36 UTC (permalink / raw)
To: Neil Horman; +Cc: netdev, davem, bhutchings
In-Reply-To: <1306261869-7276-2-git-send-email-nhorman@tuxdriver.com>
On Tue, 2011-05-24 at 14:31 -0400, Neil Horman wrote:
> Migrate is_vlan_dev() to if_vlan.h so that core networkig can use it
[]
> diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
[]
> @@ -110,6 +110,11 @@ static inline void vlan_group_set_device(struct vlan_group *vg,
> array[vlan_id % VLAN_GROUP_ARRAY_PART_LEN] = dev;
> }
>
> +static inline int is_vlan_dev(struct net_device *dev)
> +{
> + return dev->priv_flags & IFF_802_1Q_VLAN;
> +}
perhaps:
static bool is_vlan_dev(const struct net_device *dev)
{
return !!(dev->priv_flags & IFF_802_1Q_VLAN);
}
^ permalink raw reply
* Re: PA-RISC: compile error in include/net/dst.h
From: Rolf Eike Beer @ 2011-05-24 18:37 UTC (permalink / raw)
To: Greg KH; +Cc: netdev, linux-kernel, Parisc List, stable
In-Reply-To: <2254093.9oQvKLogfV@donald.sf-tec.de>
[-- Attachment #1.1: Type: text/plain, Size: 1289 bytes --]
I wrote:
> Am Sonntag, 22. Mai 2011, 07:32:22 schrieb Greg KH:
> > On Sun, May 22, 2011 at 10:15:19AM +0200, Rolf Eike Beer wrote:
> > > from include/net/ipv6.h:16,
> > > from
> > > include/linux/sunrpc/clnt.h:25,
> > > from include/linux/nfs_fs.h:50,
> > >
> > > from init/do_mounts.c:20:
> > > include/net/dst.h: In function 'dst_hold':
> > > include/net/dst.h:238:2: error: size of unnamed array is negative
> > > In file included from include/linux/nfs_fs.h:59:0,
> > >
> > > from init/do_mounts.c:20:
> > > include/linux/mempool.h: In function 'mempool_create_kmalloc_pool':
> > > include/linux/mempool.h:58:10: warning: cast to pointer from integer
> > > of
> > > different size
> > >
> > > This is both in 2.6.38.6 and 2.6.39, but is not in 2.6.38.4 when
> > > compiling for my C8000.
> >
> > Could you bisect it down to the patch that causes the problem in
> > 2.6.38.6?
>
> I will try if I find time in the next days. Until now I can only confirm
> that 2.6.38.5 builds fine.
As 2.6.38.6 does if I use the correct .config. So it is an older issue which is
not related to recent changes but likely some general HPPA breakage. We'll
discuss the rest on linux-parisc.
Eike
[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
[-- Attachment #2: Type: text/plain, Size: 140 bytes --]
_______________________________________________
stable mailing list
stable@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/stable
^ permalink raw reply
* Re: linux-next: Tree for May 24 (ratelimits, CONFIG_PRINTK not enabled)
From: Joe Perches @ 2011-05-24 18:49 UTC (permalink / raw)
To: Randy Dunlap; +Cc: Stephen Rothwell, netdev, linux-next, LKML, davem
In-Reply-To: <20110524113328.e3d5867b.randy.dunlap@oracle.com>
On Tue, 2011-05-24 at 11:33 -0700, Randy Dunlap wrote:
> On Tue, 24 May 2011 14:02:12 +1000 Stephen Rothwell wrote:
> > Hi all,
> > Changes since 20110523:
> when CONFIG_PRINTK is not enabled:
> net/core/filter.c:353: warning: type defaults to 'int' in declaration of 'DEFINE_RATELIMIT_STATE'
> net/core/filter.c:353: warning: parameter names (without types) in function declaration
> net/core/filter.c:353: error: invalid storage class for function 'DEFINE_RATELIMIT_STATE'
> net/core/filter.c:353: error: implicit declaration of function '__ratelimit'
> net/core/filter.c:353: error: '_rs' undeclared (first use in this function)
Thanks for the report Randy.
I wonder if it's better to new create sections for
!CONFIG_PRINTK in bug.h. That might make the image
a bit smaller when !CONFIG_PRINTK too.
> Adding <linux/ratelimit.h> to <asm-generic/bug.h> causes other problems:
Yup, that's not a good solution.
^ permalink raw reply
* VLAN test cases in 2.6.38.7
From: Ben Greear @ 2011-05-24 18:49 UTC (permalink / raw)
To: netdev
I wrote a simple bridge that uses packet sockets to read/write
from network devices. I'll upload this code somewhere when
I get it a bit more presentable.
Machine info:
Linux lf0300-demo 2.6.38.7+ #14 SMP Mon May 23 10:31:45 PDT 2011 i686 i686 i386 GNU/Linux
Interface A: eth1
driver: igb
version: 3.0.19
firmware-version: 1.2-1
bus-info: 0000:01:00.0
Interface B: eth3:
driver: igb
version: 3.0.19
firmware-version: 1.2-1
bus-info: 0000:01:00.1
If no vlans are on eth1 and eth3, then it bridges fine, with vlan
headers inline. But, if you add a VLAN to eth1, it stops working,
probably because pkt tag is then un-stripped. I was generating on
vlan 7, and created vlan 9, btw.
I'll see if I can figure out how to use aux-data next...
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* [PATCH] net: Abstract features usage.
From: Mahesh Bandewar @ 2011-05-24 18:52 UTC (permalink / raw)
To: David Miller; +Cc: netdev, Mahesh Bandewar, Tom Herbert
Define macros to set/clear/test bits for feature set usage. This will eliminate
the direct use of these fields and enable future ease in managing these fields.
Signed-off-by: Mahesh Bandewar <maheshb@google.com>
---
include/linux/netdev_features.h | 137 +++++++++++++++++++++++++++++++++++++++
include/linux/netdevice.h | 35 ++---------
2 files changed, 142 insertions(+), 30 deletions(-)
create mode 100644 include/linux/netdev_features.h
diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
new file mode 100644
index 0000000..97bf8c4
--- /dev/null
+++ b/include/linux/netdev_features.h
@@ -0,0 +1,137 @@
+#ifndef _NETDEV_FEATURES_H
+#define _NETDEV_FEATURES_H
+
+/* Forward declarations */
+struct net_device;
+
+typedef unsigned long *nd_feature_t;
+
+/* Net device feature bits; if you change something,
+ * also update netdev_features_strings[] in ethtool.c */
+enum netdev_features {
+ SG_BIT, /* Scatter/gather IO. */
+ IP_CSUM_BIT, /* Can checksum TCP/UDP over IPv4. */
+ NO_CSUM_BIT, /* Does not require checksum. F.e. loopack. */
+ HW_CSUM_BIT, /* Can checksum all the packets. */
+ IPV6_CSUM_BIT, /* Can checksum TCP/UDP over IPV6 */
+ HIGHDMA_BIT, /* Can DMA to high memory. */
+ FRAGLIST_BIT, /* Scatter/gather IO. */
+ HW_VLAN_TX_BIT, /* Transmit VLAN hw acceleration */
+ HW_VLAN_RX_BIT, /* Receive VLAN hw acceleration */
+ HW_VLAN_FILTER_BIT, /* Receive filtering on VLAN */
+ VLAN_CHALLENGED_BIT, /* Device cannot handle VLAN packets */
+ GSO_BIT, /* Enable software GSO. */
+ LLTX_BIT, /* LockLess TX - deprecated. Please */
+ /* do not use LLTX in new drivers */
+ NETNS_LOCAL_BIT, /* Does not change network namespaces */
+ GRO_BIT, /* Generic receive offload */
+ LRO_BIT, /* large receive offload */
+ RESERVED16_BIT, /* the GSO_MASK reserved bit 16 */
+ RESERVED17_BIT, /* the GSO_MASK reserved bit 17 */
+ RESERVED18_BIT, /* the GSO_MASK reserved bit 18 */
+ RESERVED19_BIT, /* the GSO_MASK reserved bit 19 */
+ RESERVED20_BIT, /* the GSO_MASK reserved bit 20 */
+ RESERVED21_BIT, /* the GSO_MASK reserved bit 21 */
+ RESERVED22_BIT, /* the GSO_MASK reserved bit 22 */
+ RESERVED23_BIT, /* the GSO_MASK reserved bit 23 */
+ FCOE_CRC_BIT, /* FCoE CRC32 */
+ SCTP_CSUM_BIT, /* SCTP checksum offload */
+ FCOE_MTU_BIT, /* Supports max FCoE MTU, 2158 bytes*/
+ NTUPLE_BIT, /* N-tuple filters supported */
+ RXHASH_BIT, /* Receive hashing offload */
+ RXCSUM_BIT, /* Receive checksumming offload */
+ NOCACHE_COPY_BIT, /* Use no-cache copyfromuser */
+ LOOPBACK_BIT, /* Enable loopback */
+
+ /* Add you bit above this */
+ ND_FEATURE_NUM_BITS /* (LAST VALUE) Total bits in use */
+};
+
+#define BIT2FLAG(bit) (1 << (bit))
+
+#define NETIF_F_SG BIT2FLAG(SG_BIT)
+#define NETIF_F_IP_CSUM BIT2FLAG(IP_CSUM_BIT)
+#define NETIF_F_NO_CSUM BIT2FLAG(NO_CSUM_BIT)
+#define NETIF_F_HW_CSUM BIT2FLAG(HW_CSUM_BIT)
+#define NETIF_F_IPV6_CSUM BIT2FLAG(IPV6_CSUM_BIT)
+#define NETIF_F_HIGHDMA BIT2FLAG(HIGHDMA_BIT)
+#define NETIF_F_FRAGLIST BIT2FLAG(FRAGLIST_BIT)
+#define NETIF_F_HW_VLAN_TX BIT2FLAG(HW_VLAN_TX_BIT)
+#define NETIF_F_HW_VLAN_RX BIT2FLAG(HW_VLAN_RX_BIT)
+#define NETIF_F_HW_VLAN_FILTER BIT2FLAG(HW_VLAN_FILTER_BIT)
+#define NETIF_F_VLAN_CHALLENGED BIT2FLAG(VLAN_CHALLENGED_BIT)
+#define NETIF_F_GSO BIT2FLAG(GSO_BIT)
+#define NETIF_F_LLTX BIT2FLAG(LLTX_BIT)
+#define NETIF_F_NETNS_LOCAL BIT2FLAG(NETNS_LOCAL_BIT)
+#define NETIF_F_GRO BIT2FLAG(GRO_BIT)
+#define NETIF_F_LRO BIT2FLAG(LRO_BIT)
+#define NETIF_F_FCOE_CRC BIT2FLAG(FCOE_CRC_BIT)
+#define NETIF_F_SCTP_CSUM BIT2FLAG(SCTP_CSUM_BIT)
+#define NETIF_F_FCOE_MTU BIT2FLAG(FCOE_MTU_BIT)
+#define NETIF_F_NTUPLE BIT2FLAG(NTUPLE_BIT)
+#define NETIF_F_RXHASH BIT2FLAG(RXHASH_BIT)
+#define NETIF_F_RXCSUM BIT2FLAG(RXCSUM_BIT)
+#define NETIF_F_NOCACHE_COPY BIT2FLAG(NOCACHE_COPY_BIT)
+#define NETIF_F_LOOPBACK BIT2FLAG(LOOPBACK_BIT)
+
+#define DEV_FEATURE_WORDS BITS_TO_LONGS(ND_FEATURE_NUM_BITS)
+#define DEV_FEATURE_BITS (DEV_FEATURE_WORDS * BITS_PER_LONG)
+
+static inline void _nd_set_feature(u32 *old_field,
+ unsigned long *new_field, int bit)
+{
+ if (bit < 32)
+ *old_field |= (1 << bit);
+ set_bit(bit, new_field);
+}
+
+static inline void _nd_clear_feature(u32 *old_field,
+ unsigned long *new_field, int bit)
+{
+ if (bit < 32)
+ *old_field &= ~(1 << bit);
+
+ clear_bit(bit, new_field);
+}
+
+static inline bool _nd_test_feature(u32 old_field,
+ unsigned long *new_field, int bit)
+{
+ if (bit < 32)
+ return (old_field & (1 << bit)) == 1;
+
+ return test_bit(bit, new_field) == 1;
+}
+
+#define netdev_set_feature netdev_set_active_feature
+#define netdev_set_active_feature(dev, bit) \
+ _nd_set_feature(&(dev)->features, (dev)->active_feature, (bit))
+#define netdev_clear_active_feature(dev, bit) \
+ _nd_clear_feature(&(dev)->features, (dev)->active_feature, (bit))
+#define netdev_test_active_feature(dev, bit) \
+ _nd_test_feature((dev)->features, (dev)->active_feature, (bit))
+
+#define netdev_set_hw_feature netdev_set_offered_feature
+#define netdev_set_offered_feature(dev, bit) \
+ _nd_set_feature(&(dev)->hw_features, (dev)->offered_feature, (bit))
+#define netdev_clear_offered_feature(dev, bit) \
+ _nd_clear_feature(&(dev)->hw_features, (dev)->offered_feature, (bit))
+#define netdev_test_offered_feature(dev, bit) \
+ _nd_test_feature((dev)->hw_features, (dev)->offered_feature, (bit))
+
+#define netdev_set_vlan_feature(dev, bit) \
+ _nd_set_feature(&(dev)->vlan_features, (dev)->vlan_feature, (bit))
+#define netdev_clear_vlan_feature(dev, bit) \
+ _nd_clear_feature(&(dev)->vlan_features, (dev)->vlan_feature, (bit))
+#define netdev_test_vlan_feature(dev, bit) \
+ _nd_test_feature((dev)->vlan_features, (dev)->vlan_feature, (bit))
+
+#define netdev_set_wanted_feature(dev, bit) \
+ _nd_set_feature(&(dev)->wanted_features, (dev)->wanted_feature, (bit))
+#define netdev_clear_wanted_feature(dev, bit) \
+ _nd_clear_feature(&(dev)->wanted_features, (dev)->wanted_feature, (bit))
+#define netdev_test_wanted_feature(dev, bit) \
+ _nd_test_feature((dev)->wanted_features, (dev)->wanted_feature, (bit))
+
+
+#endif /* __NETDEV_FEATURES_H */
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index ca333e7..41ee234 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -51,6 +51,7 @@
#ifdef CONFIG_DCB
#include <net/dcbnl.h>
#endif
+#include <linux/netdev_features.h>
struct vlan_group;
struct netpoll_info;
@@ -1035,36 +1036,10 @@ struct net_device {
/* mask of features inheritable by VLAN devices */
u32 vlan_features;
- /* Net device feature bits; if you change something,
- * also update netdev_features_strings[] in ethtool.c */
-
-#define NETIF_F_SG 1 /* Scatter/gather IO. */
-#define NETIF_F_IP_CSUM 2 /* Can checksum TCP/UDP over IPv4. */
-#define NETIF_F_NO_CSUM 4 /* Does not require checksum. F.e. loopack. */
-#define NETIF_F_HW_CSUM 8 /* Can checksum all the packets. */
-#define NETIF_F_IPV6_CSUM 16 /* Can checksum TCP/UDP over IPV6 */
-#define NETIF_F_HIGHDMA 32 /* Can DMA to high memory. */
-#define NETIF_F_FRAGLIST 64 /* Scatter/gather IO. */
-#define NETIF_F_HW_VLAN_TX 128 /* Transmit VLAN hw acceleration */
-#define NETIF_F_HW_VLAN_RX 256 /* Receive VLAN hw acceleration */
-#define NETIF_F_HW_VLAN_FILTER 512 /* Receive filtering on VLAN */
-#define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */
-#define NETIF_F_GSO 2048 /* Enable software GSO. */
-#define NETIF_F_LLTX 4096 /* LockLess TX - deprecated. Please */
- /* do not use LLTX in new drivers */
-#define NETIF_F_NETNS_LOCAL 8192 /* Does not change network namespaces */
-#define NETIF_F_GRO 16384 /* Generic receive offload */
-#define NETIF_F_LRO 32768 /* large receive offload */
-
-/* the GSO_MASK reserves bits 16 through 23 */
-#define NETIF_F_FCOE_CRC (1 << 24) /* FCoE CRC32 */
-#define NETIF_F_SCTP_CSUM (1 << 25) /* SCTP checksum offload */
-#define NETIF_F_FCOE_MTU (1 << 26) /* Supports max FCoE MTU, 2158 bytes*/
-#define NETIF_F_NTUPLE (1 << 27) /* N-tuple filters supported */
-#define NETIF_F_RXHASH (1 << 28) /* Receive hashing offload */
-#define NETIF_F_RXCSUM (1 << 29) /* Receive checksumming offload */
-#define NETIF_F_NOCACHE_COPY (1 << 30) /* Use no-cache copyfromuser */
-#define NETIF_F_LOOPBACK (1 << 31) /* Enable loopback */
+ DECLARE_BITMAP(active_feature, DEV_FEATURE_BITS);
+ DECLARE_BITMAP(offered_feature, DEV_FEATURE_BITS);
+ DECLARE_BITMAP(wanted_feature, DEV_FEATURE_BITS);
+ DECLARE_BITMAP(vlan_feature, DEV_FEATURE_BITS);
/* Segmentation offload features */
#define NETIF_F_GSO_SHIFT 16
--
1.7.3.1
^ permalink raw reply related
* Re: [PATCH 1/2] net: move is_vlan_dev into public header file (v2)
From: Neil Horman @ 2011-05-24 19:03 UTC (permalink / raw)
To: Joe Perches; +Cc: netdev, davem, bhutchings
In-Reply-To: <1306262195.2298.46.camel@Joe-Laptop>
On Tue, May 24, 2011 at 11:36:35AM -0700, Joe Perches wrote:
> On Tue, 2011-05-24 at 14:31 -0400, Neil Horman wrote:
> > Migrate is_vlan_dev() to if_vlan.h so that core networkig can use it
> []
> > diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
> []
> > @@ -110,6 +110,11 @@ static inline void vlan_group_set_device(struct vlan_group *vg,
> > array[vlan_id % VLAN_GROUP_ARRAY_PART_LEN] = dev;
> > }
> >
> > +static inline int is_vlan_dev(struct net_device *dev)
> > +{
> > + return dev->priv_flags & IFF_802_1Q_VLAN;
> > +}
>
> perhaps:
>
> static bool is_vlan_dev(const struct net_device *dev)
> {
> return !!(dev->priv_flags & IFF_802_1Q_VLAN);
> }
>
I migrated this directly out of vlan.h as is. I suppose we could change it, but
I'm not sure I see a need to do so immediately. All callers of this function
already work with it properly as defined currently (not that they wouldn't
otherwise).
Perhaps we could do a separate patch to fix this up as well as other common test
functions (br_port_exists, is_valid_iface, macvlan_port_exists,
netif_is_bond_slave, etc), all just return the result of a bitwise and
currently)
Neil
^ permalink raw reply
* Re: VLAN test cases in 2.6.38.7
From: Ben Greear @ 2011-05-24 19:08 UTC (permalink / raw)
To: netdev
In-Reply-To: <4DDBFDD6.4060903@candelatech.com>
On 05/24/2011 11:49 AM, Ben Greear wrote:
>
> I wrote a simple bridge that uses packet sockets to read/write
> from network devices. I'll upload this code somewhere when
> I get it a bit more presentable.
>
> Machine info:
>
> Linux lf0300-demo 2.6.38.7+ #14 SMP Mon May 23 10:31:45 PDT 2011 i686
> i686 i386 GNU/Linux
>
> Interface A: eth1
> driver: igb
> version: 3.0.19
> firmware-version: 1.2-1
> bus-info: 0000:01:00.0
>
> Interface B: eth3:
> driver: igb
> version: 3.0.19
> firmware-version: 1.2-1
> bus-info: 0000:01:00.1
>
>
> If no vlans are on eth1 and eth3, then it bridges fine, with vlan
> headers inline. But, if you add a VLAN to eth1, it stops working,
> probably because pkt tag is then un-stripped. I was generating on
> vlan 7, and created vlan 9, btw.
>
> I'll see if I can figure out how to use aux-data next...
Why does the aux-data mask out the CFI bit? Shouldn't
we just pass the 16-bit VLAN tag un-modified to user-space?
Thanks,
Ben
>
> Thanks,
> Ben
>
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* Re: [PATCH] net: use synchronize_rcu_expedited()
From: Paul E. McKenney @ 2011-05-24 19:24 UTC (permalink / raw)
To: Eric Dumazet; +Cc: David Miller, netdev
In-Reply-To: <1306252364.3026.63.camel@edumazet-laptop>
On Tue, May 24, 2011 at 05:52:44PM +0200, Eric Dumazet wrote:
> Le mardi 24 mai 2011 à 08:44 -0700, Paul E. McKenney a écrit :
> > On Tue, May 24, 2011 at 11:07:32AM +0200, Eric Dumazet wrote:
> > > synchronize_rcu() is very slow in various situations (HZ=100,
> > > CONFIG_NO_HZ=y, CONFIG_PREEMPT=n)
> > >
> > > Extract from my (mostly idle) 8 core machine :
> > >
> > > synchronize_rcu() in 99985 us
> > > synchronize_rcu() in 79982 us
> > > synchronize_rcu() in 87612 us
> > > synchronize_rcu() in 79827 us
> > > synchronize_rcu() in 109860 us
> > > synchronize_rcu() in 98039 us
> > > synchronize_rcu() in 89841 us
> > > synchronize_rcu() in 79842 us
> > > synchronize_rcu() in 80151 us
> > > synchronize_rcu() in 119833 us
> > > synchronize_rcu() in 99858 us
> > > synchronize_rcu() in 73999 us
> > > synchronize_rcu() in 79855 us
> > > synchronize_rcu() in 79853 us
> > >
> > >
> > > When we hold RTNL mutex, we would like to spend some cpu cycles but not
> > > block too long other processes waiting for this mutex.
> > >
> > > We also want to setup/dismantle network features as fast as possible at
> > > boot/shutdown time.
> > >
> > > This patch makes synchronize_net() call the expedited version if RTNL is
> > > locked.
> > >
> > > synchronize_rcu_expedited() typical delay is about 20 us on my machine.
> > >
> > > synchronize_rcu_expedited() in 18 us
> > > synchronize_rcu_expedited() in 18 us
> > > synchronize_rcu_expedited() in 18 us
> > > synchronize_rcu_expedited() in 18 us
> > > synchronize_rcu_expedited() in 20 us
> > > synchronize_rcu_expedited() in 16 us
> > > synchronize_rcu_expedited() in 20 us
> > > synchronize_rcu_expedited() in 18 us
> > > synchronize_rcu_expedited() in 18 us
> >
> > Cool!!!
> >
> > Just out of curiosity, how many CPUs does your system have?
>
> 16 (2x4x2) [ processor.max_cstate=1 ]
>
> I am now trying to optimize rcu_barrier(), if you have an idea to get an
> expedited version as well ?
>
> We can see in following trace 3 groups, spaced by one jiffie (HZ=100)
>
> Maybe we can avoid sending a call_rcu() to a cpu that has no pending rcu
> work ?
Might make sense, though most of the gains would need to come from
kicking the grace-period machinery hard in order to make it go faster.
Interesting -- I will give this some thought.
Thanx, Paul
> [ 835.189996] cpu0 synchronize_rcu_expedited() in 30 us
> -> begin rcu_barrier() immediately
> [ 835.259702] cpu15 rcu_barrier_callback()
> [ 835.259705] cpu14 rcu_barrier_callback()
> [ 835.259708] cpu7 rcu_barrier_callback()
> [ 835.259711] cpu12 rcu_barrier_callback()
> [ 835.259714] cpu8 rcu_barrier_callback()
> [ 835.259716] cpu1 rcu_barrier_callback()
> [ 835.259719] cpu0 rcu_barrier_callback()
>
> [ 835.269691] cpu13 rcu_barrier_callback()
> [ 835.269695] cpu11 rcu_barrier_callback()
> [ 835.269698] cpu5 rcu_barrier_callback()
> [ 835.269700] cpu6 rcu_barrier_callback()
> [ 835.269702] cpu10 rcu_barrier_callback()
> [ 835.269705] cpu3 rcu_barrier_callback()
> [ 835.269707] cpu2 rcu_barrier_callback()
>
> [ 835.279687] cpu4 rcu_barrier_callback()
> [ 835.279689] cpu9 rcu_barrier_callback()
> [ 835.279744] cpu0 rcu_barrier() in 89499 us
>
> Thanks
>
>
^ permalink raw reply
* Re: linux-next: Tree for May 24 (ratelimits, CONFIG_PRINTK not enabled)
From: David Miller @ 2011-05-24 19:32 UTC (permalink / raw)
To: joe; +Cc: randy.dunlap, sfr, netdev, linux-next, linux-kernel
In-Reply-To: <1306262988.2298.49.camel@Joe-Laptop>
From: Joe Perches <joe@perches.com>
Date: Tue, 24 May 2011 11:49:48 -0700
> On Tue, 2011-05-24 at 11:33 -0700, Randy Dunlap wrote:
>> Adding <linux/ratelimit.h> to <asm-generic/bug.h> causes other problems:
>
> Yup, that's not a good solution.
Please come up with a fix or I'll have to revert, thanks Joe.
^ permalink raw reply
* [PATCH] bonding: prevent deadlock on slave store with alb mode
From: Neil Horman @ 2011-05-24 19:36 UTC (permalink / raw)
To: netdev; +Cc: Neil Horman, Jay Vosburgh, Andy Gospodarek, David S. Miller
This soft lockup was recently reported:
[root@dell-per715-01 ~]# echo +bond5 > /sys/class/net/bonding_masters
[root@dell-per715-01 ~]# echo +eth1 > /sys/class/net/bond5/bonding/slaves
bonding: bond5: doing slave updates when interface is down.
bonding bond5: master_dev is not up in bond_enslave
[root@dell-per715-01 ~]# echo -eth1 > /sys/class/net/bond5/bonding/slaves
bonding: bond5: doing slave updates when interface is down.
BUG: soft lockup - CPU#12 stuck for 60s! [bash:6444]
CPU 12:
Modules linked in: bonding autofs4 hidp rfcomm l2cap bluetooth lockd sunrpc
be2d
Pid: 6444, comm: bash Not tainted 2.6.18-262.el5 #1
RIP: 0010:[<ffffffff80064bf0>] [<ffffffff80064bf0>]
.text.lock.spinlock+0x26/00
RSP: 0018:ffff810113167da8 EFLAGS: 00000286
RAX: ffff810113167fd8 RBX: ffff810123a47800 RCX: 0000000000ff1025
RDX: 0000000000000000 RSI: ffff810123a47800 RDI: ffff81021b57f6f8
RBP: ffff81021b57f500 R08: 0000000000000000 R09: 000000000000000c
R10: 00000000ffffffff R11: ffff81011d41c000 R12: ffff81021b57f000
R13: 0000000000000000 R14: 0000000000000282 R15: 0000000000000282
FS: 00002b3b41ef3f50(0000) GS:ffff810123b27940(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 00002b3b456dd000 CR3: 000000031fc60000 CR4: 00000000000006e0
Call Trace:
[<ffffffff80064af9>] _spin_lock_bh+0x9/0x14
[<ffffffff886937d7>] :bonding:tlb_clear_slave+0x22/0xa1
[<ffffffff8869423c>] :bonding:bond_alb_deinit_slave+0xba/0xf0
[<ffffffff8868dda6>] :bonding:bond_release+0x1b4/0x450
[<ffffffff8006457b>] __down_write_nested+0x12/0x92
[<ffffffff88696ae4>] :bonding:bonding_store_slaves+0x25c/0x2f7
[<ffffffff801106f7>] sysfs_write_file+0xb9/0xe8
[<ffffffff80016b87>] vfs_write+0xce/0x174
[<ffffffff80017450>] sys_write+0x45/0x6e
[<ffffffff8005d28d>] tracesys+0xd5/0xe0
It occurs because we are able to change the slave configuarion of a bond while
the bond interface is down. The bonding driver initializes some data structures
only after its ndo_open routine is called. Among them is the initalization of
the alb tx and rx hash locks. So if we add or remove a slave without first
opening the bond master device, we run the risk of trying to lock/unlock a
spinlock that has garbage for data in it, which results in our above softlock.
We could fix it by moving the spin lock initalization to the device creation
path, but it seems that since we're warning people about not doing this, we
should probably just disallow them from doing it, so fix it by adding an EINVAL
return if we're not up yet. Tested by the reporter and confirmed to fix the
problem.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Reported-by: jtluka@redhat.com
CC: Jay Vosburgh <fubar@us.ibm.com>
CC: Andy Gospodarek <andy@greyhouse.net>
CC: "David S. Miller" <daevm@davemloft.net>
---
drivers/net/bonding/bond_sysfs.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
index 4059bfc..206c543 100644
--- a/drivers/net/bonding/bond_sysfs.c
+++ b/drivers/net/bonding/bond_sysfs.c
@@ -231,6 +231,7 @@ static ssize_t bonding_store_slaves(struct device *d,
if (!(bond->dev->flags & IFF_UP)) {
pr_warning("%s: doing slave updates when interface is down.\n",
bond->dev->name);
+ return -EINVAL;
}
if (!rtnl_trylock())
--
1.7.5.1
^ permalink raw reply related
* DEAR WINNER
From: nishanth@quinnox.com @ 2011-05-24 19:36 UTC (permalink / raw)
[-- Attachment #1: Type: text/plain, Size: 24 bytes --]
PLS DOWNLOAD ATTACHMENT
[-- Attachment #2: COCA COLA NOTIFICATION.txt --]
[-- Type: application/octet-stream, Size: 540 bytes --]
This is to inform you that you have been selected for a cash prize of
£1,000,000.00(British Pounds) held on 18th May 2011 in London (Coca'cola
Lottery
Promotion).The selection process was carried out through by random selection in
Our
computerized email selection system. Fill the below:
MR. Tommy Roger
(VERIFICATION DEPARTMENT MANAGER)
Email:claimsgroup818@hotmail.co.uk
1.Full Name:
2.Full Address:
3.Occupation
4.Age:
5.Sex:
6.Nationality:
7.Country Of Residence:
8.Mobile Number:
9. Email-id
Regards
Mark Peterson
^ permalink raw reply
* Re: [PATCH] net: Abstract features usage.
From: Michał Mirosław @ 2011-05-24 19:37 UTC (permalink / raw)
To: Mahesh Bandewar; +Cc: David Miller, netdev, Tom Herbert
In-Reply-To: <1306263162-2022-1-git-send-email-maheshb@google.com>
2011/5/24 Mahesh Bandewar <maheshb@google.com>:
> Define macros to set/clear/test bits for feature set usage. This will eliminate
> the direct use of these fields and enable future ease in managing these fields.
>
> Signed-off-by: Mahesh Bandewar <maheshb@google.com>
> ---
> include/linux/netdev_features.h | 137 +++++++++++++++++++++++++++++++++++++++
> include/linux/netdevice.h | 35 ++---------
> 2 files changed, 142 insertions(+), 30 deletions(-)
> create mode 100644 include/linux/netdev_features.h
>
> diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
> new file mode 100644
> index 0000000..97bf8c4
> --- /dev/null
> +++ b/include/linux/netdev_features.h
> @@ -0,0 +1,137 @@
> +#ifndef _NETDEV_FEATURES_H
> +#define _NETDEV_FEATURES_H
> +
> +/* Forward declarations */
> +struct net_device;
> +
> +typedef unsigned long *nd_feature_t;
> +
> +/* Net device feature bits; if you change something,
> + * also update netdev_features_strings[] in ethtool.c */
> +enum netdev_features {
> + SG_BIT, /* Scatter/gather IO. */
[...]
Please split this change (introducing enum + converting NETIF_F_*
defines to use it). This part is a nice cleanup, but I think the
bitmap idea is still not worth the trouble until u64 runs out.
Best Regards,
Michał Mirosław
^ permalink raw reply
* Re: [PATCH] ethtool: ETHTOOL_SFEATURES: remove NETIF_F_COMPAT return
From: David Miller @ 2011-05-24 19:39 UTC (permalink / raw)
To: mirq-linux; +Cc: bhutchings, netdev
In-Reply-To: <20110524091437.GA10779@rere.qmqm.pl>
From: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Date: Tue, 24 May 2011 11:14:37 +0200
> On Thu, May 19, 2011 at 12:03:31PM +0200, Michał Mirosław wrote:
>> On Mon, May 16, 2011 at 02:09:58PM -0400, David Miller wrote:
>> > You guys really need to sort this out properly.
>> > Please resubmit whatever final solution is agreed upon.
>> I noticed that v2.6.39 was tagged today. We should definitely remove
>> NETIF_F_COMPAT so it won't bite us in the future. The other patch that
>> fixes ethtool_ops->set_flags compatibility is a bugfix, so it should go
>> in - if we decide that the SFEATURES compatibility should be removed
>> it won't matter.
>>
>> Ben, do you agree?
>
> Ping?
>
> http://patchwork.ozlabs.org/patch/95552/
> (this is a bugfix, so should go to stable)
>
> http://patchwork.ozlabs.org/patch/95753/
> (removes ETHTOOL_F_COMPAT; this we need to decide on)
You and Ben are still arguing over details.
I want fresh versions of these patches (yes, both of them) once
all of the issues are resolved.
^ permalink raw reply
* Re: [PATCH] seqlock: get rid of SEQLOCK_UNLOCKED
From: David Miller @ 2011-05-24 19:40 UTC (permalink / raw)
To: eric.dumazet; +Cc: akpm, linux-kernel, netdev, tglx
In-Reply-To: <1306238888.3026.31.camel@edumazet-laptop>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Tue, 24 May 2011 14:08:08 +0200
> All static seqlock should be initialized with the lockdep friendly
> __SEQLOCK_UNLOCKED() macro.
>
> Remove legacy SEQLOCK_UNLOCKED() macro.
>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Acked-by: David S. Miller <davem@davemloft.net>
^ permalink raw reply
* Re: [PATCH] net: use synchronize_rcu_expedited()
From: Eric Dumazet @ 2011-05-24 19:44 UTC (permalink / raw)
To: paulmck; +Cc: David Miller, netdev
In-Reply-To: <20110524192451.GH2266@linux.vnet.ibm.com>
Le mardi 24 mai 2011 à 12:24 -0700, Paul E. McKenney a écrit :
> Might make sense, though most of the gains would need to come from
> kicking the grace-period machinery hard in order to make it go faster.
>
> Interesting -- I will give this some thought.
>
I am working on a final step, using a workqueue so that the
rcu_barrier() is not done under RTNL, so it wont be anymore a blocking
point to dismantle hundred of devices per second...
Thanks
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox