/* et131x_tx - The handler to tx a packet on the device */
 static netdev_tx_t et131x_tx(struct sk_buff *skb, struct net_device *netdev)
 {
-       int status = 0;
        struct et131x_adapter *adapter = netdev_priv(netdev);
        struct tx_ring *tx_ring = &adapter->tx_ring;
 
        netdev->trans_start = jiffies;
 
        /* TCB is not available */
-       if (tx_ring->used >= NUM_TCB) {
-               /* NOTE: If there's an error on send, no need to queue the
-                * packet under Linux; if we just send an error up to the
-                * netif layer, it will resend the skb to us.
-                */
-               status = -ENOMEM;
-       } else {
-               /* We need to see if the link is up; if it's not, make the
-                * netif layer think we're good and drop the packet
-                */
-               if ((adapter->flags & FMP_ADAPTER_FAIL_SEND_MASK) ||
-                   !netif_carrier_ok(netdev)) {
-                       dev_kfree_skb_any(skb);
-                       skb = NULL;
+       if (tx_ring->used >= NUM_TCB)
+               goto drop_err;
 
-                       adapter->netdev->stats.tx_dropped++;
-               } else {
-                       status = send_packet(skb, adapter);
-                       if (status != 0 && status != -ENOMEM) {
-                               /* On any other error, make netif think we're
-                                * OK and drop the packet
-                                */
-                               dev_kfree_skb_any(skb);
-                               skb = NULL;
-                               adapter->netdev->stats.tx_dropped++;
-                       }
-               }
-       }
+       if ((adapter->flags & FMP_ADAPTER_FAIL_SEND_MASK) ||
+           !netif_carrier_ok(netdev))
+               goto drop_err;
 
-       /* Check status and manage the netif queue if necessary */
-       if (status != 0) {
-               if (status == -ENOMEM)
-                       status = NETDEV_TX_BUSY;
-               else
-                       status = NETDEV_TX_OK;
-       }
-       return status;
+       if (send_packet(skb, adapter))
+               goto drop_err;
+
+       return NETDEV_TX_OK;
+
+drop_err:
+       dev_kfree_skb_any(skb);
+       skb = NULL;
+       adapter->netdev->stats.tx_dropped++;
+       return NETDEV_TX_OK;
 }
 
 /* et131x_tx_timeout - Timeout handler