Messages in this thread |  | | Date | Mon, 25 Nov 2019 16:39:55 +0300 | | From | Alexander Lobakin <> | | Subject | Re: [PATCH v2 net-next] net: core: use listified Rx for GRO_NORMAL in napi_gro_receive() |
| |
Edward Cree wrote 25.11.2019 16:21: > On 25/11/2019 12:02, Alexander Lobakin wrote: >> I'm not very familiar with iwlwifi, but as a work around manual >> napi_gro_flush() you can also manually flush napi->rx_list to >> prevent packets from stalling: >> >> diff -Naur a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c >> b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c >> --- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c 2019-11-25 >> 14:55:03.610355230 +0300 >> +++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c 2019-11-25 >> 14:57:29.399556868 +0300 >> @@ -1526,8 +1526,16 @@ >> if (unlikely(emergency && count)) >> iwl_pcie_rxq_alloc_rbs(trans, GFP_ATOMIC, rxq); >> >> - if (rxq->napi.poll) >> + if (rxq->napi.poll) { >> + if (rxq->napi.rx_count) { >> + netif_receive_skb_list(&rxq->napi.rx_list); >> + >> + INIT_LIST_HEAD(&rxq->napi.rx_list); >> + rxq->napi.rx_count = 0; >> + } >> + >> napi_gro_flush(&rxq->napi, false); >> + } >> >> iwl_pcie_rxq_restock(trans, rxq); >> } > ... or we could export gro_normal_list(), instead of open-coding it > in the driver?
I thought about this too, but don't like it. This patch is proposed as a *very* temporary solution until iwlwifi will get more straightforward logic. I wish we could make napi_gro_flush() static in the future and keep gro_normal_list() private to:
- prevent them from using in any new drivers; - give more opportunity to CC to optimize the core code.
> > -Ed
Regards, ᚷ ᛖ ᚢ ᚦ ᚠ ᚱ
|  |