All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mor Bar-Gabay <morx.bar.gabay@intel.com>
To: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>,
	"David S . Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Jesse Brandeburg <jesse.brandeburg@intel.com>,
	Tony Nguyen <anthony.l.nguyen@intel.com>,
	Vinicius Costa Gomes <vinicius.gomes@intel.com>,
	Simon Horman <horms@kernel.org>,
	Richard Cochran <richardcochran@gmail.com>,
	Paul Menzel <pmenzel@molgen.mpg.de>,
	Sasha Neftin <sasha.neftin@intel.com>
Cc: netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org,
	linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [Intel-wired-lan] [PATCH iwl-net v2 1/3] igc: Fix qbv_config_change_errors logics
Date: Thu, 1 Aug 2024 10:32:42 +0300	[thread overview]
Message-ID: <00161b3e-44cf-4335-af66-85ffecd673ae@intel.com> (raw)
In-Reply-To: <20240707125318.3425097-2-faizal.abdul.rahim@linux.intel.com>

On 07/07/2024 15:53, Faizal Rahim wrote:
> When user issues these cmds:
> 1. Either a) or b)
>     a) mqprio with hardware offload disabled
>     b) taprio with txtime-assist feature enabled
> 2. etf
> 3. tc qdisc delete
> 4. taprio with base time in the past
> 
> At step 4, qbv_config_change_errors wrongly increased by 1.
> 
> Excerpt from IEEE 802.1Q-2018 8.6.9.3.1:
> "If AdminBaseTime specifies a time in the past, and the current schedule
> is running, then: Increment ConfigChangeError counter"
> 
> qbv_config_change_errors should only increase if base time is in the past
> and no taprio is active. In user perspective, taprio was not active when
> first triggered at step 4. However, i225/6 reuses qbv for etf, so qbv is
> enabled with a dummy schedule at step 2 where it enters
> igc_tsn_enable_offload() and qbv_count got incremented to 1. At step 4, it
> enters igc_tsn_enable_offload() again, qbv_count is incremented to 2.
> Because taprio is running, tc_setup_type is TC_SETUP_QDISC_ETF and
> qbv_count > 1, qbv_config_change_errors value got incremented.
> 
> This issue happens due to reliance on qbv_count field where a non-zero
> value indicates that taprio is running. But qbv_count increases
> regardless if taprio is triggered by user or by other tsn feature. It does
> not align with qbv_config_change_errors expectation where it is only
> concerned with taprio triggered by user.
> 
> Fixing this by relocating the qbv_config_change_errors logic to
> igc_save_qbv_schedule(), eliminating reliance on qbv_count and its
> inaccuracies from i225/6's multiple uses of qbv feature for other TSN
> features.
> 
> The new function created: igc_tsn_is_taprio_activated_by_user() uses
> taprio_offload_enable field to indicate that the current running taprio
> was triggered by user, instead of triggered by non-qbv feature like etf.
> 
> Fixes: ae4fe4698300 ("igc: Add qbv_config_change_errors counter")
> Signed-off-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
> Reviewed-by: Simon Horman <horms@kernel.org>
> Acked-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
> ---
>   drivers/net/ethernet/intel/igc/igc_main.c |  8 ++++++--
>   drivers/net/ethernet/intel/igc/igc_tsn.c  | 16 ++++++++--------
>   drivers/net/ethernet/intel/igc/igc_tsn.h  |  1 +
>   3 files changed, 15 insertions(+), 10 deletions(-)
> 
Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>

WARNING: multiple messages have this Message-ID (diff)
From: Mor Bar-Gabay <morx.bar.gabay@intel.com>
To: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>,
	"David S . Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Jesse Brandeburg <jesse.brandeburg@intel.com>,
	Tony Nguyen <anthony.l.nguyen@intel.com>,
	Vinicius Costa Gomes <vinicius.gomes@intel.com>,
	Simon Horman <horms@kernel.org>,
	Richard Cochran <richardcochran@gmail.com>,
	Paul Menzel <pmenzel@molgen.mpg.de>,
	Sasha Neftin <sasha.neftin@intel.com>
Cc: <netdev@vger.kernel.org>, <intel-wired-lan@lists.osuosl.org>,
	<linux-kernel@vger.kernel.org>, <stable@vger.kernel.org>
Subject: Re: [Intel-wired-lan] [PATCH iwl-net v2 1/3] igc: Fix qbv_config_change_errors logics
Date: Thu, 1 Aug 2024 10:32:42 +0300	[thread overview]
Message-ID: <00161b3e-44cf-4335-af66-85ffecd673ae@intel.com> (raw)
In-Reply-To: <20240707125318.3425097-2-faizal.abdul.rahim@linux.intel.com>

