On 5/6/2024 1:44 AM, Asbjørn Sloth Tønnesen wrote:
Hi Sujai,
Thank you for testing.
On 5/6/24 5:32 AM, Buvaneswaran, Sujai wrote:
HW offload is not supported on the i40e interface. This patch cannot
be tested on i40e interface.
To me it looks like it's supported (otherwise there is a lot of dead
flower code in i40e_main.c),
although it's a bit limited in functionality, and is called "cloud
filters".
static const struct net_device_ops i40e_netdev_ops = {
[...]
.ndo_setup_tc = __i40e_setup_tc,
[...]
};
There is a path from __i40e_setup_tc() to i40e_parse_cls_flower(),
so it should be possible to test this patch.
Most of the gatekeeping is in i40e_configure_clsflower().
I think you should be able to get past the gatekeeping with this:
ethtool -K $iface ntuple off
ethtool -K $iface hw-tc-offload on
tc qdisc add dev $iface ingress
One step is missing before adding the filter.
In order to use hw_tc action, queue groups need to be created and can be
done using
tc qdisc add dev $iface root mqprio num_tc 2 map 0 1 queues 2@0 8@2 hw 1
mode channel
tc filter add dev $iface protocol ip parent ffff: prio 1 flower dst_mac
3c:fd:fe:a0:d6:70 ip_flags frag skip_sw hw_tc 1
The above filter is based on the first example in:
[jkirsher/next-queue PATCH v5 6/6] i40e: Enable cloud filters via
tc-flower
https://lore.kernel.org/netdev/150909696126.48377.794676088838721605.st...@anamdev.jf.intel.com/