case NL80211_BAND_5GHZ:
                sband = &phy->sband_5g.sband;
                break;
+       case NL80211_BAND_6GHZ:
+               sband = &phy->sband_6g.sband;
+               break;
        default:
                return target_power;
        }
                142, 144, 149, 151, 153, 155, 157,
                159, 161, 165
        };
+       static const u8 chan_list_6ghz[] = {
+                 1,   3,   5,   7,   9,  11,  13,
+                15,  17,  19,  21,  23,  25,  27,
+                29,  33,  35,  37,  39,  41,  43,
+                45,  47,  49,  51,  53,  55,  57,
+                59,  61,  65,  67,  69,  71,  73,
+                75,  77,  79,  81,  83,  85,  87,
+                89,  91,  93,  97,  99, 101, 103,
+               105, 107, 109, 111, 113, 115, 117,
+               119, 121, 123, 125, 129, 131, 133,
+               135, 137, 139, 141, 143, 145, 147,
+               149, 151, 153, 155, 157, 161, 163,
+               165, 167, 169, 171, 173, 175, 177,
+               179, 181, 183, 185, 187, 189, 193,
+               195, 197, 199, 201, 203, 205, 207,
+               209, 211, 213, 215, 217, 219, 221,
+               225, 227, 229, 233
+       };
        int i, n_chan, batch_size, idx = 0, tx_power, last_ch;
        struct mt76_connac_sku_tlv sku_tlbv;
        struct mt76_power_limits limits;
        if (band == NL80211_BAND_2GHZ) {
                n_chan = ARRAY_SIZE(chan_list_2ghz);
                ch_list = chan_list_2ghz;
+       } else if (band == NL80211_BAND_6GHZ) {
+               n_chan = ARRAY_SIZE(chan_list_6ghz);
+               ch_list = chan_list_6ghz;
        } else {
                n_chan = ARRAY_SIZE(chan_list_5ghz);
                ch_list = chan_list_5ghz;
 
        if (!phy->cap.has_5ghz)
                last_ch = chan_list_2ghz[n_chan - 1];
+       else if (phy->cap.has_6ghz)
+               last_ch = chan_list_6ghz[n_chan - 1];
        else
                last_ch = chan_list_5ghz[n_chan - 1];
 
        for (i = 0; i < batch_size; i++) {
-               struct mt76_connac_tx_power_limit_tlv tx_power_tlv = {
-                       .band = band == NL80211_BAND_2GHZ ? 1 : 2,
-               };
+               struct mt76_connac_tx_power_limit_tlv tx_power_tlv = {};
                int j, err, msg_len, num_ch;
                struct sk_buff *skb;
 
                memcpy(tx_power_tlv.alpha2, dev->alpha2, sizeof(dev->alpha2));
                tx_power_tlv.n_chan = num_ch;
 
+               switch (band) {
+               case NL80211_BAND_2GHZ:
+                       tx_power_tlv.band = 1;
+                       break;
+               case NL80211_BAND_6GHZ:
+                       tx_power_tlv.band = 3;
+                       break;
+               default:
+                       tx_power_tlv.band = 2;
+                       break;
+               }
+
                for (j = 0; j < num_ch; j++, idx++) {
                        struct ieee80211_channel chan = {
                                .hw_value = ch_list[idx],
                if (err < 0)
                        return err;
        }
+       if (phy->cap.has_6ghz) {
+               err = mt76_connac_mcu_rate_txpower_band(phy,
+                                                       NL80211_BAND_6GHZ);
+               if (err < 0)
+                       return err;
+       }
 
        return 0;
 }