On Fri, Apr 26, 2019 at 09:47:47AM +0000, Igor Russkikh wrote: > Define link interrupt handler > > Signed-off-by: Nikita Danilov <ndani...@aquantia.com> > Signed-off-by: Igor Russkikh <igor.russk...@aquantia.com> > --- > drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c > b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c > index 059df86e8e37..4851fc0a3ae5 100644 > --- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c > +++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c > @@ -161,6 +161,20 @@ static int aq_nic_update_link_status(struct aq_nic_s > *self) > return 0; > } > > +static irqreturn_t aq_linkstate_threaded_isr(int irq, void *private) > +{ > + struct aq_nic_s *self = private; > + > + if (!self) > + return IRQ_NONE; > + > + aq_nic_update_link_status(self); > + > + self->aq_hw_ops->hw_irq_enable(self->aq_hw, > + BIT(self->aq_nic_cfg.link_irq_vec));
So does this mean the hardware disables interrupts when they fire? Is this an ack, not an enable? Can you loose interrupts this way? Or are the internally level interrupts, so it could immediately fire again if the source has not been services? Thanks Andrew