linux/net/dsa
Andrew Lunn 448b4482c6 net: dsa: Add lockdep class to tx queues to avoid lockdep splat
DSA stacks an Ethernet device on top of an Ethernet device. This can
cause false positive lockdep splats for the transmit queue:
Acked-by: Florian Fainelli <f.fainelli@gmail.com>

=============================================
[ INFO: possible recursive locking detected ]
4.0.0-rc7-01838-g70621a215fc7 #386 Not tainted
---------------------------------------------
kworker/0:0/4 is trying to acquire lock:
 (_xmit_ETHER#2){+.-...}, at: [<c040e95c>] sch_direct_xmit+0xa8/0x1fc

but task is already holding lock:
 (_xmit_ETHER#2){+.-...}, at: [<c03f4208>] __dev_queue_xmit+0x4d4/0x56c

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(_xmit_ETHER#2);
  lock(_xmit_ETHER#2);

To avoid this, walk the tq queues of the dsa slaves and set a lockdep
class.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-05-09 16:05:54 -04:00
..
dsa_priv.h net: dsa: integrate with SWITCHDEV for HW bridging 2015-02-25 17:03:38 -05:00
dsa.c net: dsa: Fix scope of eeprom-length property 2015-04-29 15:35:04 -04:00
Kconfig net: dsa: make NET_DSA manually selectable from the config 2015-03-20 21:37:58 -04:00
Makefile net: dsa: add Broadcom tag RX/TX handler 2014-08-27 22:59:40 -07:00
slave.c net: dsa: Add lockdep class to tx queues to avoid lockdep splat 2015-05-09 16:05:54 -04:00
tag_brcm.c dsa: Split ops up, and avoid assigning tag_protocol and receive separately 2014-09-15 17:24:20 -04:00
tag_dsa.c net: dsa: Don't set skb->protocol on outgoing tagged packets 2014-10-30 14:54:10 -04:00
tag_edsa.c net: dsa: Don't set skb->protocol on outgoing tagged packets 2014-10-30 14:54:10 -04:00
tag_trailer.c net: dsa: Don't set skb->protocol on outgoing tagged packets 2014-10-30 14:54:10 -04:00