From: Felix Fietkau <nbd@nbd.name> To: Hillf Danton <hdanton@sina.com> Cc: David Laight <David.Laight@ACULAB.COM>, Andrew Lunn <andrew@lunn.ch>, Rakesh Pillai <pillair@codeaurora.org>, "netdev@vger.kernel.org" <netdev@vger.kernel.org>, "linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "ath10k@lists.infradead.org" <ath10k@lists.infradead.org>, "dianders@chromium.org" <dianders@chromium.org>, Markus Elfring <Markus.Elfring@web.de>, Ding Zhao Nan <oshack@hotmail.com>, "evgreen@chromium.org" <evgreen@chromium.org>, "kuba@kernel.org" <kuba@kernel.org>, "johannes@sipsolutions.net" <johannes@sipsolutions.net>, "davem@davemloft.net" <davem@davemloft.net>, "kvalo@codeaurora.org" <kvalo@codeaurora.org> Subject: Re: [RFC 0/7] Add support to process rx packets in thread Date: Sun, 26 Jul 2020 10:10:15 +0200 [thread overview] Message-ID: <3ce69fb9-f340-d50d-8e77-61c7210a61c6@nbd.name> (raw) In-Reply-To: <20200726012244.15264-1-hdanton@sina.com> On 2020-07-26 03:22, Hillf Danton wrote: >> - add a state bit for threaded NAPI >> - make netif_threaded_napi_add inline >> - run queue_work outside of local_irq_save/restore (it does that >> internally already) >> >> If you don't mind, I'd like to propose this to netdev soon. Can I have >> your Signed-off-by for that? > > Feel free to do that. Is it likely for me to select a Cc? Shall I use Signed-off-by: Hillf Danton <hdanton@sina.com>? What Cc do you want me to add? >> --- >> --- a/include/linux/netdevice.h >> +++ b/include/linux/netdevice.h >> @@ -347,6 +347,7 @@ struct napi_struct { >> struct list_head dev_list; >> struct hlist_node napi_hash_node; >> unsigned int napi_id; >> + struct work_struct work; >> }; >> >> enum { >> @@ -357,6 +358,7 @@ enum { >> NAPI_STATE_HASHED, /* In NAPI hash (busy polling possible) */ >> NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */ >> NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */ >> + NAPI_STATE_THREADED, /* Use threaded NAPI */ >> }; >> >> enum { >> @@ -367,6 +369,7 @@ enum { >> NAPIF_STATE_HASHED = BIT(NAPI_STATE_HASHED), >> NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL), >> NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL), >> + NAPIF_STATE_THREADED = BIT(NAPI_STATE_THREADED), >> }; >> >> enum gro_result { >> @@ -2315,6 +2318,26 @@ static inline void *netdev_priv(const struct net_device *dev) >> void netif_napi_add(struct net_device *dev, struct napi_struct *napi, >> int (*poll)(struct napi_struct *, int), int weight); >> >> +/** >> + * netif_threaded_napi_add - initialize a NAPI context >> + * @dev: network device >> + * @napi: NAPI context >> + * @poll: polling function >> + * @weight: default weight >> + * >> + * This variant of netif_napi_add() should be used from drivers using NAPI >> + * with CPU intensive poll functions. >> + * This will schedule polling from a high priority workqueue that >> + */ >> +static inline void netif_threaded_napi_add(struct net_device *dev, >> + struct napi_struct *napi, >> + int (*poll)(struct napi_struct *, int), >> + int weight) >> +{ >> + set_bit(NAPI_STATE_THREADED, &napi->state); >> + netif_napi_add(dev, napi, poll, weight); >> +} >> + >> /** >> * netif_tx_napi_add - initialize a NAPI context >> * @dev: network device >> --- a/net/core/dev.c >> +++ b/net/core/dev.c >> @@ -158,6 +158,7 @@ static DEFINE_SPINLOCK(offload_lock); >> struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; >> struct list_head ptype_all __read_mostly; /* Taps */ >> static struct list_head offload_base __read_mostly; >> +static struct workqueue_struct *napi_workq; > > Is __read_mostly missing? Yes, thanks. I will add that before sending the patch. - Felix
WARNING: multiple messages have this Message-ID (diff)
From: Felix Fietkau <nbd@nbd.name> To: Hillf Danton <hdanton@sina.com> Cc: Andrew Lunn <andrew@lunn.ch>, Ding Zhao Nan <oshack@hotmail.com>, "netdev@vger.kernel.org" <netdev@vger.kernel.org>, "linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "ath10k@lists.infradead.org" <ath10k@lists.infradead.org>, "dianders@chromium.org" <dianders@chromium.org>, David Laight <David.Laight@ACULAB.COM>, Rakesh Pillai <pillair@codeaurora.org>, "evgreen@chromium.org" <evgreen@chromium.org>, "kuba@kernel.org" <kuba@kernel.org>, Markus Elfring <Markus.Elfring@web.de>, "johannes@sipsolutions.net" <johannes@sipsolutions.net>, "davem@davemloft.net" <davem@davemloft.net>, "kvalo@codeaurora.org" <kvalo@codeaurora.org> Subject: Re: [RFC 0/7] Add support to process rx packets in thread Date: Sun, 26 Jul 2020 10:10:15 +0200 [thread overview] Message-ID: <3ce69fb9-f340-d50d-8e77-61c7210a61c6@nbd.name> (raw) In-Reply-To: <20200726012244.15264-1-hdanton@sina.com> On 2020-07-26 03:22, Hillf Danton wrote: >> - add a state bit for threaded NAPI >> - make netif_threaded_napi_add inline >> - run queue_work outside of local_irq_save/restore (it does that >> internally already) >> >> If you don't mind, I'd like to propose this to netdev soon. Can I have >> your Signed-off-by for that? > > Feel free to do that. Is it likely for me to select a Cc? Shall I use Signed-off-by: Hillf Danton <hdanton@sina.com>? What Cc do you want me to add? >> --- >> --- a/include/linux/netdevice.h >> +++ b/include/linux/netdevice.h >> @@ -347,6 +347,7 @@ struct napi_struct { >> struct list_head dev_list; >> struct hlist_node napi_hash_node; >> unsigned int napi_id; >> + struct work_struct work; >> }; >> >> enum { >> @@ -357,6 +358,7 @@ enum { >> NAPI_STATE_HASHED, /* In NAPI hash (busy polling possible) */ >> NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */ >> NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */ >> + NAPI_STATE_THREADED, /* Use threaded NAPI */ >> }; >> >> enum { >> @@ -367,6 +369,7 @@ enum { >> NAPIF_STATE_HASHED = BIT(NAPI_STATE_HASHED), >> NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL), >> NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL), >> + NAPIF_STATE_THREADED = BIT(NAPI_STATE_THREADED), >> }; >> >> enum gro_result { >> @@ -2315,6 +2318,26 @@ static inline void *netdev_priv(const struct net_device *dev) >> void netif_napi_add(struct net_device *dev, struct napi_struct *napi, >> int (*poll)(struct napi_struct *, int), int weight); >> >> +/** >> + * netif_threaded_napi_add - initialize a NAPI context >> + * @dev: network device >> + * @napi: NAPI context >> + * @poll: polling function >> + * @weight: default weight >> + * >> + * This variant of netif_napi_add() should be used from drivers using NAPI >> + * with CPU intensive poll functions. >> + * This will schedule polling from a high priority workqueue that >> + */ >> +static inline void netif_threaded_napi_add(struct net_device *dev, >> + struct napi_struct *napi, >> + int (*poll)(struct napi_struct *, int), >> + int weight) >> +{ >> + set_bit(NAPI_STATE_THREADED, &napi->state); >> + netif_napi_add(dev, napi, poll, weight); >> +} >> + >> /** >> * netif_tx_napi_add - initialize a NAPI context >> * @dev: network device >> --- a/net/core/dev.c >> +++ b/net/core/dev.c >> @@ -158,6 +158,7 @@ static DEFINE_SPINLOCK(offload_lock); >> struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; >> struct list_head ptype_all __read_mostly; /* Taps */ >> static struct list_head offload_base __read_mostly; >> +static struct workqueue_struct *napi_workq; > > Is __read_mostly missing? Yes, thanks. I will add that before sending the patch. - Felix _______________________________________________ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
next prev parent reply other threads:[~2020-07-26 8:10 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 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 [this message] 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=3ce69fb9-f340-d50d-8e77-61c7210a61c6@nbd.name \ --to=nbd@nbd.name \ --cc=David.Laight@ACULAB.COM \ --cc=Markus.Elfring@web.de \ --cc=andrew@lunn.ch \ --cc=ath10k@lists.infradead.org \ --cc=davem@davemloft.net \ --cc=dianders@chromium.org \ --cc=evgreen@chromium.org \ --cc=hdanton@sina.com \ --cc=johannes@sipsolutions.net \ --cc=kuba@kernel.org \ --cc=kvalo@codeaurora.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-wireless@vger.kernel.org \ --cc=netdev@vger.kernel.org \ --cc=oshack@hotmail.com \ --cc=pillair@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.