diff options
Diffstat (limited to 'drivers/net/ethernet/renesas/ravb_main.c')
| -rw-r--r-- | drivers/net/ethernet/renesas/ravb_main.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index aff5516b781e..d6f753925352 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -739,10 +739,11 @@ static void ravb_error_interrupt(struct net_device *ndev)  	u32 eis, ris2;  	eis = ravb_read(ndev, EIS); -	ravb_write(ndev, ~EIS_QFS, EIS); +	ravb_write(ndev, ~(EIS_QFS | EIS_RESERVED), EIS);  	if (eis & EIS_QFS) {  		ris2 = ravb_read(ndev, RIS2); -		ravb_write(ndev, ~(RIS2_QFF0 | RIS2_RFFF), RIS2); +		ravb_write(ndev, ~(RIS2_QFF0 | RIS2_RFFF | RIS2_RESERVED), +			   RIS2);  		/* Receive Descriptor Empty int */  		if (ris2 & RIS2_QFF0) @@ -795,7 +796,7 @@ static bool ravb_timestamp_interrupt(struct net_device *ndev)  	u32 tis = ravb_read(ndev, TIS);  	if (tis & TIS_TFUF) { -		ravb_write(ndev, ~TIS_TFUF, TIS); +		ravb_write(ndev, ~(TIS_TFUF | TIS_RESERVED), TIS);  		ravb_get_tx_tstamp(ndev);  		return true;  	} @@ -930,7 +931,7 @@ static int ravb_poll(struct napi_struct *napi, int budget)  		/* Processing RX Descriptor Ring */  		if (ris0 & mask) {  			/* Clear RX interrupt */ -			ravb_write(ndev, ~mask, RIS0); +			ravb_write(ndev, ~(mask | RIS0_RESERVED), RIS0);  			if (ravb_rx(ndev, "a, q))  				goto out;  		} @@ -938,7 +939,7 @@ static int ravb_poll(struct napi_struct *napi, int budget)  		if (tis & mask) {  			spin_lock_irqsave(&priv->lock, flags);  			/* Clear TX interrupt */ -			ravb_write(ndev, ~mask, TIS); +			ravb_write(ndev, ~(mask | TIS_RESERVED), TIS);  			ravb_tx_free(ndev, q, true);  			netif_wake_subqueue(ndev, q);  			mmiowb();  | 
