diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-10-18 17:00:24 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-10-19 03:10:46 -0400 |
commit | 9e903e085262ffbf1fc44a17ac06058aca03524a (patch) | |
tree | 4acefc97ba38c1733474d25c0b2053b56af97db1 /drivers/net/ethernet/nvidia | |
parent | dd767856a36e00b631d65ebc4bb81b19915532d6 (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.c | 18 |
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 { |