On Mon, 16 Dec 2019 09:18:50 +0000, Jose Abreu wrote:
quoted
quoted
@@ -3759,24 +3777,18 @@ static int stmmac_napi_poll_tx(struct napi_struct *napi, int budget)
struct stmmac_channel *ch =
container_of(napi, struct stmmac_channel, tx_napi);
struct stmmac_priv *priv = ch->priv_data;
- struct stmmac_tx_queue *tx_q;
u32 chan = ch->index;
int work_done;
priv->xstats.napi_poll++;
- work_done = stmmac_tx_clean(priv, DMA_TX_SIZE, chan);
- work_done = min(work_done, budget);
-
- if (work_done < budget)
- napi_complete_done(napi, work_done);
+ work_done = stmmac_tx_clean(priv, budget, chan);
+ if (work_done < budget && napi_complete_done(napi, work_done)) {
Not really related to this patch, but this looks a little suspicious.
I think the TX completions should all be processed regardless of the
budget. The budget is for RX.
Well but this is a TX NAPI ... Shouldn't it be limited to prevent CPU
starvation ?
It is a bit confusing, but at least netpoll expects the TX completions
to be processed with zero budget. Check out poll_one_napi().