Messages in this thread Patch in this message | | | From | <> | Subject | Re: [PATCH] net: macb: Increment rx bd head after allocating skb and buffer | Date | Tue, 10 May 2022 10:11:13 +0000 |
| |
On 09.05.2022 15:19, Harini Katakam wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > In gem_rx_refill rx_prepared_head is incremented at the beginning of > the while loop preparing the skb and data buffers. If the skb or data > buffer allocation fails, this BD will be unusable BDs until the head > loops back to the same BD (and obviously buffer allocation succeeds). > In the unlikely event that there's a string of allocation failures, > there will be an equal number of unusable BDs and an inconsistent RX > BD chain. Hence increment the head at the end of the while loop to be > clean. > > Signed-off-by: Harini Katakam <harini.katakam@xilinx.com> > Signed-off-by: Michal Simek <michal.simek@xilinx.com> > Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
Reviewed-by: Claudiu Beznea <claudiu.beznea@microchip.com>
> --- > drivers/net/ethernet/cadence/macb_main.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c > index 0b03305ad6a0..9c7d590c0188 100644 > --- a/drivers/net/ethernet/cadence/macb_main.c > +++ b/drivers/net/ethernet/cadence/macb_main.c > @@ -1215,7 +1215,6 @@ static void gem_rx_refill(struct macb_queue *queue) > /* Make hw descriptor updates visible to CPU */ > rmb(); > > - queue->rx_prepared_head++; > desc = macb_rx_desc(queue, entry); > > if (!queue->rx_skbuff[entry]) { > @@ -1254,6 +1253,7 @@ static void gem_rx_refill(struct macb_queue *queue) > dma_wmb(); > desc->addr &= ~MACB_BIT(RX_USED); > } > + queue->rx_prepared_head++; > } > > /* Make descriptor updates visible to hardware */ > -- > 2.17.1 >
| |