From: Leon Romanovsky <leon@kernel.org>
To: "Zulkifli, Muhammad Husaini" <muhammad.husaini.zulkifli@intel.com>
Cc: "Nguyen, Anthony L" <anthony.l.nguyen@intel.com>,
"davem@davemloft.net" <davem@davemloft.net>,
"kuba@kernel.org" <kuba@kernel.org>,
"pabeni@redhat.com" <pabeni@redhat.com>,
"edumazet@google.com" <edumazet@google.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"Neftin, Sasha" <sasha.neftin@intel.com>,
"richardcochran@gmail.com" <richardcochran@gmail.com>,
Tan Tee Min <tee.min.tan@linux.intel.com>,
"Choong, Chwee Lin" <chwee.lin.choong@intel.com>,
Naama Meir <naamax.meir@linux.intel.com>
Subject: Re: [PATCH net 3/6] igc: Fix TX Hang issue when QBV Gate is closed
Date: Thu, 6 Jul 2023 19:40:39 +0300 [thread overview]
Message-ID: <20230706164039.GV6455@unreal> (raw)
In-Reply-To: <SJ1PR11MB618043DE126BF5649BA1ED0DB82CA@SJ1PR11MB6180.namprd11.prod.outlook.com>
On Thu, Jul 06, 2023 at 12:43:33PM +0000, Zulkifli, Muhammad Husaini wrote:
> Dear Leon,
>
> Thanks for reviewing 😊
> Replied inline.
>
> > -----Original Message-----
> > From: Leon Romanovsky <leon@kernel.org>
> > Sent: Thursday, 6 July, 2023 3:56 PM
> > To: Nguyen, Anthony L <anthony.l.nguyen@intel.com>
> > Cc: davem@davemloft.net; kuba@kernel.org; pabeni@redhat.com;
> > edumazet@google.com; netdev@vger.kernel.org; Zulkifli, Muhammad
> > Husaini <muhammad.husaini.zulkifli@intel.com>; Neftin, Sasha
> > <sasha.neftin@intel.com>; richardcochran@gmail.com; Tan Tee Min
> > <tee.min.tan@linux.intel.com>; Choong, Chwee Lin
> > <chwee.lin.choong@intel.com>; Naama Meir
> > <naamax.meir@linux.intel.com>
> > Subject: Re: [PATCH net 3/6] igc: Fix TX Hang issue when QBV Gate is closed
> >
> > On Wed, Jul 05, 2023 at 01:19:02PM -0700, Tony Nguyen wrote:
> > > From: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
> > >
> > > If a user schedules a Gate Control List (GCL) to close one of the QBV
> > > gates while also transmitting a packet to that closed gate, TX Hang
> > > will be happen. HW would not drop any packet when the gate is closed
> > > and keep queuing up in HW TX FIFO until the gate is re-opened.
> > > This patch implements the solution to drop the packet for the closed
> > > gate.
> > >
> > > This patch will also reset the adapter to perform SW initialization
> > > for each 1st Gate Control List (GCL) to avoid hang.
> > > This is due to the HW design, where changing to TSN transmit mode
> > > requires SW initialization. Intel Discrete I225/6 transmit mode cannot
> > > be changed when in dynamic mode according to Software User Manual
> > > Section 7.5.2.1. Subsequent Gate Control List (GCL) operations will
> > > proceed without a reset, as they already are in TSN Mode.
> > >
> > > Step to reproduce:
> > >
> > > DUT:
> > > 1) Configure GCL List with certain gate close.
> > >
> > > BASE=$(date +%s%N)
> > > tc qdisc replace dev $IFACE parent root handle 100 taprio \
> > > num_tc 4 \
> > > map 0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 \
> > > queues 1@0 1@1 1@2 1@3 \
> > > base-time $BASE \
> > > sched-entry S 0x8 500000 \
> > > sched-entry S 0x4 500000 \
> > > flags 0x2
> > >
> > > 2) Transmit the packet to closed gate. You may use udp_tai application
> > > to transmit UDP packet to any of the closed gate.
> > >
> > > ./udp_tai -i <interface> -P 100000 -p 90 -c 1 -t <0/1> -u 30004
> > >
> > > Fixes: ec50a9d437f0 ("igc: Add support for taprio offloading")
> > > Co-developed-by: Tan Tee Min <tee.min.tan@linux.intel.com>
> > > Signed-off-by: Tan Tee Min <tee.min.tan@linux.intel.com>
> > > Tested-by: Chwee Lin Choong <chwee.lin.choong@intel.com>
> > > Signed-off-by: Muhammad Husaini Zulkifli
> > > <muhammad.husaini.zulkifli@intel.com>
> > > Tested-by: Naama Meir <naamax.meir@linux.intel.com>
> > > Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> > > ---
> > > drivers/net/ethernet/intel/igc/igc.h | 6 +++
> > > drivers/net/ethernet/intel/igc/igc_main.c | 58
> > > +++++++++++++++++++++-- drivers/net/ethernet/intel/igc/igc_tsn.c |
> > > 41 ++++++++++------
> > > 3 files changed, 87 insertions(+), 18 deletions(-)
<...>
> > > +static enum hrtimer_restart igc_qbv_scheduling_timer(struct hrtimer
> > > +*timer) {
> > > + struct igc_adapter *adapter = container_of(timer, struct igc_adapter,
> > > + hrtimer);
> > > + unsigned int i;
> > > +
> > > + adapter->qbv_transition = true;
> > > + for (i = 0; i < adapter->num_tx_queues; i++) {
> > > + struct igc_ring *tx_ring = adapter->tx_ring[i];
> > > +
> > > + if (tx_ring->admin_gate_closed) {
> >
> > Doesn't asynchronic access to shared variable through hrtimer require some
> > sort of locking?
>
> Yeah I agreed with you. However, IMHO, it should be saved without the lock.
> These variables, admin_gate_closed and oper_gate_closed, were set during the transition
> and setup/delete of the TC only. The qbv_transition flag has been used to protect the
> operation when it is in qbv transition.
I have no idea what last sentence means, but igc_qbv_scheduling_timer()
and tx_ring are global function/variables and TC setup/delete can run in
parallel to them.
Thanks
next prev parent reply other threads:[~2023-07-06 16:40 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-05 20:18 [PATCH net 0/6][pull request] Intel Wired LAN Driver Updates 2023-07-05 (igc) Tony Nguyen
2023-07-05 20:19 ` [PATCH net 1/6] igc: Add condition for qbv_config_change_errors counter Tony Nguyen
2023-07-05 20:19 ` [PATCH net 2/6] igc: Remove delay during TX ring configuration Tony Nguyen
2023-07-05 20:19 ` [PATCH net 3/6] igc: Fix TX Hang issue when QBV Gate is closed Tony Nguyen
2023-07-06 7:56 ` Leon Romanovsky
2023-07-06 12:43 ` Zulkifli, Muhammad Husaini
2023-07-06 16:40 ` Leon Romanovsky [this message]
2023-07-07 7:39 ` Zulkifli, Muhammad Husaini
2023-07-05 20:19 ` [PATCH net 4/6] igc: set TP bit in 'supported' and 'advertising' fields of ethtool_link_ksettings Tony Nguyen
2023-07-05 20:19 ` [PATCH net 5/6] igc: Include the length/type field and VLAN tag in queueMaxSDU Tony Nguyen
2023-07-05 20:19 ` [PATCH net 6/6] igc: Handle PPS start time programming for past time values Tony Nguyen
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=20230706164039.GV6455@unreal \
--to=leon@kernel.org \
--cc=anthony.l.nguyen@intel.com \
--cc=chwee.lin.choong@intel.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=muhammad.husaini.zulkifli@intel.com \
--cc=naamax.meir@linux.intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=richardcochran@gmail.com \
--cc=sasha.neftin@intel.com \
--cc=tee.min.tan@linux.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.