> @@ -839,11 +840,18 @@ void mt7996_mac_write_txwi(struct mt7996_dev *dev, __le32 *txwi, > bool beacon = !!(changed & (BSS_CHANGED_BEACON | > BSS_CHANGED_BEACON_ENABLED)) && (!inband_disc); > > - mvif = vif ? (struct mt76_vif_link *)vif->drv_priv : NULL; > - if (mvif) { > - omac_idx = mvif->omac_idx; > - wmm_idx = mvif->wmm_idx; > - band_idx = mvif->band_idx; > + if (vif) { > + mvif = (struct mt7996_vif *)vif->drv_priv; > + if (wcid->offchannel) > + mlink = rcu_dereference(mvif->mt76.offchannel_link); need a RCU read lock? > + if (!mlink) > + mlink = &mvif->deflink.mt76; > + } > + > + if (mlink) { > + omac_idx = mlink->omac_idx; > + wmm_idx = mlink->wmm_idx; > + band_idx = mlink->band_idx; > } > > if (inband_disc) {