From: Simon Horman <horms@kernel.org>
To: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Cc: Dan Nowlin <dan.nowlin@intel.com>,
netdev@vger.kernel.org, anthony.l.nguyen@intel.com,
Qi Zhang <qi.z.zhang@intel.com>,
intel-wired-lan@lists.osuosl.org,
Przemek Kitszel <przemyslaw.kitszel@intel.com>
Subject: Re: [Intel-wired-lan] [PATCH iwl-next v4 2/5] ice: add virtchnl and VF context support for GTP RSS
Date: Fri, 12 Sep 2025 10:02:37 +0100 [thread overview]
Message-ID: <20250912090237.GU30363@horms.kernel.org> (raw)
In-Reply-To: <20250829101809.1022945-3-aleksandr.loktionov@intel.com>
On Fri, Aug 29, 2025 at 10:18:05AM +0000, Aleksandr Loktionov wrote:
> Introduce infrastructure to support GTP-specific RSS configuration
> in the ICE driver, enabling flexible and programmable flow hashing
> on virtual functions (VFs).
>
> - Define new virtchnl protocol header and field types for GTPC, GTPU,
> L2TPv2, ECPRI, PPP, GRE, and IP fragment headers.
> - Extend virtchnl.h to support additional RSS fields including checksums,
> TEID, QFI, and IPv6 prefix matching.
> - Add VF-side hash context structures for IPv4/IPv6 and GTPU flows.
> - Implement context tracking and rule ordering logic for TCAM-based
> RSS configuration.
> - Introduce symmetric hashing support for raw and tunnel flows.
> - Update ice_vf_lib.h and virt/rss.c to handle advanced RSS
> configuration via virtchnl messages.
>
> VFs can express RSS configuration for GTP flows
> using ethtool and virtchnl, laying the foundation for tunnel-aware
> RSS offloads in virtualized environments.
>
> Co-developed-by: Dan Nowlin <dan.nowlin@intel.com>
> Signed-off-by: Dan Nowlin <dan.nowlin@intel.com>
> Co-developed-by: Jie Wang <jie1x.wang@intel.com>
> Signed-off-by: Jie Wang <jie1x.wang@intel.com>
> Co-developed-by: Junfeng Guo <junfeng.guo@intel.com>
> Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
> Co-developed-by: Qi Zhang <qi.z.zhang@intel.com>
> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
> Co-developed-by: Ting Xu <ting.xu@intel.com>
> Signed-off-by: Ting Xu <ting.xu@intel.com>
> Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Aside from the minor comment below, this looks good to me.
So with that addressed, feel free to add:
Reviewed-by: Simon Horman <horms@kernel.org>
> diff --git a/drivers/net/ethernet/intel/ice/virt/rss.c b/drivers/net/ethernet/intel/ice/virt/rss.c
...
> +/**
> + * ice_parse_raw_rss_pattern - Parse raw pattern spec and mask for RSS
> + * @vf: pointer to the VF info
> + * @proto: pointer to the virtchnl protocol header
> + * @raw_cfg: pointer to the RSS raw pattern configuration
> + *
> + * Parser function to get spec and mask from virtchnl message, and parse
> + * them to get the corresponding profile and offset. The profile is used
> + * to add RSS configuration.
> + *
> + * Return: 0 on success; negative error code on failure.
> + */
> +static int
> +ice_parse_raw_rss_pattern(struct ice_vf *vf, struct virtchnl_proto_hdrs *proto,
> + struct ice_rss_raw_cfg *raw_cfg)
> +{
> + struct ice_parser_result pkt_parsed;
> + struct ice_hw *hw = &vf->pf->hw;
> + struct ice_parser_profile prof;
> + u16 pkt_len;
> + struct ice_parser *psr;
> + u8 *pkt_buf, *msk_buf;
> + int ret = 0;
> +
> + pkt_len = proto->raw.pkt_len;
> + if (!pkt_len)
> + return -EINVAL;
> + if (pkt_len > VIRTCHNL_MAX_SIZE_RAW_PACKET)
> + pkt_len = VIRTCHNL_MAX_SIZE_RAW_PACKET;
> +
> + pkt_buf = kzalloc(pkt_len, GFP_KERNEL);
> + msk_buf = kzalloc(pkt_len, GFP_KERNEL);
> + if (!pkt_buf || !msk_buf) {
> + ret = -ENOMEM;
> + goto free_alloc;
> + }
> +
> + memcpy(pkt_buf, proto->raw.spec, pkt_len);
> + memcpy(msk_buf, proto->raw.mask, pkt_len);
> +
> + psr = ice_parser_create(hw);
> + if (IS_ERR(psr)) {
> + ret = PTR_ERR(psr);
> + goto parser_destroy;
I think this one should be goto free_alloc.
Else there will be a NULL pointer dereference in ice_parser_destroy().
> + }
> +
> + ret = ice_parser_run(psr, pkt_buf, pkt_len, &pkt_parsed);
> + if (ret)
> + goto parser_destroy;
> +
> + ret = ice_parser_profile_init(&pkt_parsed, pkt_buf, msk_buf,
> + pkt_len, ICE_BLK_RSS, &prof);
> + if (ret)
> + goto parser_destroy;
> +
> + memcpy(&raw_cfg->prof, &prof, sizeof(prof));
> +
> +parser_destroy:
> + ice_parser_destroy(psr);
> +free_alloc:
> + kfree(pkt_buf);
> + kfree(msk_buf);
> + return ret;
> +}
WARNING: multiple messages have this Message-ID (diff)
From: Simon Horman <horms@kernel.org>
To: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Cc: intel-wired-lan@lists.osuosl.org, anthony.l.nguyen@intel.com,
netdev@vger.kernel.org, mschmidt@redhat.com,
Dan Nowlin <dan.nowlin@intel.com>,
Qi Zhang <qi.z.zhang@intel.com>,
Przemek Kitszel <przemyslaw.kitszel@intel.com>
Subject: Re: [PATCH iwl-next v4 2/5] ice: add virtchnl and VF context support for GTP RSS
Date: Fri, 12 Sep 2025 10:02:37 +0100 [thread overview]
Message-ID: <20250912090237.GU30363@horms.kernel.org> (raw)
In-Reply-To: <20250829101809.1022945-3-aleksandr.loktionov@intel.com>
On Fri, Aug 29, 2025 at 10:18:05AM +0000, Aleksandr Loktionov wrote:
> Introduce infrastructure to support GTP-specific RSS configuration
> in the ICE driver, enabling flexible and programmable flow hashing
> on virtual functions (VFs).
>
> - Define new virtchnl protocol header and field types for GTPC, GTPU,
> L2TPv2, ECPRI, PPP, GRE, and IP fragment headers.
> - Extend virtchnl.h to support additional RSS fields including checksums,
> TEID, QFI, and IPv6 prefix matching.
> - Add VF-side hash context structures for IPv4/IPv6 and GTPU flows.
> - Implement context tracking and rule ordering logic for TCAM-based
> RSS configuration.
> - Introduce symmetric hashing support for raw and tunnel flows.
> - Update ice_vf_lib.h and virt/rss.c to handle advanced RSS
> configuration via virtchnl messages.
>
> VFs can express RSS configuration for GTP flows
> using ethtool and virtchnl, laying the foundation for tunnel-aware
> RSS offloads in virtualized environments.
>
> Co-developed-by: Dan Nowlin <dan.nowlin@intel.com>
> Signed-off-by: Dan Nowlin <dan.nowlin@intel.com>
> Co-developed-by: Jie Wang <jie1x.wang@intel.com>
> Signed-off-by: Jie Wang <jie1x.wang@intel.com>
> Co-developed-by: Junfeng Guo <junfeng.guo@intel.com>
> Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
> Co-developed-by: Qi Zhang <qi.z.zhang@intel.com>
> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
> Co-developed-by: Ting Xu <ting.xu@intel.com>
> Signed-off-by: Ting Xu <ting.xu@intel.com>
> Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Aside from the minor comment below, this looks good to me.
So with that addressed, feel free to add:
Reviewed-by: Simon Horman <horms@kernel.org>
> diff --git a/drivers/net/ethernet/intel/ice/virt/rss.c b/drivers/net/ethernet/intel/ice/virt/rss.c
...
> +/**
> + * ice_parse_raw_rss_pattern - Parse raw pattern spec and mask for RSS
> + * @vf: pointer to the VF info
> + * @proto: pointer to the virtchnl protocol header
> + * @raw_cfg: pointer to the RSS raw pattern configuration
> + *
> + * Parser function to get spec and mask from virtchnl message, and parse
> + * them to get the corresponding profile and offset. The profile is used
> + * to add RSS configuration.
> + *
> + * Return: 0 on success; negative error code on failure.
> + */
> +static int
> +ice_parse_raw_rss_pattern(struct ice_vf *vf, struct virtchnl_proto_hdrs *proto,
> + struct ice_rss_raw_cfg *raw_cfg)
> +{
> + struct ice_parser_result pkt_parsed;
> + struct ice_hw *hw = &vf->pf->hw;
> + struct ice_parser_profile prof;
> + u16 pkt_len;
> + struct ice_parser *psr;
> + u8 *pkt_buf, *msk_buf;
> + int ret = 0;
> +
> + pkt_len = proto->raw.pkt_len;
> + if (!pkt_len)
> + return -EINVAL;
> + if (pkt_len > VIRTCHNL_MAX_SIZE_RAW_PACKET)
> + pkt_len = VIRTCHNL_MAX_SIZE_RAW_PACKET;
> +
> + pkt_buf = kzalloc(pkt_len, GFP_KERNEL);
> + msk_buf = kzalloc(pkt_len, GFP_KERNEL);
> + if (!pkt_buf || !msk_buf) {
> + ret = -ENOMEM;
> + goto free_alloc;
> + }
> +
> + memcpy(pkt_buf, proto->raw.spec, pkt_len);
> + memcpy(msk_buf, proto->raw.mask, pkt_len);
> +
> + psr = ice_parser_create(hw);
> + if (IS_ERR(psr)) {
> + ret = PTR_ERR(psr);
> + goto parser_destroy;
I think this one should be goto free_alloc.
Else there will be a NULL pointer dereference in ice_parser_destroy().
> + }
> +
> + ret = ice_parser_run(psr, pkt_buf, pkt_len, &pkt_parsed);
> + if (ret)
> + goto parser_destroy;
> +
> + ret = ice_parser_profile_init(&pkt_parsed, pkt_buf, msk_buf,
> + pkt_len, ICE_BLK_RSS, &prof);
> + if (ret)
> + goto parser_destroy;
> +
> + memcpy(&raw_cfg->prof, &prof, sizeof(prof));
> +
> +parser_destroy:
> + ice_parser_destroy(psr);
> +free_alloc:
> + kfree(pkt_buf);
> + kfree(msk_buf);
> + return ret;
> +}
next prev parent reply other threads:[~2025-09-12 9:02 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-29 10:18 [Intel-wired-lan] [PATCH iwl-next v4 0/5] iavf and ice: GTP RSS support and flow enhancements Aleksandr Loktionov
2025-08-29 10:18 ` Aleksandr Loktionov
2025-08-29 10:18 ` [Intel-wired-lan] [PATCH iwl-next v4 1/5] ice: add flow parsing for GTP and new protocol field support Aleksandr Loktionov
2025-08-29 10:18 ` Aleksandr Loktionov
2025-09-12 9:03 ` [Intel-wired-lan] " Simon Horman
2025-09-12 9:03 ` Simon Horman
2025-09-12 10:04 ` [Intel-wired-lan] " Paul Menzel
2025-09-15 12:32 ` Loktionov, Aleksandr
2025-09-15 12:32 ` Loktionov, Aleksandr
2025-08-29 10:18 ` [Intel-wired-lan] [PATCH iwl-next v4 2/5] ice: add virtchnl and VF context support for GTP RSS Aleksandr Loktionov
2025-08-29 10:18 ` Aleksandr Loktionov
2025-09-12 9:02 ` Simon Horman [this message]
2025-09-12 9:02 ` Simon Horman
2025-09-13 4:41 ` [Intel-wired-lan] " Paul Menzel
2025-08-29 10:18 ` [Intel-wired-lan] [PATCH iwl-next v4 3/5] ice: improve TCAM priority handling for RSS profiles Aleksandr Loktionov
2025-08-29 10:18 ` Aleksandr Loktionov
2025-09-12 9:03 ` [Intel-wired-lan] " Simon Horman
2025-09-12 9:03 ` Simon Horman
2025-08-29 10:18 ` [Intel-wired-lan] [PATCH iwl-next v4 4/5] ice: Extend PTYPE bitmap coverage for GTP encapsulated flows Aleksandr Loktionov
2025-08-29 10:18 ` Aleksandr Loktionov
2025-09-12 9:03 ` [Intel-wired-lan] " Simon Horman
2025-09-12 9:03 ` Simon Horman
2025-08-29 10:18 ` [Intel-wired-lan] [PATCH iwl-next v4 5/5] iavf: add RSS support for GTP protocol via ethtool Aleksandr Loktionov
2025-08-29 10:18 ` Aleksandr Loktionov
2025-09-12 9:03 ` [Intel-wired-lan] " Simon Horman
2025-09-12 9:03 ` Simon Horman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250912090237.GU30363@horms.kernel.org \
--to=horms@kernel.org \
--cc=aleksandr.loktionov@intel.com \
--cc=anthony.l.nguyen@intel.com \
--cc=dan.nowlin@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=netdev@vger.kernel.org \
--cc=przemyslaw.kitszel@intel.com \
--cc=qi.z.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.