Messages in this thread Patch in this message |  | | From | Jason Wang <> | Subject | [RFC PATCH net-next 1/5] net: core: generic XDP support for stacked device | Date | Mon, 13 Aug 2018 11:05:09 +0800 |
| |
Stacked device usually change skb->dev to its own and return RX_HANDLER_ANOTHER during rx handler processing. But we don't call generic XDP routine at that time, this means it can't work for stacked device.
Fixing this by calling netif_do_generic_xdp() if rx handler returns RX_HANDLER_ANOTHER. This allows us to do generic XDP on stacked device e.g macvlan.
Signed-off-by: Jason Wang <jasowang@redhat.com> --- net/core/dev.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/net/core/dev.c b/net/core/dev.c index 605c66e..a77ce08 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4822,6 +4822,11 @@ static int __netif_receive_skb_core(struct sk_buff *skb, bool pfmemalloc, ret = NET_RX_SUCCESS; goto out; case RX_HANDLER_ANOTHER: + ret = netif_do_generic_xdp(skb); + if (ret != XDP_PASS) { + ret = NET_RX_SUCCESS; + goto out; + } goto another_round; case RX_HANDLER_EXACT: deliver_exact = true; -- 2.7.4
|  |