aboutsummaryrefslogtreecommitdiffstats
path: root/net/8021q
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2009-01-29 09:19:48 -0500
committerDavid S. Miller <davem@davemloft.net>2009-01-29 19:33:02 -0500
commit5d0d9be8ef456afc6c3fb5f8aad06ef19b704b05 (patch)
tree9fc987d5c6850800a83465105af43af4ce9c76a4 /net/8021q
parent7019298a2a5058c4e324494d6c8d0598214c28f4 (diff)
gro: Move common completion code into helpers
Currently VLAN still has a bit of common code handling the aftermath of GRO that's shared with the common path. This patch moves them into shared helpers to reduce code duplication. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/8021q')
-rw-r--r--net/8021q/vlan_core.c39
1 files changed, 4 insertions, 35 deletions
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c
index e9db889d6222..2eb057a74654 100644
--- a/net/8021q/vlan_core.c
+++ b/net/8021q/vlan_core.c
@@ -98,22 +98,7 @@ drop:
98int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp, 98int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp,
99 unsigned int vlan_tci, struct sk_buff *skb) 99 unsigned int vlan_tci, struct sk_buff *skb)
100{ 100{
101 int err = NET_RX_SUCCESS; 101 return napi_skb_finish(vlan_gro_common(napi, grp, vlan_tci, skb), skb);
102
103 switch (vlan_gro_common(napi, grp, vlan_tci, skb)) {
104 case -1:
105 return netif_receive_skb(skb);
106
107 case 2:
108 err = NET_RX_DROP;
109 /* fall through */
110
111 case 1:
112 kfree_skb(skb);
113 break;
114 }
115
116 return err;
117} 102}
118EXPORT_SYMBOL(vlan_gro_receive); 103EXPORT_SYMBOL(vlan_gro_receive);
119 104
@@ -121,27 +106,11 @@ int vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp,
121 unsigned int vlan_tci, struct napi_gro_fraginfo *info) 106 unsigned int vlan_tci, struct napi_gro_fraginfo *info)
122{ 107{
123 struct sk_buff *skb = napi_fraginfo_skb(napi, info); 108 struct sk_buff *skb = napi_fraginfo_skb(napi, info);
124 int err = NET_RX_DROP;
125 109
126 if (!skb) 110 if (!skb)
127 goto out; 111 return NET_RX_DROP;
128
129 err = NET_RX_SUCCESS;
130
131 switch (vlan_gro_common(napi, grp, vlan_tci, skb)) {
132 case -1:
133 return netif_receive_skb(skb);
134
135 case 2:
136 err = NET_RX_DROP;
137 /* fall through */
138
139 case 1:
140 napi_reuse_skb(napi, skb);
141 break;
142 }
143 112
144out: 113 return napi_frags_finish(napi, skb,
145 return err; 114 vlan_gro_common(napi, grp, vlan_tci, skb));
146} 115}
147EXPORT_SYMBOL(vlan_gro_frags); 116EXPORT_SYMBOL(vlan_gro_frags);