diff options
| -rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.c | 10 |
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 | ||
