diff options
| author | Patrick McHardy <kaber@trash.net> | 2009-06-12 00:08:02 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-06-13 04:18:37 -0400 |
| commit | 4153e77596c4caaf52293b0c6b2207d73ed8f1eb (patch) | |
| tree | 5920561315cfea1b89e287d264fdac6314c670ec /drivers/net/wireless/prism54 | |
| parent | 4bd73ae2682d9069746bb049a416d9ab90c6684b (diff) | |
net: fix network drivers ndo_start_xmit() return values (part 3)
net: fix network drivers ndo_start_xmit() return values (part 3)
Fix up wireless drivers that return an errno value to qdisc_restart(), causing
qdisc_restart() to print a warning an requeue/retransmit the skb.
- airo: transmission not implemented for chip, intention is to free and abort
- ipw2200: transmission not implemented for promiscous mode, intention is to
drop
- prism54: intention is to drop
- wl3501_cs: intention appears to be to drop
- zd1201: error counter indicates intention is to drop
All drivers compile tested.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/prism54')
| -rw-r--r-- | drivers/net/wireless/prism54/islpci_eth.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/drivers/net/wireless/prism54/islpci_eth.c b/drivers/net/wireless/prism54/islpci_eth.c index ef3ef4551b31..8f6210993448 100644 --- a/drivers/net/wireless/prism54/islpci_eth.c +++ b/drivers/net/wireless/prism54/islpci_eth.c | |||
| @@ -87,7 +87,6 @@ islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev) | |||
| 87 | unsigned long flags; | 87 | unsigned long flags; |
| 88 | unsigned char wds_mac[6]; | 88 | unsigned char wds_mac[6]; |
| 89 | u32 curr_frag; | 89 | u32 curr_frag; |
| 90 | int err = 0; | ||
| 91 | 90 | ||
| 92 | #if VERBOSE > SHOW_ERROR_MESSAGES | 91 | #if VERBOSE > SHOW_ERROR_MESSAGES |
| 93 | DEBUG(SHOW_FUNCTION_CALLS, "islpci_eth_transmit \n"); | 92 | DEBUG(SHOW_FUNCTION_CALLS, "islpci_eth_transmit \n"); |
| @@ -107,8 +106,6 @@ islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev) | |||
| 107 | isl38xx_w32_flush(priv->device_base, ISL38XX_DEV_INT_UPDATE, | 106 | isl38xx_w32_flush(priv->device_base, ISL38XX_DEV_INT_UPDATE, |
| 108 | ISL38XX_DEV_INT_REG); | 107 | ISL38XX_DEV_INT_REG); |
| 109 | udelay(ISL38XX_WRITEIO_DELAY); | 108 | udelay(ISL38XX_WRITEIO_DELAY); |
| 110 | |||
| 111 | err = -EBUSY; | ||
| 112 | goto drop_free; | 109 | goto drop_free; |
| 113 | } | 110 | } |
| 114 | /* Check alignment and WDS frame formatting. The start of the packet should | 111 | /* Check alignment and WDS frame formatting. The start of the packet should |
| @@ -152,7 +149,6 @@ islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev) | |||
| 152 | if (unlikely(newskb == NULL)) { | 149 | if (unlikely(newskb == NULL)) { |
| 153 | printk(KERN_ERR "%s: Cannot allocate skb\n", | 150 | printk(KERN_ERR "%s: Cannot allocate skb\n", |
| 154 | ndev->name); | 151 | ndev->name); |
| 155 | err = -ENOMEM; | ||
| 156 | goto drop_free; | 152 | goto drop_free; |
| 157 | } | 153 | } |
| 158 | newskb_offset = (4 - (long) newskb->data) & 0x03; | 154 | newskb_offset = (4 - (long) newskb->data) & 0x03; |
| @@ -197,8 +193,6 @@ islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev) | |||
| 197 | if (unlikely(pci_map_address == 0)) { | 193 | if (unlikely(pci_map_address == 0)) { |
| 198 | printk(KERN_WARNING "%s: cannot map buffer to PCI\n", | 194 | printk(KERN_WARNING "%s: cannot map buffer to PCI\n", |
| 199 | ndev->name); | 195 | ndev->name); |
| 200 | |||
| 201 | err = -EIO; | ||
| 202 | goto drop_free; | 196 | goto drop_free; |
| 203 | } | 197 | } |
| 204 | /* Place the fragment in the control block structure. */ | 198 | /* Place the fragment in the control block structure. */ |
| @@ -246,7 +240,7 @@ islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev) | |||
| 246 | ndev->stats.tx_dropped++; | 240 | ndev->stats.tx_dropped++; |
| 247 | spin_unlock_irqrestore(&priv->slock, flags); | 241 | spin_unlock_irqrestore(&priv->slock, flags); |
| 248 | dev_kfree_skb(skb); | 242 | dev_kfree_skb(skb); |
| 249 | return err; | 243 | return NETDEV_TX_OK; |
| 250 | } | 244 | } |
| 251 | 245 | ||
| 252 | static inline int | 246 | static inline int |
