OSDN Git Service

mt76: mt7915: introduce mt76_vif in mt7915_vif
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 14 Dec 2021 10:41:06 +0000 (11:41 +0100)
committerFelix Fietkau <nbd@nbd.name>
Sun, 19 Dec 2021 14:24:04 +0000 (15:24 +0100)
Align mt7915_vif layout to mt7921_vif and mt7615_vif

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
drivers/net/wireless/mediatek/mt76/mt7915/main.c
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h

index a15aa25..4c5a572 100644 (file)
@@ -355,8 +355,8 @@ mt7915_sta_hw_queue_read(void *data, struct ieee80211_sta *sta)
                qlen = mt76_get_field(dev, MT_PLE_BASE + MT_FL_Q3_CTRL,
                                      GENMASK(11, 0));
                seq_printf(s, "\tSTA %pM wcid %d: AC%d%d queued:%d\n",
-                          sta->addr, msta->wcid.idx, msta->vif->wmm_idx,
-                          ac, qlen);
+                          sta->addr, msta->wcid.idx,
+                          msta->vif->mt76.wmm_idx, ac, qlen);
        }
 }
 
index f25b36f..48f1155 100644 (file)
@@ -1149,8 +1149,8 @@ void mt7915_mac_write_txwi(struct mt7915_dev *dev, __le32 *txwi,
        if (vif) {
                struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
 
-               omac_idx = mvif->omac_idx;
-               wmm_idx = mvif->wmm_idx;
+               omac_idx = mvif->mt76.omac_idx;
+               wmm_idx = mvif->mt76.wmm_idx;
        }
 
        if (ext_phy && dev->mt76.phy2)
@@ -1286,7 +1286,7 @@ int mt7915_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
        if (vif) {
                struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
 
-               txp->bss_idx = mvif->idx;
+               txp->bss_idx = mvif->mt76.idx;
        }
 
        txp->token = cpu_to_le16(id);
index 31fceee..8ac6f59 100644 (file)
@@ -203,8 +203,8 @@ static int mt7915_add_interface(struct ieee80211_hw *hw,
            is_zero_ether_addr(vif->addr))
                phy->monitor_vif = vif;
 
-       mvif->idx = ffs(~dev->mt76.vif_mask) - 1;
-       if (mvif->idx >= MT7915_MAX_INTERFACES) {
+       mvif->mt76.idx = ffs(~dev->mt76.vif_mask) - 1;
+       if (mvif->mt76.idx >= MT7915_MAX_INTERFACES) {
                ret = -ENOSPC;
                goto out;
        }
@@ -214,27 +214,27 @@ static int mt7915_add_interface(struct ieee80211_hw *hw,
                ret = -ENOSPC;
                goto out;
        }
-       mvif->omac_idx = idx;
+       mvif->mt76.omac_idx = idx;
        mvif->phy = phy;
-       mvif->band_idx = ext_phy;
+       mvif->mt76.band_idx = ext_phy;
 
-       mvif->wmm_idx = vif->type != NL80211_IFTYPE_AP;
+       mvif->mt76.wmm_idx = vif->type != NL80211_IFTYPE_AP;
        if (ext_phy)
-               mvif->wmm_idx += 2;
+               mvif->mt76.wmm_idx += 2;
 
        ret = mt7915_mcu_add_dev_info(phy, vif, true);
        if (ret)
                goto out;
 
-       dev->mt76.vif_mask |= BIT(mvif->idx);
-       phy->omac_mask |= BIT_ULL(mvif->omac_idx);
+       dev->mt76.vif_mask |= BIT(mvif->mt76.idx);
+       phy->omac_mask |= BIT_ULL(mvif->mt76.omac_idx);
 
-       idx = MT7915_WTBL_RESERVED - mvif->idx;
+       idx = MT7915_WTBL_RESERVED - mvif->mt76.idx;
 
        INIT_LIST_HEAD(&mvif->sta.rc_list);
        INIT_LIST_HEAD(&mvif->sta.poll_list);
        mvif->sta.wcid.idx = idx;
-       mvif->sta.wcid.ext_phy = mvif->band_idx;
+       mvif->sta.wcid.ext_phy = mvif->mt76.band_idx;
        mvif->sta.wcid.hw_key_idx = -1;
        mvif->sta.wcid.tx_info |= MT_WCID_TX_INFO_SET;
        mt76_packet_id_init(&mvif->sta.wcid);
@@ -249,7 +249,7 @@ static int mt7915_add_interface(struct ieee80211_hw *hw,
        }
 
        if (vif->type != NL80211_IFTYPE_AP &&
-           (!mvif->omac_idx || mvif->omac_idx > 3))
+           (!mvif->mt76.omac_idx || mvif->mt76.omac_idx > 3))
                vif->offload_flags = 0;
        vif->offload_flags |= IEEE80211_OFFLOAD_ENCAP_4ADDR;
 
@@ -286,8 +286,8 @@ static void mt7915_remove_interface(struct ieee80211_hw *hw,
        rcu_assign_pointer(dev->mt76.wcid[idx], NULL);
 
        mutex_lock(&dev->mt76.mutex);
-       dev->mt76.vif_mask &= ~BIT(mvif->idx);
-       phy->omac_mask &= ~BIT_ULL(mvif->omac_idx);
+       dev->mt76.vif_mask &= ~BIT(mvif->mt76.idx);
+       phy->omac_mask &= ~BIT_ULL(mvif->mt76.omac_idx);
        mutex_unlock(&dev->mt76.mutex);
 
        spin_lock_bh(&dev->sta_poll_lock);
@@ -576,7 +576,7 @@ mt7915_update_bss_color(struct ieee80211_hw *hw,
        case NL80211_IFTYPE_AP: {
                struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
 
-               if (mvif->omac_idx > HW_BSSID_MAX)
+               if (mvif->mt76.omac_idx > HW_BSSID_MAX)
                        return;
                fallthrough;
        }
@@ -675,7 +675,7 @@ int mt7915_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
        msta->vif = mvif;
        msta->wcid.sta = 1;
        msta->wcid.idx = idx;
-       msta->wcid.ext_phy = mvif->band_idx;
+       msta->wcid.ext_phy = mvif->mt76.band_idx;
        msta->wcid.tx_info |= MT_WCID_TX_INFO_SET;
        msta->jiffies = jiffies;
 
@@ -858,7 +858,8 @@ u64 __mt7915_get_tsf(struct ieee80211_hw *hw, struct mt7915_vif *mvif)
 
        lockdep_assert_held(&dev->mt76.mutex);
 
-       n = mvif->omac_idx > HW_BSSID_MAX ? HW_BSSID_0 : mvif->omac_idx;
+       n = mvif->mt76.omac_idx > HW_BSSID_MAX ? HW_BSSID_0
+                                              : mvif->mt76.omac_idx;
        /* TSF software read */
        mt76_rmw(dev, MT_LPON_TCR(band, n), MT_LPON_TCR_SW_MODE,
                 MT_LPON_TCR_SW_READ);
@@ -898,7 +899,8 @@ mt7915_set_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 
        mutex_lock(&dev->mt76.mutex);
 
-       n = mvif->omac_idx > HW_BSSID_MAX ? HW_BSSID_0 : mvif->omac_idx;
+       n = mvif->mt76.omac_idx > HW_BSSID_MAX ? HW_BSSID_0
+                                              : mvif->mt76.omac_idx;
        mt76_wr(dev, MT_LPON_UTTR0(band), tsf.t32[0]);
        mt76_wr(dev, MT_LPON_UTTR1(band), tsf.t32[1]);
        /* TSF software overwrite */
@@ -924,7 +926,8 @@ mt7915_offset_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 
        mutex_lock(&dev->mt76.mutex);
 
-       n = mvif->omac_idx > HW_BSSID_MAX ? HW_BSSID_0 : mvif->omac_idx;
+       n = mvif->mt76.omac_idx > HW_BSSID_MAX ? HW_BSSID_0
+                                              : mvif->mt76.omac_idx;
        mt76_wr(dev, MT_LPON_UTTR0(band), tsf.t32[0]);
        mt76_wr(dev, MT_LPON_UTTR1(band), tsf.t32[1]);
        /* TSF software adjust*/
@@ -1215,7 +1218,7 @@ static void mt7915_ethtool_worker(void *wi_data, struct ieee80211_sta *sta)
        struct mt76_ethtool_worker_info *wi = wi_data;
        struct mt7915_sta *msta = (struct mt7915_sta *)sta->drv_priv;
 
-       if (msta->vif->idx != wi->idx)
+       if (msta->vif->mt76.idx != wi->idx)
                return;
 
        mt76_ethtool_worker(wi, &msta->stats);
@@ -1231,7 +1234,7 @@ void mt7915_get_et_stats(struct ieee80211_hw *hw,
        struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
        struct mt76_ethtool_worker_info wi = {
                .data = data,
-               .idx = mvif->idx,
+               .idx = mvif->mt76.idx,
        };
        struct mib_stats *mib = &phy->mib;
        /* See mt7915_ampdu_stat_read_phy, etc */
index 414bee0..a03dafd 100644 (file)
@@ -582,10 +582,10 @@ mt7915_mcu_alloc_sta_req(struct mt7915_dev *dev, struct mt7915_vif *mvif,
                         struct mt7915_sta *msta, int len)
 {
        struct sta_req_hdr hdr = {
-               .bss_idx = mvif->idx,
+               .bss_idx = mvif->mt76.idx,
                .wlan_idx_lo = msta ? to_wcid_lo(msta->wcid.idx) : 0,
                .wlan_idx_hi = msta ? to_wcid_hi(msta->wcid.idx) : 0,
-               .muar_idx = msta && msta->wcid.sta ? mvif->omac_idx : 0xe,
+               .muar_idx = msta && msta->wcid.sta ? mvif->mt76.omac_idx : 0xe,
                .is_tlv_append = 1,
        };
        struct sk_buff *skb;
@@ -725,7 +725,7 @@ mt7915_mcu_bss_basic_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,
        bss->network_type = cpu_to_le32(type);
        bss->bmc_wcid_lo = to_wcid_lo(wlan_idx);
        bss->bmc_wcid_hi = to_wcid_hi(wlan_idx);
-       bss->wmm_idx = mvif->wmm_idx;
+       bss->wmm_idx = mvif->mt76.wmm_idx;
        bss->active = enable;
 
        if (vif->type != NL80211_IFTYPE_MONITOR) {
@@ -769,10 +769,11 @@ mt7915_mcu_bss_omac_tlv(struct sk_buff *skb, struct ieee80211_vif *vif)
        }
 
        omac = (struct bss_info_omac *)tlv;
-       idx = mvif->omac_idx > EXT_BSSID_START ? HW_BSSID_0 : mvif->omac_idx;
+       idx = mvif->mt76.omac_idx > EXT_BSSID_START ? HW_BSSID_0
+                                                   : mvif->mt76.omac_idx;
        omac->conn_type = cpu_to_le32(type);
-       omac->omac_idx = mvif->omac_idx;
-       omac->band_idx = mvif->band_idx;
+       omac->omac_idx = mvif->mt76.omac_idx;
+       omac->band_idx = mvif->mt76.band_idx;
        omac->hw_bss_idx = idx;
 }
 
@@ -937,7 +938,7 @@ mt7915_mcu_bss_ext_tlv(struct sk_buff *skb, struct mt7915_vif *mvif)
        int ext_bss_idx, tsf_offset;
        struct tlv *tlv;
 
-       ext_bss_idx = mvif->omac_idx - EXT_BSSID_START;
+       ext_bss_idx = mvif->mt76.omac_idx - EXT_BSSID_START;
        if (ext_bss_idx < 0)
                return;
 
@@ -973,7 +974,7 @@ mt7915_mcu_muar_config(struct mt7915_phy *phy, struct ieee80211_vif *vif,
 {
        struct mt7915_dev *dev = phy->dev;
        struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
-       u32 idx = mvif->omac_idx - REPEATER_BSSID_START;
+       u32 idx = mvif->mt76.omac_idx - REPEATER_BSSID_START;
        u32 mask = phy->omac_mask >> 32 & ~BIT(idx);
        const u8 *addr = vif->addr;
        struct {
@@ -1011,7 +1012,7 @@ int mt7915_mcu_add_bss_info(struct mt7915_phy *phy,
        struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
        struct sk_buff *skb;
 
-       if (mvif->omac_idx >= REPEATER_BSSID_START) {
+       if (mvif->mt76.omac_idx >= REPEATER_BSSID_START) {
                mt7915_mcu_muar_config(phy, vif, false, enable);
                mt7915_mcu_muar_config(phy, vif, true, enable);
        }
@@ -1039,8 +1040,8 @@ int mt7915_mcu_add_bss_info(struct mt7915_phy *phy,
                if (vif->bss_conf.he_support)
                        mt7915_mcu_bss_he_tlv(skb, vif, phy);
 
-               if (mvif->omac_idx >= EXT_BSSID_START &&
-                   mvif->omac_idx < REPEATER_BSSID_START)
+               if (mvif->mt76.omac_idx >= EXT_BSSID_START &&
+                   mvif->mt76.omac_idx < REPEATER_BSSID_START)
                        mt7915_mcu_bss_ext_tlv(skb, mvif);
        }
 out:
@@ -1265,7 +1266,7 @@ mt7915_mcu_wtbl_generic_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,
        if (sta) {
                memcpy(generic->peer_addr, sta->addr, ETH_ALEN);
                generic->partial_aid = cpu_to_le16(sta->aid);
-               generic->muar_idx = mvif->omac_idx;
+               generic->muar_idx = mvif->mt76.omac_idx;
                generic->qos = sta->wme;
        } else {
                /* use BSSID in station mode */
@@ -1928,7 +1929,7 @@ mt7915_mcu_sta_bfer_tlv(struct mt7915_dev *dev, struct sk_buff *skb,
 {
        struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
        struct mt7915_phy *phy =
-               mvif->band_idx ? mt7915_ext_phy(dev) : &dev->phy;
+               mvif->mt76.band_idx ? mt7915_ext_phy(dev) : &dev->phy;
        int tx_ant = hweight8(phy->mt76->chainmask) - 1;
        struct sta_rec_bf *bf;
        struct tlv *tlv;
@@ -1995,7 +1996,7 @@ mt7915_mcu_sta_bfee_tlv(struct mt7915_dev *dev, struct sk_buff *skb,
 {
        struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
        struct mt7915_phy *phy =
-               mvif->band_idx ? mt7915_ext_phy(dev) : &dev->phy;
+               mvif->mt76.band_idx ? mt7915_ext_phy(dev) : &dev->phy;
        int tx_ant = hweight8(phy->mt76->chainmask) - 1;
        struct sta_rec_bfee *bfee;
        struct tlv *tlv;
@@ -2349,7 +2350,7 @@ mt7915_mcu_add_group(struct mt7915_dev *dev, struct ieee80211_vif *vif,
                u8 rsv1[8];
        } __packed req = {
                .action = cpu_to_le32(MT_STA_BSS_GROUP),
-               .val = cpu_to_le32(mvif->idx % 16),
+               .val = cpu_to_le32(mvif->mt76.idx % 16),
        };
 
        msta = sta ? (struct mt7915_sta *)sta->drv_priv : &mvif->sta;
@@ -2437,8 +2438,8 @@ int mt7915_mcu_add_dev_info(struct mt7915_phy *phy,
                } __packed tlv;
        } data = {
                .hdr = {
-                       .omac_idx = mvif->omac_idx,
-                       .dbdc_idx = mvif->band_idx,
+                       .omac_idx = mvif->mt76.omac_idx,
+                       .dbdc_idx = mvif->mt76.band_idx,
                        .tlv_num = cpu_to_le16(1),
                        .is_tlv_append = 1,
                },
@@ -2446,11 +2447,11 @@ int mt7915_mcu_add_dev_info(struct mt7915_phy *phy,
                        .tag = cpu_to_le16(DEV_INFO_ACTIVE),
                        .len = cpu_to_le16(sizeof(struct req_tlv)),
                        .active = enable,
-                       .dbdc_idx = mvif->band_idx,
+                       .dbdc_idx = mvif->mt76.band_idx,
                },
        };
 
-       if (mvif->omac_idx >= REPEATER_BSSID_START)
+       if (mvif->mt76.omac_idx >= REPEATER_BSSID_START)
                return mt7915_mcu_muar_config(phy, vif, false, enable);
 
        memcpy(data.tlv.omac_addr, vif->addr, ETH_ALEN);
@@ -2622,7 +2623,7 @@ int mt7915_mcu_add_beacon(struct ieee80211_hw *hw,
                return -EINVAL;
        }
 
-       if (mvif->band_idx) {
+       if (mvif->mt76.band_idx) {
                info = IEEE80211_SKB_CB(skb);
                info->hw_queue |= MT_TX_HW_QUEUE_EXT_PHY;
        }
@@ -3243,7 +3244,7 @@ int mt7915_mcu_set_tx(struct mt7915_dev *dev, struct ieee80211_vif *vif)
                struct edca *e = &req.edca[ac];
 
                e->set = WMM_PARAM_SET;
-               e->queue = ac + mvif->wmm_idx * MT7915_MAX_WMM_SETS;
+               e->queue = ac + mvif->mt76.wmm_idx * MT7915_MAX_WMM_SETS;
                e->aifs = q->aifs;
                e->txop = cpu_to_le16(q->txop);
 
@@ -4048,7 +4049,7 @@ int mt7915_mcu_add_obss_spr(struct mt7915_dev *dev, struct ieee80211_vif *vif,
        } __packed req = {
                .action = MT_SPR_ENABLE,
                .arg_num = 1,
-               .band_idx = mvif->band_idx,
+               .band_idx = mvif->mt76.band_idx,
                .val = cpu_to_le32(enable),
        };
 
@@ -4069,7 +4070,7 @@ int mt7915_mcu_get_rx_rate(struct mt7915_phy *phy, struct ieee80211_vif *vif,
                __le16 wcid;
        } __packed req = {
                .category = MCU_PHY_STATE_CONTENTION_RX_RATE,
-               .band = mvif->band_idx,
+               .band = mvif->mt76.band_idx,
                .wcid = cpu_to_le16(msta->wcid.idx),
        };
        struct ieee80211_supported_band *sband;
@@ -4209,11 +4210,11 @@ int mt7915_mcu_twt_agrt_update(struct mt7915_dev *dev,
        } __packed req = {
                .tbl_idx = flow->table_id,
                .cmd = cmd,
-               .own_mac_idx = mvif->omac_idx,
+               .own_mac_idx = mvif->mt76.omac_idx,
                .flowid = flow->id,
                .peer_id = cpu_to_le16(flow->wcid),
                .duration = flow->duration,
-               .bss_idx = mvif->idx,
+               .bss_idx = mvif->mt76.idx,
                .start_tsf = cpu_to_le64(flow->tsf),
                .mantissa = flow->mantissa,
                .exponent = flow->exp,
index 81138a2..7313a16 100644 (file)
@@ -124,10 +124,7 @@ struct mt7915_vif_cap {
 };
 
 struct mt7915_vif {
-       u16 idx;
-       u8 omac_idx;
-       u8 band_idx;
-       u8 wmm_idx;
+       struct mt76_vif mt76; /* must be first */
 
        struct mt7915_vif_cap cap;
        struct mt7915_sta sta;