6lowpan: handle dev_queue_xmit() error code properly
authorAlan Ott <alan@signal11.us>
Wed, 3 Apr 2013 04:00:58 +0000 (04:00 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 7 Apr 2013 21:06:44 +0000 (17:06 -0400)
dev_queue_xmit() will return a positive value if the packet could not be
queued, often because the real network device (in our case the mac802154
wpan device) has its queue stopped.  lowpan_xmit() should handle the
positive return code (for the debug statement) and return that value to
the higher layer so the higher layer will retry sending the packet.

Signed-off-by: Alan Ott <alan@signal11.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ieee802154/6lowpan.c

index e1b4580f78dd66498f4f66902698d7c45654139b..55e1fd5b3e56d4ede22c2a05a6f72cc3b4bffa44 100644 (file)
@@ -1139,10 +1139,10 @@ static netdev_tx_t lowpan_xmit(struct sk_buff *skb, struct net_device *dev)
 error:
        dev_kfree_skb(skb);
 out:
-       if (err < 0)
+       if (err)
                pr_debug("ERROR: xmit failed\n");
 
-       return (err < 0 ? NETDEV_TX_BUSY : NETDEV_TX_OK);
+       return (err < 0) ? NET_XMIT_DROP : err;
 }
 
 static struct wpan_phy *lowpan_get_phy(const struct net_device *dev)