usbnet: allow mini-drivers to consume L2 headers

Assume the minidriver has taken care of all L2 header parsing
if it sets skb->protocol.  This allows the minidriver to
support non-ethernet L2 headers, and even operate without
any L2 header at all.

Change-Id: Ied7fc3752673a68e5bb22a623cc3fc59c1f1e0ff
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Acked-by: Oliver Neukum <oneukum@suse.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Git-commit: 81e0ce79f2919dbd5f025894d29aa806af8695c7
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[gustavos@codeaurora.org: fix checkpatch warning]
Signed-off-by: Gustavo Solaira <gustavos@codeaurora.org>
This commit is contained in:
Bjørn Mork 2015-12-03 19:24:20 +01:00 committed by Gustavo Solaira
parent 332c11dd05
commit 2e641b848a

View file

@ -323,7 +323,10 @@ void usbnet_skb_return (struct usbnet *dev, struct sk_buff *skb)
return;
}
skb->protocol = eth_type_trans (skb, dev->net);
/* only update if unset to allow minidriver rx_fixup override */
if (skb->protocol == 0)
skb->protocol = eth_type_trans(skb, dev->net);
dev->net->stats.rx_packets++;
dev->net->stats.rx_bytes += skb->len;