On Fri, Feb 14, 2025 at 09:50:40AM +0100, Larysa Zaremba wrote: > Only a single VSI can be in charge of sending LLDP frames, sometimes it is > beneficial to assign this function to a VF, that is possible to do with tc > capabilities in the switchdev mode. It requires first blocking the PF from > sending the LLDP frames with a following command: > > tc filter add dev <ifname> egress protocol lldp flower skip_sw action drop > > Then it becomes possible to configure a forward rule from a VF port > representor to uplink instead. > > tc filter add dev <vf_ifname> ingress protocol lldp flower skip_sw > action mirred egress redirect dev <ifname> > > How LLDP exclusivity was done previously is LLDP traffic was blocked for a > whole port by a single rule and PF was bypassing that. Now at least in the > switchdev mode, every separate VSI has to have its own drop rule. Another > complication is the fact that tc does not respect when the driver refuses > to delete a rule, so returning an error results in a HW rule still present > with no way to reference it through tc. This is addressed by allowing the > PF rule to be deleted at any time, but making the VF forward rule "dormant" > in such case, this means it is deleted from HW but stays in tc and driver's > bookkeeping to be restored when drop rule is added back to the PF. > > Implement tc configuration handling which enables the user to transmit LLDP > packets from VF instead of PF. > > Reviewed-by: Michal Swiatkowski <michal.swiatkow...@linux.intel.com> > Signed-off-by: Larysa Zaremba <larysa.zare...@intel.com>
Reviewed-by: Simon Horman <ho...@kernel.org>