diff options
-rw-r--r-- | drivers/net/ravb.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/net/ravb.c b/drivers/net/ravb.c index 539fd37ee59..e1ce1d8957b 100644 --- a/drivers/net/ravb.c +++ b/drivers/net/ravb.c @@ -181,7 +181,7 @@ static int ravb_recv(struct udevice *dev, int flags, uchar **packetp) { struct ravb_priv *eth = dev_get_priv(dev); struct ravb_rxdesc *desc = ð->rx_desc[eth->rx_desc_idx]; - int len; + int len = 0; u8 *packet; /* Check if the rx descriptor is ready */ @@ -190,12 +190,11 @@ static int ravb_recv(struct udevice *dev, int flags, uchar **packetp) return -EAGAIN; /* Check for errors */ - if (desc->data.ctrl & RAVB_RX_DESC_MSC_RX_ERR_MASK) { + if (desc->data.ctrl & RAVB_RX_DESC_MSC_RX_ERR_MASK) desc->data.ctrl &= ~RAVB_RX_DESC_MSC_MASK; - return -EAGAIN; - } + else + len = desc->data.ctrl & RAVB_DESC_DS_MASK; - len = desc->data.ctrl & RAVB_DESC_DS_MASK; packet = (u8 *)(uintptr_t)desc->data.dptr; ravb_invalidate_dcache((uintptr_t)packet, len); |