| From: Anna-Maria Gleixner <anna-maria@linutronix.de> | 
 | Date: Thu, 12 Apr 2018 18:36:14 +0200 | 
 | Subject: [PATCH] net: 3com: 3c59x: Move boomerang/vortex conditional into | 
 |  function | 
 |  | 
 | If vp->full_bus_master_tx is set, vp->full_bus_master_rx is set as well | 
 | (see vortex_probe1()). Therefore the conditionals for the decision if | 
 | boomerang or vortex ISR is executed have the same result. Instead of | 
 | repeating the explicit conditional execution of the boomerang/vortex ISR, | 
 | move it into an own function. | 
 |  | 
 | No functional change. | 
 |  | 
 | Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de> | 
 | Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 
 | --- | 
 |  drivers/net/ethernet/3com/3c59x.c |   34 ++++++++++++++++++++-------------- | 
 |  1 file changed, 20 insertions(+), 14 deletions(-) | 
 |  | 
 | --- a/drivers/net/ethernet/3com/3c59x.c | 
 | +++ b/drivers/net/ethernet/3com/3c59x.c | 
 | @@ -765,8 +765,9 @@ static netdev_tx_t boomerang_start_xmit( | 
 |  					struct net_device *dev); | 
 |  static int vortex_rx(struct net_device *dev); | 
 |  static int boomerang_rx(struct net_device *dev); | 
 | -static irqreturn_t vortex_interrupt(int irq, void *dev_id); | 
 | -static irqreturn_t boomerang_interrupt(int irq, void *dev_id); | 
 | +static irqreturn_t vortex_boomerang_interrupt(int irq, void *dev_id); | 
 | +static irqreturn_t _vortex_interrupt(int irq, struct net_device *dev); | 
 | +static irqreturn_t _boomerang_interrupt(int irq, struct net_device *dev); | 
 |  static int vortex_close(struct net_device *dev); | 
 |  static void dump_tx_ring(struct net_device *dev); | 
 |  static void update_stats(void __iomem *ioaddr, struct net_device *dev); | 
 | @@ -838,10 +839,9 @@ MODULE_PARM_DESC(use_mmio, "3c59x: use m | 
 |  #ifdef CONFIG_NET_POLL_CONTROLLER | 
 |  static void poll_vortex(struct net_device *dev) | 
 |  { | 
 | -	struct vortex_private *vp = netdev_priv(dev); | 
 |  	unsigned long flags; | 
 |  	local_irq_save(flags); | 
 | -	(vp->full_bus_master_rx ? boomerang_interrupt:vortex_interrupt)(dev->irq,dev); | 
 | +	vortex_boomerang_interrupt(dev->irq, dev); | 
 |  	local_irq_restore(flags); | 
 |  } | 
 |  #endif | 
 | @@ -1728,8 +1728,7 @@ vortex_open(struct net_device *dev) | 
 |  	dma_addr_t dma; | 
 |   | 
 |  	/* Use the now-standard shared IRQ implementation. */ | 
 | -	if ((retval = request_irq(dev->irq, vp->full_bus_master_rx ? | 
 | -				boomerang_interrupt : vortex_interrupt, IRQF_SHARED, dev->name, dev))) { | 
 | +	if ((retval = request_irq(dev->irq, vortex_boomerang_interrupt, IRQF_SHARED, dev->name, dev))) { | 
 |  		pr_err("%s: Could not reserve IRQ %d\n", dev->name, dev->irq); | 
 |  		goto err; | 
 |  	} | 
 | @@ -1910,10 +1909,7 @@ static void vortex_tx_timeout(struct net | 
 |  			 */ | 
 |  			unsigned long flags; | 
 |  			local_irq_save(flags); | 
 | -			if (vp->full_bus_master_tx) | 
 | -				boomerang_interrupt(dev->irq, dev); | 
 | -			else | 
 | -				vortex_interrupt(dev->irq, dev); | 
 | +			vortex_boomerang_interrupt(dev->irq, dev); | 
 |  			local_irq_restore(flags); | 
 |  		} | 
 |  	} | 
 | @@ -2266,9 +2262,8 @@ boomerang_start_xmit(struct sk_buff *skb | 
 |   */ | 
 |   | 
 |  static irqreturn_t | 
 | -vortex_interrupt(int irq, void *dev_id) | 
 | +_vortex_interrupt(int irq, struct net_device *dev) | 
 |  { | 
 | -	struct net_device *dev = dev_id; | 
 |  	struct vortex_private *vp = netdev_priv(dev); | 
 |  	void __iomem *ioaddr; | 
 |  	int status; | 
 | @@ -2385,9 +2380,8 @@ vortex_interrupt(int irq, void *dev_id) | 
 |   */ | 
 |   | 
 |  static irqreturn_t | 
 | -boomerang_interrupt(int irq, void *dev_id) | 
 | +_boomerang_interrupt(int irq, struct net_device *dev) | 
 |  { | 
 | -	struct net_device *dev = dev_id; | 
 |  	struct vortex_private *vp = netdev_priv(dev); | 
 |  	void __iomem *ioaddr; | 
 |  	int status; | 
 | @@ -2525,6 +2519,18 @@ boomerang_interrupt(int irq, void *dev_i | 
 |  	return IRQ_RETVAL(handled); | 
 |  } | 
 |   | 
 | +static irqreturn_t | 
 | +vortex_boomerang_interrupt(int irq, void *dev_id) | 
 | +{ | 
 | +	struct net_device *dev = dev_id; | 
 | +	struct vortex_private *vp = netdev_priv(dev); | 
 | + | 
 | +	if (vp->full_bus_master_rx) | 
 | +		return _boomerang_interrupt(dev->irq, dev); | 
 | +	else | 
 | +		return _vortex_interrupt(dev->irq, dev); | 
 | +} | 
 | + | 
 |  static int vortex_rx(struct net_device *dev) | 
 |  { | 
 |  	struct vortex_private *vp = netdev_priv(dev); |