On 07/07/2024 15:53, Faizal Rahim wrote:
> When user issues these cmds:
> 1. Either a) or b)
>     a) mqprio with hardware offload disabled
>     b) taprio with txtime-assist feature enabled
> 2. etf
> 3. tc qdisc delete
> 4. taprio with base time in the past
> 
> At step 4, qbv_config_change_errors wrongly increased by 1.
> 
> Excerpt from IEEE 802.1Q-2018 8.6.9.3.1:
> "If AdminBaseTime specifies a time in the past, and the current schedule
> is running, then: Increment ConfigChangeError counter"
> 
> qbv_config_change_errors should only increase if base time is in the past
> and no taprio is active. In user perspective, taprio was not active when
> first triggered at step 4. However, i225/6 reuses qbv for etf, so qbv is
> enabled with a dummy schedule at step 2 where it enters
> igc_tsn_enable_offload() and qbv_count got incremented to 1. At step 4, it
> enters igc_tsn_enable_offload() again, qbv_count is incremented to 2.
> Because taprio is running, tc_setup_type is TC_SETUP_QDISC_ETF and
> qbv_count > 1, qbv_config_change_errors value got incremented.
> 
> This issue happens due to reliance on qbv_count field where a non-zero
> value indicates that taprio is running. But qbv_count increases
> regardless if taprio is triggered by user or by other tsn feature. It does
> not align with qbv_config_change_errors expectation where it is only
> concerned with taprio triggered by user.
> 
> Fixing this by relocating the qbv_config_change_errors logic to
> igc_save_qbv_schedule(), eliminating reliance on qbv_count and its
> inaccuracies from i225/6's multiple uses of qbv feature for other TSN
> features.
> 
> The new function created: igc_tsn_is_taprio_activated_by_user() uses
> taprio_offload_enable field to indicate that the current running taprio
> was triggered by user, instead of triggered by non-qbv feature like etf.
> 
> Fixes: ae4fe4698300 ("igc: Add qbv_config_change_errors counter")
> Signed-off-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
> Reviewed-by: Simon Horman <horms@kernel.org>
> Acked-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
> ---
>   drivers/net/ethernet/intel/igc/igc_main.c |  8 ++++++--
>   drivers/net/ethernet/intel/igc/igc_tsn.c  | 16 ++++++++--------
>   drivers/net/ethernet/intel/igc/igc_tsn.h  |  1 +
>   3 files changed, 15 insertions(+), 10 deletions(-)
> 
Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>

  parent reply	other threads:[~2024-08-01  7:33 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-07 12:53 [Intel-wired-lan] [PATCH iwl-net v2 0/3] igc bug fixes related to qbv_count usage Faizal Rahim
2024-07-07 12:53 ` Faizal Rahim
2024-07-07 12:53 ` [Intel-wired-lan] [PATCH iwl-net v2 1/3] igc: Fix qbv_config_change_errors logics Faizal Rahim
2024-07-07 12:53   ` Faizal Rahim
2024-07-07 12:57   ` [Intel-wired-lan] " kernel test robot
2024-07-10 23:46   ` Vinicius Costa Gomes
2024-07-10 23:46     ` Vinicius Costa Gomes
2024-08-01  7:32   ` Mor Bar-Gabay [this message]
2024-08-01  7:32     ` [Intel-wired-lan] " Mor Bar-Gabay
2024-07-07 12:53 ` [Intel-wired-lan] [PATCH iwl-net v2 2/3] igc: Fix reset adapter logics when tx mode change Faizal Rahim
2024-07-07 12:53   ` Faizal Rahim
2024-07-10 23:44   ` [Intel-wired-lan] " Vinicius Costa Gomes
2024-07-10 23:44     ` Vinicius Costa Gomes
2024-07-11 11:50     ` [Intel-wired-lan] " Abdul Rahim, Faizal
2024-07-11 11:50       ` Abdul Rahim, Faizal
2024-07-11 18:10       ` [Intel-wired-lan] " Vinicius Costa Gomes
2024-07-11 18:10         ` Vinicius Costa Gomes
2024-07-17  7:02         ` [Intel-wired-lan] " Abdul Rahim, Faizal
2024-07-17  7:02           ` Abdul Rahim, Faizal
2024-07-17 22:03           ` [Intel-wired-lan] " Vinicius Costa Gomes
2024-07-17 22:03             ` Vinicius Costa Gomes
2024-07-22  8:25             ` [Intel-wired-lan] " Rodrigo CADORE CATALDO
2024-07-22  8:25               ` Rodrigo CADORE CATALDO
2024-08-01  7:36   ` Mor Bar-Gabay
2024-08-01  7:36     ` Mor Bar-Gabay
2024-07-07 12:53 ` [Intel-wired-lan] [PATCH iwl-net v2 3/3] igc: Fix qbv tx latency by setting gtxoffset Faizal Rahim
2024-07-07 12:53   ` Faizal Rahim
2024-07-10 23:48   ` [Intel-wired-lan] " Vinicius Costa Gomes
2024-07-10 23:48     ` Vinicius Costa Gomes
2024-08-01  7:37   ` [Intel-wired-lan] " Mor Bar-Gabay
2024-08-01  7:37     ` Mor Bar-Gabay

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=00161b3e-44cf-4335-af66-85ffecd673ae@intel.com \
    --to=morx.bar.gabay@intel.com \
    --cc=anthony.l.nguyen@intel.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=faizal.abdul.rahim@linux.intel.com \
    --cc=horms@kernel.org \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=jesse.brandeburg@intel.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=pmenzel@molgen.mpg.de \
    --cc=richardcochran@gmail.com \
    --cc=sasha.neftin@intel.com \
    --cc=stable@vger.kernel.org \
    --cc=vinicius.gomes@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.