On Wed, Aug 27, 2025 at 06:53:38PM +0000, Aleksandr Loktionov wrote:
> Extend the iavf driver to support Receive Side Scaling (RSS)
> configuration for GTP (GPRS Tunneling Protocol) flows using ethtool.
>
> The implementation introduces new RSS flow segment headers and hash field
> definitions for various GTP encapsulations, including:
>
> - GTPC
> - GTPU (IP, Extension Header, Uplink, Downlink)
> - TEID-based hashing
>
> The ethtool interface is updated to parse and apply these new flow types
> and hash fields, enabling fine-grained traffic distribution for GTP-based
> mobile workloads.
>
> This enhancement improves performance and scalability for virtualized
> network functions (VNFs) and user plane functions (UPFs) in 5G and LTE
> deployments.
>
> Signed-off-by: Aleksandr Loktionov <[email protected]>
> Reviewed-by: Jedrzej Jagielski <[email protected]>
> ---
> .../net/ethernet/intel/iavf/iavf_adv_rss.c | 119 ++++++++++++++----
> .../net/ethernet/intel/iavf/iavf_adv_rss.h | 31 +++++
> .../net/ethernet/intel/iavf/iavf_ethtool.c | 89 +++++++++++++
> 3 files changed, 216 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/iavf/iavf_adv_rss.c
> b/drivers/net/ethernet/intel/iavf/iavf_adv_rss.c
...
> @@ -211,6 +274,16 @@ iavf_print_adv_rss_cfg(struct iavf_adapter *adapter,
> struct iavf_adv_rss *rss,
> IAVF_ADV_RSS_HASH_FLD_UDP_DST_PORT |
> IAVF_ADV_RSS_HASH_FLD_SCTP_DST_PORT))
> strcat(hash_opt, "dst port,");
> + if (hash_flds & (IAVF_ADV_RSS_HASH_FLD_GTPC_TEID |
> IAVF_ADV_RSS_HASH_FLD_GTPC_TEID))
nit: Perhaps this is an artifact of development.
But IAVF_ADV_RSS_HASH_FLD_GTPC_TEID seems to repeated on
the line above without effect.
Flagged by Coccinelle.
> + strcat(hash_opt, "gtp-c,");
> + if (hash_flds & IAVF_ADV_RSS_HASH_FLD_GTPU_IP_TEID)
> + strcat(hash_opt, "gtp-u ip,");
> + if (hash_flds & IAVF_ADV_RSS_HASH_FLD_GTPU_EH_TEID)
> + strcat(hash_opt, "gtp-u ext,");
> + if (hash_flds & IAVF_ADV_RSS_HASH_FLD_GTPU_UP_TEID)
> + strcat(hash_opt, "gtp-u ul,");
> + if (hash_flds & IAVF_ADV_RSS_HASH_FLD_GTPU_DWN_TEID)
> + strcat(hash_opt, "gtp-u dl,");
>
> if (!action)
> action = "";
...