[ovs-dev] [PATCH] netdev-offload-tc: Add drop action support.

Simon Horman simon.horman at netronome.com
Tue Jun 30 16:13:09 UTC 2020


On Tue, Jun 30, 2020 at 09:06:40AM -0700, William Tu wrote:
> On Tue, Jun 30, 2020 at 9:01 AM Simon Horman <simon.horman at netronome.com> wrote:
> >
> > On Tue, Jun 30, 2020 at 08:30:45AM -0700, William Tu wrote:
> > > Currently drop action is not offloaded when using userspace datapath
> > > with tc offload.  The patch programs tc gact (generic action) chain
> > > ID 0 to drop the packet by setting it to TC_ACT_SHOT.
> > >
> > > Example:
> > > $ ovs-appctl dpctl/add-flow netdev at ovs-netdev \
> > >   'recirc_id(0),in_port(2),eth(),eth_type(0x0806),\
> > >   arp(op=2,tha=00:50:56:e1:4b:ab,tip=10.255.1.116)' drop
> > >
> > > $ tc filter show dev ovs-p0 ingress
> > > filter protocol arp pref 2 flower chain 0
> > > filter protocol arp pref 2 flower chain 0 handle 0x1
> > >   eth_type arp
> > >   arp_tip 10.255.1.116
> > >   arp_op reply
> > >   arp_tha 00:50:56:e1:4b:ab
> > >   skip_hw
> > >   not_in_hw
> > >       action order 1: gact action drop
> > >     ...
> > >
> > > Signed-off-by: William Tu <u9012063 at gmail.com>
> >
> > Hi William,
> >
> > this change looks good to me other than that I'm unsure
> > why we need #ifndef __KERNEL__.
> >
> Because for kernel datapath, we don't define
> OVS_ACTION_ATTR_DROP
> 
> at datapath/linux/compat/include/linux/openvswitch.h
> ...
> #ifndef __KERNEL__
>     OVS_ACTION_ATTR_TUNNEL_PUSH,   /* struct ovs_action_push_tnl*/
>     OVS_ACTION_ATTR_TUNNEL_POP,    /* u32 port number. */
>     OVS_ACTION_ATTR_DROP,          /* u32 xlate_error. */
>     OVS_ACTION_ATTR_LB_OUTPUT,     /* u32 bond-id. */
> #endif

I feel that I'm missing something terribly obvious, but it seems to me that
lib/netdev-offload-tc.c is only ever compiled as user-space code (its not
compiled into the kernel datapath) and thus __KERNEL__ would never be set.


More information about the dev mailing list