rtlwifi: Convert individual interrupt results to struct
authorLarry Finger <Larry.Finger@lwfinger.net>
Sun, 12 Nov 2017 20:06:45 +0000 (14:06 -0600)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 7 Dec 2017 13:13:32 +0000 (15:13 +0200)
With the RTL8822BE and later devices, the number of interrupt vectors
has grown from 2 to 4. At this point, saving and passing those vectors
in a struct makes more sense than using individual scaler variables.

In two of the drivers, code to process the second of the interrupt
registers was included, but commented out. This patch removes those
useless sections.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
18 files changed:
drivers/net/wireless/realtek/rtlwifi/pci.c
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8192ce/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8192ce/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8192de/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8192de/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8192ee/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8192ee/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8192se/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8192se/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8723ae/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8723ae/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.h
drivers/net/wireless/realtek/rtlwifi/wifi.h

index c2575b0..ed6e4a5 100644 (file)
@@ -924,10 +924,8 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
        unsigned long flags;
-       u32 inta = 0;
-       u32 intb = 0;
-       u32 intc = 0;
-       u32 intd = 0;
+       struct rtl_int intvec = {0};
+
        irqreturn_t ret = IRQ_HANDLED;
 
        if (rtlpci->irq_enabled == 0)
@@ -937,47 +935,47 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
        rtlpriv->cfg->ops->disable_interrupt(hw);
 
        /*read ISR: 4/8bytes */
-       rtlpriv->cfg->ops->interrupt_recognized(hw, &inta, &intb, &intc, &intd);
+       rtlpriv->cfg->ops->interrupt_recognized(hw, &intvec);
 
        /*Shared IRQ or HW disappeared */
-       if (!inta || inta == 0xffff)
+       if (!intvec.inta || intvec.inta == 0xffff)
                goto done;
 
        /*<1> beacon related */
-       if (inta & rtlpriv->cfg->maps[RTL_IMR_TBDOK])
+       if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_TBDOK])
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
                         "beacon ok interrupt!\n");
 
-       if (unlikely(inta & rtlpriv->cfg->maps[RTL_IMR_TBDER]))
+       if (unlikely(intvec.inta & rtlpriv->cfg->maps[RTL_IMR_TBDER]))
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
                         "beacon err interrupt!\n");
 
-       if (inta & rtlpriv->cfg->maps[RTL_IMR_BDOK])
+       if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_BDOK])
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE, "beacon interrupt!\n");
 
-       if (inta & rtlpriv->cfg->maps[RTL_IMR_BCNINT]) {
+       if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_BCNINT]) {
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
                         "prepare beacon for interrupt!\n");
                tasklet_schedule(&rtlpriv->works.irq_prepare_bcn_tasklet);
        }
 
        /*<2> Tx related */
-       if (unlikely(intb & rtlpriv->cfg->maps[RTL_IMR_TXFOVW]))
+       if (unlikely(intvec.intb & rtlpriv->cfg->maps[RTL_IMR_TXFOVW]))
                RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, "IMR_TXFOVW!\n");
 
-       if (inta & rtlpriv->cfg->maps[RTL_IMR_MGNTDOK]) {
+       if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_MGNTDOK]) {
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
                         "Manage ok interrupt!\n");
                _rtl_pci_tx_isr(hw, MGNT_QUEUE);
        }
 
-       if (inta & rtlpriv->cfg->maps[RTL_IMR_HIGHDOK]) {
+       if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_HIGHDOK]) {
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
                         "HIGH_QUEUE ok interrupt!\n");
                _rtl_pci_tx_isr(hw, HIGH_QUEUE);
        }
 
-       if (inta & rtlpriv->cfg->maps[RTL_IMR_BKDOK]) {
+       if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_BKDOK]) {
                rtlpriv->link_info.num_tx_inperiod++;
 
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
@@ -985,7 +983,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
                _rtl_pci_tx_isr(hw, BK_QUEUE);
        }
 
-       if (inta & rtlpriv->cfg->maps[RTL_IMR_BEDOK]) {
+       if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_BEDOK]) {
                rtlpriv->link_info.num_tx_inperiod++;
 
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
@@ -993,7 +991,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
                _rtl_pci_tx_isr(hw, BE_QUEUE);
        }
 
-       if (inta & rtlpriv->cfg->maps[RTL_IMR_VIDOK]) {
+       if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_VIDOK]) {
                rtlpriv->link_info.num_tx_inperiod++;
 
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
@@ -1001,7 +999,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
                _rtl_pci_tx_isr(hw, VI_QUEUE);
        }
 
