netdevice: document NETDEV_TX_BUSY deprecation.
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 3 Apr 2015 11:47:17 +0000 (22:17 +1030)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 Apr 2015 16:37:36 +0000 (12:37 -0400)
This paraphrases DaveM (and steals some of his words) explaining why
a device shouldn't return NETDEV_TX_BUSY, even though it looks so inviting
to driver authors.

See http://www.spinics.net/lists/netdev/msg322350.html

Inspired-by: David Miller <davem@davemloft.net>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h

index 846a1f5bc9db93e7ee307d70810cc2ba47aae566..a710d22b174f3eac732945ccfd6b5eadf39910c3 100644 (file)
@@ -795,7 +795,10 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev,
  * netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb,
  *                               struct net_device *dev);
  *     Called when a packet needs to be transmitted.
- *     Must return NETDEV_TX_OK , NETDEV_TX_BUSY.
+ *     Returns NETDEV_TX_OK.  Can return NETDEV_TX_BUSY, but you should stop
+ *     the queue before that can happen; it's for obsolete devices and weird
+ *     corner cases, but the stack really does a non-trivial amount
+ *     of useless work if you return NETDEV_TX_BUSY.
  *        (can also return NETDEV_TX_LOCKED iff NETIF_F_LLTX)
  *     Required can not be NULL.
  *