Re: Offloaded u32 classifier tables WAS (Re: [PATCH net 00/13] cls_u32 cleanups and fixes.

2018-09-10 Thread Jamal Hadi Salim

On 2018-09-10 8:25 a.m., Jamal Hadi Salim wrote:

On 2018-09-09 11:48 a.m., Al Viro wrote:



BTW, shouldn't we issue u32_clear_hw_hnode() every time
we destroy an hnode?  It's done on u32_delete(), it's
done (for root ht) on u32_destroy(), but it's not done
for any other hnodes when you remove the entire (not shared)
filter.  Looks fishy...



What you are saying makes sense, but that doesnt seem
like a new thing.
All hardware offload examples I have seen use root tables
only[1]. So I am not sure if they use any other tables
although the intel hardware at least seems very capable.
Look at ixgbe_main.c for example. Theres an explicit assumption
that root is always 0x800 but oresence of



"..but presence of other tables can be handled"

cheers,
jamal


Offloaded u32 classifier tables WAS (Re: [PATCH net 00/13] cls_u32 cleanups and fixes.

2018-09-10 Thread Jamal Hadi Salim

On 2018-09-09 11:48 a.m., Al Viro wrote:



BTW, shouldn't we issue u32_clear_hw_hnode() every time
we destroy an hnode?  It's done on u32_delete(), it's
done (for root ht) on u32_destroy(), but it's not done
for any other hnodes when you remove the entire (not shared)
filter.  Looks fishy...



What you are saying makes sense, but that doesnt seem
like a new thing.
All hardware offload examples I have seen use root tables
only[1]. So I am not sure if they use any other tables
although the intel hardware at least seems very capable.
Look at ixgbe_main.c for example. Theres an explicit assumption
that root is always 0x800 but oresence of

+Cc some of the NIC vendor folks..



cheers,
jamal

[1]
Here's a script posted by someone at Intel(Sridhar?) a while back
that adds 2 filters, one with skip-sw and the other with skip-hw
flag.

---
   # add ingress qdisc
   tc qdisc add dev p4p1 ingress

   # enable hw tc offload.
   ethtool -K p4p1 hw-tc-offload on

   # add u32 filter with skip-sw flag.
   tc filter add dev p4p1 parent : protocol ip prio 99 \
  handle 800:0:1 u32 ht 800: flowid 800:1 \
  skip-sw \
  match ip src 192.168.1.0/24 \
  action drop

   # add u32 filter with skip-hw flag.
   tc filter add dev p4p1 parent : protocol ip prio 99 \
  handle 800:0:2 u32 ht 800: flowid 800:2 \
  skip-hw \
  match ip src 192.168.2.0/24 \
  action drop