Message ID | 384c034c23d63dec14e0cc333b8b0b2a778edcf1.1731092818.git.dxu@dxuuu.xyz (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] bnxt_en: ethtool: Supply ntuple rss context action | expand |
On Fri, Nov 8, 2024 at 11:07 AM Daniel Xu <dxu@dxuuu.xyz> wrote: > > Commit 2f4f9fe5bf5f ("bnxt_en: Support adding ntuple rules on RSS > contexts") added support for redirecting to an RSS context as an ntuple > rule action. However, it forgot to update the ETHTOOL_GRXCLSRULE > codepath. This caused `ethtool -n` to always report the action as > "Action: Direct to queue 0" which is wrong. > > Fix by teaching bnxt driver to report the RSS context when applicable. > > Signed-off-by: Daniel Xu <dxu@dxuuu.xyz> > --- > drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > index cfd2c65b1c90..a218802befa8 100644 > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > @@ -1187,10 +1187,14 @@ static int bnxt_grxclsrule(struct bnxt *bp, struct ethtool_rxnfc *cmd) > } > } > > - if (fltr->base.flags & BNXT_ACT_DROP) > + if (fltr->base.flags & BNXT_ACT_DROP) { > fs->ring_cookie = RX_CLS_FLOW_DISC; > - else > + } else if (fltr->base.flags & BNXT_ACT_RSS_CTX) { > + fs->flow_type |= FLOW_RSS; > + cmd->rss_context = fltr->base.fw_vnic_id; I think the rss_context should be the index and not the VNIC ID. Pavan, please take a look. > + } else { > fs->ring_cookie = fltr->base.rxq; > + } > rc = 0; > > fltr_err: > -- > 2.46.0 >
On Sat, Nov 9, 2024 at 6:19 AM Michael Chan <michael.chan@broadcom.com> wrote: > > On Fri, Nov 8, 2024 at 11:07 AM Daniel Xu <dxu@dxuuu.xyz> wrote: > > > > Commit 2f4f9fe5bf5f ("bnxt_en: Support adding ntuple rules on RSS > > contexts") added support for redirecting to an RSS context as an ntuple > > rule action. However, it forgot to update the ETHTOOL_GRXCLSRULE > > codepath. This caused `ethtool -n` to always report the action as > > "Action: Direct to queue 0" which is wrong. > > > > Fix by teaching bnxt driver to report the RSS context when applicable. > > > > Signed-off-by: Daniel Xu <dxu@dxuuu.xyz> > > --- > > drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > > index cfd2c65b1c90..a218802befa8 100644 > > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > > @@ -1187,10 +1187,14 @@ static int bnxt_grxclsrule(struct bnxt *bp, struct ethtool_rxnfc *cmd) > > } > > } > > > > - if (fltr->base.flags & BNXT_ACT_DROP) > > + if (fltr->base.flags & BNXT_ACT_DROP) { > > fs->ring_cookie = RX_CLS_FLOW_DISC; > > - else > > + } else if (fltr->base.flags & BNXT_ACT_RSS_CTX) { > > + fs->flow_type |= FLOW_RSS; > > + cmd->rss_context = fltr->base.fw_vnic_id; > > I think the rss_context should be the index and not the VNIC ID. No, for RSS contexts, we save their index in the fw_vnic_id of the filters. Hence what Daniel has done is correct. > > Pavan, please take a look. > > > + } else { > > fs->ring_cookie = fltr->base.rxq; > > + } > > rc = 0; > > > > fltr_err: > > -- > > 2.46.0 > >
On Fri, Nov 8, 2024 at 7:10 PM Pavan Chebbi <pavan.chebbi@broadcom.com> wrote: > > On Sat, Nov 9, 2024 at 6:19 AM Michael Chan <michael.chan@broadcom.com> wrote: > > > > On Fri, Nov 8, 2024 at 11:07 AM Daniel Xu <dxu@dxuuu.xyz> wrote: > > > > > > Commit 2f4f9fe5bf5f ("bnxt_en: Support adding ntuple rules on RSS > > > contexts") added support for redirecting to an RSS context as an ntuple > > > rule action. However, it forgot to update the ETHTOOL_GRXCLSRULE > > > codepath. This caused `ethtool -n` to always report the action as > > > "Action: Direct to queue 0" which is wrong. > > > > > > Fix by teaching bnxt driver to report the RSS context when applicable. > > > > > > Signed-off-by: Daniel Xu <dxu@dxuuu.xyz> > > > --- > > > drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 8 ++++++-- > > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > > > index cfd2c65b1c90..a218802befa8 100644 > > > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > > > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c > > > @@ -1187,10 +1187,14 @@ static int bnxt_grxclsrule(struct bnxt *bp, struct ethtool_rxnfc *cmd) > > > } > > > } > > > > > > - if (fltr->base.flags & BNXT_ACT_DROP) > > > + if (fltr->base.flags & BNXT_ACT_DROP) { > > > fs->ring_cookie = RX_CLS_FLOW_DISC; > > > - else > > > + } else if (fltr->base.flags & BNXT_ACT_RSS_CTX) { > > > + fs->flow_type |= FLOW_RSS; > > > + cmd->rss_context = fltr->base.fw_vnic_id; > > > > I think the rss_context should be the index and not the VNIC ID. > > No, for RSS contexts, we save their index in the fw_vnic_id of the > filters. Hence what Daniel has done is correct. > I see now. The index is stored in the fltr->base.fw_vnic_id. Thanks. Reviewed-by: Michael Chan <michael.chan@broadcom.com>
On Fri, 8 Nov 2024 12:07:29 -0700 Daniel Xu wrote: > Commit 2f4f9fe5bf5f ("bnxt_en: Support adding ntuple rules on RSS > contexts") added support for redirecting to an RSS context as an ntuple > rule action. However, it forgot to update the ETHTOOL_GRXCLSRULE > codepath. This caused `ethtool -n` to always report the action as > "Action: Direct to queue 0" which is wrong. > > Fix by teaching bnxt driver to report the RSS context when applicable. Ah, so it was a driver bug after all. Please add a fixes tag here, add a test case for this in tools/testing/selftests/drivers/net/hw/rss_ctx.py as a second patch of the series.
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index cfd2c65b1c90..a218802befa8 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -1187,10 +1187,14 @@ static int bnxt_grxclsrule(struct bnxt *bp, struct ethtool_rxnfc *cmd) } } - if (fltr->base.flags & BNXT_ACT_DROP) + if (fltr->base.flags & BNXT_ACT_DROP) { fs->ring_cookie = RX_CLS_FLOW_DISC; - else + } else if (fltr->base.flags & BNXT_ACT_RSS_CTX) { + fs->flow_type |= FLOW_RSS; + cmd->rss_context = fltr->base.fw_vnic_id; + } else { fs->ring_cookie = fltr->base.rxq; + } rc = 0; fltr_err:
Commit 2f4f9fe5bf5f ("bnxt_en: Support adding ntuple rules on RSS contexts") added support for redirecting to an RSS context as an ntuple rule action. However, it forgot to update the ETHTOOL_GRXCLSRULE codepath. This caused `ethtool -n` to always report the action as "Action: Direct to queue 0" which is wrong. Fix by teaching bnxt driver to report the RSS context when applicable. Signed-off-by: Daniel Xu <dxu@dxuuu.xyz> --- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)