mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
c011ec1bbf
Add the multicast router offloading logic, which is in charge of handling the VIF and MFC notifications and translating it to the hardware logic API. The offloading logic has to overcome several obstacles in order to safely comply with the kernel multicast router user API: - It must keep track of the mapping between VIFs to netdevices. The user can add an MFC cache entry pointing to a VIF, delete the VIF and add re-add it with a different netdevice. The offloading logic has to handle this in order to be compatible with the kernel logic. - It must keep track of the mapping between netdevices to spectrum RIFs, as the current hardware implementation assume having a RIF for every port in a multicast router. - It must handle routes pointing to pimreg device to be trapped to the kernel, as the packet should be delivered to userspace. - It must handle routes pointing tunnel VIFs. The current implementation does not support multicast forwarding to tunnels, thus routes that point to a tunnel should be trapped to the kernel. - It must be aware of proxy multicast routes, which include both (*,*) routes and duplicate routes. Currently proxy routes are not offloaded and trigger the abort mechanism: removal of all routes from hardware and triggering the traffic to go through the kernel. The multicast routing offloading logic also updates the counters of the offloaded MFC routes in a periodic work. Signed-off-by: Yotam Gigi <yotamg@mellanox.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net> |
||
---|---|---|
.. | ||
cmd.h | ||
core_acl_flex_actions.c | ||
core_acl_flex_actions.h | ||
core_acl_flex_keys.c | ||
core_acl_flex_keys.h | ||
core_hwmon.c | ||
core_thermal.c | ||
core.c | ||
core.h | ||
emad.h | ||
i2c.c | ||
i2c.h | ||
ib.h | ||
item.h | ||
Kconfig | ||
Makefile | ||
minimal.c | ||
pci_hw.h | ||
pci.c | ||
pci.h | ||
port.h | ||
reg.h | ||
resources.h | ||
spectrum_acl_flex_actions.c | ||
spectrum_acl_flex_actions.h | ||
spectrum_acl_flex_keys.h | ||
spectrum_acl_tcam.c | ||
spectrum_acl.c | ||
spectrum_buffers.c | ||
spectrum_cnt.c | ||
spectrum_cnt.h | ||
spectrum_dcb.c | ||
spectrum_dpipe.c | ||
spectrum_dpipe.h | ||
spectrum_fid.c | ||
spectrum_flower.c | ||
spectrum_ipip.c | ||
spectrum_ipip.h | ||
spectrum_kvdl.c | ||
spectrum_mr.c | ||
spectrum_mr.h | ||
spectrum_router.c | ||
spectrum_router.h | ||
spectrum_switchdev.c | ||
spectrum.c | ||
spectrum.h | ||
switchib.c | ||
switchx2.c | ||
trap.h | ||
txheader.h |