-       if (inta & rtlpriv->cfg->maps[RTL_IMR_VODOK]) {
+       if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_VODOK]) {
                rtlpriv->link_info.num_tx_inperiod++;
 
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
@@ -1010,7 +1008,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
        }
 
        if (rtlhal->hw_type == HARDWARE_TYPE_RTL8822BE) {
-               if (intd & rtlpriv->cfg->maps[RTL_IMR_H2CDOK]) {
+               if (intvec.intd & rtlpriv->cfg->maps[RTL_IMR_H2CDOK]) {
                        rtlpriv->link_info.num_tx_inperiod++;
 
                        RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
@@ -1020,7 +1018,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
        }
 
        if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192SE) {
-               if (inta & rtlpriv->cfg->maps[RTL_IMR_COMDOK]) {
+               if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_COMDOK]) {
                        rtlpriv->link_info.num_tx_inperiod++;
 
                        RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
@@ -1030,25 +1028,25 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
        }
 
        /*<3> Rx related */
-       if (inta & rtlpriv->cfg->maps[RTL_IMR_ROK]) {
+       if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_ROK]) {
                RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE, "Rx ok interrupt!\n");
                _rtl_pci_rx_interrupt(hw);
        }
 
-       if (unlikely(inta & rtlpriv->cfg->maps[RTL_IMR_RDU])) {
+       if (unlikely(intvec.inta & rtlpriv->cfg->maps[RTL_IMR_RDU])) {
                RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
                         "rx descriptor unavailable!\n");
                _rtl_pci_rx_interrupt(hw);
        }
 
-       if (unlikely(intb & rtlpriv->cfg->maps[RTL_IMR_RXFOVW])) {
+       if (unlikely(intvec.intb & rtlpriv->cfg->maps[RTL_IMR_RXFOVW])) {
                RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, "rx overflow !\n");
                _rtl_pci_rx_interrupt(hw);
        }
 
        /*<4> fw related*/
        if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723AE) {
-               if (inta & rtlpriv->cfg->maps[RTL_IMR_C2HCMD]) {
+               if (intvec.inta & rtlpriv->cfg->maps[RTL_IMR_C2HCMD]) {
                        RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
                                 "firmware interrupt!\n");
                        queue_delayed_work(rtlpriv->works.rtl_wq,
@@ -1064,7 +1062,8 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
         */
        if (rtlhal->hw_type == HARDWARE_TYPE_RTL8188EE ||
            rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) {
-               if (unlikely(inta & rtlpriv->cfg->maps[RTL_IMR_HSISR_IND])) {
+               if (unlikely(intvec.inta &
+                   rtlpriv->cfg->maps[RTL_IMR_HSISR_IND])) {
                        RT_TRACE(rtlpriv, COMP_INTR, DBG_TRACE,
                                 "hsisr interrupt!\n");
                        _rtl_pci_hs_interrupt(hw);
index e30a18e..988d5ac 100644 (file)
@@ -1472,17 +1472,16 @@ void rtl88ee_card_disable(struct ieee80211_hw *hw)
 }
 
 void rtl88ee_interrupt_recognized(struct ieee80211_hw *hw,
-                                 u32 *p_inta, u32 *p_intb,
-                                 u32 *p_intc, u32 *p_intd)
+                                 struct rtl_int *intvec)
 {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
 
-       *p_inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
-       rtl_write_dword(rtlpriv, ISR, *p_inta);
+       intvec->inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
+       rtl_write_dword(rtlpriv, ISR, intvec->inta);
 
-       *p_intb = rtl_read_dword(rtlpriv, REG_HISRE) & rtlpci->irq_mask[1];
-       rtl_write_dword(rtlpriv, REG_HISRE, *p_intb);
+       intvec->intb = rtl_read_dword(rtlpriv, REG_HISRE) & rtlpci->irq_mask[1];
+       rtl_write_dword(rtlpriv, REG_HISRE, intvec->intb);
 
 }
 
index cdf49de..214cd2a 100644 (file)
@@ -29,8 +29,7 @@
 void rtl88ee_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
 void rtl88ee_read_eeprom_info(struct ieee80211_hw *hw);
 void rtl88ee_interrupt_recognized(struct ieee80211_hw *hw,
-                                 u32 *p_inta, u32 *p_intb,
-                                 u32 *p_intc, u32 *p_intd);
+                                 struct rtl_int *int_vec);
 int rtl88ee_hw_init(struct ieee80211_hw *hw);
 void rtl88ee_card_disable(struct ieee80211_hw *hw);
 void rtl88ee_enable_interrupt(struct ieee80211_hw *hw);
index 0f4c86a..4a81e0e 100644 (file)
@@ -1375,19 +1375,13 @@ void rtl92ce_card_disable(struct ieee80211_hw *hw)
 }
 
 void rtl92ce_interrupt_recognized(struct ieee80211_hw *hw,
-                                 u32 *p_inta, u32 *p_intb,
-                                 u32 *p_intc, u32 *p_intd)
+                                 struct rtl_int *intvec)
 {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
 
-       *p_inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
-       rtl_write_dword(rtlpriv, ISR, *p_inta);
-
-       /*
-        * *p_intb = rtl_read_dword(rtlpriv, REG_HISRE) & rtlpci->irq_mask[1];
-        * rtl_write_dword(rtlpriv, ISR + 4, *p_intb);
-        */
+       intvec->inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
+       rtl_write_dword(rtlpriv, ISR, intvec->inta);
 }
 
 void rtl92ce_set_beacon_related_registers(struct ieee80211_hw *hw)
index b5c8e2f..6711ea1 100644 (file)
@@ -42,8 +42,7 @@ static inline u8 rtl92c_get_chnl_group(u8 chnl)
 void rtl92ce_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
 void rtl92ce_read_eeprom_info(struct ieee80211_hw *hw);
 void rtl92ce_interrupt_recognized(struct ieee80211_hw *hw,
-                                 u32 *p_inta, u32 *p_intb,
-                                 u32 *p_intc, u32 *p_intd);
+                                 struct rtl_int *int_vec);
 int rtl92ce_hw_init(struct ieee80211_hw *hw);
 void rtl92ce_card_disable(struct ieee80211_hw *hw);
 void rtl92ce_enable_interrupt(struct ieee80211_hw *hw);
