aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2012-04-05 10:40:25 -0400
committerDavid S. Miller <davem@davemloft.net>2012-04-06 02:43:13 -0400
commite34fac1c2e9ec531c2d63a5e3aa9a6d0ef36a1d3 (patch)
tree4a7948644e33badd661ef6cff438ef6548716362 /Documentation
parentde7aca16fd6c32719b6a7d4480b8f4685f69f7ff (diff)
doc, net: Update ndo_start_xmit return type and values
Commit dc1f8bf68b311b1537cb65893430b6796118498a ('netdev: change transmit to limited range type') changed the required return type and 9a1654ba0b50402a6bd03c7b0fe9b0200a5ea7b1 ('net: Optimize hard_start_xmit() return checking') changed the valid numerical return values. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/networking/driver.txt22
1 files changed, 12 insertions, 10 deletions
diff --git a/Documentation/networking/driver.txt b/Documentation/networking/driver.txt
index 2128e4169c5b..da59e2884130 100644
--- a/Documentation/networking/driver.txt
+++ b/Documentation/networking/driver.txt
@@ -2,16 +2,16 @@ Document about softnet driver issues
2 2
3Transmit path guidelines: 3Transmit path guidelines:
4 4
51) The ndo_start_xmit method must never return '1' under any 51) The ndo_start_xmit method must not return NETDEV_TX_BUSY under
6 normal circumstances. It is considered a hard error unless 6 any normal circumstances. It is considered a hard error unless
7 there is no way your device can tell ahead of time when it's 7 there is no way your device can tell ahead of time when it's
8 transmit function will become busy. 8 transmit function will become busy.
9 9
10 Instead it must maintain the queue properly. For example, 10 Instead it must maintain the queue properly. For example,
11 for a driver implementing scatter-gather this means: 11 for a driver implementing scatter-gather this means:
12 12
13 static int drv_hard_start_xmit(struct sk_buff *skb, 13 static netdev_tx_t drv_hard_start_xmit(struct sk_buff *skb,
14 struct net_device *dev) 14 struct net_device *dev)
15 { 15 {
16 struct drv *dp = netdev_priv(dev); 16 struct drv *dp = netdev_priv(dev);
17 17
@@ -23,7 +23,7 @@ Transmit path guidelines:
23 unlock_tx(dp); 23 unlock_tx(dp);
24 printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n", 24 printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n",
25 dev->name); 25 dev->name);
26 return 1; 26 return NETDEV_TX_BUSY;
27 } 27 }
28 28
29 ... queue packet to card ... 29 ... queue packet to card ...
@@ -35,6 +35,7 @@ Transmit path guidelines:
35 ... 35 ...
36 unlock_tx(dp); 36 unlock_tx(dp);
37 ... 37 ...
38 return NETDEV_TX_OK;
38 } 39 }
39 40
40 And then at the end of your TX reclamation event handling: 41 And then at the end of your TX reclamation event handling:
@@ -61,9 +62,9 @@ Transmit path guidelines:
612) An ndo_start_xmit method must not modify the shared parts of a 622) An ndo_start_xmit method must not modify the shared parts of a
62 cloned SKB. 63 cloned SKB.
63 64
643) Do not forget that once you return 0 from your ndo_start_xmit 653) Do not forget that once you return NETDEV_TX_OK from your
65 method, it is your driver's responsibility to free up the SKB 66 ndo_start_xmit method, it is your driver's responsibility to free
66 and in some finite amount of time. 67 up the SKB and in some finite amount of time.
67 68
68 For example, this means that it is not allowed for your TX 69 For example, this means that it is not allowed for your TX
69 mitigation scheme to let TX packets "hang out" in the TX 70 mitigation scheme to let TX packets "hang out" in the TX
@@ -71,8 +72,9 @@ Transmit path guidelines:
71 This error can deadlock sockets waiting for send buffer room 72 This error can deadlock sockets waiting for send buffer room
72 to be freed up. 73 to be freed up.
73 74
74 If you return 1 from the ndo_start_xmit method, you must not keep 75 If you return NETDEV_TX_BUSY from the ndo_start_xmit method, you
75 any reference to that SKB and you must not attempt to free it up. 76 must not keep any reference to that SKB and you must not attempt
77 to free it up.
76 78
77Probing guidelines: 79Probing guidelines:
78 80