aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/atlx/atl1.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/atlx/atl1.c')
-rw-r--r--drivers/net/atlx/atl1.c18
1 files changed, 1 insertions, 17 deletions
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
index e00a9867390a..5f157e09e94d 100644
--- a/drivers/net/atlx/atl1.c
+++ b/drivers/net/atlx/atl1.c
@@ -2109,7 +2109,6 @@ static u16 atl1_tpd_avail(struct atl1_tpd_ring *tpd_ring)
2109static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb, 2109static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb,
2110 struct tx_packet_desc *ptpd) 2110 struct tx_packet_desc *ptpd)
2111{ 2111{
2112 /* spinlock held */
2113 u8 hdr_len, ip_off; 2112 u8 hdr_len, ip_off;
2114 u32 real_len; 2113 u32 real_len;
2115 int err; 2114 int err;
@@ -2196,7 +2195,6 @@ static int atl1_tx_csum(struct atl1_adapter *adapter, struct sk_buff *skb,
2196static void atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb, 2195static void atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb,
2197 struct tx_packet_desc *ptpd) 2196 struct tx_packet_desc *ptpd)
2198{ 2197{
2199 /* spinlock held */
2200 struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring; 2198 struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring;
2201 struct atl1_buffer *buffer_info; 2199 struct atl1_buffer *buffer_info;
2202 u16 buf_len = skb->len; 2200 u16 buf_len = skb->len;
@@ -2303,7 +2301,6 @@ static void atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb,
2303static void atl1_tx_queue(struct atl1_adapter *adapter, u16 count, 2301static void atl1_tx_queue(struct atl1_adapter *adapter, u16 count,
2304 struct tx_packet_desc *ptpd) 2302 struct tx_packet_desc *ptpd)
2305{ 2303{
2306 /* spinlock held */
2307 struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring; 2304 struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring;
2308 struct atl1_buffer *buffer_info; 2305 struct atl1_buffer *buffer_info;
2309 struct tx_packet_desc *tpd; 2306 struct tx_packet_desc *tpd;
@@ -2361,7 +2358,6 @@ static int atl1_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
2361 struct tx_packet_desc *ptpd; 2358 struct tx_packet_desc *ptpd;
2362 u16 frag_size; 2359 u16 frag_size;
2363 u16 vlan_tag; 2360 u16 vlan_tag;
2364 unsigned long flags;
2365 unsigned int nr_frags = 0; 2361 unsigned int nr_frags = 0;
2366 unsigned int mss = 0; 2362 unsigned int mss = 0;
2367 unsigned int f; 2363 unsigned int f;
@@ -2399,18 +2395,9 @@ static int atl1_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
2399 } 2395 }
2400 } 2396 }
2401 2397
2402 if (!spin_trylock_irqsave(&adapter->lock, flags)) {
2403 /* Can't get lock - tell upper layer to requeue */
2404 if (netif_msg_tx_queued(adapter))
2405 dev_printk(KERN_DEBUG, &adapter->pdev->dev,
2406 "tx locked\n");
2407 return NETDEV_TX_LOCKED;
2408 }
2409
2410 if (atl1_tpd_avail(&adapter->tpd_ring) < count) { 2398 if (atl1_tpd_avail(&adapter->tpd_ring) < count) {
2411 /* not enough descriptors */ 2399 /* not enough descriptors */
2412 netif_stop_queue(netdev); 2400 netif_stop_queue(netdev);
2413 spin_unlock_irqrestore(&adapter->lock, flags);
2414 if (netif_msg_tx_queued(adapter)) 2401 if (netif_msg_tx_queued(adapter))
2415 dev_printk(KERN_DEBUG, &adapter->pdev->dev, 2402 dev_printk(KERN_DEBUG, &adapter->pdev->dev,
2416 "tx busy\n"); 2403 "tx busy\n");
@@ -2432,7 +2419,6 @@ static int atl1_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
2432 2419
2433 tso = atl1_tso(adapter, skb, ptpd); 2420 tso = atl1_tso(adapter, skb, ptpd);
2434 if (tso < 0) { 2421 if (tso < 0) {
2435 spin_unlock_irqrestore(&adapter->lock, flags);
2436 dev_kfree_skb_any(skb); 2422 dev_kfree_skb_any(skb);
2437 return NETDEV_TX_OK; 2423 return NETDEV_TX_OK;
2438 } 2424 }
@@ -2440,7 +2426,6 @@ static int atl1_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
2440 if (!tso) { 2426 if (!tso) {
2441 ret_val = atl1_tx_csum(adapter, skb, ptpd); 2427 ret_val = atl1_tx_csum(adapter, skb, ptpd);
2442 if (ret_val < 0) { 2428 if (ret_val < 0) {
2443 spin_unlock_irqrestore(&adapter->lock, flags);
2444 dev_kfree_skb_any(skb); 2429 dev_kfree_skb_any(skb);
2445 return NETDEV_TX_OK; 2430 return NETDEV_TX_OK;
2446 } 2431 }
@@ -2449,7 +2434,7 @@ static int atl1_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
2449 atl1_tx_map(adapter, skb, ptpd); 2434 atl1_tx_map(adapter, skb, ptpd);
2450 atl1_tx_queue(adapter, count, ptpd); 2435 atl1_tx_queue(adapter, count, ptpd);
2451 atl1_update_mailbox(adapter); 2436 atl1_update_mailbox(adapter);
2452 spin_unlock_irqrestore(&adapter->lock, flags); 2437 mmiowb();
2453 netdev->trans_start = jiffies; 2438 netdev->trans_start = jiffies;
2454 return NETDEV_TX_OK; 2439 return NETDEV_TX_OK;
2455} 2440}
@@ -3024,7 +3009,6 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
3024 netdev->features = NETIF_F_HW_CSUM; 3009 netdev->features = NETIF_F_HW_CSUM;
3025 netdev->features |= NETIF_F_SG; 3010 netdev->features |= NETIF_F_SG;
3026 netdev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX); 3011 netdev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
3027 netdev->features |= NETIF_F_LLTX;
3028 3012
3029 /* 3013 /*
3030 * patch for some L1 of old version, 3014 * patch for some L1 of old version,