From: "Rakesh Pillai" <pillair@codeaurora.org> To: "'Rajkumar Manoharan'" <rmanohar@codeaurora.org> Cc: <ath10k@lists.infradead.org>, <linux-wireless@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <kvalo@codeaurora.org>, <johannes@sipsolutions.net>, <davem@davemloft.net>, <kuba@kernel.org>, <netdev@vger.kernel.org>, <dianders@chromium.org>, <evgreen@chromium.org>, <linux-wireless-owner@vger.kernel.org> Subject: RE: [RFC 2/7] ath10k: Add support to process rx packet in thread Date: Thu, 23 Jul 2020 23:55:06 +0530 [thread overview] Message-ID: <003001d6611e$9afa0cc0$d0ee2640$@codeaurora.org> (raw) In-Reply-To: <13573549c277b34d4c87c471ff1a7060@codeaurora.org> > -----Original Message----- > From: Rajkumar Manoharan <rmanohar@codeaurora.org> > Sent: Wednesday, July 22, 2020 3:23 AM > To: Rakesh Pillai <pillair@codeaurora.org> > Cc: ath10k@lists.infradead.org; linux-wireless@vger.kernel.org; linux- > kernel@vger.kernel.org; kvalo@codeaurora.org; johannes@sipsolutions.net; > davem@davemloft.net; kuba@kernel.org; netdev@vger.kernel.org; > dianders@chromium.org; evgreen@chromium.org; linux-wireless- > owner@vger.kernel.org > Subject: Re: [RFC 2/7] ath10k: Add support to process rx packet in thread > > On 2020-07-21 10:14, Rakesh Pillai wrote: > > NAPI instance gets scheduled on a CPU core on which > > the IRQ was triggered. The processing of rx packets > > can be CPU intensive and since NAPI cannot be moved > > to a different CPU core, to get better performance, > > its better to move the gist of rx packet processing > > in a high priority thread. > > > > Add the init/deinit part for a thread to process the > > receive packets. > > > IMHO this defeat the whole purpose of NAPI. Originally in ath10k > irq processing happened in tasklet (high priority) context which in > turn push more data to net core even though net is unable to process > driver data as both happen in different context (fast producer - slow > consumer) > issue. Why can't CPU governor schedule the interrupts in less loaded CPU > core? > Otherwise you can play with different RPS and affinity settings to meet > your > requirement. > > IMO introducing high priority tasklets/threads is not viable solution. Hi Rajkumar, In linux, the IRQs are directed to the first core which is booted. I see that all the IRQs are getting routed to CORE0 even if its heavily loaded. IRQ and NAPI are not under the scheduler's control, since it cannot be moved. NAPI is scheduled only on the same core as IRQ. But a thread can be moved around by the scheduler based on the CPU load. This is the reason I went ahead with using thread. Affinity settings are static, and cannot be done runtime without any downstream userspace entity. > > -Rajkumar
WARNING: multiple messages have this Message-ID (diff)
From: "Rakesh Pillai" <pillair@codeaurora.org> To: 'Rajkumar Manoharan' <rmanohar@codeaurora.org> Cc: linux-wireless-owner@vger.kernel.org, netdev@vger.kernel.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, ath10k@lists.infradead.org, dianders@chromium.org, evgreen@chromium.org, kuba@kernel.org, johannes@sipsolutions.net, davem@davemloft.net, kvalo@codeaurora.org Subject: RE: [RFC 2/7] ath10k: Add support to process rx packet in thread Date: Thu, 23 Jul 2020 23:55:06 +0530 [thread overview] Message-ID: <003001d6611e$9afa0cc0$d0ee2640$@codeaurora.org> (raw) In-Reply-To: <13573549c277b34d4c87c471ff1a7060@codeaurora.org> > -----Original Message----- > From: Rajkumar Manoharan <rmanohar@codeaurora.org> > Sent: Wednesday, July 22, 2020 3:23 AM > To: Rakesh Pillai <pillair@codeaurora.org> > Cc: ath10k@lists.infradead.org; linux-wireless@vger.kernel.org; linux- > kernel@vger.kernel.org; kvalo@codeaurora.org; johannes@sipsolutions.net; > davem@davemloft.net; kuba@kernel.org; netdev@vger.kernel.org; > dianders@chromium.org; evgreen@chromium.org; linux-wireless- > owner@vger.kernel.org > Subject: Re: [RFC 2/7] ath10k: Add support to process rx packet in thread > > On 2020-07-21 10:14, Rakesh Pillai wrote: > > NAPI instance gets scheduled on a CPU core on which > > the IRQ was triggered. The processing of rx packets > > can be CPU intensive and since NAPI cannot be moved > > to a different CPU core, to get better performance, > > its better to move the gist of rx packet processing > > in a high priority thread. > > > > Add the init/deinit part for a thread to process the > > receive packets. > > > IMHO this defeat the whole purpose of NAPI. Originally in ath10k > irq processing happened in tasklet (high priority) context which in > turn push more data to net core even though net is unable to process > driver data as both happen in different context (fast producer - slow > consumer) > issue. Why can't CPU governor schedule the interrupts in less loaded CPU > core? > Otherwise you can play with different RPS and affinity settings to meet > your > requirement. > > IMO introducing high priority tasklets/threads is not viable solution. Hi Rajkumar, In linux, the IRQs are directed to the first core which is booted. I see that all the IRQs are getting routed to CORE0 even if its heavily loaded. IRQ and NAPI are not under the scheduler's control, since it cannot be moved. NAPI is scheduled only on the same core as IRQ. But a thread can be moved around by the scheduler based on the CPU load. This is the reason I went ahead with using thread. Affinity settings are static, and cannot be done runtime without any downstream userspace entity. > > -Rajkumar _______________________________________________ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
next prev parent reply other threads:[~2020-07-23 18:25 UTC|newest] Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-07-21 17:14 [RFC 0/7] Add support to process rx packets in thread Rakesh Pillai 2020-07-21 17:14 ` Rakesh Pillai 2020-07-21 17:14 ` [RFC 1/7] mac80211: Add check for napi handle before WARN_ON Rakesh Pillai 2020-07-21 17:14 ` Rakesh Pillai 2020-07-22 12:56 ` Johannes Berg 2020-07-22 12:56 ` Johannes Berg 2020-07-23 18:26 ` Rakesh Pillai 2020-07-23 18:26 ` Rakesh Pillai 2020-07-23 20:06 ` Johannes Berg 2020-07-23 20:06 ` Johannes Berg 2020-07-24 6:21 ` Rakesh Pillai 2020-07-24 6:21 ` Rakesh Pillai 2020-07-26 16:19 ` Rakesh Pillai 2020-07-26 16:19 ` Rakesh Pillai 2020-07-30 12:40 ` Johannes Berg 2020-07-30 12:40 ` Johannes Berg 2020-07-21 17:14 ` [RFC 2/7] ath10k: Add support to process rx packet in thread Rakesh Pillai 2020-07-21 17:14 ` Rakesh Pillai 2020-07-21 21:53 ` Rajkumar Manoharan 2020-07-21 21:53 ` Rajkumar Manoharan 2020-07-22 12:27 ` Felix Fietkau 2020-07-22 12:27 ` Felix Fietkau 2020-07-22 12:55 ` Johannes Berg 2020-07-22 12:55 ` Johannes Berg 2020-07-22 13:00 ` Felix Fietkau 2020-07-22 13:00 ` Felix Fietkau 2020-07-23 6:09 ` Rajkumar Manoharan 2020-07-23 6:09 ` Rajkumar Manoharan 2021-03-22 23:57 ` Ben Greear 2021-03-22 23:57 ` Ben Greear 2021-03-23 1:20 ` Brian Norris 2021-03-23 1:20 ` Brian Norris 2021-03-23 3:01 ` Ben Greear 2021-03-23 3:01 ` Ben Greear 2021-03-23 7:45 ` Felix Fietkau 2021-03-23 7:45 ` Felix Fietkau 2021-03-25 9:45 ` Rakesh Pillai 2021-03-25 9:45 ` Rakesh Pillai 2021-03-25 10:33 ` Felix Fietkau 2021-03-25 10:33 ` Felix Fietkau 2020-07-23 18:25 ` Rakesh Pillai [this message] 2020-07-23 18:25 ` Rakesh Pillai 2020-07-24 23:11 ` Jacob Keller 2020-07-24 23:11 ` Jacob Keller 2020-07-21 17:14 ` [RFC 3/7] ath10k: Add module param to enable rx thread Rakesh Pillai 2020-07-21 17:14 ` Rakesh Pillai 2020-07-21 17:14 ` [RFC 4/7] ath10k: Do not exhaust budget on process tx completion Rakesh Pillai 2020-07-21 17:14 ` Rakesh Pillai 2020-07-21 17:14 ` [RFC 5/7] ath10k: Handle the rx packet processing in thread Rakesh Pillai 2020-07-21 17:14 ` Rakesh Pillai 2020-07-21 17:14 ` [RFC 6/7] ath10k: Add deliver to stack from thread context Rakesh Pillai 2020-07-21 17:14 ` Rakesh Pillai 2020-07-21 17:14 ` [RFC 7/7] ath10k: Handle rx thread suspend and resume Rakesh Pillai 2020-07-21 17:14 ` Rakesh Pillai 2020-07-23 23:06 ` Sebastian Gottschall 2020-07-23 23:06 ` Sebastian Gottschall 2020-07-24 6:19 ` Rakesh Pillai 2020-07-24 6:19 ` Rakesh Pillai 2020-07-21 17:25 ` [RFC 0/7] Add support to process rx packets in thread Andrew Lunn 2020-07-21 17:25 ` Andrew Lunn 2020-07-21 18:05 ` Florian Fainelli 2020-07-21 18:05 ` Florian Fainelli 2020-07-23 18:21 ` Rakesh Pillai 2020-07-23 18:21 ` Rakesh Pillai 2020-07-23 19:02 ` Florian Fainelli 2020-07-23 19:02 ` Florian Fainelli 2020-07-24 6:20 ` Rakesh Pillai 2020-07-24 6:20 ` Rakesh Pillai 2020-07-24 22:28 ` Florian Fainelli 2020-07-24 22:28 ` Florian Fainelli 2020-07-22 9:12 ` David Laight 2020-07-22 9:12 ` David Laight 2020-07-25 8:16 ` Hillf Danton 2020-07-25 10:38 ` Sebastian Gottschall 2020-07-25 10:38 ` Sebastian Gottschall 2020-07-25 12:25 ` Hillf Danton 2020-07-25 14:08 ` Sebastian Gottschall 2020-07-25 14:08 ` Sebastian Gottschall 2020-07-25 14:57 ` Hillf Danton 2020-07-25 15:41 ` Sebastian Gottschall 2020-07-25 15:41 ` Sebastian Gottschall 2020-07-26 11:16 ` David Laight 2020-07-26 11:16 ` David Laight 2020-07-28 16:59 ` Rakesh Pillai 2020-07-28 16:59 ` Rakesh Pillai 2020-07-29 1:34 ` Hillf Danton 2020-07-25 17:57 ` Felix Fietkau 2020-07-25 17:57 ` Felix Fietkau 2020-07-26 1:22 ` Hillf Danton 2020-07-26 8:10 ` Felix Fietkau 2020-07-26 8:10 ` Felix Fietkau 2020-07-26 8:32 ` Hillf Danton 2020-07-26 8:59 ` Felix Fietkau 2020-07-26 8:59 ` Felix Fietkau 2020-07-22 16:20 ` Jakub Kicinski 2020-07-22 16:20 ` Jakub Kicinski
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='003001d6611e$9afa0cc0$d0ee2640$@codeaurora.org' \ --to=pillair@codeaurora.org \ --cc=ath10k@lists.infradead.org \ --cc=davem@davemloft.net \ --cc=dianders@chromium.org \ --cc=evgreen@chromium.org \ --cc=johannes@sipsolutions.net \ --cc=kuba@kernel.org \ --cc=kvalo@codeaurora.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-wireless-owner@vger.kernel.org \ --cc=linux-wireless@vger.kernel.org \ --cc=netdev@vger.kernel.org \ --cc=rmanohar@codeaurora.org \ /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: linkBe 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.