hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/net/wireless/marvell/mwl8k.c
....@@ -592,7 +592,7 @@
592592 __u8 seq_num;
593593 __u8 macid;
594594 __le16 result;
595
- char payload[0];
595
+ char payload[];
596596 } __packed;
597597
598598 /*
....@@ -806,7 +806,7 @@
806806 struct mwl8k_dma_data {
807807 __le16 fwlen;
808808 struct ieee80211_hdr wh;
809
- char data[0];
809
+ char data[];
810810 } __packed;
811811
812812 /* Routines to add/remove DMA header from skb. */
....@@ -2240,8 +2240,10 @@
22402240 dma_size = le16_to_cpu(cmd->length);
22412241 dma_addr = pci_map_single(priv->pdev, cmd, dma_size,
22422242 PCI_DMA_BIDIRECTIONAL);
2243
- if (pci_dma_mapping_error(priv->pdev, dma_addr))
2244
- return -ENOMEM;
2243
+ if (pci_dma_mapping_error(priv->pdev, dma_addr)) {
2244
+ rc = -ENOMEM;
2245
+ goto exit;
2246
+ }
22452247
22462248 priv->hostcmd_wait = &cmd_wait;
22472249 iowrite32(dma_addr, regs + MWL8K_HIU_GEN_PTR);
....@@ -2281,6 +2283,7 @@
22812283 ms);
22822284 }
22832285
2286
+exit:
22842287 if (bitmap)
22852288 mwl8k_enable_bsses(hw, true, bitmap);
22862289
....@@ -2666,7 +2669,7 @@
26662669 struct mwl8k_cmd_pkt header;
26672670 __le16 action;
26682671 __le16 numaddr;
2669
- __u8 addr[0][ETH_ALEN];
2672
+ __u8 addr[][ETH_ALEN];
26702673 };
26712674
26722675 #define MWL8K_ENABLE_RX_DIRECTED 0x0001
....@@ -2953,7 +2956,7 @@
29532956 struct mwl8k_cmd_set_beacon {
29542957 struct mwl8k_cmd_pkt header;
29552958 __le16 beacon_len;
2956
- __u8 beacon[0];
2959
+ __u8 beacon[];
29572960 };
29582961
29592962 static int mwl8k_cmd_set_beacon(struct ieee80211_hw *hw,
....@@ -4628,16 +4631,16 @@
46284631 return IRQ_HANDLED;
46294632 }
46304633
4631
-static void mwl8k_tx_poll(unsigned long data)
4634
+static void mwl8k_tx_poll(struct tasklet_struct *t)
46324635 {
4633
- struct ieee80211_hw *hw = (struct ieee80211_hw *)data;
4634
- struct mwl8k_priv *priv = hw->priv;
4636
+ struct mwl8k_priv *priv = from_tasklet(priv, t, poll_tx_task);
4637
+ struct ieee80211_hw *hw = pci_get_drvdata(priv->pdev);
46354638 int limit;
46364639 int i;
46374640
46384641 limit = 32;
46394642
4640
- spin_lock_bh(&priv->tx_lock);
4643
+ spin_lock(&priv->tx_lock);
46414644
46424645 for (i = 0; i < mwl8k_tx_queues(priv); i++)
46434646 limit -= mwl8k_txq_reclaim(hw, i, limit, 0);
....@@ -4647,7 +4650,7 @@
46474650 priv->tx_wait = NULL;
46484651 }
46494652
4650
- spin_unlock_bh(&priv->tx_lock);
4653
+ spin_unlock(&priv->tx_lock);
46514654
46524655 if (limit) {
46534656 writel(~MWL8K_A2H_INT_TX_DONE,
....@@ -4657,10 +4660,10 @@
46574660 }
46584661 }
46594662
4660
-static void mwl8k_rx_poll(unsigned long data)
4663
+static void mwl8k_rx_poll(struct tasklet_struct *t)
46614664 {
4662
- struct ieee80211_hw *hw = (struct ieee80211_hw *)data;
4663
- struct mwl8k_priv *priv = hw->priv;
4665
+ struct mwl8k_priv *priv = from_tasklet(priv, t, poll_rx_task);
4666
+ struct ieee80211_hw *hw = pci_get_drvdata(priv->pdev);
46644667 int limit;
46654668
46664669 limit = 32;
....@@ -5518,7 +5521,7 @@
55185521 rc = -EBUSY;
55195522 break;
55205523 }
5521
- ieee80211_start_tx_ba_cb_irqsafe(vif, addr, tid);
5524
+ rc = IEEE80211_AMPDU_TX_START_IMMEDIATE;
55225525 break;
55235526 case IEEE80211_AMPDU_TX_STOP_CONT:
55245527 case IEEE80211_AMPDU_TX_STOP_FLUSH:
....@@ -6118,9 +6121,9 @@
61186121 INIT_WORK(&priv->fw_reload, mwl8k_hw_restart_work);
61196122
61206123 /* TX reclaim and RX tasklets. */
6121
- tasklet_init(&priv->poll_tx_task, mwl8k_tx_poll, (unsigned long)hw);
6124
+ tasklet_setup(&priv->poll_tx_task, mwl8k_tx_poll);
61226125 tasklet_disable(&priv->poll_tx_task);
6123
- tasklet_init(&priv->poll_rx_task, mwl8k_rx_poll, (unsigned long)hw);
6126
+ tasklet_setup(&priv->poll_rx_task, mwl8k_rx_poll);
61246127 tasklet_disable(&priv->poll_rx_task);
61256128
61266129 /* Power management cookie */