static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb,
        struct tx_packet_desc *ptpd)
 {
-       /* spinlock held */
        u8 hdr_len, ip_off;
        u32 real_len;
        int err;
 static void atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb,
        struct tx_packet_desc *ptpd)
 {
-       /* spinlock held */
        struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring;
        struct atl1_buffer *buffer_info;
        u16 buf_len = skb->len;
 static void atl1_tx_queue(struct atl1_adapter *adapter, u16 count,
        struct tx_packet_desc *ptpd)
 {
-       /* spinlock held */
        struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring;
        struct atl1_buffer *buffer_info;
        struct tx_packet_desc *tpd;
        struct tx_packet_desc *ptpd;
        u16 frag_size;
        u16 vlan_tag;
-       unsigned long flags;
        unsigned int nr_frags = 0;
        unsigned int mss = 0;
        unsigned int f;
                }
        }
 
-       if (!spin_trylock_irqsave(&adapter->lock, flags)) {
-               /* Can't get lock - tell upper layer to requeue */
-               if (netif_msg_tx_queued(adapter))
-                       dev_printk(KERN_DEBUG, &adapter->pdev->dev,
-                               "tx locked\n");
-               return NETDEV_TX_LOCKED;
-       }
-
        if (atl1_tpd_avail(&adapter->tpd_ring) < count) {
                /* not enough descriptors */
                netif_stop_queue(netdev);
-               spin_unlock_irqrestore(&adapter->lock, flags);
                if (netif_msg_tx_queued(adapter))
                        dev_printk(KERN_DEBUG, &adapter->pdev->dev,
                                "tx busy\n");
 
        tso = atl1_tso(adapter, skb, ptpd);
        if (tso < 0) {
-               spin_unlock_irqrestore(&adapter->lock, flags);
                dev_kfree_skb_any(skb);
                return NETDEV_TX_OK;
        }
        if (!tso) {
                ret_val = atl1_tx_csum(adapter, skb, ptpd);
                if (ret_val < 0) {
-                       spin_unlock_irqrestore(&adapter->lock, flags);
                        dev_kfree_skb_any(skb);
                        return NETDEV_TX_OK;
                }
        atl1_tx_map(adapter, skb, ptpd);
        atl1_tx_queue(adapter, count, ptpd);
        atl1_update_mailbox(adapter);
-       spin_unlock_irqrestore(&adapter->lock, flags);
+       mmiowb();
        netdev->trans_start = jiffies;
        return NETDEV_TX_OK;
 }
        netdev->features = NETIF_F_HW_CSUM;
        netdev->features |= NETIF_F_SG;
        netdev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
-       netdev->features |= NETIF_F_LLTX;
 
        /*
         * patch for some L1 of old version,