Messages in this thread | ![/](/images/icornerl.gif) | | From | Eric Dumazet <> | Date | Tue, 21 Mar 2023 04:08:27 -0700 | Subject | Re: [PATCH RFC] net/sched: use real_num_tx_queues in dev_watchdog() |
| |
On Tue, Mar 21, 2023 at 3:05 AM Praveen Kannoju <praveen.kannoju@oracle.com> wrote: > > Ping. >
I do not think dev_watchdog() needs to be efficient ?
In any case, reading dev->real_num_tx_queues from a timer handler could be racy vs RTNL.
While reading dev->num_tx_queues is not racy.
I think you should describe what problem you are trying to solve.
> > -----Original Message----- > > From: Praveen Kumar Kannoju <praveen.kannoju@oracle.com> > > Sent: 16 March 2023 12:04 AM > > To: jhs@mojatatu.com; xiyou.wangcong@gmail.com; jiri@resnulli.us; davem@davemloft.net; edumazet@google.com; > > kuba@kernel.org; pabeni@redhat.com; netdev@vger.kernel.org; linux-kernel@vger.kernel.org > > Cc: Rajesh Sivaramasubramaniom <rajesh.sivaramasubramaniom@oracle.com>; Rama Nichanamatlu > > <rama.nichanamatlu@oracle.com>; Manjunath Patil <manjunath.b.patil@oracle.com>; Praveen Kannoju > > <praveen.kannoju@oracle.com> > > Subject: [PATCH RFC] net/sched: use real_num_tx_queues in dev_watchdog() > > > > Currently dev_watchdog() loops through num_tx_queues[Number of TX queues allocated at alloc_netdev_mq() time] instead of > > real_num_tx_queues [Number of TX queues currently active in device] to detect transmit queue time out. Make this efficient by > > using real_num_tx_queues. > > > > Signed-off-by: Praveen Kumar Kannoju <praveen.kannoju@oracle.com> > > --- > > PS: Please let me know if I am missing something obvious here. > > net/sched/sch_generic.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index a9aadc4e6858..e7d41a25f0e8 100644 > > --- a/net/sched/sch_generic.c > > +++ b/net/sched/sch_generic.c > > @@ -506,7 +506,7 @@ static void dev_watchdog(struct timer_list *t) > > unsigned int i; > > unsigned long trans_start; > > > > - for (i = 0; i < dev->num_tx_queues; i++) { > > + for (i = 0; i < dev->real_num_tx_queues; i++) { > > struct netdev_queue *txq; > > > > txq = netdev_get_tx_queue(dev, i); > > -- > > 2.31.1 >
| ![\](/images/icornerr.gif) |