diff options
Diffstat (limited to 'net/ieee802154/6lowpan.c')
| -rw-r--r-- | net/ieee802154/6lowpan.c | 23 | 
1 files changed, 20 insertions, 3 deletions
| diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c index 48b25c0af4d0..8edfea5da572 100644 --- a/net/ieee802154/6lowpan.c +++ b/net/ieee802154/6lowpan.c @@ -106,7 +106,6 @@ static int lowpan_header_create(struct sk_buff *skb,  			   unsigned short type, const void *_daddr,  			   const void *_saddr, unsigned int len)  { -	struct ipv6hdr *hdr;  	const u8 *saddr = _saddr;  	const u8 *daddr = _daddr;  	struct ieee802154_addr sa, da; @@ -117,8 +116,6 @@ static int lowpan_header_create(struct sk_buff *skb,  	if (type != ETH_P_IPV6)  		return 0; -	hdr = ipv6_hdr(skb); -  	if (!saddr)  		saddr = dev->dev_addr; @@ -533,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,  }; |