>> +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?
Right, hw has a feature of interrupts automasking on trigger. This is essentially an unmasking operation. > 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? Pending masked ISR will trigger as soon as we enable it again. So it won't be lost. Regards, Igor