aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorVlad Yasevich <vyasevic@redhat.com>2012-11-15 03:49:23 -0500
committerDavid S. Miller <davem@davemloft.net>2012-11-15 17:39:51 -0500
commitf191a1d17f227032c159e5499809f545402b6dc6 (patch)
tree48fc87a0b34bd2da06fedcd7e5e3ed6b08f7a3ac /net/core
parentc6b641a4c6b32f39db678c2441cb1ef824110d74 (diff)
net: Remove code duplication between offload structures
Move the offload callbacks into its own structure. Signed-off-by: Vlad Yasevich <vyasevic@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/dev.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index cf843a256cc6..cf105e886cca 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2102,16 +2102,16 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb,
2102 2102
2103 rcu_read_lock(); 2103 rcu_read_lock();
2104 list_for_each_entry_rcu(ptype, &offload_base, list) { 2104 list_for_each_entry_rcu(ptype, &offload_base, list) {
2105 if (ptype->type == type && ptype->gso_segment) { 2105 if (ptype->type == type && ptype->callbacks.gso_segment) {
2106 if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) { 2106 if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) {
2107 err = ptype->gso_send_check(skb); 2107 err = ptype->callbacks.gso_send_check(skb);
2108 segs = ERR_PTR(err); 2108 segs = ERR_PTR(err);
2109 if (err || skb_gso_ok(skb, features)) 2109 if (err || skb_gso_ok(skb, features))
2110 break; 2110 break;
2111 __skb_push(skb, (skb->data - 2111 __skb_push(skb, (skb->data -
2112 skb_network_header(skb))); 2112 skb_network_header(skb)));
2113 } 2113 }
2114 segs = ptype->gso_segment(skb, features); 2114 segs = ptype->callbacks.gso_segment(skb, features);
2115 break; 2115 break;
2116 } 2116 }
2117 } 2117 }
@@ -3533,10 +3533,10 @@ static int napi_gro_complete(struct sk_buff *skb)
3533 3533
3534 rcu_read_lock(); 3534 rcu_read_lock();
3535 list_for_each_entry_rcu(ptype, head, list) { 3535 list_for_each_entry_rcu(ptype, head, list) {
3536 if (ptype->type != type || !ptype->gro_complete) 3536 if (ptype->type != type || !ptype->callbacks.gro_complete)
3537 continue; 3537 continue;
3538 3538
3539 err = ptype->gro_complete(skb); 3539 err = ptype->callbacks.gro_complete(skb);
3540 break; 3540 break;
3541 } 3541 }
3542 rcu_read_unlock(); 3542 rcu_read_unlock();
@@ -3598,7 +3598,7 @@ enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
3598 3598
3599 rcu_read_lock(); 3599 rcu_read_lock();
3600 list_for_each_entry_rcu(ptype, head, list) { 3600 list_for_each_entry_rcu(ptype, head, list) {
3601 if (ptype->type != type || !ptype->gro_receive) 3601 if (ptype->type != type || !ptype->callbacks.gro_receive)
3602 continue; 3602 continue;
3603 3603
3604 skb_set_network_header(skb, skb_gro_offset(skb)); 3604 skb_set_network_header(skb, skb_gro_offset(skb));
@@ -3608,7 +3608,7 @@ enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
3608 NAPI_GRO_CB(skb)->flush = 0; 3608 NAPI_GRO_CB(skb)->flush = 0;
3609 NAPI_GRO_CB(skb)->free = 0; 3609 NAPI_GRO_CB(skb)->free = 0;
3610 3610
3611 pp = ptype->gro_receive(&napi->gro_list, skb); 3611 pp = ptype->callbacks.gro_receive(&napi->gro_list, skb);
3612 break; 3612 break;
3613 } 3613 }
3614 rcu_read_unlock(); 3614 rcu_read_unlock();