Message ID | 20230118100410.8834-2-hkelam@marvell.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | octeontx2-pf: HTB offload support | expand |
On Wed, Jan 18, 2023 at 03:34:06PM +0530, Hariprasad Kelam wrote: > From: Naveen Mamindlapalli <naveenm@marvell.com> > > The current implementation of HTB offload returns the EINVAL error > for unsupported parameters like prio and quantum. This patch removes > the error returning checks for 'prio' parameter and populates its > value to tc_htb_qopt_offload structure such that driver can use the > same. > > Add prio parameter check in mlx5 driver, as mlx5 devices are not capable > of supporting the prio parameter when htb offload is used. Report error > if prio parameter is set to a non-default value. > > Signed-off-by: Naveen Mamindlapalli <naveenm@marvell.com> > Co-developed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> > Signed-off-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> > Signed-off-by: Hariprasad Kelam <hkelam@marvell.com> > Signed-off-by: Sunil Kovvuri Goutham <sgoutham@marvell.com> > --- > v2* ensure other drivers won't effect by allowing 'prio' > parameter in htb offload mode <...> > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c b/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c > index 2842195ee548..e16b3d6ea471 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c > @@ -379,6 +379,12 @@ int mlx5e_htb_setup_tc(struct mlx5e_priv *priv, struct tc_htb_qopt_offload *htb_ > if (!htb && htb_qopt->command != TC_HTB_CREATE) > return -EINVAL; > > + if (htb_qopt->prio) { > + NL_SET_ERR_MSG(htb_qopt->extack, > + "prio parameter is not supported by device with HTB offload enabled."); NL_SET_ERR_MSG_MOD() Thanks
On Wed, Jan 18, 2023 at 03:34:06PM +0530, Hariprasad Kelam wrote: > From: Naveen Mamindlapalli <naveenm@marvell.com> > > The current implementation of HTB offload returns the EINVAL error for > unsupported parameters like prio and quantum. This patch removes the > error returning checks for 'prio' parameter and populates its value to > tc_htb_qopt_offload structure such that driver can use the same. > > Add prio parameter check in mlx5 driver, as mlx5 devices are not > capable of supporting the prio parameter when htb offload is used. > Report error if prio parameter is set to a non-default value. > > Signed-off-by: Naveen Mamindlapalli <naveenm@marvell.com> > Co-developed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> > Signed-off-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> > Signed-off-by: Hariprasad Kelam <hkelam@marvell.com> > Signed-off-by: Sunil Kovvuri Goutham <sgoutham@marvell.com> > --- > v2* ensure other drivers won't effect by allowing 'prio' > parameter in htb offload mode <...> > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c > b/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c > index 2842195ee548..e16b3d6ea471 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c > @@ -379,6 +379,12 @@ int mlx5e_htb_setup_tc(struct mlx5e_priv *priv, struct tc_htb_qopt_offload *htb_ > if (!htb && htb_qopt->command != TC_HTB_CREATE) > return -EINVAL; > > + if (htb_qopt->prio) { > + NL_SET_ERR_MSG(htb_qopt->extack, > + "prio parameter is not supported by device with HTB offload > +enabled."); NL_SET_ERR_MSG_MOD() >> will add this change in next version. Thanks, Hariprasad k Thanks
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c b/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c index 2842195ee548..e16b3d6ea471 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c @@ -379,6 +379,12 @@ int mlx5e_htb_setup_tc(struct mlx5e_priv *priv, struct tc_htb_qopt_offload *htb_ if (!htb && htb_qopt->command != TC_HTB_CREATE) return -EINVAL; + if (htb_qopt->prio) { + NL_SET_ERR_MSG(htb_qopt->extack, + "prio parameter is not supported by device with HTB offload enabled."); + return -EINVAL; + } + switch (htb_qopt->command) { case TC_HTB_CREATE: if (!mlx5_qos_is_supported(priv->mdev)) { diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 4cabb32a2ad9..02afb1baf39d 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -864,6 +864,7 @@ struct tc_htb_qopt_offload { u16 qid; u64 rate; u64 ceil; + u8 prio; }; #define TC_HTB_CLASSID_ROOT U32_MAX diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c index 2238edece1a4..f2d034cdd7bd 100644 --- a/net/sched/sch_htb.c +++ b/net/sched/sch_htb.c @@ -1806,10 +1806,6 @@ static int htb_change_class(struct Qdisc *sch, u32 classid, NL_SET_ERR_MSG(extack, "HTB offload doesn't support the quantum parameter"); goto failure; } - if (hopt->prio) { - NL_SET_ERR_MSG(extack, "HTB offload doesn't support the prio parameter"); - goto failure; - } } /* Keeping backward compatible with rate_table based iproute2 tc */ @@ -1905,6 +1901,7 @@ static int htb_change_class(struct Qdisc *sch, u32 classid, TC_HTB_CLASSID_ROOT, .rate = max_t(u64, hopt->rate.rate, rate64), .ceil = max_t(u64, hopt->ceil.rate, ceil64), + .prio = hopt->prio, .extack = extack, }; err = htb_offload(dev, &offload_opt); @@ -1925,6 +1922,7 @@ static int htb_change_class(struct Qdisc *sch, u32 classid, TC_H_MIN(parent->common.classid), .rate = max_t(u64, hopt->rate.rate, rate64), .ceil = max_t(u64, hopt->ceil.rate, ceil64), + .prio = hopt->prio, .extack = extack, }; err = htb_offload(dev, &offload_opt); @@ -2010,6 +2008,7 @@ static int htb_change_class(struct Qdisc *sch, u32 classid, .classid = cl->common.classid, .rate = max_t(u64, hopt->rate.rate, rate64), .ceil = max_t(u64, hopt->ceil.rate, ceil64), + .prio = hopt->prio, .extack = extack, }; err = htb_offload(dev, &offload_opt);