• Hao Zheng's avatar
    octeontx2-af: Update NPC KPU packet parsing profile · 922584f6
    Hao Zheng authored
    Updated NPC KPU packet parsing profile with support for following
    
    - Fragmentation support for IPv4 IPv6 outer header
    - NIX instruction header support
    - QinQ with TPID of 0x8100 as non inner most vlan tag, as legacy
      network equipments still generate QinQ packets with this configuration.
    - To better support RSS for tunnelled packets, udp based tunnel
      protocols such as vxlan, vxlan-gpe, geneve and gtpu are now
      captured into a separate layer E. Consequently, the inner
      packet headers are pushed one layer down to LF, LG, and LH
      accordingly.
    - Support for rfc7510 mpls in udp. Up to 4 MPLS labels can be parsed
      and captured in one layer LE.
    - Parser support for DSA, extended DSA and eDSA tags right after
      ethernet header by Marvell SOHO and Falcon switches. For extended
      DSA and eDSA tags, a special PKIND of 62 is used, as these tags don't
      contain a tpid field.
    - Higig2 protocol header parsing support, added a NPC_LT_LA_HIGIG2_ETHER
      for a combined header of HIGIG2 and Ethernet.  Add a
      NPC_LT_LA_IH_NIX_HIGIG2_ETHER for a combined header of nix_ih,
      HIGIG2 and Ethernet on egress side. Also added 2 upper flags in LA to
      indicate the presence of nix_ih and HIGIG2.
    
    Other changes include
    - IPv4.TTL==0 IPv6.HLIM==0 check
    - Per RFC 1858, mark fragment offset == 1 as error
    - TCP invalid flags check
    - Separate error codes for outer and inner IPv4 checksum errors.
    - Fix a parser error when KPU parses incoming IPSec ESP and AH packets
    - NPC vtag capture/strip hardware expect tag pointer to point to
      tpid/ethertype instead of tci. So move lb_ptr to point to tpid/ethertype.
    - Fix npc parser error when parsing udp packets that don't have any payload.
    - For a single MCAM entry to match on packets with one or stacked vlan tags
      combine NPC_LT_LB_STAG and NPC_LT_LB_QINQ to NPC_LT_LB_STAG_QINQ.
    - NVGRE to have a separate ltype LD_NVGRE instead of combined with LD_GRE.
    - Reserve top LD/LTYPEs to support custom KPU profile fields.
    Signed-off-by: default avatarHao Zheng <haoz@marvell.com>
    Signed-off-by: default avatarSunil Goutham <sgoutham@marvell.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    922584f6
rvu_npc.c 61.9 KB