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? -Ed