diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2012-04-05 10:40:25 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-04-06 02:43:13 -0400 |
commit | e34fac1c2e9ec531c2d63a5e3aa9a6d0ef36a1d3 (patch) | |
tree | 4a7948644e33badd661ef6cff438ef6548716362 /Documentation | |
parent | de7aca16fd6c32719b6a7d4480b8f4685f69f7ff (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.txt | 22 |
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 | ||
3 | Transmit path guidelines: | 3 | Transmit path guidelines: |
4 | 4 | ||
5 | 1) The ndo_start_xmit method must never return '1' under any | 5 | 1) 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: | |||
61 | 2) An ndo_start_xmit method must not modify the shared parts of a | 62 | 2) An ndo_start_xmit method must not modify the shared parts of a |
62 | cloned SKB. | 63 | cloned SKB. |
63 | 64 | ||
64 | 3) Do not forget that once you return 0 from your ndo_start_xmit | 65 | 3) 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 | ||
77 | Probing guidelines: | 79 | Probing guidelines: |
78 | 80 | ||