History

Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue

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 ====================

David S. Miller committed 4 years ago

Commit 97aeb872 parents 4d17d43 9a225f816 files · +1478 −119Browse files

Showing the changes to include/uapi (4 of 16 files). Show all

Unified · Split

4 files
  1. include/uapi/linux/gtp.h +1 −0
  2. include/uapi/linux/if_link.h +2 −0
  3. include/uapi/linux/if_tunnel.h +3 −1
  4. include/uapi/linux/pkt_cls.h +15 −0
include/uapi/linux/gtp.h+1−0
@@ -8,6 +8,7 @@ enum gtp_genl_cmds { · 7 unmodified lines
88 GTP_CMD_NEWPDP,
99 GTP_CMD_DELPDP,
1010 GTP_CMD_GETPDP,
11+ GTP_CMD_ECHOREQ,
1112
1213 GTP_CMD_MAX,
1314 };
include/uapi/linux/if_link.h+2−0
@@ -887,6 +887,8 @@ enum { · 886 unmodified lines
887887 IFLA_GTP_FD1,
888888 IFLA_GTP_PDP_HASHSIZE,
889889 IFLA_GTP_ROLE,
890+ IFLA_GTP_CREATE_SOCKETS,
891+ IFLA_GTP_RESTART_COUNT,
890892 __IFLA_GTP_MAX,
891893 };
892894 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
include/uapi/linux/if_tunnel.h+3−1
@@ -176,8 +176,10 @@ enum { · 175 unmodified lines
176176 #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000)
177177 #define TUNNEL_NOCACHE __cpu_to_be16(0x2000)
178178 #define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000)
179+#define TUNNEL_GTP_OPT __cpu_to_be16(0x8000)
179180
180181 #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)
182184
183185 #endif /* _UAPI_IF_TUNNEL_H_ */
include/uapi/linux/pkt_cls.h+15−0
@@ -616,6 +616,10 @@ enum { · 615 unmodified lines
616616 * TCA_FLOWER_KEY_ENC_OPT_ERSPAN_
617617 * attributes
618618 */
619+ TCA_FLOWER_KEY_ENC_OPTS_GTP, /* Nested
620+ * TCA_FLOWER_KEY_ENC_OPT_GTP_
621+ * attributes
622+ */
619623 __TCA_FLOWER_KEY_ENC_OPTS_MAX,
620624 };
621625
@@ -654,6 +658,17 @@ enum { · 32 unmodified lines
654658 #define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX \
655659 (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
656660
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+
657672 enum {
658673 TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
659674 TCA_FLOWER_KEY_MPLS_OPTS_LSE,