aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshemminger@osdl.org <shemminger@osdl.org>2006-08-28 13:00:49 -0400
committerJeff Garzik <jeff@garzik.org>2006-08-29 17:18:30 -0400
commite07560cd4f762935968a1120168eb7d22260d85f (patch)
treefb1b41403609c550e0dffb1d6365ff8883d8e9cb
parentbb507fe11ffda19eee158ce0be42d222135b7aca (diff)
[PATCH] sky2: TSO mss optimization
The MSS in the transmit engine only has to change if TSO mtu changes. This means less commands to the chip when mixing TSO and regular data. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/net/sky2.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 2a2adc23f6ae..fe60f0462c97 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -1244,15 +1244,15 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev)
1244 mss += ((skb->h.th->doff - 5) * 4); /* TCP options */ 1244 mss += ((skb->h.th->doff - 5) * 4); /* TCP options */
1245 mss += (skb->nh.iph->ihl * 4) + sizeof(struct tcphdr); 1245 mss += (skb->nh.iph->ihl * 4) + sizeof(struct tcphdr);
1246 mss += ETH_HLEN; 1246 mss += ETH_HLEN;
1247 }
1248 1247
1249 if (mss != sky2->tx_last_mss) { 1248 if (mss != sky2->tx_last_mss) {
1250 le = get_tx_le(sky2); 1249 le = get_tx_le(sky2);
1251 le->tx.tso.size = cpu_to_le16(mss); 1250 le->tx.tso.size = cpu_to_le16(mss);
1252 le->tx.tso.rsvd = 0; 1251 le->tx.tso.rsvd = 0;
1253 le->opcode = OP_LRGLEN | HW_OWNER; 1252 le->opcode = OP_LRGLEN | HW_OWNER;
1254 le->ctrl = 0; 1253 le->ctrl = 0;
1255 sky2->tx_last_mss = mss; 1254 sky2->tx_last_mss = mss;
1255 }
1256 } 1256 }
1257 1257
1258 ctrl = 0; 1258 ctrl = 0;
@@ -1320,7 +1320,7 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev)
1320 le->opcode = OP_BUFFER | HW_OWNER; 1320 le->opcode = OP_BUFFER | HW_OWNER;
1321 1321
1322 fre = sky2->tx_ring 1322 fre = sky2->tx_ring
1323 + RING_NEXT((re - sky2->tx_ring) + i, TX_RING_SIZE); 1323 + RING_NEXT((re - sky2->tx_ring) + i, TX_RING_SIZE);
1324 pci_unmap_addr_set(fre, mapaddr, mapping); 1324 pci_unmap_addr_set(fre, mapaddr, mapping);
1325 } 1325 }
1326 1326