index 0da6c01..80123fd 100644 (file)
@@ -1356,19 +1356,13 @@ void rtl92de_card_disable(struct ieee80211_hw *hw)
 }
 
 void rtl92de_interrupt_recognized(struct ieee80211_hw *hw,
-                                 u32 *p_inta, u32 *p_intb,
-                                 u32 *p_intc, u32 *p_intd)
+                                 struct rtl_int *intvec)
 {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
 
-       *p_inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
-       rtl_write_dword(rtlpriv, ISR, *p_inta);
-
-       /*
-        * *p_intb = rtl_read_dword(rtlpriv, REG_HISRE) & rtlpci->irq_mask[1];
-        * rtl_write_dword(rtlpriv, ISR + 4, *p_intb);
-        */
+       intvec->inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
+       rtl_write_dword(rtlpriv, ISR, intvec->inta);
 }
 
 void rtl92de_set_beacon_related_registers(struct ieee80211_hw *hw)
index 9236aa9..e6c702e 100644 (file)
@@ -29,8 +29,7 @@
 void rtl92de_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
 void rtl92de_read_eeprom_info(struct ieee80211_hw *hw);
 void rtl92de_interrupt_recognized(struct ieee80211_hw *hw,
-                                 u32 *p_inta, u32 *p_intb,
-                                 u32 *p_intc, u32 *p_intd);
+                                 struct rtl_int *int_vec);
 int rtl92de_hw_init(struct ieee80211_hw *hw);
 void rtl92de_card_disable(struct ieee80211_hw *hw);
 void rtl92de_enable_interrupt(struct ieee80211_hw *hw);
index fe5da63..fd7928f 100644 (file)
@@ -1694,17 +1694,16 @@ void rtl92ee_card_disable(struct ieee80211_hw *hw)
 }
 
 void rtl92ee_interrupt_recognized(struct ieee80211_hw *hw,
-                                 u32 *p_inta, u32 *p_intb,
-                                 u32 *p_intc, u32 *p_intd)
+                                 struct rtl_int *intvec)
 {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
 
-       *p_inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
-       rtl_write_dword(rtlpriv, ISR, *p_inta);
+       intvec->inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
+       rtl_write_dword(rtlpriv, ISR, intvec->inta);
 
-       *p_intb = rtl_read_dword(rtlpriv, REG_HISRE) & rtlpci->irq_mask[1];
-       rtl_write_dword(rtlpriv, REG_HISRE, *p_intb);
+       intvec->intb = rtl_read_dword(rtlpriv, REG_HISRE) & rtlpci->irq_mask[1];
+       rtl_write_dword(rtlpriv, REG_HISRE, intvec->intb);
 }
 
 void rtl92ee_set_beacon_related_registers(struct ieee80211_hw *hw)
