Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

wifi: mt76: initialize more wcid fields mt76_wcid_init

Reduces code duplication and ensures that the phy index is always set.

Link: https://patch.msgid.link/20250102163508.52945-6-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name>

+18 -31
+8 -4
drivers/net/wireless/mediatek/mt76/mac80211.c
··· 742 742 int ret; 743 743 744 744 dev_set_drvdata(dev->dev, dev); 745 - mt76_wcid_init(&dev->global_wcid); 745 + mt76_wcid_init(&dev->global_wcid, phy->band_idx); 746 746 ret = mt76_phy_init(phy, hw); 747 747 if (ret) 748 748 return ret; ··· 1494 1494 ewma_signal_init(&wcid->rssi); 1495 1495 if (phy->band_idx == MT_BAND1) 1496 1496 mt76_wcid_mask_set(dev->wcid_phy_mask, wcid->idx); 1497 - wcid->phy_idx = phy->band_idx; 1498 1497 rcu_assign_pointer(dev->wcid[wcid->idx], wcid); 1499 1498 phy->num_sta++; 1500 1499 1501 - mt76_wcid_init(wcid); 1500 + mt76_wcid_init(wcid, phy->band_idx); 1502 1501 out: 1503 1502 mutex_unlock(&dev->mutex); 1504 1503 ··· 1587 1588 } 1588 1589 EXPORT_SYMBOL_GPL(mt76_sta_pre_rcu_remove); 1589 1590 1590 - void mt76_wcid_init(struct mt76_wcid *wcid) 1591 + void mt76_wcid_init(struct mt76_wcid *wcid, u8 band_idx) 1591 1592 { 1593 + wcid->hw_key_idx = -1; 1594 + wcid->phy_idx = band_idx; 1595 + 1592 1596 INIT_LIST_HEAD(&wcid->tx_list); 1593 1597 skb_queue_head_init(&wcid->tx_pending); 1594 1598 skb_queue_head_init(&wcid->tx_offchannel); 1595 1599 1596 1600 INIT_LIST_HEAD(&wcid->list); 1597 1601 idr_init(&wcid->pktid); 1602 + 1603 + INIT_LIST_HEAD(&wcid->poll_list); 1598 1604 } 1599 1605 EXPORT_SYMBOL_GPL(mt76_wcid_init); 1600 1606
+1 -1
drivers/net/wireless/mediatek/mt76/mt76.h
··· 1764 1764 return txwi; 1765 1765 } 1766 1766 1767 - void mt76_wcid_init(struct mt76_wcid *wcid); 1767 + void mt76_wcid_init(struct mt76_wcid *wcid, u8 band_idx); 1768 1768 void mt76_wcid_cleanup(struct mt76_dev *dev, struct mt76_wcid *wcid); 1769 1769 void mt76_wcid_add_poll(struct mt76_dev *dev, struct mt76_wcid *wcid); 1770 1770
+1 -3
drivers/net/wireless/mediatek/mt76/mt7603/main.c
··· 66 66 67 67 idx = MT7603_WTBL_RESERVED - 1 - mvif->idx; 68 68 dev->mt76.vif_mask |= BIT_ULL(mvif->idx); 69 - INIT_LIST_HEAD(&mvif->sta.wcid.poll_list); 70 69 mvif->sta.wcid.idx = idx; 71 - mvif->sta.wcid.hw_key_idx = -1; 72 70 mvif->sta.vif = mvif; 73 - mt76_wcid_init(&mvif->sta.wcid); 71 + mt76_wcid_init(&mvif->sta.wcid, 0); 74 72 75 73 eth_broadcast_addr(bc_addr); 76 74 mt7603_wtbl_init(dev, idx, mvif->idx, bc_addr);
+1 -3
drivers/net/wireless/mediatek/mt76/mt7615/main.c
··· 225 225 226 226 INIT_LIST_HEAD(&mvif->sta.wcid.poll_list); 227 227 mvif->sta.wcid.idx = idx; 228 - mvif->sta.wcid.phy_idx = mvif->mt76.band_idx; 229 - mvif->sta.wcid.hw_key_idx = -1; 230 - mt76_wcid_init(&mvif->sta.wcid); 228 + mt76_wcid_init(&mvif->sta.wcid, mvif->mt76.band_idx); 231 229 232 230 mt7615_mac_wtbl_update(dev, idx, 233 231 MT_WTBL_UPDATE_ADM_COUNT_CLEAR);
+1 -2
drivers/net/wireless/mediatek/mt76/mt76x02_util.c
··· 287 287 288 288 mvif->idx = idx; 289 289 mvif->group_wcid.idx = MT_VIF_WCID(idx); 290 - mvif->group_wcid.hw_key_idx = -1; 291 - mt76_wcid_init(&mvif->group_wcid); 290 + mt76_wcid_init(&mvif->group_wcid, 0); 292 291 293 292 mtxq = (struct mt76_txq *)vif->txq->drv_priv; 294 293 rcu_assign_pointer(dev->mt76.wcid[MT_VIF_WCID(idx)], &mvif->group_wcid);
+1 -4
drivers/net/wireless/mediatek/mt76/mt7915/main.c
··· 253 253 } 254 254 255 255 INIT_LIST_HEAD(&mvif->sta.rc_list); 256 - INIT_LIST_HEAD(&mvif->sta.wcid.poll_list); 257 256 mvif->sta.wcid.idx = idx; 258 - mvif->sta.wcid.phy_idx = ext_phy; 259 - mvif->sta.wcid.hw_key_idx = -1; 260 257 mvif->sta.wcid.tx_info |= MT_WCID_TX_INFO_SET; 261 - mt76_wcid_init(&mvif->sta.wcid); 258 + mt76_wcid_init(&mvif->sta.wcid, phy->mt76->band_idx); 262 259 263 260 mt7915_mac_wtbl_update(dev, idx, 264 261 MT_WTBL_UPDATE_ADM_COUNT_CLEAR);
+1 -3
drivers/net/wireless/mediatek/mt76/mt7921/main.c
··· 325 325 326 326 INIT_LIST_HEAD(&mvif->sta.deflink.wcid.poll_list); 327 327 mvif->sta.deflink.wcid.idx = idx; 328 - mvif->sta.deflink.wcid.phy_idx = mvif->bss_conf.mt76.band_idx; 329 - mvif->sta.deflink.wcid.hw_key_idx = -1; 330 328 mvif->sta.deflink.wcid.tx_info |= MT_WCID_TX_INFO_SET; 331 - mt76_wcid_init(&mvif->sta.deflink.wcid); 329 + mt76_wcid_init(&mvif->sta.deflink.wcid, mvif->bss_conf.mt76.band_idx); 332 330 333 331 mt7921_mac_wtbl_update(dev, idx, 334 332 MT_WTBL_UPDATE_ADM_COUNT_CLEAR);
+3 -7
drivers/net/wireless/mediatek/mt76/mt7925/main.c
··· 378 378 379 379 idx = MT792x_WTBL_RESERVED - mconf->mt76.idx; 380 380 381 - INIT_LIST_HEAD(&mlink->wcid.poll_list); 382 381 mlink->wcid.idx = idx; 383 - mlink->wcid.phy_idx = 0; 384 - mlink->wcid.hw_key_idx = -1; 385 382 mlink->wcid.tx_info |= MT_WCID_TX_INFO_SET; 386 - mt76_wcid_init(&mlink->wcid); 383 + mt76_wcid_init(&mlink->wcid, 0); 387 384 388 385 mt7925_mac_wtbl_update(dev, idx, 389 386 MT_WTBL_UPDATE_ADM_COUNT_CLEAR); ··· 847 850 return -ENOSPC; 848 851 849 852 mconf = mt792x_vif_to_link(mvif, link_id); 850 - INIT_LIST_HEAD(&mlink->wcid.poll_list); 853 + mt76_wcid_init(&mlink->wcid, 0); 851 854 mlink->wcid.sta = 1; 852 855 mlink->wcid.idx = idx; 853 - mlink->wcid.phy_idx = 0; 854 856 mlink->wcid.tx_info |= MT_WCID_TX_INFO_SET; 855 857 mlink->last_txs = jiffies; 856 858 mlink->wcid.link_id = link_sta->link_id; ··· 859 863 wcid = &mlink->wcid; 860 864 ewma_signal_init(&wcid->rssi); 861 865 rcu_assign_pointer(dev->mt76.wcid[wcid->idx], wcid); 862 - mt76_wcid_init(wcid); 866 + mt76_wcid_init(wcid, 0); 863 867 ewma_avg_signal_init(&mlink->avg_ack_signal); 864 868 memset(mlink->airtime_ac, 0, 865 869 sizeof(msta->deflink.airtime_ac));
+1 -4
drivers/net/wireless/mediatek/mt76/mt7996/main.c
··· 214 214 idx = MT7996_WTBL_RESERVED - mlink->mt76.idx; 215 215 216 216 INIT_LIST_HEAD(&mlink->sta.rc_list); 217 - INIT_LIST_HEAD(&mlink->sta.wcid.poll_list); 218 217 mlink->sta.wcid.idx = idx; 219 - mlink->sta.wcid.phy_idx = band_idx; 220 - mlink->sta.wcid.hw_key_idx = -1; 221 218 mlink->sta.wcid.tx_info |= MT_WCID_TX_INFO_SET; 222 - mt76_wcid_init(&mlink->sta.wcid); 219 + mt76_wcid_init(&mlink->sta.wcid, band_idx); 223 220 224 221 mt7996_mac_wtbl_update(dev, idx, 225 222 MT_WTBL_UPDATE_ADM_COUNT_CLEAR);