Commit d77eeb70 authored by Patrick McHardy's avatar Patrick McHardy Committed by David S. Miller

net: fix network drivers ndo_start_xmit() return values

Fix up remaining drivers returning a magic or an errno value from their
ndo_start_xmit() functions that were missed in the first pass:

- isdn_net: missed conversion
- bpqether: missed conversion: skb is freed, so return NETDEV_TX_OK
- hp100: intention appears to be to resubmit skb once resources are
  available, but due to no queue handling it is dropped for now.
- lapbether: skb is freed, so return NETDEV_TX_OK
Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5dbc9011
...@@ -1300,7 +1300,7 @@ isdn_net_start_xmit(struct sk_buff *skb, struct net_device *ndev) ...@@ -1300,7 +1300,7 @@ isdn_net_start_xmit(struct sk_buff *skb, struct net_device *ndev)
netif_stop_queue(ndev); netif_stop_queue(ndev);
} }
} }
return 1; return NETDEV_TX_BUSY;
} }
/* /*
......
...@@ -260,7 +260,7 @@ static int bpq_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -260,7 +260,7 @@ static int bpq_xmit(struct sk_buff *skb, struct net_device *dev)
*/ */
if (!netif_running(dev)) { if (!netif_running(dev)) {
kfree_skb(skb); kfree_skb(skb);
return -ENODEV; return NETDEV_TX_OK;
} }
skb_pull(skb, 1); skb_pull(skb, 1);
......
...@@ -1495,13 +1495,8 @@ static int hp100_start_xmit_bm(struct sk_buff *skb, struct net_device *dev) ...@@ -1495,13 +1495,8 @@ static int hp100_start_xmit_bm(struct sk_buff *skb, struct net_device *dev)
hp100_outw(0x4210, TRACE); hp100_outw(0x4210, TRACE);
printk("hp100: %s: start_xmit_bm\n", dev->name); printk("hp100: %s: start_xmit_bm\n", dev->name);
#endif #endif
if (skb == NULL) {
return 0;
}
if (skb->len <= 0) if (skb->len <= 0)
return 0; goto drop;
if (lp->chip == HP100_CHIPID_SHASTA && skb_padto(skb, ETH_ZLEN)) if (lp->chip == HP100_CHIPID_SHASTA && skb_padto(skb, ETH_ZLEN))
return 0; return 0;
...@@ -1514,10 +1509,10 @@ static int hp100_start_xmit_bm(struct sk_buff *skb, struct net_device *dev) ...@@ -1514,10 +1509,10 @@ static int hp100_start_xmit_bm(struct sk_buff *skb, struct net_device *dev)
#endif #endif
/* not waited long enough since last tx? */ /* not waited long enough since last tx? */
if (time_before(jiffies, dev->trans_start + HZ)) if (time_before(jiffies, dev->trans_start + HZ))
return -EAGAIN; goto drop;
if (hp100_check_lan(dev)) if (hp100_check_lan(dev))
return -EIO; goto drop;
if (lp->lan_type == HP100_LAN_100 && lp->hub_status < 0) { if (lp->lan_type == HP100_LAN_100 && lp->hub_status < 0) {
/* we have a 100Mb/s adapter but it isn't connected to hub */ /* we have a 100Mb/s adapter but it isn't connected to hub */
...@@ -1551,7 +1546,7 @@ static int hp100_start_xmit_bm(struct sk_buff *skb, struct net_device *dev) ...@@ -1551,7 +1546,7 @@ static int hp100_start_xmit_bm(struct sk_buff *skb, struct net_device *dev)
} }
dev->trans_start = jiffies; dev->trans_start = jiffies;
return -EAGAIN; goto drop;
} }
/* /*
...@@ -1591,6 +1586,10 @@ static int hp100_start_xmit_bm(struct sk_buff *skb, struct net_device *dev) ...@@ -1591,6 +1586,10 @@ static int hp100_start_xmit_bm(struct sk_buff *skb, struct net_device *dev)
dev->trans_start = jiffies; dev->trans_start = jiffies;
return 0; return 0;
drop:
dev_kfree_skb(skb);
return NETDEV_TX_OK;
} }
...@@ -1648,16 +1647,11 @@ static int hp100_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1648,16 +1647,11 @@ static int hp100_start_xmit(struct sk_buff *skb, struct net_device *dev)
hp100_outw(0x4212, TRACE); hp100_outw(0x4212, TRACE);
printk("hp100: %s: start_xmit\n", dev->name); printk("hp100: %s: start_xmit\n", dev->name);
#endif #endif
if (skb == NULL) {
return 0;
}
if (skb->len <= 0) if (skb->len <= 0)
return 0; goto drop;
if (hp100_check_lan(dev)) if (hp100_check_lan(dev))
return -EIO; goto drop;
/* If there is not enough free memory on the card... */ /* If there is not enough free memory on the card... */
i = hp100_inl(TX_MEM_FREE) & 0x7fffffff; i = hp100_inl(TX_MEM_FREE) & 0x7fffffff;
...@@ -1671,7 +1665,7 @@ static int hp100_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1671,7 +1665,7 @@ static int hp100_start_xmit(struct sk_buff *skb, struct net_device *dev)
printk("hp100: %s: trans_start timing problem\n", printk("hp100: %s: trans_start timing problem\n",
dev->name); dev->name);
#endif #endif
return -EAGAIN; goto drop;
} }
if (lp->lan_type == HP100_LAN_100 && lp->hub_status < 0) { if (lp->lan_type == HP100_LAN_100 && lp->hub_status < 0) {
/* we have a 100Mb/s adapter but it isn't connected to hub */ /* we have a 100Mb/s adapter but it isn't connected to hub */
...@@ -1705,7 +1699,7 @@ static int hp100_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1705,7 +1699,7 @@ static int hp100_start_xmit(struct sk_buff *skb, struct net_device *dev)
} }
} }
dev->trans_start = jiffies; dev->trans_start = jiffies;
return -EAGAIN; goto drop;
} }
for (i = 0; i < 6000 && (hp100_inb(OPTION_MSW) & HP100_TX_CMD); i++) { for (i = 0; i < 6000 && (hp100_inb(OPTION_MSW) & HP100_TX_CMD); i++) {
...@@ -1759,6 +1753,11 @@ static int hp100_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1759,6 +1753,11 @@ static int hp100_start_xmit(struct sk_buff *skb, struct net_device *dev)
#endif #endif
return 0; return 0;
drop:
dev_kfree_skb(skb);
return NETDEV_TX_OK;
} }
......
...@@ -149,46 +149,40 @@ static int lapbeth_data_indication(struct net_device *dev, struct sk_buff *skb) ...@@ -149,46 +149,40 @@ static int lapbeth_data_indication(struct net_device *dev, struct sk_buff *skb)
*/ */
static int lapbeth_xmit(struct sk_buff *skb, struct net_device *dev) static int lapbeth_xmit(struct sk_buff *skb, struct net_device *dev)
{ {
int err = -ENODEV; int err;
/* /*
* Just to be *really* sure not to send anything if the interface * Just to be *really* sure not to send anything if the interface
* is down, the ethernet device may have gone. * is down, the ethernet device may have gone.
*/ */
if (!netif_running(dev)) { if (!netif_running(dev))
goto drop; goto drop;
}
switch (skb->data[0]) { switch (skb->data[0]) {
case 0x00: case 0x00:
err = 0;
break; break;
case 0x01: case 0x01:
if ((err = lapb_connect_request(dev)) != LAPB_OK) if ((err = lapb_connect_request(dev)) != LAPB_OK)
printk(KERN_ERR "lapbeth: lapb_connect_request " printk(KERN_ERR "lapbeth: lapb_connect_request "
"error: %d\n", err); "error: %d\n", err);
goto drop_ok; goto drop;
case 0x02: case 0x02:
if ((err = lapb_disconnect_request(dev)) != LAPB_OK) if ((err = lapb_disconnect_request(dev)) != LAPB_OK)
printk(KERN_ERR "lapbeth: lapb_disconnect_request " printk(KERN_ERR "lapbeth: lapb_disconnect_request "
"err: %d\n", err); "err: %d\n", err);
/* Fall thru */ /* Fall thru */
default: default:
goto drop_ok; goto drop;
} }
skb_pull(skb, 1); skb_pull(skb, 1);
if ((err = lapb_data_request(dev, skb)) != LAPB_OK) { if ((err = lapb_data_request(dev, skb)) != LAPB_OK) {
printk(KERN_ERR "lapbeth: lapb_data_request error - %d\n", err); printk(KERN_ERR "lapbeth: lapb_data_request error - %d\n", err);
err = -ENOMEM;
goto drop; goto drop;
} }
err = 0;
out: out:
return err; return NETDEV_TX_OK;
drop_ok:
err = 0;
drop: drop:
kfree_skb(skb); kfree_skb(skb);
goto out; goto out;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment