net: dwc_eth_qos: Flush the RX descriptors on init
Currently the code only flushes the first RX descriptor, not every entry in the RX descriptor ring. Fix this, to make sure the DMA engine can pick the RX descriptors correctly. Reviewed-by: Patrick Delaunay <patrick.delaunay@st.com> Signed-off-by: Marek Vasut <marex@denx.de> Cc: Joe Hershberger <joe.hershberger@ni.com> Cc: Patrice Chotard <patrice.chotard@st.com> Cc: Patrick Delaunay <patrick.delaunay@st.com> Cc: Ramon Fried <rfried.dev@gmail.com> Cc: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
		
							parent
							
								
									83858d8795
								
							
						
					
					
						commit
						dd90c2e1ea
					
				| 
						 | 
					@ -1289,8 +1289,8 @@ static int eqos_start(struct udevice *dev)
 | 
				
			||||||
		rx_desc->des0 = (u32)(ulong)(eqos->rx_dma_buf +
 | 
							rx_desc->des0 = (u32)(ulong)(eqos->rx_dma_buf +
 | 
				
			||||||
					     (i * EQOS_MAX_PACKET_SIZE));
 | 
										     (i * EQOS_MAX_PACKET_SIZE));
 | 
				
			||||||
		rx_desc->des3 = EQOS_DESC3_OWN | EQOS_DESC3_BUF1V;
 | 
							rx_desc->des3 = EQOS_DESC3_OWN | EQOS_DESC3_BUF1V;
 | 
				
			||||||
 | 
							eqos->config->ops->eqos_flush_desc(rx_desc);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	eqos->config->ops->eqos_flush_desc(eqos->descs);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	writel(0, &eqos->dma_regs->ch0_txdesc_list_haddress);
 | 
						writel(0, &eqos->dma_regs->ch0_txdesc_list_haddress);
 | 
				
			||||||
	writel((ulong)eqos->tx_descs, &eqos->dma_regs->ch0_txdesc_list_address);
 | 
						writel((ulong)eqos->tx_descs, &eqos->dma_regs->ch0_txdesc_list_address);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue