* [PATCH net 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-05 (ice)
@ 2023-07-05 20:13 Tony Nguyen
2023-07-05 20:13 ` [PATCH net 1/2] ice: Fix max_rate check while configuring TX rate limits Tony Nguyen
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Tony Nguyen @ 2023-07-05 20:13 UTC (permalink / raw)
To: davem, kuba, pabeni, edumazet, netdev; +Cc: Tony Nguyen
This series contains updates to ice driver only.
Sridhar fixes incorrect comparison of max Tx rate limit to occur against
each TC value rather than the aggregate. He also resolves an issue with
the wrong VSI being used when setting max Tx rate when TCs are enabled.
The following are changes since commit c451410ca7e3d8eeb31d141fc20c200e21754ba4:
Merge branch 'mptcp-fixes'
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue 100GbE
Sridhar Samudrala (2):
ice: Fix max_rate check while configuring TX rate limits
ice: Fix tx queue rate limit when TCs are configured
drivers/net/ethernet/intel/ice/ice_main.c | 23 ++++++++++++++-------
drivers/net/ethernet/intel/ice/ice_tc_lib.c | 22 ++++++++++----------
drivers/net/ethernet/intel/ice/ice_tc_lib.h | 1 +
3 files changed, 27 insertions(+), 19 deletions(-)
--
2.38.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH net 1/2] ice: Fix max_rate check while configuring TX rate limits
2023-07-05 20:13 [PATCH net 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-05 (ice) Tony Nguyen
@ 2023-07-05 20:13 ` Tony Nguyen
2023-07-06 7:50 ` Leon Romanovsky
2023-07-05 20:13 ` [PATCH net 2/2] ice: Fix tx queue rate limit when TCs are configured Tony Nguyen
2023-07-07 2:20 ` [PATCH net 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-05 (ice) patchwork-bot+netdevbpf
2 siblings, 1 reply; 6+ messages in thread
From: Tony Nguyen @ 2023-07-05 20:13 UTC (permalink / raw)
To: davem, kuba, pabeni, edumazet, netdev
Cc: Sridhar Samudrala, anthony.l.nguyen, Sudheer Mogilappagari,
Bharathi Sreenivas
From: Sridhar Samudrala <sridhar.samudrala@intel.com>
Remove incorrect check in ice_validate_mqprio_opt() that limits
filter configuration when sum of max_rates of all TCs exceeds
the link speed. The max rate of each TC is unrelated to value
used by other TCs and is valid as long as it is less than link
speed.
Fixes: fbc7b27af0f9 ("ice: enable ndo_setup_tc support for mqprio_qdisc")
Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
Signed-off-by: Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>
Tested-by: Bharathi Sreenivas <bharathi.sreenivas@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
drivers/net/ethernet/intel/ice/ice_main.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 93979ab18bc1..64efe4c83a3e 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -7872,10 +7872,10 @@ static int
ice_validate_mqprio_qopt(struct ice_vsi *vsi,
struct tc_mqprio_qopt_offload *mqprio_qopt)
{
- u64 sum_max_rate = 0, sum_min_rate = 0;
int non_power_of_2_qcount = 0;
struct ice_pf *pf = vsi->back;
int max_rss_q_cnt = 0;
+ u64 sum_min_rate = 0;
struct device *dev;
int i, speed;
u8 num_tc;
@@ -7891,6 +7891,7 @@ ice_validate_mqprio_qopt(struct ice_vsi *vsi,
dev = ice_pf_to_dev(pf);
vsi->ch_rss_size = 0;
num_tc = mqprio_qopt->qopt.num_tc;
+ speed = ice_get_link_speed_kbps(vsi);
for (i = 0; num_tc; i++) {
int qcount = mqprio_qopt->qopt.count[i];
@@ -7931,7 +7932,6 @@ ice_validate_mqprio_qopt(struct ice_vsi *vsi,
*/
max_rate = mqprio_qopt->max_rate[i];
max_rate = div_u64(max_rate, ICE_BW_KBPS_DIVISOR);
- sum_max_rate += max_rate;
/* min_rate is minimum guaranteed rate and it can't be zero */
min_rate = mqprio_qopt->min_rate[i];
@@ -7944,6 +7944,12 @@ ice_validate_mqprio_qopt(struct ice_vsi *vsi,
return -EINVAL;
}
+ if (max_rate && max_rate > speed) {
+ dev_err(dev, "TC%d: max_rate(%llu Kbps) > link speed of %u Kbps\n",
+ i, max_rate, speed);
+ return -EINVAL;
+ }
+
iter_div_u64_rem(min_rate, ICE_MIN_BW_LIMIT, &rem);
if (rem) {
dev_err(dev, "TC%d: Min Rate not multiple of %u Kbps",
@@ -7981,12 +7987,6 @@ ice_validate_mqprio_qopt(struct ice_vsi *vsi,
(mqprio_qopt->qopt.offset[i] + mqprio_qopt->qopt.count[i]))
return -EINVAL;
- speed = ice_get_link_speed_kbps(vsi);
- if (sum_max_rate && sum_max_rate > (u64)speed) {
- dev_err(dev, "Invalid max Tx rate(%llu) Kbps > speed(%u) Kbps specified\n",
- sum_max_rate, speed);
- return -EINVAL;
- }
if (sum_min_rate && sum_min_rate > (u64)speed) {
dev_err(dev, "Invalid min Tx rate(%llu) Kbps > speed (%u) Kbps specified\n",
sum_min_rate, speed);
--
2.38.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net 2/2] ice: Fix tx queue rate limit when TCs are configured
2023-07-05 20:13 [PATCH net 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-05 (ice) Tony Nguyen
2023-07-05 20:13 ` [PATCH net 1/2] ice: Fix max_rate check while configuring TX rate limits Tony Nguyen
@ 2023-07-05 20:13 ` Tony Nguyen
2023-07-06 7:50 ` Leon Romanovsky
2023-07-07 2:20 ` [PATCH net 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-05 (ice) patchwork-bot+netdevbpf
2 siblings, 1 reply; 6+ messages in thread
From: Tony Nguyen @ 2023-07-05 20:13 UTC (permalink / raw)
To: davem, kuba, pabeni, edumazet, netdev
Cc: Sridhar Samudrala, anthony.l.nguyen, Sudheer Mogilappagari,
Bharathi Sreenivas
From: Sridhar Samudrala <sridhar.samudrala@intel.com>
Configuring tx_maxrate via sysfs interface
/sys/class/net/eth0/queues/tx-1/tx_maxrate was not working when
TCs are configured because always main VSI was being used. Fix by
using correct VSI in ice_set_tx_maxrate when TCs are configured.
Fixes: 1ddef455f4a8 ("ice: Add NDO callback to set the maximum per-queue bitrate")
Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
Signed-off-by: Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>
Tested-by: Bharathi Sreenivas <bharathi.sreenivas@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
drivers/net/ethernet/intel/ice/ice_main.c | 7 +++++++
drivers/net/ethernet/intel/ice/ice_tc_lib.c | 22 ++++++++++-----------
drivers/net/ethernet/intel/ice/ice_tc_lib.h | 1 +
3 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 64efe4c83a3e..19a5e7f3a075 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -5739,6 +5739,13 @@ ice_set_tx_maxrate(struct net_device *netdev, int queue_index, u32 maxrate)
q_handle = vsi->tx_rings[queue_index]->q_handle;
tc = ice_dcb_get_tc(vsi, queue_index);
+ vsi = ice_locate_vsi_using_queue(vsi, queue_index);
+ if (!vsi) {
+ netdev_err(netdev, "Invalid VSI for given queue %d\n",
+ queue_index);
+ return -EINVAL;
+ }
+
/* Set BW back to default, when user set maxrate to 0 */
if (!maxrate)
status = ice_cfg_q_bw_dflt_lmt(vsi->port_info, vsi->idx, tc,
diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.c b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
index b54052ef6050..4a34ef5f58d3 100644
--- a/drivers/net/ethernet/intel/ice/ice_tc_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
@@ -750,17 +750,16 @@ ice_eswitch_add_tc_fltr(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr)
/**
* ice_locate_vsi_using_queue - locate VSI using queue (forward to queue action)
* @vsi: Pointer to VSI
- * @tc_fltr: Pointer to tc_flower_filter
+ * @queue: Queue index
*
- * Locate the VSI using specified queue. When ADQ is not enabled, always
- * return input VSI, otherwise locate corresponding VSI based on per channel
- * offset and qcount
+ * Locate the VSI using specified "queue". When ADQ is not enabled,
+ * always return input VSI, otherwise locate corresponding
+ * VSI based on per channel "offset" and "qcount"
*/
-static struct ice_vsi *
-ice_locate_vsi_using_queue(struct ice_vsi *vsi,
- struct ice_tc_flower_fltr *tc_fltr)
+struct ice_vsi *
+ice_locate_vsi_using_queue(struct ice_vsi *vsi, int queue)
{
- int num_tc, tc, queue;
+ int num_tc, tc;
/* if ADQ is not active, passed VSI is the candidate VSI */
if (!ice_is_adq_active(vsi->back))
@@ -770,7 +769,6 @@ ice_locate_vsi_using_queue(struct ice_vsi *vsi,
* upon queue number)
*/
num_tc = vsi->mqprio_qopt.qopt.num_tc;
- queue = tc_fltr->action.fwd.q.queue;
for (tc = 0; tc < num_tc; tc++) {
int qcount = vsi->mqprio_qopt.qopt.count[tc];
@@ -812,6 +810,7 @@ ice_tc_forward_action(struct ice_vsi *vsi, struct ice_tc_flower_fltr *tc_fltr)
struct ice_pf *pf = vsi->back;
struct device *dev;
u32 tc_class;
+ int q;
dev = ice_pf_to_dev(pf);
@@ -840,7 +839,8 @@ ice_tc_forward_action(struct ice_vsi *vsi, struct ice_tc_flower_fltr *tc_fltr)
/* Determine destination VSI even though the action is
* FWD_TO_QUEUE, because QUEUE is associated with VSI
*/
- dest_vsi = tc_fltr->dest_vsi;
+ q = tc_fltr->action.fwd.q.queue;
+ dest_vsi = ice_locate_vsi_using_queue(vsi, q);
break;
default:
dev_err(dev,
@@ -1716,7 +1716,7 @@ ice_tc_forward_to_queue(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr,
/* If ADQ is configured, and the queue belongs to ADQ VSI, then prepare
* ADQ switch filter
*/
- ch_vsi = ice_locate_vsi_using_queue(vsi, fltr);
+ ch_vsi = ice_locate_vsi_using_queue(vsi, fltr->action.fwd.q.queue);
if (!ch_vsi)
return -EINVAL;
fltr->dest_vsi = ch_vsi;
diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.h b/drivers/net/ethernet/intel/ice/ice_tc_lib.h
index 8bbc1a62bdb1..65d387163a46 100644
--- a/drivers/net/ethernet/intel/ice/ice_tc_lib.h
+++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.h
@@ -204,6 +204,7 @@ static inline int ice_chnl_dmac_fltr_cnt(struct ice_pf *pf)
return pf->num_dmac_chnl_fltrs;
}
+struct ice_vsi *ice_locate_vsi_using_queue(struct ice_vsi *vsi, int queue);
int
ice_add_cls_flower(struct net_device *netdev, struct ice_vsi *vsi,
struct flow_cls_offload *cls_flower);
--
2.38.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH net 1/2] ice: Fix max_rate check while configuring TX rate limits
2023-07-05 20:13 ` [PATCH net 1/2] ice: Fix max_rate check while configuring TX rate limits Tony Nguyen
@ 2023-07-06 7:50 ` Leon Romanovsky
0 siblings, 0 replies; 6+ messages in thread
From: Leon Romanovsky @ 2023-07-06 7:50 UTC (permalink / raw)
To: Tony Nguyen
Cc: davem, kuba, pabeni, edumazet, netdev, Sridhar Samudrala,
Sudheer Mogilappagari, Bharathi Sreenivas
On Wed, Jul 05, 2023 at 01:13:45PM -0700, Tony Nguyen wrote:
> From: Sridhar Samudrala <sridhar.samudrala@intel.com>
>
> Remove incorrect check in ice_validate_mqprio_opt() that limits
> filter configuration when sum of max_rates of all TCs exceeds
> the link speed. The max rate of each TC is unrelated to value
> used by other TCs and is valid as long as it is less than link
> speed.
>
> Fixes: fbc7b27af0f9 ("ice: enable ndo_setup_tc support for mqprio_qdisc")
> Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
> Signed-off-by: Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>
> Tested-by: Bharathi Sreenivas <bharathi.sreenivas@intel.com>
> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> ---
> drivers/net/ethernet/intel/ice/ice_main.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
Thanks,
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net 2/2] ice: Fix tx queue rate limit when TCs are configured
2023-07-05 20:13 ` [PATCH net 2/2] ice: Fix tx queue rate limit when TCs are configured Tony Nguyen
@ 2023-07-06 7:50 ` Leon Romanovsky
0 siblings, 0 replies; 6+ messages in thread
From: Leon Romanovsky @ 2023-07-06 7:50 UTC (permalink / raw)
To: Tony Nguyen
Cc: davem, kuba, pabeni, edumazet, netdev, Sridhar Samudrala,
Sudheer Mogilappagari, Bharathi Sreenivas
On Wed, Jul 05, 2023 at 01:13:46PM -0700, Tony Nguyen wrote:
> From: Sridhar Samudrala <sridhar.samudrala@intel.com>
>
> Configuring tx_maxrate via sysfs interface
> /sys/class/net/eth0/queues/tx-1/tx_maxrate was not working when
> TCs are configured because always main VSI was being used. Fix by
> using correct VSI in ice_set_tx_maxrate when TCs are configured.
>
> Fixes: 1ddef455f4a8 ("ice: Add NDO callback to set the maximum per-queue bitrate")
> Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
> Signed-off-by: Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>
> Tested-by: Bharathi Sreenivas <bharathi.sreenivas@intel.com>
> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> ---
> drivers/net/ethernet/intel/ice/ice_main.c | 7 +++++++
> drivers/net/ethernet/intel/ice/ice_tc_lib.c | 22 ++++++++++-----------
> drivers/net/ethernet/intel/ice/ice_tc_lib.h | 1 +
> 3 files changed, 19 insertions(+), 11 deletions(-)
>
Thanks,
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-05 (ice)
2023-07-05 20:13 [PATCH net 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-05 (ice) Tony Nguyen
2023-07-05 20:13 ` [PATCH net 1/2] ice: Fix max_rate check while configuring TX rate limits Tony Nguyen
2023-07-05 20:13 ` [PATCH net 2/2] ice: Fix tx queue rate limit when TCs are configured Tony Nguyen
@ 2023-07-07 2:20 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-07-07 2:20 UTC (permalink / raw)
To: Tony Nguyen; +Cc: davem, kuba, pabeni, edumazet, netdev
Hello:
This series was applied to netdev/net.git (main)
by Tony Nguyen <anthony.l.nguyen@intel.com>:
On Wed, 5 Jul 2023 13:13:44 -0700 you wrote:
> This series contains updates to ice driver only.
>
> Sridhar fixes incorrect comparison of max Tx rate limit to occur against
> each TC value rather than the aggregate. He also resolves an issue with
> the wrong VSI being used when setting max Tx rate when TCs are enabled.
>
> The following are changes since commit c451410ca7e3d8eeb31d141fc20c200e21754ba4:
> Merge branch 'mptcp-fixes'
> and are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue 100GbE
>
> [...]
Here is the summary with links:
- [net,1/2] ice: Fix max_rate check while configuring TX rate limits
https://git.kernel.org/netdev/net/c/5f16da6ee6ac
- [net,2/2] ice: Fix tx queue rate limit when TCs are configured
https://git.kernel.org/netdev/net/c/479cdfe388a0
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-07-07 2:20 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-05 20:13 [PATCH net 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-05 (ice) Tony Nguyen
2023-07-05 20:13 ` [PATCH net 1/2] ice: Fix max_rate check while configuring TX rate limits Tony Nguyen
2023-07-06 7:50 ` Leon Romanovsky
2023-07-05 20:13 ` [PATCH net 2/2] ice: Fix tx queue rate limit when TCs are configured Tony Nguyen
2023-07-06 7:50 ` Leon Romanovsky
2023-07-07 2:20 ` [PATCH net 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-05 (ice) patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).