index cd6d332..3a63bec 100644 (file)
@@ -29,8 +29,7 @@
 void rtl92ee_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
 void rtl92ee_read_eeprom_info(struct ieee80211_hw *hw);
 void rtl92ee_interrupt_recognized(struct ieee80211_hw *hw,
-                                 u32 *p_inta, u32 *p_intb,
-                                 u32 *p_intc, u32 *p_intd);
+                                 struct rtl_int *int_vec);
 int rtl92ee_hw_init(struct ieee80211_hw *hw);
 void rtl92ee_card_disable(struct ieee80211_hw *hw);
 void rtl92ee_enable_interrupt(struct ieee80211_hw *hw);
index 76bf089..30dea7b 100644 (file)
@@ -1558,17 +1558,17 @@ void rtl92se_card_disable(struct ieee80211_hw *hw)
        udelay(100);
 }
 
-void rtl92se_interrupt_recognized(struct ieee80211_hw *hw, u32 *p_inta,
-                            u32 *p_intb, u32 *p_intc, u32 *p_intd)
+void rtl92se_interrupt_recognized(struct ieee80211_hw *hw,
+                                 struct rtl_int *intvec)
 {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
 
-       *p_inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
-       rtl_write_dword(rtlpriv, ISR, *p_inta);
+       intvec->inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
+       rtl_write_dword(rtlpriv, ISR, intvec->inta);
 
-       *p_intb = rtl_read_dword(rtlpriv, ISR + 4) & rtlpci->irq_mask[1];
-       rtl_write_dword(rtlpriv, ISR + 4, *p_intb);
+       intvec->intb = rtl_read_dword(rtlpriv, ISR + 4) & rtlpci->irq_mask[1];
+       rtl_write_dword(rtlpriv, ISR + 4, intvec->intb);
 }
 
 void rtl92se_set_beacon_related_registers(struct ieee80211_hw *hw)
index 6070560..fa836ce 100644 (file)
@@ -42,8 +42,7 @@ void rtl92se_get_hw_reg(struct ieee80211_hw *hw,
                        u8 variable, u8 *val);
 void rtl92se_read_eeprom_info(struct ieee80211_hw *hw);
 void rtl92se_interrupt_recognized(struct ieee80211_hw *hw,
-                                 u32 *p_inta, u32 *p_intb,
-                                 u32 *p_intc, u32 *p_intd);
+                                 struct rtl_int *int_vec);
 int rtl92se_hw_init(struct ieee80211_hw *hw);
 void rtl92se_card_disable(struct ieee80211_hw *hw);
 void rtl92se_enable_interrupt(struct ieee80211_hw *hw);
index c3f98d5..545115d 100644 (file)
@@ -1340,14 +1340,13 @@ void rtl8723e_card_disable(struct ieee80211_hw *hw)
 }
 
 void rtl8723e_interrupt_recognized(struct ieee80211_hw *hw,
-                                  u32 *p_inta, u32 *p_intb,
-                                  u32 *p_intc, u32 *p_intd)
+                                  struct rtl_int *intvec)
 {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
 
-       *p_inta = rtl_read_dword(rtlpriv, 0x3a0) & rtlpci->irq_mask[0];
-       rtl_write_dword(rtlpriv, 0x3a0, *p_inta);
+       intvec->inta = rtl_read_dword(rtlpriv, 0x3a0) & rtlpci->irq_mask[0];
+       rtl_write_dword(rtlpriv, 0x3a0, intvec->inta);
 }
 
 void rtl8723e_set_beacon_related_registers(struct ieee80211_hw *hw)
index 19e467a..c76e453 100644 (file)
@@ -34,8 +34,7 @@ void rtl8723e_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
 void rtl8723e_read_eeprom_info(struct ieee80211_hw *hw);
 
 void rtl8723e_interrupt_recognized(struct ieee80211_hw *hw,
-                                  u32 *p_inta, u32 *p_intb,
-                                  u32 *p_intc, u32 *p_intd);
+                                  struct rtl_int *int_vec);
 int rtl8723e_hw_init(struct ieee80211_hw *hw);
 void rtl8723e_card_disable(struct ieee80211_hw *hw);
 void rtl8723e_enable_interrupt(struct ieee80211_hw *hw);
