* 6lowpan: lockless tx queue of routing netlink device
@ 2014-02-09 10:20 Alexander Aring
2014-02-09 12:41 ` Eric Dumazet
0 siblings, 1 reply; 9+ messages in thread
From: Alexander Aring @ 2014-02-09 10:20 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA
Cc: linux-zigbee-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Hi,
I got some locking issues with CONFIG_PROVE_LOCKING enabled and need help.
Full output:
=============================================
[ INFO: possible recursive locking detected ]
3.13.0-08605-g8f2b630-dirty #105 Not tainted
---------------------------------------------
agetty/841 is trying to acquire lock:
(_xmit_IEEE802154#2){+.-...}, at: [<c0356b39>] sch_direct_xmit+0x34/0x122
but task is already holding lock:
(_xmit_IEEE802154#2){+.-...}, at: [<c0346926>] __dev_queue_xmit+0x26e/0x329
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(_xmit_IEEE802154#2);
lock(_xmit_IEEE802154#2);
*** DEADLOCK ***
May be due to missing lock nesting notation
6 locks held by agetty/841:
#0: (((&idev->mc_ifc_timer))){+.-...}, at: [<c012b6f2>] call_timer_fn+0x0/0xb3
#1: (rcu_read_lock){.+.+..}, at: [<c03b4335>] rcu_read_lock+0x0/0x21
#2: (rcu_read_lock_bh){.+....}, at: [<c039d39d>] rcu_lock_acquire+0x0/0x1c
#3: (rcu_read_lock_bh){.+....}, at: [<c03426e5>] rcu_lock_acquire+0x0/0x1c
#4: (_xmit_IEEE802154#2){+.-...}, at: [<c0346926>] __dev_queue_xmit+0x26e/0x329
#5: (rcu_read_lock_bh){.+....}, at: [<c03426e5>] rcu_lock_acquire+0x0/0x1c
The solution was for me to change
dev->type = ARPHRD_IEEE802154
to
dev->type = ARPHRD_6LOWPAN
of the rtnl device. What we really shall do in the near future. (I have
a patch for this).
Another solution was to add:
dev->features |= NETIF_F_LLTX;
in setup callback of rtnl device.
This enables a lockless tx queue.
I am not sure if we can do a lockless tx queue here and the comment of
NETIF_F_LLTX says it's deprecated "/* do not use LLTX in new drivers */".
Exists there some alternative for this?
So a little bit more information about the current architecture which is
a little bit complex for tx. Maybe then it's more clear how to fix this
issue correctly.
To setup a lowpan interface you need to run:
"ip link add link $WPAN_INTERFACE name $LOWPAN_INTERFACE type lowpan"
This setups a lowpan interface which "sitting" on top of the
$WPAN_INTERFACE.
The lowpan rtnl implementation saves pointers from both interfaces we
name it:
"real_dev" <-- WPAN_INTERFACE
"dev" <-- LOWPAN_INTERFACE
If we get some "usually" ipv6 packets from LOWPAN_INTERFACE which calls
header_create function, then we doing some manipulating of sk_buff there.
After this we calling dev_hard_header with the callback of
WPAN_INTERFACE to generate the mac header.
Then we are in the xmit callback of LOWPAN_INTERFACE and doing a
skb->dev pointer change from LOWPAN_INTERFACE to the WPAN_INTERFACE and
calling dev_queue_xmit to send it via the WPAN_INTERFACE.
The skb->dev switch is necessary because we call then the xmit callback
of the WPAN_INTERFACE, the LOWPAN_INTERFACE is more a "virtual" interface.
I think that's the problem. We have two dev_queue_xmit calls first from
LOWPAN_INTERFACE then the WPAN_INTERFACE, so we locking something twice.
That's very much complicated and I think we doing some hacked stuff
there but currently it works so (except the locking issue). :-)
- Alex
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: 6lowpan: lockless tx queue of routing netlink device 2014-02-09 10:20 6lowpan: lockless tx queue of routing netlink device Alexander Aring @ 2014-02-09 12:41 ` Eric Dumazet [not found] ` <1391949707.10160.130.camel-XN9IlZ5yJG9HTL0Zs8A6p/gx64E7kk8eUsxypvmhUTTZJqsBc5GL+g@public.gmane.org> 2014-02-10 19:42 ` [PATCH] 6lowpan: fix lockdep splats Eric Dumazet 0 siblings, 2 replies; 9+ messages in thread From: Eric Dumazet @ 2014-02-09 12:41 UTC (permalink / raw) To: Alexander Aring; +Cc: netdev, linux-zigbee-devel On Sun, 2014-02-09 at 11:20 +0100, Alexander Aring wrote: > Hi, > > I got some locking issues with CONFIG_PROVE_LOCKING enabled and need help. > > Full output: > > ============================================= > [ INFO: possible recursive locking detected ] > 3.13.0-08605-g8f2b630-dirty #105 Not tainted > --------------------------------------------- > agetty/841 is trying to acquire lock: > (_xmit_IEEE802154#2){+.-...}, at: [<c0356b39>] sch_direct_xmit+0x34/0x122 > > but task is already holding lock: > (_xmit_IEEE802154#2){+.-...}, at: [<c0346926>] __dev_queue_xmit+0x26e/0x329 > > other info that might help us debug this: > Possible unsafe locking scenario: > > CPU0 > ---- > lock(_xmit_IEEE802154#2); > lock(_xmit_IEEE802154#2); > > *** DEADLOCK *** > > May be due to missing lock nesting notation > > 6 locks held by agetty/841: > #0: (((&idev->mc_ifc_timer))){+.-...}, at: [<c012b6f2>] call_timer_fn+0x0/0xb3 > #1: (rcu_read_lock){.+.+..}, at: [<c03b4335>] rcu_read_lock+0x0/0x21 > #2: (rcu_read_lock_bh){.+....}, at: [<c039d39d>] rcu_lock_acquire+0x0/0x1c > #3: (rcu_read_lock_bh){.+....}, at: [<c03426e5>] rcu_lock_acquire+0x0/0x1c > #4: (_xmit_IEEE802154#2){+.-...}, at: [<c0346926>] __dev_queue_xmit+0x26e/0x329 > #5: (rcu_read_lock_bh){.+....}, at: [<c03426e5>] rcu_lock_acquire+0x0/0x1c > > > > The solution was for me to change > dev->type = ARPHRD_IEEE802154 > to > dev->type = ARPHRD_6LOWPAN > of the rtnl device. What we really shall do in the near future. (I have > a patch for this). > > > Another solution was to add: > dev->features |= NETIF_F_LLTX; > in setup callback of rtnl device. > > > This enables a lockless tx queue. > I am not sure if we can do a lockless tx queue here and the comment of > NETIF_F_LLTX says it's deprecated "/* do not use LLTX in new drivers */". > Exists there some alternative for this? > > > > So a little bit more information about the current architecture which is > a little bit complex for tx. Maybe then it's more clear how to fix this > issue correctly. > > To setup a lowpan interface you need to run: > "ip link add link $WPAN_INTERFACE name $LOWPAN_INTERFACE type lowpan" > > This setups a lowpan interface which "sitting" on top of the > $WPAN_INTERFACE. > > The lowpan rtnl implementation saves pointers from both interfaces we > name it: > > "real_dev" <-- WPAN_INTERFACE > "dev" <-- LOWPAN_INTERFACE > > > If we get some "usually" ipv6 packets from LOWPAN_INTERFACE which calls > header_create function, then we doing some manipulating of sk_buff there. > > After this we calling dev_hard_header with the callback of > WPAN_INTERFACE to generate the mac header. > > Then we are in the xmit callback of LOWPAN_INTERFACE and doing a > skb->dev pointer change from LOWPAN_INTERFACE to the WPAN_INTERFACE and > calling dev_queue_xmit to send it via the WPAN_INTERFACE. > The skb->dev switch is necessary because we call then the xmit callback > of the WPAN_INTERFACE, the LOWPAN_INTERFACE is more a "virtual" interface. > > I think that's the problem. We have two dev_queue_xmit calls first from > LOWPAN_INTERFACE then the WPAN_INTERFACE, so we locking something twice. > > > That's very much complicated and I think we doing some hacked stuff > there but currently it works so (except the locking issue). :-) Please try the following fix, thanks for this report ! diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c index 48b25c0af4d0..069af33013c4 100644 --- a/net/ieee802154/6lowpan.c +++ b/net/ieee802154/6lowpan.c @@ -533,7 +533,27 @@ static struct header_ops lowpan_header_ops = { .create = lowpan_header_create, }; +static struct lock_class_key lowpan_tx_busylock; +static struct lock_class_key lowpan_netdev_xmit_lock_key; + +static void lowpan_set_lockdep_class_one(struct net_device *dev, + struct netdev_queue *txq, + void *_unused) +{ + lockdep_set_class(&txq->_xmit_lock, + &lowpan_netdev_xmit_lock_key); +} + + +static int lowpan_dev_init(struct net_device *dev) +{ + netdev_for_each_tx_queue(dev, lowpan_set_lockdep_class_one, NULL); + dev->qdisc_tx_busylock = &lowpan_tx_busylock; + return 0; +} + static const struct net_device_ops lowpan_netdev_ops = { + .ndo_init = lowpan_dev_init, .ndo_start_xmit = lowpan_xmit, .ndo_set_mac_address = lowpan_set_address, }; ^ permalink raw reply related [flat|nested] 9+ messages in thread
[parent not found: <1391949707.10160.130.camel-XN9IlZ5yJG9HTL0Zs8A6p/gx64E7kk8eUsxypvmhUTTZJqsBc5GL+g@public.gmane.org>]
* Re: 6lowpan: lockless tx queue of routing netlink device [not found] ` <1391949707.10160.130.camel-XN9IlZ5yJG9HTL0Zs8A6p/gx64E7kk8eUsxypvmhUTTZJqsBc5GL+g@public.gmane.org> @ 2014-02-10 17:33 ` Alexander Aring 2014-02-10 18:16 ` Eric Dumazet 0 siblings, 1 reply; 9+ messages in thread From: Alexander Aring @ 2014-02-10 17:33 UTC (permalink / raw) To: Eric Dumazet Cc: netdev-u79uwXL29TY76Z2rM5mHXA, linux-zigbee-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Hi Eric, On Sun, Feb 09, 2014 at 04:41:47AM -0800, Eric Dumazet wrote: > > Please try the following fix, thanks for this report ! > > diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c > index 48b25c0af4d0..069af33013c4 100644 > --- a/net/ieee802154/6lowpan.c > +++ b/net/ieee802154/6lowpan.c > @@ -533,7 +533,27 @@ static struct header_ops lowpan_header_ops = { > .create = lowpan_header_create, > }; > > +static struct lock_class_key lowpan_tx_busylock; > +static struct lock_class_key lowpan_netdev_xmit_lock_key; > + > +static void lowpan_set_lockdep_class_one(struct net_device *dev, > + struct netdev_queue *txq, > + void *_unused) > +{ > + lockdep_set_class(&txq->_xmit_lock, > + &lowpan_netdev_xmit_lock_key); > +} > + > + > +static int lowpan_dev_init(struct net_device *dev) > +{ > + netdev_for_each_tx_queue(dev, lowpan_set_lockdep_class_one, NULL); > + dev->qdisc_tx_busylock = &lowpan_tx_busylock; > + return 0; > +} > + > static const struct net_device_ops lowpan_netdev_ops = { > + .ndo_init = lowpan_dev_init, > .ndo_start_xmit = lowpan_xmit, > .ndo_set_mac_address = lowpan_set_address, > }; thanks, this fixed the issue. What we should do as next? Should I create a patch for this or do you want to make a patch? - Alex ------------------------------------------------------------------------------ Android™ apps run on BlackBerry®10 Introducing the new BlackBerry 10.2.1 Runtime for Android apps. Now with support for Jelly Bean, Bluetooth, Mapview and more. Get your Android app in front of a whole new audience. Start now. http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 6lowpan: lockless tx queue of routing netlink device 2014-02-10 17:33 ` Alexander Aring @ 2014-02-10 18:16 ` Eric Dumazet 2014-02-10 18:21 ` Alexander Aring 0 siblings, 1 reply; 9+ messages in thread From: Eric Dumazet @ 2014-02-10 18:16 UTC (permalink / raw) To: Alexander Aring Cc: netdev-u79uwXL29TY76Z2rM5mHXA, linux-zigbee-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f On Mon, 2014-02-10 at 18:33 +0100, Alexander Aring wrote: > Hi Eric, > > On Sun, Feb 09, 2014 at 04:41:47AM -0800, Eric Dumazet wrote: > > > > Please try the following fix, thanks for this report ! > > > > diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c > > index 48b25c0af4d0..069af33013c4 100644 > > --- a/net/ieee802154/6lowpan.c > > +++ b/net/ieee802154/6lowpan.c > > @@ -533,7 +533,27 @@ static struct header_ops lowpan_header_ops = { > > .create = lowpan_header_create, > > }; > > > > +static struct lock_class_key lowpan_tx_busylock; > > +static struct lock_class_key lowpan_netdev_xmit_lock_key; > > + > > +static void lowpan_set_lockdep_class_one(struct net_device *dev, > > + struct netdev_queue *txq, > > + void *_unused) > > +{ > > + lockdep_set_class(&txq->_xmit_lock, > > + &lowpan_netdev_xmit_lock_key); > > +} > > + > > + > > +static int lowpan_dev_init(struct net_device *dev) > > +{ > > + netdev_for_each_tx_queue(dev, lowpan_set_lockdep_class_one, NULL); > > + dev->qdisc_tx_busylock = &lowpan_tx_busylock; > > + return 0; > > +} > > + > > static const struct net_device_ops lowpan_netdev_ops = { > > + .ndo_init = lowpan_dev_init, > > .ndo_start_xmit = lowpan_xmit, > > .ndo_set_mac_address = lowpan_set_address, > > }; > > thanks, this fixed the issue. What we should do as next? > > Should I create a patch for this or do you want to make a patch? I'll take care of this, don't worry ;) Thanks for testing ! ------------------------------------------------------------------------------ Android™ apps run on BlackBerry®10 Introducing the new BlackBerry 10.2.1 Runtime for Android apps. Now with support for Jelly Bean, Bluetooth, Mapview and more. Get your Android app in front of a whole new audience. Start now. http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 6lowpan: lockless tx queue of routing netlink device 2014-02-10 18:16 ` Eric Dumazet @ 2014-02-10 18:21 ` Alexander Aring 2014-02-10 19:26 ` Eric Dumazet 0 siblings, 1 reply; 9+ messages in thread From: Alexander Aring @ 2014-02-10 18:21 UTC (permalink / raw) To: Eric Dumazet; +Cc: netdev, linux-zigbee-devel Hi, On Mon, Feb 10, 2014 at 10:16:26AM -0800, Eric Dumazet wrote: > On Mon, 2014-02-10 at 18:33 +0100, Alexander Aring wrote: > > Hi Eric, > > > > On Sun, Feb 09, 2014 at 04:41:47AM -0800, Eric Dumazet wrote: > > > > > > Please try the following fix, thanks for this report ! > > > > > > diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c > > > index 48b25c0af4d0..069af33013c4 100644 > > > --- a/net/ieee802154/6lowpan.c > > > +++ b/net/ieee802154/6lowpan.c > > > @@ -533,7 +533,27 @@ static struct header_ops lowpan_header_ops = { > > > .create = lowpan_header_create, > > > }; > > > > > > +static struct lock_class_key lowpan_tx_busylock; > > > +static struct lock_class_key lowpan_netdev_xmit_lock_key; > > > + > > > +static void lowpan_set_lockdep_class_one(struct net_device *dev, > > > + struct netdev_queue *txq, > > > + void *_unused) > > > +{ > > > + lockdep_set_class(&txq->_xmit_lock, > > > + &lowpan_netdev_xmit_lock_key); > > > +} > > > + > > > + > > > +static int lowpan_dev_init(struct net_device *dev) > > > +{ > > > + netdev_for_each_tx_queue(dev, lowpan_set_lockdep_class_one, NULL); > > > + dev->qdisc_tx_busylock = &lowpan_tx_busylock; > > > + return 0; > > > +} > > > + > > > static const struct net_device_ops lowpan_netdev_ops = { > > > + .ndo_init = lowpan_dev_init, > > > .ndo_start_xmit = lowpan_xmit, > > > .ndo_set_mac_address = lowpan_set_address, > > > }; > > > > thanks, this fixed the issue. What we should do as next? > > > > Should I create a patch for this or do you want to make a patch? > > I'll take care of this, don't worry ;) > > Thanks for testing ! > no problem. Maybe you can try to give me some explanation what you did there? I see you make a lockdep_set_class for each tx queue and assign the lowpan_netdev_xmit_lock_key. So why it's better to make a own "lock_key". thanks. - Alex ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 6lowpan: lockless tx queue of routing netlink device 2014-02-10 18:21 ` Alexander Aring @ 2014-02-10 19:26 ` Eric Dumazet 2014-02-10 19:31 ` Alexander Aring 0 siblings, 1 reply; 9+ messages in thread From: Eric Dumazet @ 2014-02-10 19:26 UTC (permalink / raw) To: Alexander Aring; +Cc: netdev, linux-zigbee-devel On Mon, 2014-02-10 at 19:21 +0100, Alexander Aring wrote: > no problem. Maybe you can try to give me some explanation what you did > there? > > I see you make a lockdep_set_class for each tx queue and assign the > lowpan_netdev_xmit_lock_key. So why it's better to make a own > "lock_key". This will be explained in the patch I'll cook. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 6lowpan: lockless tx queue of routing netlink device 2014-02-10 19:26 ` Eric Dumazet @ 2014-02-10 19:31 ` Alexander Aring 0 siblings, 0 replies; 9+ messages in thread From: Alexander Aring @ 2014-02-10 19:31 UTC (permalink / raw) To: Eric Dumazet; +Cc: netdev, linux-zigbee-devel On Mon, Feb 10, 2014 at 11:26:12AM -0800, Eric Dumazet wrote: > On Mon, 2014-02-10 at 19:21 +0100, Alexander Aring wrote: > > > no problem. Maybe you can try to give me some explanation what you did > > there? > > > > I see you make a lockdep_set_class for each tx queue and assign the > > lowpan_netdev_xmit_lock_key. So why it's better to make a own > > "lock_key". > > This will be explained in the patch I'll cook. > Okay, then you can add a Tested-by: Alexander Aring <alex.aring@gmail.com> Thanks! - Alex ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH] 6lowpan: fix lockdep splats 2014-02-09 12:41 ` Eric Dumazet [not found] ` <1391949707.10160.130.camel-XN9IlZ5yJG9HTL0Zs8A6p/gx64E7kk8eUsxypvmhUTTZJqsBc5GL+g@public.gmane.org> @ 2014-02-10 19:42 ` Eric Dumazet 2014-02-11 1:51 ` David Miller 1 sibling, 1 reply; 9+ messages in thread From: Eric Dumazet @ 2014-02-10 19:42 UTC (permalink / raw) To: Alexander Aring, David Miller; +Cc: netdev From: Eric Dumazet <edumazet@google.com> When a device ndo_start_xmit() calls again dev_queue_xmit(), lockdep can complain because dev_queue_xmit() is re-entered and the spinlocks protecting tx queues share a common lockdep class. Same issue was fixed for bonding/l2tp/ppp in commits 0daa2303028a6 ("[PATCH] bonding: lockdep annotation") 49ee49202b4ac ("bonding: set qdisc_tx_busylock to avoid LOCKDEP splat") 23d3b8bfb8eb2 ("net: qdisc busylock needs lockdep annotations ") 303c07db487be ("ppp: set qdisc_tx_busylock to avoid LOCKDEP splat ") Reported-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Eric Dumazet <edumazet@google.com> Tested-by: Alexander Aring <alex.aring@gmail.com> --- net/ieee802154/6lowpan.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c index 8bfb40153fe7..8edfea5da572 100644 --- a/net/ieee802154/6lowpan.c +++ b/net/ieee802154/6lowpan.c @@ -530,7 +530,27 @@ static struct header_ops lowpan_header_ops = { .create = lowpan_header_create, }; +static struct lock_class_key lowpan_tx_busylock; +static struct lock_class_key lowpan_netdev_xmit_lock_key; + +static void lowpan_set_lockdep_class_one(struct net_device *dev, + struct netdev_queue *txq, + void *_unused) +{ + lockdep_set_class(&txq->_xmit_lock, + &lowpan_netdev_xmit_lock_key); +} + + +static int lowpan_dev_init(struct net_device *dev) +{ + netdev_for_each_tx_queue(dev, lowpan_set_lockdep_class_one, NULL); + dev->qdisc_tx_busylock = &lowpan_tx_busylock; + return 0; +} + static const struct net_device_ops lowpan_netdev_ops = { + .ndo_init = lowpan_dev_init, .ndo_start_xmit = lowpan_xmit, .ndo_set_mac_address = lowpan_set_address, }; ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] 6lowpan: fix lockdep splats 2014-02-10 19:42 ` [PATCH] 6lowpan: fix lockdep splats Eric Dumazet @ 2014-02-11 1:51 ` David Miller 0 siblings, 0 replies; 9+ messages in thread From: David Miller @ 2014-02-11 1:51 UTC (permalink / raw) To: eric.dumazet; +Cc: alex.aring, netdev From: Eric Dumazet <eric.dumazet@gmail.com> Date: Mon, 10 Feb 2014 11:42:35 -0800 > From: Eric Dumazet <edumazet@google.com> > > When a device ndo_start_xmit() calls again dev_queue_xmit(), > lockdep can complain because dev_queue_xmit() is re-entered and the > spinlocks protecting tx queues share a common lockdep class. > > Same issue was fixed for bonding/l2tp/ppp in commits > > 0daa2303028a6 ("[PATCH] bonding: lockdep annotation") > 49ee49202b4ac ("bonding: set qdisc_tx_busylock to avoid LOCKDEP splat") > 23d3b8bfb8eb2 ("net: qdisc busylock needs lockdep annotations ") > 303c07db487be ("ppp: set qdisc_tx_busylock to avoid LOCKDEP splat ") > > Reported-by: Alexander Aring <alex.aring@gmail.com> > Signed-off-by: Eric Dumazet <edumazet@google.com> > Tested-by: Alexander Aring <alex.aring@gmail.com> Applied, thanks Eric. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-02-11 1:51 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-09 10:20 6lowpan: lockless tx queue of routing netlink device Alexander Aring
2014-02-09 12:41 ` Eric Dumazet
[not found] ` <1391949707.10160.130.camel-XN9IlZ5yJG9HTL0Zs8A6p/gx64E7kk8eUsxypvmhUTTZJqsBc5GL+g@public.gmane.org>
2014-02-10 17:33 ` Alexander Aring
2014-02-10 18:16 ` Eric Dumazet
2014-02-10 18:21 ` Alexander Aring
2014-02-10 19:26 ` Eric Dumazet
2014-02-10 19:31 ` Alexander Aring
2014-02-10 19:42 ` [PATCH] 6lowpan: fix lockdep splats Eric Dumazet
2014-02-11 1:51 ` David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).