From mboxrd@z Thu Jan 1 00:00:00 1970 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 Message-ID: <1534129513-4845-2-git-send-email-jasowang@redhat.com> References: <1534129513-4845-1-git-send-email-jasowang@redhat.com> Cc: ast@kernel.org, daniel@iogearbox.net, jbrouer@redhat.com, mst@redhat.com, Jason Wang To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Return-path: In-Reply-To: <1534129513-4845-1-git-send-email-jasowang@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org 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 --- 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