index 7cd1ffa..d2369b0 100644 (file)
@@ -1682,18 +1682,17 @@ void rtl8723be_card_disable(struct ieee80211_hw *hw)
 }
 
 void rtl8723be_interrupt_recognized(struct ieee80211_hw *hw,
-                                   u32 *p_inta, u32 *p_intb,
-                                   u32 *p_intc, u32 *p_intd)
+                                   struct rtl_int *intvec)
 {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
 
-       *p_inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
-       rtl_write_dword(rtlpriv, ISR, *p_inta);
+       intvec->inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
+       rtl_write_dword(rtlpriv, ISR, intvec->inta);
 
-       *p_intb = rtl_read_dword(rtlpriv, REG_HISRE) &
-                                       rtlpci->irq_mask[1];
-       rtl_write_dword(rtlpriv, REG_HISRE, *p_intb);
+       intvec->intb = rtl_read_dword(rtlpriv, REG_HISRE) &
+                                     rtlpci->irq_mask[1];
+       rtl_write_dword(rtlpriv, REG_HISRE, intvec->intb);
 }
 
 void rtl8723be_set_beacon_related_registers(struct ieee80211_hw *hw)
index 2215a79..ae856a1 100644 (file)
@@ -30,8 +30,7 @@ void rtl8723be_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
 void rtl8723be_read_eeprom_info(struct ieee80211_hw *hw);
 
 void rtl8723be_interrupt_recognized(struct ieee80211_hw *hw,
-                                   u32 *p_inta, u32 *p_intb,
-                                   u32 *p_intc, u32 *p_intd);
+                                   struct rtl_int *int_vec);
 int rtl8723be_hw_init(struct ieee80211_hw *hw);
 void rtl8723be_card_disable(struct ieee80211_hw *hw);
 void rtl8723be_enable_interrupt(struct ieee80211_hw *hw);
index 43e18c4..f20e77b 100644 (file)
@@ -2483,17 +2483,16 @@ void rtl8821ae_card_disable(struct ieee80211_hw *hw)
 }
 
 void rtl8821ae_interrupt_recognized(struct ieee80211_hw *hw,
-                                   u32 *p_inta, u32 *p_intb,
-                                   u32 *p_intc, u32 *p_intd)
+                                   struct rtl_int *intvec)
 {
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
 
-       *p_inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
-       rtl_write_dword(rtlpriv, ISR, *p_inta);
+       intvec->inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0];
+       rtl_write_dword(rtlpriv, ISR, intvec->inta);
 
-       *p_intb = rtl_read_dword(rtlpriv, REG_HISRE) & rtlpci->irq_mask[1];
-       rtl_write_dword(rtlpriv, REG_HISRE, *p_intb);
+       intvec->intb = rtl_read_dword(rtlpriv, REG_HISRE) & rtlpci->irq_mask[1];
+       rtl_write_dword(rtlpriv, REG_HISRE, intvec->intb);
 }
 
 void rtl8821ae_set_beacon_related_registers(struct ieee80211_hw *hw)
index 284d259..e2ab783 100644 (file)
@@ -30,8 +30,7 @@ void rtl8821ae_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
 void rtl8821ae_read_eeprom_info(struct ieee80211_hw *hw);
 
 void rtl8821ae_interrupt_recognized(struct ieee80211_hw *hw,
-                                   u32 *p_inta, u32 *p_intb,
-                                   u32 *p_intc, u32 *p_intd);
+                                   struct rtl_int *int_vec);
 int rtl8821ae_hw_init(struct ieee80211_hw *hw);
 void rtl8821ae_card_disable(struct ieee80211_hw *hw);
 void rtl8821ae_enable_interrupt(struct ieee80211_hw *hw);
index 92d4859..e2b1479 100644 (file)
@@ -2093,14 +2093,21 @@ struct rtl_wow_pattern {
        u32 mask[4];
 };
 
+/* struct to store contents of interrupt vectors */
+struct rtl_int {
+       u32 inta;
+       u32 intb;
+       u32 intc;
+       u32 intd;
+};
+
 struct rtl_hal_ops {
        int (*init_sw_vars) (struct ieee80211_hw *hw);
        void (*deinit_sw_vars) (struct ieee80211_hw *hw);
        void (*read_chip_version)(struct ieee80211_hw *hw);
        void (*read_eeprom_info) (struct ieee80211_hw *hw);
        void (*interrupt_recognized) (struct ieee80211_hw *hw,
-                                     u32 *p_inta, u32 *p_intb,
-                                     u32 *p_intc, u32 *p_intd);
+                                     struct rtl_int *intvec);
        int (*hw_init) (struct ieee80211_hw *hw);
        void (*hw_disable) (struct ieee80211_hw *hw);
        void (*hw_suspend) (struct ieee80211_hw *hw);