Tony Nguyen says: ==================== ice: GTP support in switchdev Marcin Szycik says: Add support for adding GTP-C and GTP-U filters in switchdev mode. To create a filter for GTP, create a GTP-type netdev with ip tool, enable hardware offload, add qdisc and add a filter in tc: ip link add $GTP0 type gtp role <sgsn/ggsn> hsize <hsize> ethtool -K $PF0 hw-tc-offload on tc qdisc add dev $GTP0 ingress tc filter add dev $GTP0 ingress prio 1 flower enc_key_id 1337 \ action mirred egress redirect dev $VF1_PR By default, a filter for GTP-U will be added. To add a filter for GTP-C, specify enc_dst_port = 2123, e.g.: tc filter add dev $GTP0 ingress prio 1 flower enc_key_id 1337 \ enc_dst_port 2123 action mirred egress redirect dev $VF1_PR Note: outer IPv6 offload is not supported yet. Note: GTP-U with no payload offload is not supported yet. ICE COMMS package is required to create a filter as it contains GTP profiles. Changes in iproute2 [1] are required to be able to add GTP netdev and use GTP-specific options (QFI and PDU type). [1] https://lore.kernel.org/netdev/20220211182902.11542-1-wojciech.drewek@intel.com/T --- v2: Add more CC v3: Fix mail thread, sorry for spam v4: Add GTP echo response in gtp module v5: Change patch order v6: Add GTP echo request in gtp module v7: Fix kernel-docs in ice v8: Remove handling of GTP Echo Response v9: Add sending of multicast message on GTP Echo Response, fix GTP-C dummy packet selection v10: Rebase, fixed most 80 char line limits v11: Rebase, collect Harald's Reviewed-by on patch 3 ====================
Showing the changes to include/uapi (4 of 16 files). Show all
Unified · Split
| @@ -8,6 +8,7 @@ enum gtp_genl_cmds { · 7 unmodified lines | |||
| 8 | GTP_CMD_NEWPDP, | 8 | GTP_CMD_NEWPDP, |
| 9 | GTP_CMD_DELPDP, | 9 | GTP_CMD_DELPDP, |
| 10 | GTP_CMD_GETPDP, | 10 | GTP_CMD_GETPDP, |
| 11 | GTP_CMD_ECHOREQ, | ||
| 11 | 12 | ||
| 12 | GTP_CMD_MAX, | 13 | GTP_CMD_MAX, |
| 13 | }; | 14 | }; |
| @@ -887,6 +887,8 @@ enum { · 886 unmodified lines | |||
| 887 | IFLA_GTP_FD1, | 887 | IFLA_GTP_FD1, |
| 888 | IFLA_GTP_PDP_HASHSIZE, | 888 | IFLA_GTP_PDP_HASHSIZE, |
| 889 | IFLA_GTP_ROLE, | 889 | IFLA_GTP_ROLE, |
| 890 | IFLA_GTP_CREATE_SOCKETS, | ||
| 891 | IFLA_GTP_RESTART_COUNT, | ||
| 890 | __IFLA_GTP_MAX, | 892 | __IFLA_GTP_MAX, |
| 891 | }; | 893 | }; |
| 892 | #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1) | 894 | #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1) |
| @@ -176,8 +176,10 @@ enum { · 175 unmodified lines | |||
| 176 | #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000) | 176 | #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000) |
| 177 | #define TUNNEL_NOCACHE __cpu_to_be16(0x2000) | 177 | #define TUNNEL_NOCACHE __cpu_to_be16(0x2000) |
| 178 | #define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000) | 178 | #define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000) |
| 179 | #define TUNNEL_GTP_OPT __cpu_to_be16(0x8000) | ||
| 179 | 180 | ||
| 180 | #define TUNNEL_OPTIONS_PRESENT \ | 181 | #define TUNNEL_OPTIONS_PRESENT \ |
| 181 | (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT) | 182 | (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT | \ |
| 183 | TUNNEL_GTP_OPT) | ||
| 182 | 184 | ||
| 183 | #endif /* _UAPI_IF_TUNNEL_H_ */ | 185 | #endif /* _UAPI_IF_TUNNEL_H_ */ |
| @@ -616,6 +616,10 @@ enum { · 615 unmodified lines | |||
| 616 | * TCA_FLOWER_KEY_ENC_OPT_ERSPAN_ | 616 | * TCA_FLOWER_KEY_ENC_OPT_ERSPAN_ |
| 617 | * attributes | 617 | * attributes |
| 618 | */ | 618 | */ |
| 619 | TCA_FLOWER_KEY_ENC_OPTS_GTP, /* Nested | ||
| 620 | * TCA_FLOWER_KEY_ENC_OPT_GTP_ | ||
| 621 | * attributes | ||
| 622 | */ | ||
| 619 | __TCA_FLOWER_KEY_ENC_OPTS_MAX, | 623 | __TCA_FLOWER_KEY_ENC_OPTS_MAX, |
| 620 | }; | 624 | }; |
| 621 | 625 | ||
| @@ -654,6 +658,17 @@ enum { · 32 unmodified lines | |||
| 654 | #define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX \ | 658 | #define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX \ |
| 655 | (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1) | 659 | (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1) |
| 656 | 660 | ||
| 661 | enum { | ||
| 662 | TCA_FLOWER_KEY_ENC_OPT_GTP_UNSPEC, | ||
| 663 | TCA_FLOWER_KEY_ENC_OPT_GTP_PDU_TYPE, /* u8 */ | ||
| 664 | TCA_FLOWER_KEY_ENC_OPT_GTP_QFI, /* u8 */ | ||
| 665 | |||
| 666 | __TCA_FLOWER_KEY_ENC_OPT_GTP_MAX, | ||
| 667 | }; | ||
| 668 | |||
| 669 | #define TCA_FLOWER_KEY_ENC_OPT_GTP_MAX \ | ||
| 670 | (__TCA_FLOWER_KEY_ENC_OPT_GTP_MAX - 1) | ||
| 671 | |||
| 657 | enum { | 672 | enum { |
| 658 | TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC, | 673 | TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC, |
| 659 | TCA_FLOWER_KEY_MPLS_OPTS_LSE, | 674 | TCA_FLOWER_KEY_MPLS_OPTS_LSE, |