From: Qi Zhang Date: Tue, 10 Aug 2021 02:51:16 +0000 (+0800) Subject: net/ice/base: change dummy packets with VLAN X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=21bc183b68154e08c67e2fccf10f5301a014be1f;p=dpdk.git net/ice/base: change dummy packets with VLAN Ethertype was traded as VLAN tpid in dummy packets with VLAN. This led to a problem when user wanted to add filter for VLAN and ethertype. Change ice_vlan_hdr to reflect correct order of VLAN fields in packets (VLAN tpid, VLAN id). Correct all dummy packets with VLAN. Move VLAN fields before ethertype and change offsets. Leave values from dummy packets unchanged as they fit to new VLAN layout. Order of offsets in ice_prot_ext_tbl_entry for VLAN protocol should reflect order of fields in ice_vlan_hdr. However, hardware doesn't support matching on all tpid. This should be done by matching on packet flags. There is no FV word with protocol for VLAN and offset 2. Because of that, adding vlan tpid with not zero mask will lead to error in creating recipe. Signed-off-by: Michal Swiatkowski Signed-off-by: Qi Zhang Acked-by: Junfeng Guo --- diff --git a/drivers/net/ice/base/ice_protocol_type.h b/drivers/net/ice/base/ice_protocol_type.h index d1d266ffd2..220ff3b773 100644 --- a/drivers/net/ice/base/ice_protocol_type.h +++ b/drivers/net/ice/base/ice_protocol_type.h @@ -245,8 +245,8 @@ struct ice_ether_vlan_hdr { }; struct ice_vlan_hdr { - __be16 vlan; __be16 type; + __be16 vlan; }; struct ice_ipv4_hdr { diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c index 4a829859f4..0b2347ba3a 100644 --- a/drivers/net/ice/base/ice_switch.c +++ b/drivers/net/ice/base/ice_switch.c @@ -260,8 +260,8 @@ static const u8 dummy_udp_packet[] = { /* offset info for MAC + VLAN + IPv4 + UDP dummy packet */ static const struct ice_dummy_pkt_offsets dummy_vlan_udp_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14 }, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_IPV4_OFOS, 18 }, { ICE_UDP_ILOS, 38 }, { ICE_PROTOCOL_LAST, 0 }, @@ -273,9 +273,9 @@ static const u8 dummy_vlan_udp_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, /* ICE_ETYPE_OL 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */ - 0x00, 0x00, 0x08, 0x00, /* ICE_VLAN_OFOS 14 */ + 0x08, 0x00, /* ICE_ETYPE_OL 16 */ 0x45, 0x00, 0x00, 0x1c, /* ICE_IPV4_OFOS 18 */ 0x00, 0x01, 0x00, 0x00, @@ -343,8 +343,8 @@ static const u8 dummy_mpls_packet[] = { /* offset info for MAC + VLAN (C-tag, 802.1Q) + IPv4 + TCP dummy packet */ static const struct ice_dummy_pkt_offsets dummy_vlan_tcp_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14 }, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_IPV4_OFOS, 18 }, { ICE_TCP_IL, 38 }, { ICE_PROTOCOL_LAST, 0 }, @@ -356,9 +356,9 @@ static const u8 dummy_vlan_tcp_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, /* ICE_ETYPE_OL 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */ - 0x00, 0x00, 0x08, 0x00, /* ICE_VLAN_OFOS 14 */ + 0x08, 0x00, /* ICE_ETYPE_OL 16 */ 0x45, 0x00, 0x00, 0x28, /* ICE_IPV4_OFOS 18 */ 0x00, 0x01, 0x00, 0x00, @@ -414,8 +414,8 @@ static const u8 dummy_tcp_ipv6_packet[] = { static const struct ice_dummy_pkt_offsets dummy_vlan_tcp_ipv6_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14 }, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_IPV6_OFOS, 18 }, { ICE_TCP_IL, 58 }, { ICE_PROTOCOL_LAST, 0 }, @@ -427,9 +427,9 @@ static const u8 dummy_vlan_tcp_ipv6_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, /* ICE_ETYPE_OL 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */ - 0x00, 0x00, 0x86, 0xDD, /* ICE_VLAN_OFOS 14 */ + 0x86, 0xDD, /* ICE_ETYPE_OL 16 */ 0x60, 0x00, 0x00, 0x00, /* ICE_IPV6_OFOS 18 */ 0x00, 0x14, 0x06, 0x00, /* Next header is TCP */ @@ -492,8 +492,8 @@ static const u8 dummy_udp_ipv6_packet[] = { static const struct ice_dummy_pkt_offsets dummy_vlan_udp_ipv6_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14 }, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_IPV6_OFOS, 18 }, { ICE_UDP_ILOS, 58 }, { ICE_PROTOCOL_LAST, 0 }, @@ -505,9 +505,9 @@ static const u8 dummy_vlan_udp_ipv6_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, /* ICE_ETYPE_OL 12 */ + 0x81, 0x00, 0x00, 0x00,/* ICE_VLAN_OFOS 12 */ - 0x00, 0x00, 0x86, 0xDD, /* ICE_VLAN_OFOS 14 */ + 0x86, 0xDD, /* ICE_ETYPE_OL 16 */ 0x60, 0x00, 0x00, 0x00, /* ICE_IPV6_OFOS 18 */ 0x00, 0x08, 0x11, 0x00, /* Next header UDP */ @@ -1192,16 +1192,16 @@ static const u8 dummy_ipv6_gtp_packet[] = { static const struct ice_dummy_pkt_offsets dummy_pppoe_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14}, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_PPPOE, 18 }, { ICE_PROTOCOL_LAST, 0 }, }; static const struct ice_dummy_pkt_offsets dummy_pppoe_packet_ipv4_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14}, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_PPPOE, 18 }, { ICE_IPV4_OFOS, 26 }, { ICE_PROTOCOL_LAST, 0 }, @@ -1212,9 +1212,9 @@ static const u8 dummy_pppoe_ipv4_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, /* ICE_ETYPE_OL 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */ - 0x00, 0x00, 0x88, 0x64, /* ICE_VLAN_OFOS 14 */ + 0x88, 0x64, /* ICE_ETYPE_OL 16 */ 0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 18 */ 0x00, 0x16, @@ -1233,8 +1233,8 @@ static const u8 dummy_pppoe_ipv4_packet[] = { static const struct ice_dummy_pkt_offsets dummy_pppoe_ipv4_tcp_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14}, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_PPPOE, 18 }, { ICE_IPV4_OFOS, 26 }, { ICE_TCP_IL, 46 }, @@ -1246,9 +1246,9 @@ static const u8 dummy_pppoe_ipv4_tcp_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, /* ICE_ETYPE_OL 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */ - 0x00, 0x00, 0x88, 0x64, /* ICE_VLAN_OFOS 14 */ + 0x88, 0x64, /* ICE_ETYPE_OL 16 */ 0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 18 */ 0x00, 0x16, @@ -1273,8 +1273,8 @@ static const u8 dummy_pppoe_ipv4_tcp_packet[] = { static const struct ice_dummy_pkt_offsets dummy_pppoe_ipv4_udp_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14}, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_PPPOE, 18 }, { ICE_IPV4_OFOS, 26 }, { ICE_UDP_ILOS, 46 }, @@ -1286,9 +1286,9 @@ static const u8 dummy_pppoe_ipv4_udp_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, /* ICE_ETYPE_OL 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */ - 0x00, 0x00, 0x88, 0x64, /* ICE_VLAN_OFOS 14 */ + 0x88, 0x64, /* ICE_ETYPE_OL 16 */ 0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 18 */ 0x00, 0x16, @@ -1309,8 +1309,8 @@ static const u8 dummy_pppoe_ipv4_udp_packet[] = { static const struct ice_dummy_pkt_offsets dummy_pppoe_packet_ipv6_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14}, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_PPPOE, 18 }, { ICE_IPV6_OFOS, 26 }, { ICE_PROTOCOL_LAST, 0 }, @@ -1321,9 +1321,9 @@ static const u8 dummy_pppoe_ipv6_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, /* ICE_ETYPE_OL 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */ - 0x00, 0x00, 0x88, 0x64, /* ICE_VLAN_OFOS 14 */ + 0x88, 0x64, /* ICE_ETYPE_OL 16 */ 0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 18 */ 0x00, 0x2a, @@ -1347,8 +1347,8 @@ static const u8 dummy_pppoe_ipv6_packet[] = { static const struct ice_dummy_pkt_offsets dummy_pppoe_packet_ipv6_tcp_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14}, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_PPPOE, 18 }, { ICE_IPV6_OFOS, 26 }, { ICE_TCP_IL, 66 }, @@ -1360,9 +1360,9 @@ static const u8 dummy_pppoe_ipv6_tcp_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, /* ICE_ETYPE_OL 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */ - 0x00, 0x00, 0x88, 0x64, /* ICE_VLAN_OFOS 14 */ + 0x88, 0x64, /* ICE_ETYPE_OL 16 */ 0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 18 */ 0x00, 0x2a, @@ -1392,8 +1392,8 @@ static const u8 dummy_pppoe_ipv6_tcp_packet[] = { static const struct ice_dummy_pkt_offsets dummy_pppoe_packet_ipv6_udp_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_OFOS, 14}, + { ICE_VLAN_OFOS, 12 }, + { ICE_ETYPE_OL, 16 }, { ICE_PPPOE, 18 }, { ICE_IPV6_OFOS, 26 }, { ICE_UDP_ILOS, 66 }, @@ -1405,9 +1405,9 @@ static const u8 dummy_pppoe_ipv6_udp_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, /* ICE_ETYPE_OL 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */ - 0x00, 0x00, 0x88, 0x64, /* ICE_VLAN_OFOS 14 */ + 0x88, 0x64, /* ICE_ETYPE_OL 16 */ 0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 18 */ 0x00, 0x2a, @@ -1658,9 +1658,9 @@ static const u8 dummy_ipv6_l2tpv3_pkt[] = { static const struct ice_dummy_pkt_offsets dummy_qinq_ipv4_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_EX, 14 }, - { ICE_VLAN_IN, 18 }, + { ICE_VLAN_EX, 12 }, + { ICE_VLAN_IN, 16 }, + { ICE_ETYPE_OL, 20 }, { ICE_IPV4_OFOS, 22 }, { ICE_PROTOCOL_LAST, 0 }, }; @@ -1670,10 +1670,9 @@ static const u8 dummy_qinq_ipv4_pkt[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x91, 0x00, /* ICE_ETYPE_OL 12 */ - - 0x00, 0x00, 0x81, 0x00, /* ICE_VLAN_EX 14 */ - 0x00, 0x00, 0x08, 0x00, /* ICE_VLAN_IN 18 */ + 0x91, 0x00, 0x00, 0x00, /* ICE_VLAN_EX 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_IN 16 */ + 0x08, 0x00, /* ICE_ETYPE_OL 20 */ 0x45, 0x00, 0x00, 0x1c, /* ICE_IPV4_OFOS 22 */ 0x00, 0x01, 0x00, 0x00, @@ -1689,9 +1688,9 @@ static const u8 dummy_qinq_ipv4_pkt[] = { static const struct ice_dummy_pkt_offsets dummy_qinq_ipv6_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_EX, 14 }, - { ICE_VLAN_IN, 18 }, + { ICE_VLAN_EX, 12 }, + { ICE_VLAN_IN, 16 }, + { ICE_ETYPE_OL, 20 }, { ICE_IPV6_OFOS, 22 }, { ICE_PROTOCOL_LAST, 0 }, }; @@ -1701,10 +1700,9 @@ static const u8 dummy_qinq_ipv6_pkt[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x91, 0x00, /* ICE_ETYPE_OL 12 */ - - 0x00, 0x00, 0x81, 0x00, /* ICE_VLAN_EX 14 */ - 0x00, 0x00, 0x86, 0xDD, /* ICE_VLAN_IN 18 */ + 0x91, 0x00, 0x00, 0x00, /* ICE_VLAN_EX 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_IN 16 */ + 0x86, 0xDD, /* ICE_ETYPE_OL 20 */ 0x60, 0x00, 0x00, 0x00, /* ICE_IPV6_OFOS 22 */ 0x00, 0x10, 0x11, 0x00, /* Next header UDP */ @@ -1728,9 +1726,9 @@ static const u8 dummy_qinq_ipv6_pkt[] = { static const struct ice_dummy_pkt_offsets dummy_qinq_pppoe_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_EX, 14 }, - { ICE_VLAN_IN, 18 }, + { ICE_VLAN_EX, 12 }, + { ICE_VLAN_IN, 16 }, + { ICE_ETYPE_OL, 20 }, { ICE_PPPOE, 22 }, { ICE_PROTOCOL_LAST, 0 }, }; @@ -1738,9 +1736,9 @@ static const struct ice_dummy_pkt_offsets dummy_qinq_pppoe_packet_offsets[] = { static const struct ice_dummy_pkt_offsets dummy_qinq_pppoe_ipv4_packet_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_EX, 14 }, - { ICE_VLAN_IN, 18 }, + { ICE_VLAN_EX, 12 }, + { ICE_VLAN_IN, 16 }, + { ICE_ETYPE_OL, 20 }, { ICE_PPPOE, 22 }, { ICE_IPV4_OFOS, 30 }, { ICE_PROTOCOL_LAST, 0 }, @@ -1751,10 +1749,9 @@ static const u8 dummy_qinq_pppoe_ipv4_pkt[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x91, 0x00, /* ICE_ETYPE_OL 12 */ - - 0x00, 0x00, 0x81, 0x00, /* ICE_VLAN_EX 14 */ - 0x00, 0x00, 0x88, 0x64, /* ICE_VLAN_IN 18 */ + 0x91, 0x00, 0x00, 0x00, /* ICE_VLAN_EX 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_IN 16 */ + 0x88, 0x64, /* ICE_ETYPE_OL 20 */ 0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 22 */ 0x00, 0x16, @@ -1773,9 +1770,9 @@ static const u8 dummy_qinq_pppoe_ipv4_pkt[] = { static const struct ice_dummy_pkt_offsets dummy_qinq_pppoe_packet_ipv6_offsets[] = { { ICE_MAC_OFOS, 0 }, - { ICE_ETYPE_OL, 12 }, - { ICE_VLAN_EX, 14}, - { ICE_VLAN_IN, 18 }, + { ICE_VLAN_EX, 12 }, + { ICE_VLAN_IN, 16 }, + { ICE_ETYPE_OL, 20 }, { ICE_PPPOE, 22 }, { ICE_IPV6_OFOS, 30 }, { ICE_PROTOCOL_LAST, 0 }, @@ -1786,10 +1783,9 @@ static const u8 dummy_qinq_pppoe_ipv6_packet[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x91, 0x00, /* ICE_ETYPE_OL 12 */ - - 0x00, 0x00, 0x81, 0x00, /* ICE_VLAN_EX 14 */ - 0x00, 0x00, 0x88, 0x64, /* ICE_VLAN_IN 18 */ + 0x91, 0x00, 0x00, 0x00, /* ICE_VLAN_EX 12 */ + 0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_IN 16 */ + 0x88, 0x64, /* ICE_ETYPE_OL 20 */ 0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 22 */ 0x00, 0x2a, @@ -6575,7 +6571,7 @@ static const struct ice_prot_ext_tbl_entry ice_prot_ext[ICE_PROTOCOL_LAST] = { { ICE_MAC_OFOS, { 0, 2, 4, 6, 8, 10, 12 } }, { ICE_MAC_IL, { 0, 2, 4, 6, 8, 10, 12 } }, { ICE_ETYPE_OL, { 0 } }, - { ICE_VLAN_OFOS, { 0, 2 } }, + { ICE_VLAN_OFOS, { 2, 0 } }, { ICE_IPV4_OFOS, { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 } }, { ICE_IPV4_IL, { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 } }, { ICE_IPV6_OFOS, { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, @@ -6598,8 +6594,8 @@ static const struct ice_prot_ext_tbl_entry ice_prot_ext[ICE_PROTOCOL_LAST] = { { ICE_AH, { 0, 2, 4, 6, 8, 10 } }, { ICE_NAT_T, { 8, 10, 12, 14 } }, { ICE_GTP_NO_PAY, { 8, 10, 12, 14 } }, - { ICE_VLAN_EX, { 0, 2 } }, - { ICE_VLAN_IN, { 0, 2 } }, + { ICE_VLAN_EX, { 2, 0 } }, + { ICE_VLAN_IN, { 2, 0 } }, }; /* The following table describes preferred grouping of recipes.