aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/renesas/sh_eth.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
index 71f59ee51304..e77025915b23 100644
--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@ -1395,10 +1395,13 @@ static int sh_eth_rx(struct net_device *ndev, u32 intr_status, int *quota)
1395 1395
1396 int entry = mdp->cur_rx % mdp->num_rx_ring; 1396 int entry = mdp->cur_rx % mdp->num_rx_ring;
1397 int boguscnt = (mdp->dirty_rx + mdp->num_rx_ring) - mdp->cur_rx; 1397 int boguscnt = (mdp->dirty_rx + mdp->num_rx_ring) - mdp->cur_rx;
1398 int limit;
1398 struct sk_buff *skb; 1399 struct sk_buff *skb;
1399 u16 pkt_len = 0; 1400 u16 pkt_len = 0;
1400 u32 desc_status; 1401 u32 desc_status;
1401 1402
1403 boguscnt = min(boguscnt, *quota);
1404 limit = boguscnt;
1402 rxdesc = &mdp->rx_ring[entry]; 1405 rxdesc = &mdp->rx_ring[entry];
1403 while (!(rxdesc->status & cpu_to_edmac(mdp, RD_RACT))) { 1406 while (!(rxdesc->status & cpu_to_edmac(mdp, RD_RACT))) {
1404 desc_status = edmac_to_cpu(mdp, rxdesc->status); 1407 desc_status = edmac_to_cpu(mdp, rxdesc->status);
@@ -1407,11 +1410,6 @@ static int sh_eth_rx(struct net_device *ndev, u32 intr_status, int *quota)
1407 if (--boguscnt < 0) 1410 if (--boguscnt < 0)
1408 break; 1411 break;
1409 1412
1410 if (*quota <= 0)
1411 break;
1412
1413 (*quota)--;
1414
1415 if (!(desc_status & RDFEND)) 1413 if (!(desc_status & RDFEND))
1416 ndev->stats.rx_length_errors++; 1414 ndev->stats.rx_length_errors++;
1417 1415
@@ -1502,6 +1500,8 @@ static int sh_eth_rx(struct net_device *ndev, u32 intr_status, int *quota)
1502 sh_eth_write(ndev, EDRRR_R, EDRRR); 1500 sh_eth_write(ndev, EDRRR_R, EDRRR);
1503 } 1501 }
1504 1502
1503 *quota -= limit - boguscnt - 1;
1504
1505 return *quota <= 0; 1505 return *quota <= 0;
1506} 1506}
1507 1507