aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/nvidia
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/nvidia')
-rw-r--r--drivers/net/ethernet/nvidia/forcedeth.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index d7763ab841d8..1e37eb98c4e2 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -2099,8 +2099,10 @@ static netdev_tx_t nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
2099 2099
2100 /* add fragments to entries count */ 2100 /* add fragments to entries count */
2101 for (i = 0; i < fragments; i++) { 2101 for (i = 0; i < fragments; i++) {
2102 entries += (skb_shinfo(skb)->frags[i].size >> NV_TX2_TSO_MAX_SHIFT) + 2102 u32 size = skb_frag_size(&skb_shinfo(skb)->frags[i]);
2103 ((skb_shinfo(skb)->frags[i].size & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0); 2103
2104 entries += (size >> NV_TX2_TSO_MAX_SHIFT) +
2105 ((size & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0);
2104 } 2106 }
2105 2107
2106 spin_lock_irqsave(&np->lock, flags); 2108 spin_lock_irqsave(&np->lock, flags);
@@ -2138,8 +2140,8 @@ static netdev_tx_t nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
2138 2140
2139 /* setup the fragments */ 2141 /* setup the fragments */
2140 for (i = 0; i < fragments; i++) { 2142 for (i = 0; i < fragments; i++) {
2141 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 2143 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
2142 u32 size = frag->size; 2144 u32 size = skb_frag_size(frag);
2143 offset = 0; 2145 offset = 0;
2144 2146
2145 do { 2147 do {
@@ -2211,8 +2213,10 @@ static netdev_tx_t nv_start_xmit_optimized(struct sk_buff *skb,
2211 2213
2212 /* add fragments to entries count */ 2214 /* add fragments to entries count */
2213 for (i = 0; i < fragments; i++) { 2215 for (i = 0; i < fragments; i++) {
2214 entries += (skb_shinfo(skb)->frags[i].size >> NV_TX2_TSO_MAX_SHIFT) + 2216 u32 size = skb_frag_size(&skb_shinfo(skb)->frags[i]);
2215 ((skb_shinfo(skb)->frags[i].size & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0); 2217
2218 entries += (size >> NV_TX2_TSO_MAX_SHIFT) +
2219 ((size & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0);
2216 } 2220 }
2217 2221
2218 spin_lock_irqsave(&np->lock, flags); 2222 spin_lock_irqsave(&np->lock, flags);
@@ -2253,7 +2257,7 @@ static netdev_tx_t nv_start_xmit_optimized(struct sk_buff *skb,
2253 /* setup the fragments */ 2257 /* setup the fragments */
2254 for (i = 0; i < fragments; i++) { 2258 for (i = 0; i < fragments; i++) {
2255 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 2259 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
2256 u32 size = frag->size; 2260 u32 size = skb_frag_size(frag);
2257 offset = 0; 2261 offset = 0;
2258 2262
2259 do { 2263 do {