net/ice/base: support switch filter (GTP tunnel+IP flow)
Enabled support for advanced switch filter to satisfy match criteria such as: GTP tunnel + Inner IPv4[6] Signed-off-by: Kiran Patil <kiran.patil@intel.com> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> Acked-by: Qiming Yang <qiming.yang@intel.com>
This commit is contained in:
parent
2fcb1dc954
commit
886a4e7fc6
@ -75,10 +75,6 @@ enum ice_sw_tunnel_type {
|
||||
ICE_SW_TUN_GTP,
|
||||
ICE_SW_TUN_IPV4_GTPU_NO_PAY,
|
||||
ICE_SW_TUN_IPV6_GTPU_NO_PAY,
|
||||
ICE_SW_TUN_IPV4_GTPU_IPV4,
|
||||
ICE_SW_TUN_IPV4_GTPU_IPV6,
|
||||
ICE_SW_TUN_IPV6_GTPU_IPV4,
|
||||
ICE_SW_TUN_IPV6_GTPU_IPV6,
|
||||
ICE_SW_TUN_PPPOE,
|
||||
ICE_SW_TUN_PPPOE_PAY,
|
||||
ICE_SW_TUN_PPPOE_IPV4,
|
||||
@ -109,6 +105,10 @@ enum ice_sw_tunnel_type {
|
||||
ICE_SW_TUN_PPPOE_PAY_QINQ,
|
||||
ICE_SW_TUN_PPPOE_IPV4_QINQ,
|
||||
ICE_SW_TUN_PPPOE_IPV6_QINQ,
|
||||
ICE_SW_TUN_IPV4_GTPU_IPV4,
|
||||
ICE_SW_TUN_IPV4_GTPU_IPV6,
|
||||
ICE_SW_TUN_IPV6_GTPU_IPV4,
|
||||
ICE_SW_TUN_IPV6_GTPU_IPV6,
|
||||
ICE_ALL_TUNNELS /* All tunnel types including NVGRE */
|
||||
};
|
||||
|
||||
|
@ -912,39 +912,7 @@ static const u8 dummy_ipv6_gtpu_ipv6_udp_packet[] = {
|
||||
0x00, 0x00, /* 2 bytes for 4 byte alignment */
|
||||
};
|
||||
|
||||
static const struct ice_dummy_pkt_offsets dummy_udp_gtp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV4_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 34 },
|
||||
{ ICE_GTP, 42 },
|
||||
{ ICE_PROTOCOL_LAST, 0 },
|
||||
};
|
||||
|
||||
static const u8 dummy_udp_gtp_packet[] = {
|
||||
0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00,
|
||||
|
||||
0x45, 0x00, 0x00, 0x30, /* ICE_IPV4_OFOS 14 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x08, 0x68, /* ICE_UDP_OF 34 */
|
||||
0x00, 0x1c, 0x00, 0x00,
|
||||
|
||||
0x34, 0xff, 0x00, 0x0c, /* ICE_GTP 42 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x85,
|
||||
|
||||
0x02, 0x00, 0x00, 0x00, /* PDU Session extension header */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
static const
|
||||
struct ice_dummy_pkt_offsets dummy_ipv4_gtpu_ipv4_packet_offsets[] = {
|
||||
static const struct ice_dummy_pkt_offsets dummy_ipv4_gtpu_ipv4_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV4_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 34 },
|
||||
@ -1126,8 +1094,38 @@ static const u8 dummy_ipv6_gtpu_ipv6_packet[] = {
|
||||
0x00, 0x00,
|
||||
};
|
||||
|
||||
static const
|
||||
struct ice_dummy_pkt_offsets dummy_ipv4_gtp_no_pay_packet_offsets[] = {
|
||||
static const struct ice_dummy_pkt_offsets dummy_udp_gtp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV4_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 34 },
|
||||
{ ICE_GTP, 42 },
|
||||
{ ICE_PROTOCOL_LAST, 0 },
|
||||
};
|
||||
|
||||
static const u8 dummy_udp_gtp_packet[] = {
|
||||
0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00,
|
||||
|
||||
0x45, 0x00, 0x00, 0x30, /* ICE_IPV4_OFOS 14 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x08, 0x68, /* ICE_UDP_OF 34 */
|
||||
0x00, 0x1c, 0x00, 0x00,
|
||||
|
||||
0x34, 0xff, 0x00, 0x0c, /* ICE_GTP 42 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x85,
|
||||
|
||||
0x02, 0x00, 0x00, 0x00, /* PDU Session extension header */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
static const struct ice_dummy_pkt_offsets dummy_ipv4_gtp_no_pay_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV4_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 34 },
|
||||
@ -7808,26 +7806,6 @@ ice_find_dummy_packet(struct ice_adv_lkup_elem *lkups, u16 lkups_cnt,
|
||||
*pkt_len = sizeof(dummy_ipv6_gtpu_ipv6_packet);
|
||||
*offsets = dummy_ipv6_gtp_no_pay_packet_offsets;
|
||||
return;
|
||||
} else if (tun_type == ICE_SW_TUN_IPV4_GTPU_IPV4) {
|
||||
*pkt = dummy_ipv4_gtpu_ipv4_packet;
|
||||
*pkt_len = sizeof(dummy_ipv4_gtpu_ipv4_packet);
|
||||
*offsets = dummy_ipv4_gtpu_ipv4_packet_offsets;
|
||||
return;
|
||||
} else if (tun_type == ICE_SW_TUN_IPV4_GTPU_IPV6) {
|
||||
*pkt = dummy_ipv4_gtpu_ipv6_packet;
|
||||
*pkt_len = sizeof(dummy_ipv4_gtpu_ipv6_packet);
|
||||
*offsets = dummy_ipv4_gtpu_ipv6_packet_offsets;
|
||||
return;
|
||||
} else if (tun_type == ICE_SW_TUN_IPV6_GTPU_IPV4) {
|
||||
*pkt = dummy_ipv6_gtpu_ipv4_packet;
|
||||
*pkt_len = sizeof(dummy_ipv6_gtpu_ipv4_packet);
|
||||
*offsets = dummy_ipv6_gtpu_ipv4_packet_offsets;
|
||||
return;
|
||||
} else if (tun_type == ICE_SW_TUN_IPV6_GTPU_IPV6) {
|
||||
*pkt = dummy_ipv6_gtpu_ipv6_packet;
|
||||
*pkt_len = sizeof(dummy_ipv6_gtpu_ipv6_packet);
|
||||
*offsets = dummy_ipv6_gtpu_ipv6_packet_offsets;
|
||||
return;
|
||||
}
|
||||
|
||||
if (tun_type == ICE_SW_TUN_IPV4_ESP) {
|
||||
@ -7976,6 +7954,32 @@ ice_find_dummy_packet(struct ice_adv_lkup_elem *lkups, u16 lkups_cnt,
|
||||
return;
|
||||
}
|
||||
|
||||
/* Support GTP tunnel + L3 */
|
||||
if (tun_type == ICE_SW_TUN_IPV4_GTPU_IPV4) {
|
||||
*pkt = dummy_ipv4_gtpu_ipv4_packet;
|
||||
*pkt_len = sizeof(dummy_ipv4_gtpu_ipv4_packet);
|
||||
*offsets = dummy_ipv4_gtpu_ipv4_packet_offsets;
|
||||
return;
|
||||
}
|
||||
if (tun_type == ICE_SW_TUN_IPV4_GTPU_IPV6) {
|
||||
*pkt = dummy_ipv4_gtpu_ipv6_packet;
|
||||
*pkt_len = sizeof(dummy_ipv4_gtpu_ipv6_packet);
|
||||
*offsets = dummy_ipv4_gtpu_ipv6_packet_offsets;
|
||||
return;
|
||||
}
|
||||
if (tun_type == ICE_SW_TUN_IPV6_GTPU_IPV4) {
|
||||
*pkt = dummy_ipv6_gtpu_ipv4_packet;
|
||||
*pkt_len = sizeof(dummy_ipv6_gtpu_ipv4_packet);
|
||||
*offsets = dummy_ipv6_gtpu_ipv4_packet_offsets;
|
||||
return;
|
||||
}
|
||||
if (tun_type == ICE_SW_TUN_IPV6_GTPU_IPV6) {
|
||||
*pkt = dummy_ipv6_gtpu_ipv6_packet;
|
||||
*pkt_len = sizeof(dummy_ipv6_gtpu_ipv6_packet);
|
||||
*offsets = dummy_ipv6_gtpu_ipv6_packet_offsets;
|
||||
return;
|
||||
}
|
||||
|
||||
if (tun_type == ICE_ALL_TUNNELS) {
|
||||
*pkt = dummy_gre_udp_packet;
|
||||
*pkt_len = sizeof(dummy_gre_udp_packet);
|
||||
|
Loading…
x
Reference in New Issue
Block a user