projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[firefly-linux-kernel-4.4.55.git]
/
net
/
8021q
/
vlan_core.c
diff --git
a/net/8021q/vlan_core.c
b/net/8021q/vlan_core.c
index 2886d2fb9ab5d84dc8177a01778606a82904d6b5..2d6e405fc4981cf0189836ce3a163833269a2e8b 100644
(file)
--- a/
net/8021q/vlan_core.c
+++ b/
net/8021q/vlan_core.c
@@
-89,7
+89,9
@@
static int vlan_gro_common(struct napi_struct *napi, struct vlan_group *grp,
goto drop;
for (p = napi->gro_list; p; p = p->next) {
goto drop;
for (p = napi->gro_list; p; p = p->next) {
- NAPI_GRO_CB(p)->same_flow = p->dev == skb->dev;
+ NAPI_GRO_CB(p)->same_flow =
+ p->dev == skb->dev && !compare_ether_header(
+ skb_mac_header(p), skb_gro_mac_header(skb));
NAPI_GRO_CB(p)->flush = 0;
}
NAPI_GRO_CB(p)->flush = 0;
}
@@
-102,25
+104,12
@@
drop:
int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp,
unsigned int vlan_tci, struct sk_buff *skb)
{
int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp,
unsigned int vlan_tci, struct sk_buff *skb)
{
-
int err = NET_RX_SUCCESS
;
+
skb_gro_reset_offset(skb)
;
if (netpoll_receive_skb(skb))
return NET_RX_DROP;
if (netpoll_receive_skb(skb))
return NET_RX_DROP;
- switch (vlan_gro_common(napi, grp, vlan_tci, skb)) {
- case -1:
- return netif_receive_skb(skb);
-
- case 2:
- err = NET_RX_DROP;
- /* fall through */
-
- case 1:
- kfree_skb(skb);
- break;
- }
-
- return err;
+ return napi_skb_finish(vlan_gro_common(napi, grp, vlan_tci, skb), skb);
}
EXPORT_SYMBOL(vlan_gro_receive);
}
EXPORT_SYMBOL(vlan_gro_receive);
@@
-128,30
+117,14
@@
int vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp,
unsigned int vlan_tci, struct napi_gro_fraginfo *info)
{
struct sk_buff *skb = napi_fraginfo_skb(napi, info);
unsigned int vlan_tci, struct napi_gro_fraginfo *info)
{
struct sk_buff *skb = napi_fraginfo_skb(napi, info);
- int err = NET_RX_DROP;
if (!skb)
if (!skb)
-
goto out
;
+
return NET_RX_DROP
;
if (netpoll_receive_skb(skb))
if (netpoll_receive_skb(skb))
- goto out;
-
- err = NET_RX_SUCCESS;
-
- switch (vlan_gro_common(napi, grp, vlan_tci, skb)) {
- case -1:
- return netif_receive_skb(skb);
-
- case 2:
- err = NET_RX_DROP;
- /* fall through */
-
- case 1:
- napi_reuse_skb(napi, skb);
- break;
- }
+ return NET_RX_DROP;
-out:
-
return err
;
+ return napi_frags_finish(napi, skb,
+
vlan_gro_common(napi, grp, vlan_tci, skb))
;
}
EXPORT_SYMBOL(vlan_gro_frags);
}
EXPORT_SYMBOL(vlan_gro_frags);