*
  * This runs with softirqs disabled.
  */
-unsigned int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter,
-                      unsigned int qid, struct net_device *dev)
+static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter,
+                    unsigned int qid, struct net_device *dev)
 {
        struct sge *sge = adapter->sge;
        struct cmdQ *q = &sge->cmdQ[qid];
                        set_bit(dev->if_port, &sge->stopped_tx_queues);
                        sge->stats.cmdQ_full[3]++;
                        spin_unlock(&q->lock);
-                       CH_ERR("%s: Tx ring full while queue awake!\n",
-                              adapter->name);
-                       return 1;
+                       if (!netif_queue_stopped(dev))
+                               CH_ERR("%s: Tx ring full while queue awake!\n",
+                                      adapter->name);
+                       return NETDEV_TX_BUSY;
                }
                if (unlikely(credits - count < q->stop_thres)) {
                        sge->stats.cmdQ_full[3]++;
                        writel(F_CMDQ0_ENABLE, adapter->regs + A_SG_DOORBELL);
                }
        }
-       return 0;
+       return NETDEV_TX_OK;
 }
 
 #define MK_ETH_TYPE_MSS(type, mss) (((mss) & 0x3FFF) | ((type) << 14))
                if (unlikely(skb->len < ETH_HLEN ||
                             skb->len > dev->mtu + eth_hdr_len(skb->data))) {
                        dev_kfree_skb_any(skb);
-                       return NET_XMIT_SUCCESS;
+                       return NETDEV_TX_OK;
                }
 
                /*
                        skb = skb_realloc_headroom(skb, sizeof(*cpl));
                        dev_kfree_skb_any(orig_skb);
                        if (!skb)
-                               return -ENOMEM;
+                               return NETDEV_TX_OK;
                }
 
                if (!(adapter->flags & UDP_CSUM_CAPABLE) &&
                    skb->nh.iph->protocol == IPPROTO_UDP)
                        if (unlikely(skb_checksum_help(skb, 0))) {
                                dev_kfree_skb_any(skb);
-                               return -ENOMEM;
+                               return NETDEV_TX_OK;
                        }
 
                /* Hmmm, assuming to catch the gratious arp... and we'll use
 
 int t1_sge_set_coalesce_params(struct sge *, struct sge_params *);
 void t1_sge_destroy(struct sge *);
 intr_handler_t t1_select_intr_handler(adapter_t *adapter);
-unsigned int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter,
-                      unsigned int qid, struct net_device *netdev);
 int t1_start_xmit(struct sk_buff *skb, struct net_device *dev);
 void t1_set_vlan_accel(struct adapter *adapter, int on_off);
 void t1_sge_start(struct sge *);