[RFC,net-next,0/5] XDP rx handler
mbox series

Message ID 1534129513-4845-1-git-send-email-jasowang@redhat.com
Headers show
Series
  • XDP rx handler
Related show

Message

Jason Wang Aug. 13, 2018, 3:05 a.m. UTC
Hi:

This series tries to implement XDP support for rx hanlder. This would
be useful for doing native XDP on stacked device like macvlan, bridge
or even bond.

The idea is simple, let stacked device register a XDP rx handler. And
when driver return XDP_PASS, it will call a new helper xdp_do_pass()
which will try to pass XDP buff to XDP rx handler directly. XDP rx
handler may then decide how to proceed, it could consume the buff, ask
driver to drop the packet or ask the driver to fallback to normal skb
path.

A sample XDP rx handler was implemented for macvlan. And virtio-net
(mergeable buffer case) was converted to call xdp_do_pass() as an
example. For ease comparision, generic XDP support for rx handler was
also implemented.

Compared to skb mode XDP on macvlan, native XDP on macvlan (XDP_DROP)
shows about 83% improvement.

Please review.

Thanks

Jason Wang (5):
  net: core: generic XDP support for stacked device
  net: core: introduce XDP rx handler
  macvlan: count the number of vlan in source mode
  macvlan: basic XDP support
  virtio-net: support XDP rx handler

 drivers/net/macvlan.c      | 189 +++++++++++++++++++++++++++++++++++++++++++--
 drivers/net/virtio_net.c   |  11 +++
 include/linux/filter.h     |   1 +
 include/linux/if_macvlan.h |   1 +
 include/linux/netdevice.h  |  12 +++
 net/core/dev.c             |  34 ++++++++
 net/core/filter.c          |  28 +++++++
 7 files changed, 271 insertions(+), 5 deletions(-)

Comments

Jason Wang Aug. 13, 2018, 3:17 a.m. UTC | #1
On 2018年08月13日 11:05, Jason Wang wrote:
> Hi:
>
> This series tries to implement XDP support for rx hanlder. This would
> be useful for doing native XDP on stacked device like macvlan, bridge
> or even bond.
>
> The idea is simple, let stacked device register a XDP rx handler. And
> when driver return XDP_PASS, it will call a new helper xdp_do_pass()
> which will try to pass XDP buff to XDP rx handler directly. XDP rx
> handler may then decide how to proceed, it could consume the buff, ask
> driver to drop the packet or ask the driver to fallback to normal skb
> path.
>
> A sample XDP rx handler was implemented for macvlan. And virtio-net
> (mergeable buffer case) was converted to call xdp_do_pass() as an
> example. For ease comparision, generic XDP support for rx handler was
> also implemented.
>
> Compared to skb mode XDP on macvlan, native XDP on macvlan (XDP_DROP)
> shows about 83% improvement.
>
> Please review.
>
> Thanks
>
> Jason Wang (5):
>    net: core: generic XDP support for stacked device
>    net: core: introduce XDP rx handler
>    macvlan: count the number of vlan in source mode
>    macvlan: basic XDP support
>    virtio-net: support XDP rx handler
>
>   drivers/net/macvlan.c      | 189 +++++++++++++++++++++++++++++++++++++++++++--
>   drivers/net/virtio_net.c   |  11 +++
>   include/linux/filter.h     |   1 +
>   include/linux/if_macvlan.h |   1 +
>   include/linux/netdevice.h  |  12 +++
>   net/core/dev.c             |  34 ++++++++
>   net/core/filter.c          |  28 +++++++
>   7 files changed, 271 insertions(+), 5 deletions(-)
>

Looks like a patch is missed. Let me post V2.

Thanks