aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/nvidia
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2011-10-18 17:00:24 -0400
committerDavid S. Miller <davem@davemloft.net>2011-10-19 03:10:46 -0400
commit9e903e085262ffbf1fc44a17ac06058aca03524a (patch)
tree4acefc97ba38c1733474d25c0b2053b56af97db1 /drivers/net/ethernet/nvidia
parentdd767856a36e00b631d65ebc4bb81b19915532d6 (diff)
net: add skb frag size accessors
To ease skb->truesize sanitization, its better to be able to localize all references to skb frags size. Define accessors : skb_frag_size() to fetch frag size, and skb_frag_size_{set|add|sub}() to manipulate it. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
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 {