diff options
Diffstat (limited to 'drivers/net/ethernet/cirrus/cs89x0.c')
| -rw-r--r-- | drivers/net/ethernet/cirrus/cs89x0.c | 10 | 
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/ethernet/cirrus/cs89x0.c b/drivers/net/ethernet/cirrus/cs89x0.c index 845b2020f29..13844695778 100644 --- a/drivers/net/ethernet/cirrus/cs89x0.c +++ b/drivers/net/ethernet/cirrus/cs89x0.c @@ -1243,6 +1243,7 @@ static void set_multicast_list(struct net_device *dev)  {  	struct net_local *lp = netdev_priv(dev);  	unsigned long flags; +	u16 cfg;  	spin_lock_irqsave(&lp->lock, flags);  	if (dev->flags & IFF_PROMISC) @@ -1260,11 +1261,10 @@ static void set_multicast_list(struct net_device *dev)  	/* in promiscuous mode, we accept errored packets,  	 * so we have to enable interrupts on them also  	 */ -	writereg(dev, PP_RxCFG, -		 (lp->curr_rx_cfg | -		  (lp->rx_mode == RX_ALL_ACCEPT) -		  ? (RX_CRC_ERROR_ENBL | RX_RUNT_ENBL | RX_EXTRA_DATA_ENBL) -		  : 0)); +	cfg = lp->curr_rx_cfg; +	if (lp->rx_mode == RX_ALL_ACCEPT) +		cfg |= RX_CRC_ERROR_ENBL | RX_RUNT_ENBL | RX_EXTRA_DATA_ENBL; +	writereg(dev, PP_RxCFG, cfg);  	spin_unlock_irqrestore(&lp->lock, flags);  }  |