aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2016-04-24 15:38:12 -0400
committerDavid S. Miller <davem@davemloft.net>2016-04-26 15:53:05 -0400
commit926f27300100f4233c7665649f68fcf615f58d68 (patch)
tree58af43e4fc60545d7d6514e23e4061108561b89d
parent4acff371f2e3f386422253c7fce0092a793ec1a4 (diff)
drivers: net: use NETDEV_TX_OK instead of NETDEV_TX_LOCKED
These drivers already call netif_stop_queue() so we should not be called unless tx space is available. Just free the skb and return TX_OK. Followup patch will remove NETDEV_TX_LOCKED from the kernel. Cc: linux-parisc@vger.kernel.org Cc: linux-hams@vger.kernel.org Cc: Thomas Sailer <t.sailer@alumni.ethz.ch> Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/amd/7990.c8
-rw-r--r--drivers/net/ethernet/amd/a2065.c7
-rw-r--r--drivers/net/ethernet/dec/tulip/de4x5.c7
-rw-r--r--drivers/net/hamradio/baycom_epp.c6
-rw-r--r--drivers/net/hamradio/hdlcdrv.c6
5 files changed, 21 insertions, 13 deletions
diff --git a/drivers/net/ethernet/amd/7990.c b/drivers/net/ethernet/amd/7990.c
index 66d0b73c39c0..8e7575571531 100644
--- a/drivers/net/ethernet/amd/7990.c
+++ b/drivers/net/ethernet/amd/7990.c
@@ -543,11 +543,13 @@ int lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
543 static int outs; 543 static int outs;
544 unsigned long flags; 544 unsigned long flags;
545 545
546 if (!TX_BUFFS_AVAIL)
547 return NETDEV_TX_LOCKED;
548
549 netif_stop_queue(dev); 546 netif_stop_queue(dev);
550 547
548 if (!TX_BUFFS_AVAIL) {
549 dev_consume_skb_any(skb);
550 return NETDEV_TX_OK;
551 }
552
551 skblen = skb->len; 553 skblen = skb->len;
552 554
553#ifdef DEBUG_DRIVER 555#ifdef DEBUG_DRIVER
diff --git a/drivers/net/ethernet/amd/a2065.c b/drivers/net/ethernet/amd/a2065.c
index 56139184b801..2a18d34d2610 100644
--- a/drivers/net/ethernet/amd/a2065.c
+++ b/drivers/net/ethernet/amd/a2065.c
@@ -547,10 +547,8 @@ static netdev_tx_t lance_start_xmit(struct sk_buff *skb,
547 547
548 local_irq_save(flags); 548 local_irq_save(flags);
549 549
550 if (!lance_tx_buffs_avail(lp)) { 550 if (!lance_tx_buffs_avail(lp))
551 local_irq_restore(flags); 551 goto out_free;
552 return NETDEV_TX_LOCKED;
553 }
554 552
555#ifdef DEBUG 553#ifdef DEBUG
556 /* dump the packet */ 554 /* dump the packet */
@@ -573,6 +571,7 @@ static netdev_tx_t lance_start_xmit(struct sk_buff *skb,
573 571
574 /* Kick the lance: transmit now */ 572 /* Kick the lance: transmit now */
575 ll->rdp = LE_C0_INEA | LE_C0_TDMD; 573 ll->rdp = LE_C0_INEA | LE_C0_TDMD;
574 out_free:
576 dev_kfree_skb(skb); 575 dev_kfree_skb(skb);
577 576
578 local_irq_restore(flags); 577 local_irq_restore(flags);
diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c
index 3acde3b9b767..d88fbab378aa 100644
--- a/drivers/net/ethernet/dec/tulip/de4x5.c
+++ b/drivers/net/ethernet/dec/tulip/de4x5.c
@@ -1465,7 +1465,7 @@ de4x5_queue_pkt(struct sk_buff *skb, struct net_device *dev)
1465 1465
1466 netif_stop_queue(dev); 1466 netif_stop_queue(dev);
1467 if (!lp->tx_enable) /* Cannot send for now */ 1467 if (!lp->tx_enable) /* Cannot send for now */
1468 return NETDEV_TX_LOCKED; 1468 goto tx_err;
1469 1469
1470 /* 1470 /*
1471 ** Clean out the TX ring asynchronously to interrupts - sometimes the 1471 ** Clean out the TX ring asynchronously to interrupts - sometimes the
@@ -1478,7 +1478,7 @@ de4x5_queue_pkt(struct sk_buff *skb, struct net_device *dev)
1478 1478
1479 /* Test if cache is already locked - requeue skb if so */ 1479 /* Test if cache is already locked - requeue skb if so */
1480 if (test_and_set_bit(0, (void *)&lp->cache.lock) && !lp->interrupt) 1480 if (test_and_set_bit(0, (void *)&lp->cache.lock) && !lp->interrupt)
1481 return NETDEV_TX_LOCKED; 1481 goto tx_err;
1482 1482
1483 /* Transmit descriptor ring full or stale skb */ 1483 /* Transmit descriptor ring full or stale skb */
1484 if (netif_queue_stopped(dev) || (u_long) lp->tx_skb[lp->tx_new] > 1) { 1484 if (netif_queue_stopped(dev) || (u_long) lp->tx_skb[lp->tx_new] > 1) {
@@ -1519,6 +1519,9 @@ de4x5_queue_pkt(struct sk_buff *skb, struct net_device *dev)
1519 lp->cache.lock = 0; 1519 lp->cache.lock = 0;
1520 1520
1521 return NETDEV_TX_OK; 1521 return NETDEV_TX_OK;
1522tx_err:
1523 dev_kfree_skb_any(skb);
1524 return NETDEV_TX_OK;
1522} 1525}
1523 1526
1524/* 1527/*
diff --git a/drivers/net/hamradio/baycom_epp.c b/drivers/net/hamradio/baycom_epp.c
index 72c9f1f352b4..eb6663866c9f 100644
--- a/drivers/net/hamradio/baycom_epp.c
+++ b/drivers/net/hamradio/baycom_epp.c
@@ -780,8 +780,10 @@ static int baycom_send_packet(struct sk_buff *skb, struct net_device *dev)
780 dev_kfree_skb(skb); 780 dev_kfree_skb(skb);
781 return NETDEV_TX_OK; 781 return NETDEV_TX_OK;
782 } 782 }
783 if (bc->skb) 783 if (bc->skb) {
784 return NETDEV_TX_LOCKED; 784 dev_kfree_skb(skb);
785 return NETDEV_TX_OK;
786 }
785 /* strip KISS byte */ 787 /* strip KISS byte */
786 if (skb->len >= HDLCDRV_MAXFLEN+1 || skb->len < 3) { 788 if (skb->len >= HDLCDRV_MAXFLEN+1 || skb->len < 3) {
787 dev_kfree_skb(skb); 789 dev_kfree_skb(skb);
diff --git a/drivers/net/hamradio/hdlcdrv.c b/drivers/net/hamradio/hdlcdrv.c
index 49fe59b180a8..4bad0b894e9c 100644
--- a/drivers/net/hamradio/hdlcdrv.c
+++ b/drivers/net/hamradio/hdlcdrv.c
@@ -412,8 +412,10 @@ static netdev_tx_t hdlcdrv_send_packet(struct sk_buff *skb,
412 dev_kfree_skb(skb); 412 dev_kfree_skb(skb);
413 return NETDEV_TX_OK; 413 return NETDEV_TX_OK;
414 } 414 }
415 if (sm->skb) 415 if (sm->skb) {
416 return NETDEV_TX_LOCKED; 416 dev_kfree_skb(skb);
417 return NETDEV_TX_OK;
418 }
417 netif_stop_queue(dev); 419 netif_stop_queue(dev);
418 sm->skb = skb; 420 sm->skb = skb;
419 return NETDEV_TX_OK; 421 return NETDEV_TX_OK;