|
42 | 42 | ICE_PKT_KMALLOC = BIT(9), |
43 | 43 | ICE_PKT_PPPOE = BIT(10), |
44 | 44 | ICE_PKT_L2TPV3 = BIT(11), |
| 45 | + ICE_PKT_PFCP = BIT(12), |
45 | 46 | }; |
46 | 47 |
|
47 | 48 | struct ice_dummy_pkt_offsets { |
@@ -1110,6 +1111,77 @@ ICE_DECLARE_PKT_TEMPLATE(ipv6_gtp) = { |
1110 | 1111 | 0x00, 0x00, |
1111 | 1112 | }; |
1112 | 1113 |
|
| 1114 | +ICE_DECLARE_PKT_OFFSETS(pfcp_session_ipv4) = { |
| 1115 | + { ICE_MAC_OFOS, 0 }, |
| 1116 | + { ICE_ETYPE_OL, 12 }, |
| 1117 | + { ICE_IPV4_OFOS, 14 }, |
| 1118 | + { ICE_UDP_ILOS, 34 }, |
| 1119 | + { ICE_PFCP, 42 }, |
| 1120 | + { ICE_PROTOCOL_LAST, 0 }, |
| 1121 | +}; |
| 1122 | + |
| 1123 | +ICE_DECLARE_PKT_TEMPLATE(pfcp_session_ipv4) = { |
| 1124 | + 0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */ |
| 1125 | + 0x00, 0x00, 0x00, 0x00, |
| 1126 | + 0x00, 0x00, 0x00, 0x00, |
| 1127 | + |
| 1128 | + 0x08, 0x00, /* ICE_ETYPE_OL 12 */ |
| 1129 | + |
| 1130 | + 0x45, 0x00, 0x00, 0x2c, /* ICE_IPV4_OFOS 14 */ |
| 1131 | + 0x00, 0x01, 0x00, 0x00, |
| 1132 | + 0x00, 0x11, 0x00, 0x00, |
| 1133 | + 0x00, 0x00, 0x00, 0x00, |
| 1134 | + 0x00, 0x00, 0x00, 0x00, |
| 1135 | + |
| 1136 | + 0x00, 0x00, 0x22, 0x65, /* ICE_UDP_ILOS 34 */ |
| 1137 | + 0x00, 0x18, 0x00, 0x00, |
| 1138 | + |
| 1139 | + 0x21, 0x01, 0x00, 0x0c, /* ICE_PFCP 42 */ |
| 1140 | + 0x00, 0x00, 0x00, 0x00, |
| 1141 | + 0x00, 0x00, 0x00, 0x00, |
| 1142 | + 0x00, 0x00, 0x00, 0x00, |
| 1143 | + |
| 1144 | + 0x00, 0x00, /* 2 bytes for 4 byte alignment */ |
| 1145 | +}; |
| 1146 | + |
| 1147 | +ICE_DECLARE_PKT_OFFSETS(pfcp_session_ipv6) = { |
| 1148 | + { ICE_MAC_OFOS, 0 }, |
| 1149 | + { ICE_ETYPE_OL, 12 }, |
| 1150 | + { ICE_IPV6_OFOS, 14 }, |
| 1151 | + { ICE_UDP_ILOS, 54 }, |
| 1152 | + { ICE_PFCP, 62 }, |
| 1153 | + { ICE_PROTOCOL_LAST, 0 }, |
| 1154 | +}; |
| 1155 | + |
| 1156 | +ICE_DECLARE_PKT_TEMPLATE(pfcp_session_ipv6) = { |
| 1157 | + 0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */ |
| 1158 | + 0x00, 0x00, 0x00, 0x00, |
| 1159 | + 0x00, 0x00, 0x00, 0x00, |
| 1160 | + |
| 1161 | + 0x86, 0xdd, /* ICE_ETYPE_OL 12 */ |
| 1162 | + |
| 1163 | + 0x60, 0x00, 0x00, 0x00, /* ICE_IPV6_OFOS 14 */ |
| 1164 | + 0x00, 0x10, 0x11, 0x00, /* Next header UDP */ |
| 1165 | + 0x00, 0x00, 0x00, 0x00, |
| 1166 | + 0x00, 0x00, 0x00, 0x00, |
| 1167 | + 0x00, 0x00, 0x00, 0x00, |
| 1168 | + 0x00, 0x00, 0x00, 0x00, |
| 1169 | + 0x00, 0x00, 0x00, 0x00, |
| 1170 | + 0x00, 0x00, 0x00, 0x00, |
| 1171 | + 0x00, 0x00, 0x00, 0x00, |
| 1172 | + 0x00, 0x00, 0x00, 0x00, |
| 1173 | + |
| 1174 | + 0x00, 0x00, 0x22, 0x65, /* ICE_UDP_ILOS 54 */ |
| 1175 | + 0x00, 0x18, 0x00, 0x00, |
| 1176 | + |
| 1177 | + 0x21, 0x01, 0x00, 0x0c, /* ICE_PFCP 62 */ |
| 1178 | + 0x00, 0x00, 0x00, 0x00, |
| 1179 | + 0x00, 0x00, 0x00, 0x00, |
| 1180 | + 0x00, 0x00, 0x00, 0x00, |
| 1181 | + |
| 1182 | + 0x00, 0x00, /* 2 bytes for 4 byte alignment */ |
| 1183 | +}; |
| 1184 | + |
1113 | 1185 | ICE_DECLARE_PKT_OFFSETS(pppoe_ipv4_tcp) = { |
1114 | 1186 | { ICE_MAC_OFOS, 0 }, |
1115 | 1187 | { ICE_ETYPE_OL, 12 }, |
@@ -1343,6 +1415,8 @@ static const struct ice_dummy_pkt_profile ice_dummy_pkt_profiles[] = { |
1343 | 1415 | ICE_PKT_PROFILE(ipv4_gtpu_ipv4_tcp, ICE_PKT_TUN_GTPU), |
1344 | 1416 | ICE_PKT_PROFILE(ipv6_gtp, ICE_PKT_TUN_GTPC | ICE_PKT_OUTER_IPV6), |
1345 | 1417 | ICE_PKT_PROFILE(ipv4_gtpu_ipv4, ICE_PKT_TUN_GTPC), |
| 1418 | + ICE_PKT_PROFILE(pfcp_session_ipv6, ICE_PKT_PFCP | ICE_PKT_OUTER_IPV6), |
| 1419 | + ICE_PKT_PROFILE(pfcp_session_ipv4, ICE_PKT_PFCP), |
1346 | 1420 | ICE_PKT_PROFILE(pppoe_ipv6_udp, ICE_PKT_PPPOE | ICE_PKT_OUTER_IPV6 | |
1347 | 1421 | ICE_PKT_INNER_UDP), |
1348 | 1422 | ICE_PKT_PROFILE(pppoe_ipv6_tcp, ICE_PKT_PPPOE | ICE_PKT_OUTER_IPV6), |
@@ -4532,6 +4606,7 @@ static const struct ice_prot_ext_tbl_entry ice_prot_ext[ICE_PROTOCOL_LAST] = { |
4532 | 4606 | ICE_PROTOCOL_ENTRY(ICE_NVGRE, 0, 2, 4, 6), |
4533 | 4607 | ICE_PROTOCOL_ENTRY(ICE_GTP, 8, 10, 12, 14, 16, 18, 20, 22), |
4534 | 4608 | ICE_PROTOCOL_ENTRY(ICE_GTP_NO_PAY, 8, 10, 12, 14), |
| 4609 | + ICE_PROTOCOL_ENTRY(ICE_PFCP, 8, 10, 12, 14, 16, 18, 20, 22), |
4535 | 4610 | ICE_PROTOCOL_ENTRY(ICE_PPPOE, 0, 2, 4, 6), |
4536 | 4611 | ICE_PROTOCOL_ENTRY(ICE_L2TPV3, 0, 2, 4, 6, 8, 10), |
4537 | 4612 | ICE_PROTOCOL_ENTRY(ICE_VLAN_EX, 2, 0), |
@@ -4565,6 +4640,7 @@ static struct ice_protocol_entry ice_prot_id_tbl[ICE_PROTOCOL_LAST] = { |
4565 | 4640 | { ICE_NVGRE, ICE_GRE_OF_HW }, |
4566 | 4641 | { ICE_GTP, ICE_UDP_OF_HW }, |
4567 | 4642 | { ICE_GTP_NO_PAY, ICE_UDP_ILOS_HW }, |
| 4643 | + { ICE_PFCP, ICE_UDP_ILOS_HW }, |
4568 | 4644 | { ICE_PPPOE, ICE_PPPOE_HW }, |
4569 | 4645 | { ICE_L2TPV3, ICE_L2TPV3_HW }, |
4570 | 4646 | { ICE_VLAN_EX, ICE_VLAN_OF_HW }, |
@@ -5272,6 +5348,9 @@ ice_get_compat_fv_bitmap(struct ice_hw *hw, struct ice_adv_rule_info *rinfo, |
5272 | 5348 | case ICE_SW_TUN_GTPC: |
5273 | 5349 | prof_type = ICE_PROF_TUN_GTPC; |
5274 | 5350 | break; |
| 5351 | + case ICE_SW_TUN_PFCP: |
| 5352 | + prof_type = ICE_PROF_TUN_PFCP; |
| 5353 | + break; |
5275 | 5354 | case ICE_SW_TUN_AND_NON_TUN: |
5276 | 5355 | default: |
5277 | 5356 | prof_type = ICE_PROF_ALL; |
@@ -5556,6 +5635,9 @@ ice_find_dummy_packet(struct ice_adv_lkup_elem *lkups, u16 lkups_cnt, |
5556 | 5635 | case ICE_SW_TUN_VXLAN: |
5557 | 5636 | match |= ICE_PKT_TUN_UDP; |
5558 | 5637 | break; |
| 5638 | + case ICE_SW_TUN_PFCP: |
| 5639 | + match |= ICE_PKT_PFCP; |
| 5640 | + break; |
5559 | 5641 | default: |
5560 | 5642 | break; |
5561 | 5643 | } |
@@ -5696,6 +5778,9 @@ ice_fill_adv_dummy_packet(struct ice_adv_lkup_elem *lkups, u16 lkups_cnt, |
5696 | 5778 | case ICE_GTP: |
5697 | 5779 | len = sizeof(struct ice_udp_gtp_hdr); |
5698 | 5780 | break; |
| 5781 | + case ICE_PFCP: |
| 5782 | + len = sizeof(struct ice_pfcp_hdr); |
| 5783 | + break; |
5699 | 5784 | case ICE_PPPOE: |
5700 | 5785 | len = sizeof(struct ice_pppoe_hdr); |
5701 | 5786 | break; |
|
0 commit comments