static void rt2800pci_pretbtt_tasklet(unsigned long data) { struct rt2x00_dev *rt2x00dev = (struct rt2x00_dev *)data; rt2x00lib_pretbtt(rt2x00dev); if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) rt2800pci_enable_interrupt(rt2x00dev, INT_MASK_CSR_PRE_TBTT); }
static irqreturn_t rt2800pci_interrupt_thread(int irq, void *dev_instance) { struct rt2x00_dev *rt2x00dev = dev_instance; u32 reg = rt2x00dev->irqvalue[0]; /* * 1 - Pre TBTT interrupt. */ if (rt2x00_get_field32(reg, INT_SOURCE_CSR_PRE_TBTT)) rt2x00lib_pretbtt(rt2x00dev); /* * 2 - Beacondone interrupt. */ if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TBTT)) rt2x00lib_beacondone(rt2x00dev); /* * 3 - Rx ring done interrupt. */ if (rt2x00_get_field32(reg, INT_SOURCE_CSR_RX_DONE)) rt2x00pci_rxdone(rt2x00dev); /* * 4 - Auto wakeup interrupt. */ if (rt2x00_get_field32(reg, INT_SOURCE_CSR_AUTO_WAKEUP)) rt2800pci_wakeup(rt2x00dev); /* Enable interrupts again. */ rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_RADIO_IRQ_ON_ISR); return IRQ_HANDLED; }
static void rt2800pci_pretbtt_tasklet(unsigned long data) { struct rt2x00_dev *rt2x00dev = (struct rt2x00_dev *)data; rt2x00lib_pretbtt(rt2x00dev); rt2800pci_enable_interrupt(rt2x00dev, INT_MASK_CSR_PRE_TBTT); }