linux/drivers/net/ethernet/marvell
Naveen Mamindlapalli 1d4d9e42c2 octeontx2-pf: Add tc flower hardware offload on ingress traffic
This patch adds support for tc flower hardware offload on ingress
traffic. Since the tc-flower filter rules use the same set of MCAM
rules as the n-tuple filters, the n-tuple filters and tc flower
rules are mutually exclusive. When one of the feature is enabled
using ethtool, the other feature is disabled in the driver. By default
the driver enables n-tuple filters during initialization.

The following flow keys are supported.
    -> Ethernet: dst_mac
    -> L2 proto: all protocols
    -> VLAN (802.1q): vlan_id/vlan_prio
    -> IPv4: dst_ip/src_ip/ip_proto{tcp|udp|sctp|icmp}/ip_tos
    -> IPv6: ip_proto{icmpv6}
    -> L4(tcp/udp/sctp): dst_port/src_port

The following flow actions are supported.
    -> drop
    -> accept
    -> redirect
    -> vlan pop

The flow action supports multiple actions when vlan pop is specified
as the first action. The redirect action supports redirecting to the
PF/VF of same PCI device. Redirecting to other PCI NIX devices is not
supported.

Example #1: Add a tc filter rule to drop UDP traffic with dest port 80
    # ethtool -K eth0 hw-tc-offload on
    # tc qdisc add dev eth0 ingress
    # tc filter add dev eth0 protocol ip parent ffff: flower ip_proto \
          udp dst_port 80 action drop

Example #2: Add a tc filter rule to redirect ingress traffic on eth0
with vlan id 3 to eth6 (ex: eth0 vf0) after stripping the vlan hdr.
    # ethtool -K eth0 hw-tc-offload on
    # tc qdisc add dev eth0 ingress
    # tc filter add dev eth0 parent ffff: protocol 802.1Q flower \
          vlan_id 3 vlan_ethtype ipv4 action vlan pop action mirred \
          ingress redirect dev eth6

Example #3: List the ingress filter rules
    # tc -s filter show dev eth4 ingress

Example #4: Delete tc flower filter rule with handle 0x1
    # tc filter del dev eth0 ingress protocol ip pref 49152 \
      handle 1 flower

Signed-off-by: Naveen Mamindlapalli <naveenm@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-03-18 11:37:22 -07:00
..
mvpp2 net: mvpp2: skip RSS configurations on loopback port 2021-02-22 18:41:45 -08:00
octeontx2 octeontx2-pf: Add tc flower hardware offload on ingress traffic 2021-03-18 11:37:22 -07:00
prestera net: switchdev: pass flags and mask to both {PRE_,}BRIDGE_FLAGS attributes 2021-02-12 17:08:04 -08:00
Kconfig net: mvpp2: Remove unneeded Kconfig dependency. 2021-01-23 13:23:35 -08:00
Makefile net: marvell: prestera: Add driver for Prestera family ASIC devices 2020-09-17 16:35:46 -07:00
mv643xx_eth.c net: tso: cache transport header length 2020-06-18 20:46:23 -07:00
mvmdio.c net: mvmdio: avoid error message for optional IRQ 2020-03-17 20:54:37 -07:00
mvneta_bm.c net: mvneta: use devm_platform_ioremap_resource() to simplify code 2019-08-21 13:52:33 -07:00
mvneta_bm.h net: mvneta: make stub functions static inline 2019-10-25 16:21:48 -07:00
mvneta.c net: mvneta: Implement mqprio support 2021-02-16 15:03:26 -08:00
pxa168_eth.c net: pxa168_eth: remove unused variable 'retval' int pxa168_eth_change_mtu() 2020-09-14 13:43:38 -07:00
skge.c net: skge: convert tasklets to use new tasklet_setup() API 2020-09-14 13:02:37 -07:00
skge.h PCI: Add constant PCI_STATUS_ERROR_BITS 2020-03-04 14:21:00 -08:00
sky2.c net: ethernet: marvell: Fixed typo in the file sky2.c 2021-03-13 18:06:11 -08:00
sky2.h PCI: Add constant PCI_STATUS_ERROR_BITS 2020-03-04 14:21:00 -08:00