On Wed, 28 Aug 2019 14:55:11 -0400 Vivien Didelot <vivien.dide...@gmail.com> wrote:
> Now mv88e6xxx does not enable its ports at setup itself and let > the DSA core handle this, unused ports are disabled without being > powered on first. While that is expected, the SERDES powering code > was assuming that a port was already set up before powering it down, > resulting in freeing an unused IRQ. The patch fixes this assumption. > > Fixes: b759f528ca3d ("net: dsa: mv88e6xxx: enable SERDES after setup") > Signed-off-by: Vivien Didelot <vivien.dide...@gmail.com> > --- > drivers/net/dsa/mv88e6xxx/chip.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/dsa/mv88e6xxx/chip.c > b/drivers/net/dsa/mv88e6xxx/chip.c > index 6525075f6bd3..c648f9fbfa59 100644 > --- a/drivers/net/dsa/mv88e6xxx/chip.c > +++ b/drivers/net/dsa/mv88e6xxx/chip.c > @@ -2070,7 +2070,8 @@ static int mv88e6xxx_serdes_power(struct mv88e6xxx_chip > *chip, int port, > if (chip->info->ops->serdes_irq_setup) > err = chip->info->ops->serdes_irq_setup(chip, port); > } else { > - if (chip->info->ops->serdes_irq_free) > + if (chip->info->ops->serdes_irq_free && > + chip->ports[port].serdes_irq) > chip->info->ops->serdes_irq_free(chip, port); > > err = chip->info->ops->serdes_power(chip, port, false); Reviewed-by: Marek BehĂșn <marek.be...@nic.cz>