diff options
Diffstat (limited to 'drivers/net/ethernet/renesas/ravb_main.c')
| -rw-r--r-- | drivers/net/ethernet/renesas/ravb_main.c | 27 | 
1 files changed, 12 insertions, 15 deletions
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 4d100283c30f..193ad05383a8 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -759,7 +759,7 @@ static struct sk_buff *ravb_get_skb_gbeth(struct net_device *ndev, int entry,  }  /* Packet receive function for Gigabit Ethernet */ -static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q) +static int ravb_rx_gbeth(struct net_device *ndev, int budget, int q)  {  	struct ravb_private *priv = netdev_priv(ndev);  	const struct ravb_hw_info *info = priv->info; @@ -781,7 +781,7 @@ static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q)  	for (i = 0; i < limit; i++, priv->cur_rx[q]++) {  		entry = priv->cur_rx[q] % priv->num_rx_ring[q];  		desc = &priv->rx_ring[q].desc[entry]; -		if (rx_packets == *quota || desc->die_dt == DT_FEMPTY) +		if (rx_packets == budget || desc->die_dt == DT_FEMPTY)  			break;  		/* Descriptor type must be checked before all other reads */ @@ -882,12 +882,11 @@ static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q)  	}  	stats->rx_packets += rx_packets; -	*quota -= rx_packets; -	return *quota == 0; +	return rx_packets;  }  /* Packet receive function for Ethernet AVB */ -static bool ravb_rx_rcar(struct net_device *ndev, int *quota, int q) +static int ravb_rx_rcar(struct net_device *ndev, int budget, int q)  {  	struct ravb_private *priv = netdev_priv(ndev);  	const struct ravb_hw_info *info = priv->info; @@ -906,7 +905,7 @@ static bool ravb_rx_rcar(struct net_device *ndev, int *quota, int q)  	for (i = 0; i < limit; i++, priv->cur_rx[q]++) {  		entry = priv->cur_rx[q] % priv->num_rx_ring[q];  		desc = &priv->rx_ring[q].ex_desc[entry]; -		if (rx_packets == *quota || desc->die_dt == DT_FEMPTY) +		if (rx_packets == budget || desc->die_dt == DT_FEMPTY)  			break;  		/* Descriptor type must be checked before all other reads */ @@ -992,17 +991,16 @@ static bool ravb_rx_rcar(struct net_device *ndev, int *quota, int q)  	}  	stats->rx_packets += rx_packets; -	*quota -= rx_packets; -	return *quota == 0; +	return rx_packets;  }  /* Packet receive function for Ethernet AVB */ -static bool ravb_rx(struct net_device *ndev, int *quota, int q) +static int ravb_rx(struct net_device *ndev, int budget, int q)  {  	struct ravb_private *priv = netdev_priv(ndev);  	const struct ravb_hw_info *info = priv->info; -	return info->receive(ndev, quota, q); +	return info->receive(ndev, budget, q);  }  static void ravb_rcv_snd_disable(struct net_device *ndev) @@ -1319,13 +1317,12 @@ static int ravb_poll(struct napi_struct *napi, int budget)  	unsigned long flags;  	int q = napi - priv->napi;  	int mask = BIT(q); -	int quota = budget; -	bool unmask; +	int work_done;  	/* Processing RX Descriptor Ring */  	/* Clear RX interrupt */  	ravb_write(ndev, ~(mask | RIS0_RESERVED), RIS0); -	unmask = !ravb_rx(ndev, "a, q); +	work_done = ravb_rx(ndev, budget, q);  	/* Processing TX Descriptor Ring */  	spin_lock_irqsave(&priv->lock, flags); @@ -1344,7 +1341,7 @@ static int ravb_poll(struct napi_struct *napi, int budget)  	if (priv->rx_fifo_errors != ndev->stats.rx_fifo_errors)  		ndev->stats.rx_fifo_errors = priv->rx_fifo_errors; -	if (!unmask) +	if (work_done == budget)  		goto out;  	napi_complete(napi); @@ -1361,7 +1358,7 @@ static int ravb_poll(struct napi_struct *napi, int budget)  	spin_unlock_irqrestore(&priv->lock, flags);  out: -	return budget - quota; +	return work_done;  }  static void ravb_set_duplex_gbeth(struct net_device *ndev)  | 
