aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/atlx/atl1.c29
1 files changed, 11 insertions, 18 deletions
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
index a84c97c75c75..8a26dad96acb 100644
--- a/drivers/net/atlx/atl1.c
+++ b/drivers/net/atlx/atl1.c
@@ -36,7 +36,6 @@
36 * A very incomplete list of things that need to be dealt with: 36 * A very incomplete list of things that need to be dealt with:
37 * 37 *
38 * TODO: 38 * TODO:
39 * Fix TSO; tx performance is horrible with TSO enabled.
40 * Wake on LAN. 39 * Wake on LAN.
41 * Add more ethtool functions. 40 * Add more ethtool functions.
42 * Fix abstruse irq enable/disable condition described here: 41 * Fix abstruse irq enable/disable condition described here:
@@ -1308,8 +1307,8 @@ static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb,
1308 tso->tsopl |= 1 << TSO_PARAM_ETHTYPE_SHIFT; 1307 tso->tsopl |= 1 << TSO_PARAM_ETHTYPE_SHIFT;
1309 1308
1310 tso->tsopl |= (iph->ihl & 1309 tso->tsopl |= (iph->ihl &
1311 CSUM_PARAM_IPHL_MASK) << CSUM_PARAM_IPHL_SHIFT; 1310 TSO_PARAM_IPHL_MASK) << TSO_PARAM_IPHL_SHIFT;
1312 tso->tsopl |= (tcp_hdrlen(skb) & 1311 tso->tsopl |= ((tcp_hdrlen(skb) >> 2) &
1313 TSO_PARAM_TCPHDRLEN_MASK) << 1312 TSO_PARAM_TCPHDRLEN_MASK) <<
1314 TSO_PARAM_TCPHDRLEN_SHIFT; 1313 TSO_PARAM_TCPHDRLEN_SHIFT;
1315 tso->tsopl |= (skb_shinfo(skb)->gso_size & 1314 tso->tsopl |= (skb_shinfo(skb)->gso_size &
@@ -1472,8 +1471,8 @@ static void atl1_tx_queue(struct atl1_adapter *adapter, int count,
1472 tpd->desc.tso.tsopl = descr->tso.tsopl; 1471 tpd->desc.tso.tsopl = descr->tso.tsopl;
1473 tpd->buffer_addr = cpu_to_le64(buffer_info->dma); 1472 tpd->buffer_addr = cpu_to_le64(buffer_info->dma);
1474 tpd->desc.data = descr->data; 1473 tpd->desc.data = descr->data;
1475 tpd->desc.csum.csumpu |= (cpu_to_le16(buffer_info->length) & 1474 tpd->desc.tso.tsopu |= (cpu_to_le16(buffer_info->length) &
1476 CSUM_PARAM_BUFLEN_MASK) << CSUM_PARAM_BUFLEN_SHIFT; 1475 TSO_PARAM_BUFLEN_MASK) << TSO_PARAM_BUFLEN_SHIFT;
1477 1476
1478 val = (descr->tso.tsopl >> TSO_PARAM_SEGMENT_SHIFT) & 1477 val = (descr->tso.tsopl >> TSO_PARAM_SEGMENT_SHIFT) &
1479 TSO_PARAM_SEGMENT_MASK; 1478 TSO_PARAM_SEGMENT_MASK;
@@ -1481,7 +1480,7 @@ static void atl1_tx_queue(struct atl1_adapter *adapter, int count,
1481 tpd->desc.tso.tsopl |= 1 << TSO_PARAM_HDRFLAG_SHIFT; 1480 tpd->desc.tso.tsopl |= 1 << TSO_PARAM_HDRFLAG_SHIFT;
1482 1481
1483 if (j == (count - 1)) 1482 if (j == (count - 1))
1484 tpd->desc.csum.csumpl |= 1 << CSUM_PARAM_EOP_SHIFT; 1483 tpd->desc.tso.tsopl |= 1 << TSO_PARAM_EOP_SHIFT;
1485 1484
1486 if (++tpd_next_to_use == tpd_ring->count) 1485 if (++tpd_next_to_use == tpd_ring->count)
1487 tpd_next_to_use = 0; 1486 tpd_next_to_use = 0;
@@ -1574,9 +1573,9 @@ static int atl1_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
1574 vlan_tag = vlan_tx_tag_get(skb); 1573 vlan_tag = vlan_tx_tag_get(skb);
1575 vlan_tag = (vlan_tag << 4) | (vlan_tag >> 13) | 1574 vlan_tag = (vlan_tag << 4) | (vlan_tag >> 13) |
1576 ((vlan_tag >> 9) & 0x8); 1575 ((vlan_tag >> 9) & 0x8);
1577 param.csum.csumpl |= 1 << CSUM_PARAM_INSVLAG_SHIFT; 1576 param.tso.tsopl |= 1 << TSO_PARAM_INSVLAG_SHIFT;
1578 param.csum.csumpu |= (vlan_tag & CSUM_PARAM_VALANTAG_MASK) << 1577 param.tso.tsopu |= (vlan_tag & TSO_PARAM_VLANTAG_MASK) <<
1579 CSUM_PARAM_VALAN_SHIFT; 1578 TSO_PARAM_VLAN_SHIFT;
1580 } 1579 }
1581 1580
1582 tso = atl1_tso(adapter, skb, &param.tso); 1581 tso = atl1_tso(adapter, skb, &param.tso);
@@ -1595,8 +1594,8 @@ static int atl1_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
1595 } 1594 }
1596 } 1595 }
1597 1596
1598 val = (param.csum.csumpl >> CSUM_PARAM_SEGMENT_SHIFT) & 1597 val = (param.tso.tsopl >> TSO_PARAM_SEGMENT_SHIFT) &
1599 CSUM_PARAM_SEGMENT_MASK; 1598 TSO_PARAM_SEGMENT_MASK;
1600 atl1_tx_map(adapter, skb, 1 == val); 1599 atl1_tx_map(adapter, skb, 1 == val);
1601 atl1_tx_queue(adapter, count, &param); 1600 atl1_tx_queue(adapter, count, &param);
1602 netdev->trans_start = jiffies; 1601 netdev->trans_start = jiffies;
@@ -2091,13 +2090,7 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
2091 netdev->features = NETIF_F_HW_CSUM; 2090 netdev->features = NETIF_F_HW_CSUM;
2092 netdev->features |= NETIF_F_SG; 2091 netdev->features |= NETIF_F_SG;
2093 netdev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX); 2092 netdev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
2094 2093 netdev->features |= NETIF_F_TSO;
2095 /*
2096 * FIXME - Until tso performance gets fixed, disable the feature.
2097 * Enable it with ethtool -K if desired.
2098 */
2099 /* netdev->features |= NETIF_F_TSO; */
2100
2101 netdev->features |= NETIF_F_LLTX; 2094 netdev->features |= NETIF_F_LLTX;
2102 2095
2103 /* 2096 /*