Skip to content

Commit b6cb454

Browse files
baruchsiachkuba-moo
authored andcommitted
net: stmmac: avoid rx queue overrun
dma_rx_size can be set as low as 64. Rx budget might be higher than that. Make sure to not overrun allocated rx buffers when budget is larger. Leave one descriptor unused to avoid wrap around of 'dirty_rx' vs 'cur_rx'. Signed-off-by: Baruch Siach <baruch@tkos.co.il> Reviewed-by: Serge Semin <fancer.lancer@gmail.com> Fixes: 47dd7a5 ("net: add support for STMicroelectronics Ethernet controllers.") Link: https://lore.kernel.org/r/d95413e44c97d4692e72cec13a75f894abeb6998.1699897370.git.baruch@tkos.co.il Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent fa02de9 commit b6cb454

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5293,6 +5293,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue)
52935293

52945294
dma_dir = page_pool_get_dma_dir(rx_q->page_pool);
52955295
buf_sz = DIV_ROUND_UP(priv->dma_conf.dma_buf_sz, PAGE_SIZE) * PAGE_SIZE;
5296+
limit = min(priv->dma_conf.dma_rx_size - 1, (unsigned int)limit);
52965297

52975298
if (netif_msg_rx_status(priv)) {
52985299
void *rx_head;

0 commit comments

Comments
 (0)