net: calxedaxgmac: fix rx ring handling when OOM
If skb allocation for the rx ring fails repeatedly, we can reach a point were the ring is empty. In this condition, the driver is out of sync with the h/w. While this has always been possible, the removal of the skb recycling seems to have made triggering this problem easier. Signed-off-by: Rob Herring <rob.herring@calxeda.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									a561cf7edf
								
							
						
					
					
						commit
						dc574f1d52
					
				| @ -1141,6 +1141,9 @@ static int xgmac_rx(struct xgmac_priv *priv, int limit) | ||||
| 		struct sk_buff *skb; | ||||
| 		int frame_len; | ||||
| 
 | ||||
| 		if (!dma_ring_cnt(priv->rx_head, priv->rx_tail, DMA_RX_RING_SZ)) | ||||
| 			break; | ||||
| 
 | ||||
| 		entry = priv->rx_tail; | ||||
| 		p = priv->dma_rx + entry; | ||||
| 		if (desc_get_owner(p)) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user