diff options
author | David S. Miller <davem@davemloft.net> | 2019-09-14 09:08:18 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-09-14 09:08:18 -0400 |
commit | a3d3c74da49c65fc63a937fa559186b0e16adca3 (patch) | |
tree | 946a98b1350387ee8c6ee8d6572864c838b20191 | |
parent | 1ba569fc2250b7717fcf3b943efe043c98c6a919 (diff) | |
parent | f9e568754562e0f506e12aa899c378b4155080e9 (diff) |
Merge tag 'wireless-drivers-next-for-davem-2019-09-14' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Kalle Valo says:
====================
wireless-drivers-next patches for 5.4
Last set of patches for 5.4. wil6210 and rtw88 being most active this
time, but ath9k also having a new module to load devices without
EEPROM.
Major changes:
wil6210
* add support for Enhanced Directional Multi-Gigabit (EDMG) channels 9-11
* add debugfs file to show PCM ring content
* report boottime_ns in scan results
ath9k
* add a separate loader for AR92XX (and older) pci(e) without eeprom
brcmfmac
* use the same wiphy after PCIe reset to not confuse the user space
rtw88
* enable interrupt migration
* enable AMSDU in AMPDU aggregation
* report RX power for each antenna
* enable to DPK and IQK calibration methods to improve performance
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
76 files changed, 8505 insertions, 3570 deletions
@@ -751,7 +751,7 @@ S: Santa Cruz, California | |||
751 | S: USA | 751 | S: USA |
752 | 752 | ||
753 | N: Luis Correia | 753 | N: Luis Correia |
754 | E: lfcorreia@users.sf.net | 754 | E: luisfcorreia@gmail.com |
755 | D: Ralink rt2x00 WLAN driver | 755 | D: Ralink rt2x00 WLAN driver |
756 | S: Belas, Portugal | 756 | S: Belas, Portugal |
757 | 757 | ||
diff --git a/drivers/bcma/sprom.c b/drivers/bcma/sprom.c index 206edd3ba668..bd2c923a6586 100644 --- a/drivers/bcma/sprom.c +++ b/drivers/bcma/sprom.c | |||
@@ -222,7 +222,7 @@ static void bcma_sprom_extract_r8(struct bcma_bus *bus, const u16 *sprom) | |||
222 | { | 222 | { |
223 | u16 v, o; | 223 | u16 v, o; |
224 | int i; | 224 | int i; |
225 | u16 pwr_info_offset[] = { | 225 | static const u16 pwr_info_offset[] = { |
226 | SSB_SROM8_PWR_INFO_CORE0, SSB_SROM8_PWR_INFO_CORE1, | 226 | SSB_SROM8_PWR_INFO_CORE0, SSB_SROM8_PWR_INFO_CORE1, |
227 | SSB_SROM8_PWR_INFO_CORE2, SSB_SROM8_PWR_INFO_CORE3 | 227 | SSB_SROM8_PWR_INFO_CORE2, SSB_SROM8_PWR_INFO_CORE3 |
228 | }; | 228 | }; |
@@ -578,9 +578,11 @@ int bcma_sprom_get(struct bcma_bus *bus) | |||
578 | { | 578 | { |
579 | u16 offset = BCMA_CC_SPROM; | 579 | u16 offset = BCMA_CC_SPROM; |
580 | u16 *sprom; | 580 | u16 *sprom; |
581 | size_t sprom_sizes[] = { SSB_SPROMSIZE_WORDS_R4, | 581 | static const size_t sprom_sizes[] = { |
582 | SSB_SPROMSIZE_WORDS_R10, | 582 | SSB_SPROMSIZE_WORDS_R4, |
583 | SSB_SPROMSIZE_WORDS_R11, }; | 583 | SSB_SPROMSIZE_WORDS_R10, |
584 | SSB_SPROMSIZE_WORDS_R11, | ||
585 | }; | ||
584 | int i, err = 0; | 586 | int i, err = 0; |
585 | 587 | ||
586 | if (!bus->drv_cc.core) | 588 | if (!bus->drv_cc.core) |
diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c index 83a7fb68fd24..53f1095de8ff 100644 --- a/drivers/net/wireless/ath/ath10k/htt_rx.c +++ b/drivers/net/wireless/ath/ath10k/htt_rx.c | |||
@@ -2151,6 +2151,10 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt, | |||
2151 | struct ath10k_peer *peer; | 2151 | struct ath10k_peer *peer; |
2152 | struct htt_rx_indication_mpdu_range *mpdu_ranges; | 2152 | struct htt_rx_indication_mpdu_range *mpdu_ranges; |
2153 | struct fw_rx_desc_hl *fw_desc; | 2153 | struct fw_rx_desc_hl *fw_desc; |
2154 | enum htt_txrx_sec_cast_type sec_index; | ||
2155 | enum htt_security_types sec_type; | ||
2156 | union htt_rx_pn_t new_pn = {0}; | ||
2157 | struct htt_hl_rx_desc *rx_desc; | ||
2154 | struct ieee80211_hdr *hdr; | 2158 | struct ieee80211_hdr *hdr; |
2155 | struct ieee80211_rx_status *rx_status; | 2159 | struct ieee80211_rx_status *rx_status; |
2156 | u16 peer_id; | 2160 | u16 peer_id; |
@@ -2158,9 +2162,11 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt, | |||
2158 | int num_mpdu_ranges; | 2162 | int num_mpdu_ranges; |
2159 | size_t tot_hdr_len; | 2163 | size_t tot_hdr_len; |
2160 | struct ieee80211_channel *ch; | 2164 | struct ieee80211_channel *ch; |
2161 | bool pn_invalid; | 2165 | bool pn_invalid, qos, first_msdu; |
2166 | u32 tid, rx_desc_info; | ||
2162 | 2167 | ||
2163 | peer_id = __le16_to_cpu(rx->hdr.peer_id); | 2168 | peer_id = __le16_to_cpu(rx->hdr.peer_id); |
2169 | tid = MS(rx->hdr.info0, HTT_RX_INDICATION_INFO0_EXT_TID); | ||
2164 | 2170 | ||
2165 | spin_lock_bh(&ar->data_lock); | 2171 | spin_lock_bh(&ar->data_lock); |
2166 | peer = ath10k_peer_find_by_id(ar, peer_id); | 2172 | peer = ath10k_peer_find_by_id(ar, peer_id); |
@@ -2168,6 +2174,9 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt, | |||
2168 | if (!peer && peer_id != HTT_INVALID_PEERID) | 2174 | if (!peer && peer_id != HTT_INVALID_PEERID) |
2169 | ath10k_warn(ar, "Got RX ind from invalid peer: %u\n", peer_id); | 2175 | ath10k_warn(ar, "Got RX ind from invalid peer: %u\n", peer_id); |
2170 | 2176 | ||
2177 | if (!peer) | ||
2178 | return true; | ||
2179 | |||
2171 | num_mpdu_ranges = MS(__le32_to_cpu(rx->hdr.info1), | 2180 | num_mpdu_ranges = MS(__le32_to_cpu(rx->hdr.info1), |
2172 | HTT_RX_INDICATION_INFO1_NUM_MPDU_RANGES); | 2181 | HTT_RX_INDICATION_INFO1_NUM_MPDU_RANGES); |
2173 | mpdu_ranges = htt_rx_ind_get_mpdu_ranges_hl(rx); | 2182 | mpdu_ranges = htt_rx_ind_get_mpdu_ranges_hl(rx); |
@@ -2192,10 +2201,24 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt, | |||
2192 | goto err; | 2201 | goto err; |
2193 | } | 2202 | } |
2194 | 2203 | ||
2195 | if (check_pn_type == HTT_RX_PN_CHECK) { | 2204 | rx_desc = (struct htt_hl_rx_desc *)&rx->mpdu_ranges[num_mpdu_ranges]; |
2205 | rx_desc_info = __le32_to_cpu(rx_desc->info); | ||
2206 | |||
2207 | if (MS(rx_desc_info, HTT_RX_DESC_HL_INFO_MCAST_BCAST)) | ||
2208 | sec_index = HTT_TXRX_SEC_MCAST; | ||
2209 | else | ||
2210 | sec_index = HTT_TXRX_SEC_UCAST; | ||
2211 | |||
2212 | sec_type = peer->rx_pn[sec_index].sec_type; | ||
2213 | first_msdu = rx->fw_desc.flags & FW_RX_DESC_FLAGS_FIRST_MSDU; | ||
2214 | |||
2215 | ath10k_htt_rx_mpdu_desc_pn_hl(rx_desc, &new_pn, peer->rx_pn[sec_index].pn_len); | ||
2216 | |||
2217 | if (check_pn_type == HTT_RX_PN_CHECK && tid >= IEEE80211_NUM_TIDS) { | ||
2196 | spin_lock_bh(&ar->data_lock); | 2218 | spin_lock_bh(&ar->data_lock); |
2197 | pn_invalid = ath10k_htt_rx_pn_check_replay_hl(ar, peer, rx); | 2219 | pn_invalid = ath10k_htt_rx_pn_check_replay_hl(ar, peer, rx); |
2198 | spin_unlock_bh(&ar->data_lock); | 2220 | spin_unlock_bh(&ar->data_lock); |
2221 | |||
2199 | if (pn_invalid) | 2222 | if (pn_invalid) |
2200 | goto err; | 2223 | goto err; |
2201 | } | 2224 | } |
@@ -2211,6 +2234,7 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt, | |||
2211 | skb_pull(skb, tot_hdr_len); | 2234 | skb_pull(skb, tot_hdr_len); |
2212 | 2235 | ||
2213 | hdr = (struct ieee80211_hdr *)skb->data; | 2236 | hdr = (struct ieee80211_hdr *)skb->data; |
2237 | qos = ieee80211_is_data_qos(hdr->frame_control); | ||
2214 | rx_status = IEEE80211_SKB_RXCB(skb); | 2238 | rx_status = IEEE80211_SKB_RXCB(skb); |
2215 | rx_status->chains |= BIT(0); | 2239 | rx_status->chains |= BIT(0); |
2216 | if (rx->ppdu.combined_rssi == 0) { | 2240 | if (rx->ppdu.combined_rssi == 0) { |
@@ -2254,6 +2278,55 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt, | |||
2254 | rx_status->flag |= RX_FLAG_DECRYPTED | | 2278 | rx_status->flag |= RX_FLAG_DECRYPTED | |
2255 | RX_FLAG_IV_STRIPPED | | 2279 | RX_FLAG_IV_STRIPPED | |
2256 | RX_FLAG_MMIC_STRIPPED; | 2280 | RX_FLAG_MMIC_STRIPPED; |
2281 | |||
2282 | if (tid < IEEE80211_NUM_TIDS && | ||
2283 | first_msdu && | ||
2284 | check_pn_type == HTT_RX_PN_CHECK && | ||
2285 | (sec_type == HTT_SECURITY_AES_CCMP || | ||
2286 | sec_type == HTT_SECURITY_TKIP || | ||
2287 | sec_type == HTT_SECURITY_TKIP_NOMIC)) { | ||
2288 | u8 offset, *ivp, i; | ||
2289 | s8 keyidx = 0; | ||
2290 | __le64 pn48 = cpu_to_le64(new_pn.pn48); | ||
2291 | |||
2292 | hdr = (struct ieee80211_hdr *)skb->data; | ||
2293 | offset = ieee80211_hdrlen(hdr->frame_control); | ||
2294 | hdr->frame_control |= __cpu_to_le16(IEEE80211_FCTL_PROTECTED); | ||
2295 | rx_status->flag &= ~RX_FLAG_IV_STRIPPED; | ||
2296 | |||
2297 | memmove(skb->data - IEEE80211_CCMP_HDR_LEN, | ||
2298 | skb->data, offset); | ||
2299 | skb_push(skb, IEEE80211_CCMP_HDR_LEN); | ||
2300 | ivp = skb->data + offset; | ||
2301 | memset(skb->data + offset, 0, IEEE80211_CCMP_HDR_LEN); | ||
2302 | /* Ext IV */ | ||
2303 | ivp[IEEE80211_WEP_IV_LEN - 1] |= ATH10K_IEEE80211_EXTIV; | ||
2304 | |||
2305 | for (i = 0; i < ARRAY_SIZE(peer->keys); i++) { | ||
2306 | if (peer->keys[i] && | ||
2307 | peer->keys[i]->flags & IEEE80211_KEY_FLAG_PAIRWISE) | ||
2308 | keyidx = peer->keys[i]->keyidx; | ||
2309 | } | ||
2310 | |||
2311 | /* Key ID */ | ||
2312 | ivp[IEEE80211_WEP_IV_LEN - 1] |= keyidx << 6; | ||
2313 | |||
2314 | if (sec_type == HTT_SECURITY_AES_CCMP) { | ||
2315 | rx_status->flag |= RX_FLAG_MIC_STRIPPED; | ||
2316 | /* pn 0, pn 1 */ | ||
2317 | memcpy(skb->data + offset, &pn48, 2); | ||
2318 | /* pn 1, pn 3 , pn 34 , pn 5 */ | ||
2319 | memcpy(skb->data + offset + 4, ((u8 *)&pn48) + 2, 4); | ||
2320 | } else { | ||
2321 | rx_status->flag |= RX_FLAG_ICV_STRIPPED; | ||
2322 | /* TSC 0 */ | ||
2323 | memcpy(skb->data + offset + 2, &pn48, 1); | ||
2324 | /* TSC 1 */ | ||
2325 | memcpy(skb->data + offset, ((u8 *)&pn48) + 1, 1); | ||
2326 | /* TSC 2 , TSC 3 , TSC 4 , TSC 5*/ | ||
2327 | memcpy(skb->data + offset + 4, ((u8 *)&pn48) + 2, 4); | ||
2328 | } | ||
2329 | } | ||
2257 | } | 2330 | } |
2258 | 2331 | ||
2259 | if (tkip_mic_type == HTT_RX_TKIP_MIC) | 2332 | if (tkip_mic_type == HTT_RX_TKIP_MIC) |
@@ -2263,6 +2336,20 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt, | |||
2263 | if (mpdu_ranges->mpdu_range_status == HTT_RX_IND_MPDU_STATUS_TKIP_MIC_ERR) | 2336 | if (mpdu_ranges->mpdu_range_status == HTT_RX_IND_MPDU_STATUS_TKIP_MIC_ERR) |
2264 | rx_status->flag |= RX_FLAG_MMIC_ERROR; | 2337 | rx_status->flag |= RX_FLAG_MMIC_ERROR; |
2265 | 2338 | ||
2339 | if (!qos && tid < IEEE80211_NUM_TIDS) { | ||
2340 | u8 offset; | ||
2341 | __le16 qos_ctrl = 0; | ||
2342 | |||
2343 | hdr = (struct ieee80211_hdr *)skb->data; | ||
2344 | offset = ieee80211_hdrlen(hdr->frame_control); | ||
2345 | |||
2346 | hdr->frame_control |= cpu_to_le16(IEEE80211_STYPE_QOS_DATA); | ||
2347 | memmove(skb->data - IEEE80211_QOS_CTL_LEN, skb->data, offset); | ||
2348 | skb_push(skb, IEEE80211_QOS_CTL_LEN); | ||
2349 | qos_ctrl = cpu_to_le16(tid); | ||
2350 | memcpy(skb->data + offset, &qos_ctrl, IEEE80211_QOS_CTL_LEN); | ||
2351 | } | ||
2352 | |||
2266 | ieee80211_rx_ni(ar->hw, skb); | 2353 | ieee80211_rx_ni(ar->hw, skb); |
2267 | 2354 | ||
2268 | /* We have delivered the skb to the upper layers (mac80211) so we | 2355 | /* We have delivered the skb to the upper layers (mac80211) so we |
diff --git a/drivers/net/wireless/ath/ath10k/htt_tx.c b/drivers/net/wireless/ath/ath10k/htt_tx.c index 2ef717f18795..a182c0944cc7 100644 --- a/drivers/net/wireless/ath/ath10k/htt_tx.c +++ b/drivers/net/wireless/ath/ath10k/htt_tx.c | |||
@@ -1237,6 +1237,7 @@ static int ath10k_htt_tx_hl(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txm | |||
1237 | struct ath10k *ar = htt->ar; | 1237 | struct ath10k *ar = htt->ar; |
1238 | int res, data_len; | 1238 | int res, data_len; |
1239 | struct htt_cmd_hdr *cmd_hdr; | 1239 | struct htt_cmd_hdr *cmd_hdr; |
1240 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)msdu->data; | ||
1240 | struct htt_data_tx_desc *tx_desc; | 1241 | struct htt_data_tx_desc *tx_desc; |
1241 | struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(msdu); | 1242 | struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(msdu); |
1242 | struct sk_buff *tmp_skb; | 1243 | struct sk_buff *tmp_skb; |
@@ -1247,6 +1248,13 @@ static int ath10k_htt_tx_hl(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txm | |||
1247 | u16 flags1 = 0; | 1248 | u16 flags1 = 0; |
1248 | u16 msdu_id = 0; | 1249 | u16 msdu_id = 0; |
1249 | 1250 | ||
1251 | if ((ieee80211_is_action(hdr->frame_control) || | ||
1252 | ieee80211_is_deauth(hdr->frame_control) || | ||
1253 | ieee80211_is_disassoc(hdr->frame_control)) && | ||
1254 | ieee80211_has_protected(hdr->frame_control)) { | ||
1255 | skb_put(msdu, IEEE80211_CCMP_MIC_LEN); | ||
1256 | } | ||
1257 | |||
1250 | data_len = msdu->len; | 1258 | data_len = msdu->len; |
1251 | 1259 | ||
1252 | switch (txmode) { | 1260 | switch (txmode) { |
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 12dad659bf68..a6d21856b7e7 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c | |||
@@ -5503,10 +5503,6 @@ static void ath10k_remove_interface(struct ieee80211_hw *hw, | |||
5503 | 5503 | ||
5504 | mutex_lock(&ar->conf_mutex); | 5504 | mutex_lock(&ar->conf_mutex); |
5505 | 5505 | ||
5506 | spin_lock_bh(&ar->data_lock); | ||
5507 | ath10k_mac_vif_beacon_cleanup(arvif); | ||
5508 | spin_unlock_bh(&ar->data_lock); | ||
5509 | |||
5510 | ret = ath10k_spectral_vif_stop(arvif); | 5506 | ret = ath10k_spectral_vif_stop(arvif); |
5511 | if (ret) | 5507 | if (ret) |
5512 | ath10k_warn(ar, "failed to stop spectral for vdev %i: %d\n", | 5508 | ath10k_warn(ar, "failed to stop spectral for vdev %i: %d\n", |
@@ -5575,6 +5571,11 @@ static void ath10k_remove_interface(struct ieee80211_hw *hw, | |||
5575 | peer->vif = NULL; | 5571 | peer->vif = NULL; |
5576 | } | 5572 | } |
5577 | } | 5573 | } |
5574 | |||
5575 | /* Clean this up late, less opportunity for firmware to access | ||
5576 | * DMA memory we have deleted. | ||
5577 | */ | ||
5578 | ath10k_mac_vif_beacon_cleanup(arvif); | ||
5578 | spin_unlock_bh(&ar->data_lock); | 5579 | spin_unlock_bh(&ar->data_lock); |
5579 | 5580 | ||
5580 | ath10k_peer_cleanup(ar, arvif->vdev_id); | 5581 | ath10k_peer_cleanup(ar, arvif->vdev_id); |
diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c index 8ed4fbd8d6c3..9870d2d095c8 100644 --- a/drivers/net/wireless/ath/ath10k/sdio.c +++ b/drivers/net/wireless/ath/ath10k/sdio.c | |||
@@ -381,16 +381,11 @@ static int ath10k_sdio_mbox_rx_process_packet(struct ath10k *ar, | |||
381 | struct ath10k_htc_hdr *htc_hdr = (struct ath10k_htc_hdr *)skb->data; | 381 | struct ath10k_htc_hdr *htc_hdr = (struct ath10k_htc_hdr *)skb->data; |
382 | bool trailer_present = htc_hdr->flags & ATH10K_HTC_FLAG_TRAILER_PRESENT; | 382 | bool trailer_present = htc_hdr->flags & ATH10K_HTC_FLAG_TRAILER_PRESENT; |
383 | enum ath10k_htc_ep_id eid; | 383 | enum ath10k_htc_ep_id eid; |
384 | u16 payload_len; | ||
385 | u8 *trailer; | 384 | u8 *trailer; |
386 | int ret; | 385 | int ret; |
387 | 386 | ||
388 | payload_len = le16_to_cpu(htc_hdr->len); | ||
389 | skb->len = payload_len + sizeof(struct ath10k_htc_hdr); | ||
390 | |||
391 | if (trailer_present) { | 387 | if (trailer_present) { |
392 | trailer = skb->data + sizeof(*htc_hdr) + | 388 | trailer = skb->data + skb->len - htc_hdr->trailer_len; |
393 | payload_len - htc_hdr->trailer_len; | ||
394 | 389 | ||
395 | eid = pipe_id_to_eid(htc_hdr->eid); | 390 | eid = pipe_id_to_eid(htc_hdr->eid); |
396 | 391 | ||
@@ -632,13 +627,31 @@ static int ath10k_sdio_mbox_rx_packet(struct ath10k *ar, | |||
632 | { | 627 | { |
633 | struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); | 628 | struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); |
634 | struct sk_buff *skb = pkt->skb; | 629 | struct sk_buff *skb = pkt->skb; |
630 | struct ath10k_htc_hdr *htc_hdr; | ||
635 | int ret; | 631 | int ret; |
636 | 632 | ||
637 | ret = ath10k_sdio_readsb(ar, ar_sdio->mbox_info.htc_addr, | 633 | ret = ath10k_sdio_readsb(ar, ar_sdio->mbox_info.htc_addr, |
638 | skb->data, pkt->alloc_len); | 634 | skb->data, pkt->alloc_len); |
635 | if (ret) | ||
636 | goto out; | ||
637 | |||
638 | /* Update actual length. The original length may be incorrect, | ||
639 | * as the FW will bundle multiple packets as long as their sizes | ||
640 | * fit within the same aligned length (pkt->alloc_len). | ||
641 | */ | ||
642 | htc_hdr = (struct ath10k_htc_hdr *)skb->data; | ||
643 | pkt->act_len = le16_to_cpu(htc_hdr->len) + sizeof(*htc_hdr); | ||
644 | if (pkt->act_len > pkt->alloc_len) { | ||
645 | ath10k_warn(ar, "rx packet too large (%zu > %zu)\n", | ||
646 | pkt->act_len, pkt->alloc_len); | ||
647 | ret = -EMSGSIZE; | ||
648 | goto out; | ||
649 | } | ||
650 | |||
651 | skb_put(skb, pkt->act_len); | ||
652 | |||
653 | out: | ||
639 | pkt->status = ret; | 654 | pkt->status = ret; |
640 | if (!ret) | ||
641 | skb_put(skb, pkt->act_len); | ||
642 | 655 | ||
643 | return ret; | 656 | return ret; |
644 | } | 657 | } |
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c b/drivers/net/wireless/ath/ath10k/wmi-tlv.c index 2985bb17decd..4d5d10c01064 100644 --- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c +++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c | |||
@@ -841,7 +841,7 @@ static int ath10k_wmi_tlv_op_pull_ch_info_ev(struct ath10k *ar, | |||
841 | struct wmi_ch_info_ev_arg *arg) | 841 | struct wmi_ch_info_ev_arg *arg) |
842 | { | 842 | { |
843 | const void **tb; | 843 | const void **tb; |
844 | const struct wmi_chan_info_event *ev; | 844 | const struct wmi_tlv_chan_info_event *ev; |
845 | int ret; | 845 | int ret; |
846 | 846 | ||
847 | tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); | 847 | tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); |
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.h b/drivers/net/wireless/ath/ath10k/wmi-tlv.h index d691f06e58f2..649b229a41e9 100644 --- a/drivers/net/wireless/ath/ath10k/wmi-tlv.h +++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.h | |||
@@ -1615,6 +1615,22 @@ struct chan_info_params { | |||
1615 | 1615 | ||
1616 | #define WMI_TLV_FLAG_MGMT_BUNDLE_TX_COMPL BIT(9) | 1616 | #define WMI_TLV_FLAG_MGMT_BUNDLE_TX_COMPL BIT(9) |
1617 | 1617 | ||
1618 | struct wmi_tlv_chan_info_event { | ||
1619 | __le32 err_code; | ||
1620 | __le32 freq; | ||
1621 | __le32 cmd_flags; | ||
1622 | __le32 noise_floor; | ||
1623 | __le32 rx_clear_count; | ||
1624 | __le32 cycle_count; | ||
1625 | __le32 chan_tx_pwr_range; | ||
1626 | __le32 chan_tx_pwr_tp; | ||
1627 | __le32 rx_frame_count; | ||
1628 | __le32 my_bss_rx_cycle_count; | ||
1629 | __le32 rx_11b_mode_data_duration; | ||
1630 | __le32 tx_frame_cnt; | ||
1631 | __le32 mac_clk_mhz; | ||
1632 | } __packed; | ||
1633 | |||
1618 | struct wmi_tlv_mgmt_tx_compl_ev { | 1634 | struct wmi_tlv_mgmt_tx_compl_ev { |
1619 | __le32 desc_id; | 1635 | __le32 desc_id; |
1620 | __le32 status; | 1636 | __le32 status; |
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h index 838768c98adc..e80dbe7e8f4c 100644 --- a/drivers/net/wireless/ath/ath10k/wmi.h +++ b/drivers/net/wireless/ath/ath10k/wmi.h | |||
@@ -6533,14 +6533,6 @@ struct wmi_chan_info_event { | |||
6533 | __le32 noise_floor; | 6533 | __le32 noise_floor; |
6534 | __le32 rx_clear_count; | 6534 | __le32 rx_clear_count; |
6535 | __le32 cycle_count; | 6535 | __le32 cycle_count; |
6536 | __le32 chan_tx_pwr_range; | ||
6537 | __le32 chan_tx_pwr_tp; | ||
6538 | __le32 rx_frame_count; | ||
6539 | __le32 my_bss_rx_cycle_count; | ||
6540 | __le32 rx_11b_mode_data_duration; | ||
6541 | __le32 tx_frame_cnt; | ||
6542 | __le32 mac_clk_mhz; | ||
6543 | |||
6544 | } __packed; | 6536 | } __packed; |
6545 | 6537 | ||
6546 | struct wmi_10_4_chan_info_event { | 6538 | struct wmi_10_4_chan_info_event { |
diff --git a/drivers/net/wireless/ath/ath6kl/htc_mbox.c b/drivers/net/wireless/ath/ath6kl/htc_mbox.c index 65c31da43c47..998947ef63b6 100644 --- a/drivers/net/wireless/ath/ath6kl/htc_mbox.c +++ b/drivers/net/wireless/ath/ath6kl/htc_mbox.c | |||
@@ -2855,8 +2855,8 @@ static void *ath6kl_htc_mbox_create(struct ath6kl *ar) | |||
2855 | target->dev = kzalloc(sizeof(*target->dev), GFP_KERNEL); | 2855 | target->dev = kzalloc(sizeof(*target->dev), GFP_KERNEL); |
2856 | if (!target->dev) { | 2856 | if (!target->dev) { |
2857 | ath6kl_err("unable to allocate memory\n"); | 2857 | ath6kl_err("unable to allocate memory\n"); |
2858 | status = -ENOMEM; | 2858 | kfree(target); |
2859 | goto err_htc_cleanup; | 2859 | return NULL; |
2860 | } | 2860 | } |
2861 | 2861 | ||
2862 | spin_lock_init(&target->htc_lock); | 2862 | spin_lock_init(&target->htc_lock); |
diff --git a/drivers/net/wireless/ath/ath6kl/usb.c b/drivers/net/wireless/ath/ath6kl/usb.c index 4defb7a0330f..53b66e9434c9 100644 --- a/drivers/net/wireless/ath/ath6kl/usb.c +++ b/drivers/net/wireless/ath/ath6kl/usb.c | |||
@@ -132,6 +132,10 @@ ath6kl_usb_alloc_urb_from_pipe(struct ath6kl_usb_pipe *pipe) | |||
132 | struct ath6kl_urb_context *urb_context = NULL; | 132 | struct ath6kl_urb_context *urb_context = NULL; |
133 | unsigned long flags; | 133 | unsigned long flags; |
134 | 134 | ||
135 | /* bail if this pipe is not initialized */ | ||
136 | if (!pipe->ar_usb) | ||
137 | return NULL; | ||
138 | |||
135 | spin_lock_irqsave(&pipe->ar_usb->cs_lock, flags); | 139 | spin_lock_irqsave(&pipe->ar_usb->cs_lock, flags); |
136 | if (!list_empty(&pipe->urb_list_head)) { | 140 | if (!list_empty(&pipe->urb_list_head)) { |
137 | urb_context = | 141 | urb_context = |
@@ -150,6 +154,10 @@ static void ath6kl_usb_free_urb_to_pipe(struct ath6kl_usb_pipe *pipe, | |||
150 | { | 154 | { |
151 | unsigned long flags; | 155 | unsigned long flags; |
152 | 156 | ||
157 | /* bail if this pipe is not initialized */ | ||
158 | if (!pipe->ar_usb) | ||
159 | return; | ||
160 | |||
153 | spin_lock_irqsave(&pipe->ar_usb->cs_lock, flags); | 161 | spin_lock_irqsave(&pipe->ar_usb->cs_lock, flags); |
154 | pipe->urb_cnt++; | 162 | pipe->urb_cnt++; |
155 | 163 | ||
diff --git a/drivers/net/wireless/ath/ath9k/Kconfig b/drivers/net/wireless/ath/ath9k/Kconfig index 5601cfd6a293..2d1247f61297 100644 --- a/drivers/net/wireless/ath/ath9k/Kconfig +++ b/drivers/net/wireless/ath/ath9k/Kconfig | |||
@@ -157,6 +157,22 @@ config ATH9K_PCOEM | |||
157 | depends on ATH9K | 157 | depends on ATH9K |
158 | default y | 158 | default y |
159 | 159 | ||
160 | config ATH9K_PCI_NO_EEPROM | ||
161 | tristate "Atheros ath9k pci loader for EEPROM-less chips" | ||
162 | depends on ATH9K_PCI | ||
163 | default n | ||
164 | help | ||
165 | This separate driver provides a loader in order to support the | ||
166 | AR500X to AR92XX-generation of ath9k PCI(e) WiFi chips, which have | ||
167 | their initialization data (which contains the real PCI Device ID | ||
168 | that ath9k will need) stored together with the calibration data out | ||
169 | of reach for the ath9k chip. | ||
170 | |||
171 | These devices are usually various network appliances, routers or | ||
172 | access Points and such. | ||
173 | |||
174 | If unsure say N. | ||
175 | |||
160 | config ATH9K_HTC | 176 | config ATH9K_HTC |
161 | tristate "Atheros HTC based wireless cards support" | 177 | tristate "Atheros HTC based wireless cards support" |
162 | depends on USB && MAC80211 | 178 | depends on USB && MAC80211 |
diff --git a/drivers/net/wireless/ath/ath9k/Makefile b/drivers/net/wireless/ath/ath9k/Makefile index 15af0a836925..eff94bcd1f0a 100644 --- a/drivers/net/wireless/ath/ath9k/Makefile +++ b/drivers/net/wireless/ath/ath9k/Makefile | |||
@@ -77,3 +77,5 @@ ath9k_htc-y += htc_hst.o \ | |||
77 | ath9k_htc-$(CONFIG_ATH9K_HTC_DEBUGFS) += htc_drv_debug.o | 77 | ath9k_htc-$(CONFIG_ATH9K_HTC_DEBUGFS) += htc_drv_debug.o |
78 | 78 | ||
79 | obj-$(CONFIG_ATH9K_HTC) += ath9k_htc.o | 79 | obj-$(CONFIG_ATH9K_HTC) += ath9k_htc.o |
80 | |||
81 | obj-$(CONFIG_ATH9K_PCI_NO_EEPROM) += ath9k_pci_owl_loader.o | ||
diff --git a/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c b/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c new file mode 100644 index 000000000000..159490f5a111 --- /dev/null +++ b/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c | |||
@@ -0,0 +1,215 @@ | |||
1 | // SPDX-License-Identifier: ISC | ||
2 | /* Initialize Owl Emulation Devices | ||
3 | * | ||
4 | * Copyright (C) 2016 Christian Lamparter <chunkeey@gmail.com> | ||
5 | * Copyright (C) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com> | ||
6 | * | ||
7 | * Some devices (like the Cisco Meraki Z1 Cloud Managed Teleworker Gateway) | ||
8 | * need to be able to initialize the PCIe wifi device. Normally, this is done | ||
9 | * during the early stages as a pci quirk. | ||
10 | * However, this isn't possible for devices which have the init code for the | ||
11 | * Atheros chip stored on UBI Volume on NAND. Hence, this module can be used to | ||
12 | * initialize the chip when the user-space is ready to extract the init code. | ||
13 | */ | ||
14 | #include <linux/module.h> | ||
15 | #include <linux/version.h> | ||
16 | #include <linux/completion.h> | ||
17 | #include <linux/etherdevice.h> | ||
18 | #include <linux/firmware.h> | ||
19 | #include <linux/pci.h> | ||
20 | #include <linux/delay.h> | ||
21 | #include <linux/platform_device.h> | ||
22 | #include <linux/ath9k_platform.h> | ||
23 | |||
24 | struct owl_ctx { | ||
25 | struct completion eeprom_load; | ||
26 | }; | ||
27 | |||
28 | #define EEPROM_FILENAME_LEN 100 | ||
29 | |||
30 | #define AR5416_EEPROM_MAGIC 0xa55a | ||
31 | |||
32 | static int ath9k_pci_fixup(struct pci_dev *pdev, const u16 *cal_data, | ||
33 | size_t cal_len) | ||
34 | { | ||
35 | void __iomem *mem; | ||
36 | const void *cal_end = (void *)cal_data + cal_len; | ||
37 | const struct { | ||
38 | u16 reg; | ||
39 | u16 low_val; | ||
40 | u16 high_val; | ||
41 | } __packed * data; | ||
42 | u16 cmd; | ||
43 | u32 bar0; | ||
44 | bool swap_needed = false; | ||
45 | |||
46 | if (*cal_data != AR5416_EEPROM_MAGIC) { | ||
47 | if (*cal_data != swab16(AR5416_EEPROM_MAGIC)) { | ||
48 | dev_err(&pdev->dev, "invalid calibration data\n"); | ||
49 | return -EINVAL; | ||
50 | } | ||
51 | |||
52 | dev_dbg(&pdev->dev, "calibration data needs swapping\n"); | ||
53 | swap_needed = true; | ||
54 | } | ||
55 | |||
56 | dev_info(&pdev->dev, "fixup device configuration\n"); | ||
57 | |||
58 | mem = pcim_iomap(pdev, 0, 0); | ||
59 | if (!mem) { | ||
60 | dev_err(&pdev->dev, "ioremap error\n"); | ||
61 | return -EINVAL; | ||
62 | } | ||
63 | |||
64 | pci_read_config_dword(pdev, PCI_BASE_ADDRESS_0, &bar0); | ||
65 | pci_write_config_dword(pdev, PCI_BASE_ADDRESS_0, | ||
66 | pci_resource_start(pdev, 0)); | ||
67 | pci_read_config_word(pdev, PCI_COMMAND, &cmd); | ||
68 | cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY; | ||
69 | pci_write_config_word(pdev, PCI_COMMAND, cmd); | ||
70 | |||
71 | /* set pointer to first reg address */ | ||
72 | for (data = (const void *)(cal_data + 3); | ||
73 | (const void *)data <= cal_end && data->reg != (u16)~0; | ||
74 | data++) { | ||
75 | u32 val; | ||
76 | u16 reg; | ||
77 | |||
78 | reg = data->reg; | ||
79 | val = data->low_val; | ||
80 | val |= ((u32)data->high_val) << 16; | ||
81 | |||
82 | if (swap_needed) { | ||
83 | reg = swab16(reg); | ||
84 | val = swahb32(val); | ||
85 | } | ||
86 | |||
87 | __raw_writel(val, mem + reg); | ||
88 | usleep_range(100, 120); | ||
89 | } | ||
90 | |||
91 | pci_read_config_word(pdev, PCI_COMMAND, &cmd); | ||
92 | cmd &= ~(PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY); | ||
93 | pci_write_config_word(pdev, PCI_COMMAND, cmd); | ||
94 | |||
95 | pci_write_config_dword(pdev, PCI_BASE_ADDRESS_0, bar0); | ||
96 | pcim_iounmap(pdev, mem); | ||
97 | |||
98 | pci_disable_device(pdev); | ||
99 | |||
100 | return 0; | ||
101 | } | ||
102 | |||
103 | static void owl_fw_cb(const struct firmware *fw, void *context) | ||
104 | { | ||
105 | struct pci_dev *pdev = (struct pci_dev *)context; | ||
106 | struct owl_ctx *ctx = (struct owl_ctx *)pci_get_drvdata(pdev); | ||
107 | struct pci_bus *bus; | ||
108 | |||
109 | complete(&ctx->eeprom_load); | ||
110 | |||
111 | if (!fw) { | ||
112 | dev_err(&pdev->dev, "no eeprom data received.\n"); | ||
113 | goto release; | ||
114 | } | ||
115 | |||
116 | /* also note that we are doing *u16 operations on the file */ | ||
117 | if (fw->size > 4096 || fw->size < 0x200 || (fw->size & 1) == 1) { | ||
118 | dev_err(&pdev->dev, "eeprom file has an invalid size.\n"); | ||
119 | goto release; | ||
120 | } | ||
121 | |||
122 | if (ath9k_pci_fixup(pdev, (const u16 *)fw->data, fw->size)) | ||
123 | goto release; | ||
124 | |||
125 | pci_lock_rescan_remove(); | ||
126 | bus = pdev->bus; | ||
127 | pci_stop_and_remove_bus_device(pdev); | ||
128 | /* the device should come back with the proper | ||
129 | * ProductId. But we have to initiate a rescan. | ||
130 | */ | ||
131 | pci_rescan_bus(bus); | ||
132 | pci_unlock_rescan_remove(); | ||
133 | |||
134 | release: | ||
135 | release_firmware(fw); | ||
136 | } | ||
137 | |||
138 | static const char *owl_get_eeprom_name(struct pci_dev *pdev) | ||
139 | { | ||
140 | struct device *dev = &pdev->dev; | ||
141 | char *eeprom_name; | ||
142 | |||
143 | dev_dbg(dev, "using auto-generated eeprom filename\n"); | ||
144 | |||
145 | eeprom_name = devm_kzalloc(dev, EEPROM_FILENAME_LEN, GFP_KERNEL); | ||
146 | if (!eeprom_name) | ||
147 | return NULL; | ||
148 | |||
149 | /* this should match the pattern used in ath9k/init.c */ | ||
150 | scnprintf(eeprom_name, EEPROM_FILENAME_LEN, "ath9k-eeprom-pci-%s.bin", | ||
151 | dev_name(dev)); | ||
152 | |||
153 | return eeprom_name; | ||
154 | } | ||
155 | |||
156 | static int owl_probe(struct pci_dev *pdev, | ||
157 | const struct pci_device_id *id) | ||
158 | { | ||
159 | struct owl_ctx *ctx; | ||
160 | const char *eeprom_name; | ||
161 | int err = 0; | ||
162 | |||
163 | if (pcim_enable_device(pdev)) | ||
164 | return -EIO; | ||
165 | |||
166 | pcim_pin_device(pdev); | ||
167 | |||
168 | eeprom_name = owl_get_eeprom_name(pdev); | ||
169 | if (!eeprom_name) { | ||
170 | dev_err(&pdev->dev, "no eeprom filename found.\n"); | ||
171 | return -ENODEV; | ||
172 | } | ||
173 | |||
174 | ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); | ||
175 | if (!ctx) | ||
176 | return -ENOMEM; | ||
177 | |||
178 | init_completion(&ctx->eeprom_load); | ||
179 | |||
180 | pci_set_drvdata(pdev, ctx); | ||
181 | err = request_firmware_nowait(THIS_MODULE, true, eeprom_name, | ||
182 | &pdev->dev, GFP_KERNEL, pdev, owl_fw_cb); | ||
183 | if (err) | ||
184 | dev_err(&pdev->dev, "failed to request caldata (%d).\n", err); | ||
185 | |||
186 | return err; | ||
187 | } | ||
188 | |||
189 | static void owl_remove(struct pci_dev *pdev) | ||
190 | { | ||
191 | struct owl_ctx *ctx = pci_get_drvdata(pdev); | ||
192 | |||
193 | if (ctx) { | ||
194 | wait_for_completion(&ctx->eeprom_load); | ||
195 | pci_set_drvdata(pdev, NULL); | ||
196 | } | ||
197 | } | ||
198 | |||
199 | static const struct pci_device_id owl_pci_table[] = { | ||
200 | { PCI_VDEVICE(ATHEROS, 0xff1c) }, /* PCIe */ | ||
201 | { PCI_VDEVICE(ATHEROS, 0xff1d) }, /* PCI */ | ||
202 | { }, | ||
203 | }; | ||
204 | MODULE_DEVICE_TABLE(pci, owl_pci_table); | ||
205 | |||
206 | static struct pci_driver owl_driver = { | ||
207 | .name = KBUILD_MODNAME, | ||
208 | .id_table = owl_pci_table, | ||
209 | .probe = owl_probe, | ||
210 | .remove = owl_remove, | ||
211 | }; | ||
212 | module_pci_driver(owl_driver); | ||
213 | MODULE_AUTHOR("Christian Lamparter <chunkeey@gmail.com>"); | ||
214 | MODULE_DESCRIPTION("External EEPROM data loader for Atheros AR500X to AR92XX"); | ||
215 | MODULE_LICENSE("Dual BSD/GPL"); | ||
diff --git a/drivers/net/wireless/ath/ath9k/dynack.c b/drivers/net/wireless/ath/ath9k/dynack.c index f112fa5b2eac..fbeb4a739d32 100644 --- a/drivers/net/wireless/ath/ath9k/dynack.c +++ b/drivers/net/wireless/ath/ath9k/dynack.c | |||
@@ -20,12 +20,31 @@ | |||
20 | 20 | ||
21 | #define COMPUTE_TO (5 * HZ) | 21 | #define COMPUTE_TO (5 * HZ) |
22 | #define LATEACK_DELAY (10 * HZ) | 22 | #define LATEACK_DELAY (10 * HZ) |
23 | #define LATEACK_TO 256 | ||
24 | #define MAX_DELAY 300 | ||
25 | #define EWMA_LEVEL 96 | 23 | #define EWMA_LEVEL 96 |
26 | #define EWMA_DIV 128 | 24 | #define EWMA_DIV 128 |
27 | 25 | ||
28 | /** | 26 | /** |
27 | * ath_dynack_get_max_to - set max timeout according to channel width | ||
28 | * @ah: ath hw | ||
29 | * | ||
30 | */ | ||
31 | static u32 ath_dynack_get_max_to(struct ath_hw *ah) | ||
32 | { | ||
33 | const struct ath9k_channel *chan = ah->curchan; | ||
34 | |||
35 | if (!chan) | ||
36 | return 300; | ||
37 | |||
38 | if (IS_CHAN_HT40(chan)) | ||
39 | return 300; | ||
40 | if (IS_CHAN_HALF_RATE(chan)) | ||
41 | return 750; | ||
42 | if (IS_CHAN_QUARTER_RATE(chan)) | ||
43 | return 1500; | ||
44 | return 600; | ||
45 | } | ||
46 | |||
47 | /** | ||
29 | * ath_dynack_ewma - EWMA (Exponentially Weighted Moving Average) calculation | 48 | * ath_dynack_ewma - EWMA (Exponentially Weighted Moving Average) calculation |
30 | * | 49 | * |
31 | */ | 50 | */ |
@@ -79,6 +98,24 @@ static inline bool ath_dynack_bssidmask(struct ath_hw *ah, const u8 *mac) | |||
79 | } | 98 | } |
80 | 99 | ||
81 | /** | 100 | /** |
101 | * ath_dynack_set_timeout - configure timeouts/slottime registers | ||
102 | * @ah: ath hw | ||
103 | * @to: timeout value | ||
104 | * | ||
105 | */ | ||
106 | static void ath_dynack_set_timeout(struct ath_hw *ah, int to) | ||
107 | { | ||
108 | struct ath_common *common = ath9k_hw_common(ah); | ||
109 | int slottime = (to - 3) / 2; | ||
110 | |||
111 | ath_dbg(common, DYNACK, "ACK timeout %u slottime %u\n", | ||
112 | to, slottime); | ||
113 | ath9k_hw_setslottime(ah, slottime); | ||
114 | ath9k_hw_set_ack_timeout(ah, to); | ||
115 | ath9k_hw_set_cts_timeout(ah, to); | ||
116 | } | ||
117 | |||
118 | /** | ||
82 | * ath_dynack_compute_ackto - compute ACK timeout as the maximum STA timeout | 119 | * ath_dynack_compute_ackto - compute ACK timeout as the maximum STA timeout |
83 | * @ah: ath hw | 120 | * @ah: ath hw |
84 | * | 121 | * |
@@ -86,7 +123,6 @@ static inline bool ath_dynack_bssidmask(struct ath_hw *ah, const u8 *mac) | |||
86 | */ | 123 | */ |
87 | static void ath_dynack_compute_ackto(struct ath_hw *ah) | 124 | static void ath_dynack_compute_ackto(struct ath_hw *ah) |
88 | { | 125 | { |
89 | struct ath_common *common = ath9k_hw_common(ah); | ||
90 | struct ath_dynack *da = &ah->dynack; | 126 | struct ath_dynack *da = &ah->dynack; |
91 | struct ath_node *an; | 127 | struct ath_node *an; |
92 | int to = 0; | 128 | int to = 0; |
@@ -96,15 +132,8 @@ static void ath_dynack_compute_ackto(struct ath_hw *ah) | |||
96 | to = an->ackto; | 132 | to = an->ackto; |
97 | 133 | ||
98 | if (to && da->ackto != to) { | 134 | if (to && da->ackto != to) { |
99 | u32 slottime; | 135 | ath_dynack_set_timeout(ah, to); |
100 | |||
101 | slottime = (to - 3) / 2; | ||
102 | da->ackto = to; | 136 | da->ackto = to; |
103 | ath_dbg(common, DYNACK, "ACK timeout %u slottime %u\n", | ||
104 | da->ackto, slottime); | ||
105 | ath9k_hw_setslottime(ah, slottime); | ||
106 | ath9k_hw_set_ack_timeout(ah, da->ackto); | ||
107 | ath9k_hw_set_cts_timeout(ah, da->ackto); | ||
108 | } | 137 | } |
109 | } | 138 | } |
110 | 139 | ||
@@ -116,15 +145,16 @@ static void ath_dynack_compute_ackto(struct ath_hw *ah) | |||
116 | */ | 145 | */ |
117 | static void ath_dynack_compute_to(struct ath_hw *ah) | 146 | static void ath_dynack_compute_to(struct ath_hw *ah) |
118 | { | 147 | { |
119 | u32 ackto, ack_ts; | 148 | struct ath_dynack *da = &ah->dynack; |
120 | u8 *dst, *src; | 149 | u32 ackto, ack_ts, max_to; |
121 | struct ieee80211_sta *sta; | 150 | struct ieee80211_sta *sta; |
122 | struct ath_node *an; | ||
123 | struct ts_info *st_ts; | 151 | struct ts_info *st_ts; |
124 | struct ath_dynack *da = &ah->dynack; | 152 | struct ath_node *an; |
153 | u8 *dst, *src; | ||
125 | 154 | ||
126 | rcu_read_lock(); | 155 | rcu_read_lock(); |
127 | 156 | ||
157 | max_to = ath_dynack_get_max_to(ah); | ||
128 | while (da->st_rbf.h_rb != da->st_rbf.t_rb && | 158 | while (da->st_rbf.h_rb != da->st_rbf.t_rb && |
129 | da->ack_rbf.h_rb != da->ack_rbf.t_rb) { | 159 | da->ack_rbf.h_rb != da->ack_rbf.t_rb) { |
130 | ack_ts = da->ack_rbf.tstamp[da->ack_rbf.h_rb]; | 160 | ack_ts = da->ack_rbf.tstamp[da->ack_rbf.h_rb]; |
@@ -140,7 +170,7 @@ static void ath_dynack_compute_to(struct ath_hw *ah) | |||
140 | if (ack_ts > st_ts->tstamp + st_ts->dur) { | 170 | if (ack_ts > st_ts->tstamp + st_ts->dur) { |
141 | ackto = ack_ts - st_ts->tstamp - st_ts->dur; | 171 | ackto = ack_ts - st_ts->tstamp - st_ts->dur; |
142 | 172 | ||
143 | if (ackto < MAX_DELAY) { | 173 | if (ackto < max_to) { |
144 | sta = ieee80211_find_sta_by_ifaddr(ah->hw, dst, | 174 | sta = ieee80211_find_sta_by_ifaddr(ah->hw, dst, |
145 | src); | 175 | src); |
146 | if (sta) { | 176 | if (sta) { |
@@ -197,11 +227,10 @@ void ath_dynack_sample_tx_ts(struct ath_hw *ah, struct sk_buff *skb, | |||
197 | if (ieee80211_is_assoc_req(hdr->frame_control) || | 227 | if (ieee80211_is_assoc_req(hdr->frame_control) || |
198 | ieee80211_is_assoc_resp(hdr->frame_control) || | 228 | ieee80211_is_assoc_resp(hdr->frame_control) || |
199 | ieee80211_is_auth(hdr->frame_control)) { | 229 | ieee80211_is_auth(hdr->frame_control)) { |
200 | ath_dbg(common, DYNACK, "late ack\n"); | 230 | u32 max_to = ath_dynack_get_max_to(ah); |
201 | 231 | ||
202 | ath9k_hw_setslottime(ah, (LATEACK_TO - 3) / 2); | 232 | ath_dbg(common, DYNACK, "late ack\n"); |
203 | ath9k_hw_set_ack_timeout(ah, LATEACK_TO); | 233 | ath_dynack_set_timeout(ah, max_to); |
204 | ath9k_hw_set_cts_timeout(ah, LATEACK_TO); | ||
205 | if (sta) { | 234 | if (sta) { |
206 | struct ath_node *an; | 235 | struct ath_node *an; |
207 | 236 | ||
@@ -292,15 +321,13 @@ EXPORT_SYMBOL(ath_dynack_sample_ack_ts); | |||
292 | */ | 321 | */ |
293 | void ath_dynack_node_init(struct ath_hw *ah, struct ath_node *an) | 322 | void ath_dynack_node_init(struct ath_hw *ah, struct ath_node *an) |
294 | { | 323 | { |
295 | /* ackto = slottime + sifs + air delay */ | ||
296 | u32 ackto = 9 + 16 + 64; | ||
297 | struct ath_dynack *da = &ah->dynack; | 324 | struct ath_dynack *da = &ah->dynack; |
298 | 325 | ||
299 | an->ackto = ackto; | 326 | an->ackto = da->ackto; |
300 | 327 | ||
301 | spin_lock(&da->qlock); | 328 | spin_lock_bh(&da->qlock); |
302 | list_add_tail(&an->list, &da->nodes); | 329 | list_add_tail(&an->list, &da->nodes); |
303 | spin_unlock(&da->qlock); | 330 | spin_unlock_bh(&da->qlock); |
304 | } | 331 | } |
305 | EXPORT_SYMBOL(ath_dynack_node_init); | 332 | EXPORT_SYMBOL(ath_dynack_node_init); |
306 | 333 | ||
@@ -314,9 +341,9 @@ void ath_dynack_node_deinit(struct ath_hw *ah, struct ath_node *an) | |||
314 | { | 341 | { |
315 | struct ath_dynack *da = &ah->dynack; | 342 | struct ath_dynack *da = &ah->dynack; |
316 | 343 | ||
317 | spin_lock(&da->qlock); | 344 | spin_lock_bh(&da->qlock); |
318 | list_del(&an->list); | 345 | list_del(&an->list); |
319 | spin_unlock(&da->qlock); | 346 | spin_unlock_bh(&da->qlock); |
320 | } | 347 | } |
321 | EXPORT_SYMBOL(ath_dynack_node_deinit); | 348 | EXPORT_SYMBOL(ath_dynack_node_deinit); |
322 | 349 | ||
@@ -327,22 +354,26 @@ EXPORT_SYMBOL(ath_dynack_node_deinit); | |||
327 | */ | 354 | */ |
328 | void ath_dynack_reset(struct ath_hw *ah) | 355 | void ath_dynack_reset(struct ath_hw *ah) |
329 | { | 356 | { |
330 | /* ackto = slottime + sifs + air delay */ | ||
331 | u32 ackto = 9 + 16 + 64; | ||
332 | struct ath_dynack *da = &ah->dynack; | 357 | struct ath_dynack *da = &ah->dynack; |
358 | struct ath_node *an; | ||
359 | |||
360 | spin_lock_bh(&da->qlock); | ||
333 | 361 | ||
334 | da->lto = jiffies; | 362 | da->lto = jiffies + COMPUTE_TO; |
335 | da->ackto = ackto; | ||
336 | 363 | ||
337 | da->st_rbf.t_rb = 0; | 364 | da->st_rbf.t_rb = 0; |
338 | da->st_rbf.h_rb = 0; | 365 | da->st_rbf.h_rb = 0; |
339 | da->ack_rbf.t_rb = 0; | 366 | da->ack_rbf.t_rb = 0; |
340 | da->ack_rbf.h_rb = 0; | 367 | da->ack_rbf.h_rb = 0; |
341 | 368 | ||
369 | da->ackto = ath_dynack_get_max_to(ah); | ||
370 | list_for_each_entry(an, &da->nodes, list) | ||
371 | an->ackto = da->ackto; | ||
372 | |||
342 | /* init acktimeout */ | 373 | /* init acktimeout */ |
343 | ath9k_hw_setslottime(ah, (ackto - 3) / 2); | 374 | ath_dynack_set_timeout(ah, da->ackto); |
344 | ath9k_hw_set_ack_timeout(ah, ackto); | 375 | |
345 | ath9k_hw_set_cts_timeout(ah, ackto); | 376 | spin_unlock_bh(&da->qlock); |
346 | } | 377 | } |
347 | EXPORT_SYMBOL(ath_dynack_reset); | 378 | EXPORT_SYMBOL(ath_dynack_reset); |
348 | 379 | ||
@@ -359,6 +390,8 @@ void ath_dynack_init(struct ath_hw *ah) | |||
359 | 390 | ||
360 | spin_lock_init(&da->qlock); | 391 | spin_lock_init(&da->qlock); |
361 | INIT_LIST_HEAD(&da->nodes); | 392 | INIT_LIST_HEAD(&da->nodes); |
393 | /* ackto = slottime + sifs + air delay */ | ||
394 | da->ackto = 9 + 16 + 64; | ||
362 | 395 | ||
363 | ah->hw->wiphy->features |= NL80211_FEATURE_ACKTO_ESTIMATION; | 396 | ah->hw->wiphy->features |= NL80211_FEATURE_ACKTO_ESTIMATION; |
364 | } | 397 | } |
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c index 214c68269a69..d961095ab01f 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c | |||
@@ -463,7 +463,7 @@ static void ath9k_enable_rmw_buffer(void *hw_priv) | |||
463 | atomic_inc(&priv->wmi->m_rmw_cnt); | 463 | atomic_inc(&priv->wmi->m_rmw_cnt); |
464 | } | 464 | } |
465 | 465 | ||
466 | static u32 ath9k_reg_rmw_single(void *hw_priv, | 466 | static void ath9k_reg_rmw_single(void *hw_priv, |
467 | u32 reg_offset, u32 set, u32 clr) | 467 | u32 reg_offset, u32 set, u32 clr) |
468 | { | 468 | { |
469 | struct ath_hw *ah = hw_priv; | 469 | struct ath_hw *ah = hw_priv; |
@@ -471,7 +471,6 @@ static u32 ath9k_reg_rmw_single(void *hw_priv, | |||
471 | struct ath9k_htc_priv *priv = (struct ath9k_htc_priv *) common->priv; | 471 | struct ath9k_htc_priv *priv = (struct ath9k_htc_priv *) common->priv; |
472 | struct register_rmw buf, buf_ret; | 472 | struct register_rmw buf, buf_ret; |
473 | int ret; | 473 | int ret; |
474 | u32 val = 0; | ||
475 | 474 | ||
476 | buf.reg = cpu_to_be32(reg_offset); | 475 | buf.reg = cpu_to_be32(reg_offset); |
477 | buf.set = cpu_to_be32(set); | 476 | buf.set = cpu_to_be32(set); |
@@ -485,7 +484,6 @@ static u32 ath9k_reg_rmw_single(void *hw_priv, | |||
485 | ath_dbg(common, WMI, "REGISTER RMW FAILED:(0x%04x, %d)\n", | 484 | ath_dbg(common, WMI, "REGISTER RMW FAILED:(0x%04x, %d)\n", |
486 | reg_offset, ret); | 485 | reg_offset, ret); |
487 | } | 486 | } |
488 | return val; | ||
489 | } | 487 | } |
490 | 488 | ||
491 | static u32 ath9k_reg_rmw(void *hw_priv, u32 reg_offset, u32 set, u32 clr) | 489 | static u32 ath9k_reg_rmw(void *hw_priv, u32 reg_offset, u32 set, u32 clr) |
diff --git a/drivers/net/wireless/ath/ath9k/htc_hst.c b/drivers/net/wireless/ath/ath9k/htc_hst.c index 1bf63a4efb4c..d091c8ebdcf0 100644 --- a/drivers/net/wireless/ath/ath9k/htc_hst.c +++ b/drivers/net/wireless/ath/ath9k/htc_hst.c | |||
@@ -170,6 +170,7 @@ static int htc_config_pipe_credits(struct htc_target *target) | |||
170 | time_left = wait_for_completion_timeout(&target->cmd_wait, HZ); | 170 | time_left = wait_for_completion_timeout(&target->cmd_wait, HZ); |
171 | if (!time_left) { | 171 | if (!time_left) { |
172 | dev_err(target->dev, "HTC credit config timeout\n"); | 172 | dev_err(target->dev, "HTC credit config timeout\n"); |
173 | kfree_skb(skb); | ||
173 | return -ETIMEDOUT; | 174 | return -ETIMEDOUT; |
174 | } | 175 | } |
175 | 176 | ||
@@ -205,6 +206,7 @@ static int htc_setup_complete(struct htc_target *target) | |||
205 | time_left = wait_for_completion_timeout(&target->cmd_wait, HZ); | 206 | time_left = wait_for_completion_timeout(&target->cmd_wait, HZ); |
206 | if (!time_left) { | 207 | if (!time_left) { |
207 | dev_err(target->dev, "HTC start timeout\n"); | 208 | dev_err(target->dev, "HTC start timeout\n"); |
209 | kfree_skb(skb); | ||
208 | return -ETIMEDOUT; | 210 | return -ETIMEDOUT; |
209 | } | 211 | } |
210 | 212 | ||
@@ -277,6 +279,7 @@ int htc_connect_service(struct htc_target *target, | |||
277 | if (!time_left) { | 279 | if (!time_left) { |
278 | dev_err(target->dev, "Service connection timeout for: %d\n", | 280 | dev_err(target->dev, "Service connection timeout for: %d\n", |
279 | service_connreq->service_id); | 281 | service_connreq->service_id); |
282 | kfree_skb(skb); | ||
280 | return -ETIMEDOUT; | 283 | return -ETIMEDOUT; |
281 | } | 284 | } |
282 | 285 | ||
diff --git a/drivers/net/wireless/ath/ath9k/wmi.c b/drivers/net/wireless/ath/ath9k/wmi.c index d1f6710ca63b..cdc146091194 100644 --- a/drivers/net/wireless/ath/ath9k/wmi.c +++ b/drivers/net/wireless/ath/ath9k/wmi.c | |||
@@ -336,6 +336,7 @@ int ath9k_wmi_cmd(struct wmi *wmi, enum wmi_cmd_id cmd_id, | |||
336 | ath_dbg(common, WMI, "Timeout waiting for WMI command: %s\n", | 336 | ath_dbg(common, WMI, "Timeout waiting for WMI command: %s\n", |
337 | wmi_cmd_to_name(cmd_id)); | 337 | wmi_cmd_to_name(cmd_id)); |
338 | mutex_unlock(&wmi->op_mutex); | 338 | mutex_unlock(&wmi->op_mutex); |
339 | kfree_skb(skb); | ||
339 | return -ETIMEDOUT; | 340 | return -ETIMEDOUT; |
340 | } | 341 | } |
341 | 342 | ||
diff --git a/drivers/net/wireless/ath/carl9170/usb.c b/drivers/net/wireless/ath/carl9170/usb.c index 99f1897a775d..486957a04bd1 100644 --- a/drivers/net/wireless/ath/carl9170/usb.c +++ b/drivers/net/wireless/ath/carl9170/usb.c | |||
@@ -1107,12 +1107,10 @@ static int carl9170_usb_probe(struct usb_interface *intf, | |||
1107 | static void carl9170_usb_disconnect(struct usb_interface *intf) | 1107 | static void carl9170_usb_disconnect(struct usb_interface *intf) |
1108 | { | 1108 | { |
1109 | struct ar9170 *ar = usb_get_intfdata(intf); | 1109 | struct ar9170 *ar = usb_get_intfdata(intf); |
1110 | struct usb_device *udev; | ||
1111 | 1110 | ||
1112 | if (WARN_ON(!ar)) | 1111 | if (WARN_ON(!ar)) |
1113 | return; | 1112 | return; |
1114 | 1113 | ||
1115 | udev = ar->udev; | ||
1116 | wait_for_completion(&ar->fw_load_wait); | 1114 | wait_for_completion(&ar->fw_load_wait); |
1117 | 1115 | ||
1118 | if (IS_INITIALIZED(ar)) { | 1116 | if (IS_INITIALIZED(ar)) { |
diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c index 1d2d698fb779..523550f94a3f 100644 --- a/drivers/net/wireless/ath/wcn36xx/smd.c +++ b/drivers/net/wireless/ath/wcn36xx/smd.c | |||
@@ -641,52 +641,58 @@ int wcn36xx_smd_start_hw_scan(struct wcn36xx *wcn, struct ieee80211_vif *vif, | |||
641 | struct cfg80211_scan_request *req) | 641 | struct cfg80211_scan_request *req) |
642 | { | 642 | { |
643 | struct wcn36xx_vif *vif_priv = wcn36xx_vif_to_priv(vif); | 643 | struct wcn36xx_vif *vif_priv = wcn36xx_vif_to_priv(vif); |
644 | struct wcn36xx_hal_start_scan_offload_req_msg msg_body; | 644 | struct wcn36xx_hal_start_scan_offload_req_msg *msg_body; |
645 | int ret, i; | 645 | int ret, i; |
646 | 646 | ||
647 | if (req->ie_len > WCN36XX_MAX_SCAN_IE_LEN) | 647 | if (req->ie_len > WCN36XX_MAX_SCAN_IE_LEN) |
648 | return -EINVAL; | 648 | return -EINVAL; |
649 | 649 | ||
650 | mutex_lock(&wcn->hal_mutex); | 650 | mutex_lock(&wcn->hal_mutex); |
651 | INIT_HAL_MSG(msg_body, WCN36XX_HAL_START_SCAN_OFFLOAD_REQ); | 651 | msg_body = kzalloc(sizeof(*msg_body), GFP_KERNEL); |
652 | if (!msg_body) { | ||
653 | ret = -ENOMEM; | ||
654 | goto out; | ||
655 | } | ||
652 | 656 | ||
653 | msg_body.scan_type = WCN36XX_HAL_SCAN_TYPE_ACTIVE; | 657 | INIT_HAL_MSG((*msg_body), WCN36XX_HAL_START_SCAN_OFFLOAD_REQ); |
654 | msg_body.min_ch_time = 30; | ||
655 | msg_body.max_ch_time = 100; | ||
656 | msg_body.scan_hidden = 1; | ||
657 | memcpy(msg_body.mac, vif->addr, ETH_ALEN); | ||
658 | msg_body.bss_type = vif_priv->bss_type; | ||
659 | msg_body.p2p_search = vif->p2p; | ||
660 | 658 | ||
661 | msg_body.num_ssid = min_t(u8, req->n_ssids, ARRAY_SIZE(msg_body.ssids)); | 659 | msg_body->scan_type = WCN36XX_HAL_SCAN_TYPE_ACTIVE; |
662 | for (i = 0; i < msg_body.num_ssid; i++) { | 660 | msg_body->min_ch_time = 30; |
663 | msg_body.ssids[i].length = min_t(u8, req->ssids[i].ssid_len, | 661 | msg_body->max_ch_time = 100; |
664 | sizeof(msg_body.ssids[i].ssid)); | 662 | msg_body->scan_hidden = 1; |
665 | memcpy(msg_body.ssids[i].ssid, req->ssids[i].ssid, | 663 | memcpy(msg_body->mac, vif->addr, ETH_ALEN); |
666 | msg_body.ssids[i].length); | 664 | msg_body->bss_type = vif_priv->bss_type; |
665 | msg_body->p2p_search = vif->p2p; | ||
666 | |||
667 | msg_body->num_ssid = min_t(u8, req->n_ssids, ARRAY_SIZE(msg_body->ssids)); | ||
668 | for (i = 0; i < msg_body->num_ssid; i++) { | ||
669 | msg_body->ssids[i].length = min_t(u8, req->ssids[i].ssid_len, | ||
670 | sizeof(msg_body->ssids[i].ssid)); | ||
671 | memcpy(msg_body->ssids[i].ssid, req->ssids[i].ssid, | ||
672 | msg_body->ssids[i].length); | ||
667 | } | 673 | } |
668 | 674 | ||
669 | msg_body.num_channel = min_t(u8, req->n_channels, | 675 | msg_body->num_channel = min_t(u8, req->n_channels, |
670 | sizeof(msg_body.channels)); | 676 | sizeof(msg_body->channels)); |
671 | for (i = 0; i < msg_body.num_channel; i++) | 677 | for (i = 0; i < msg_body->num_channel; i++) |
672 | msg_body.channels[i] = req->channels[i]->hw_value; | 678 | msg_body->channels[i] = req->channels[i]->hw_value; |
673 | 679 | ||
674 | msg_body.header.len -= WCN36XX_MAX_SCAN_IE_LEN; | 680 | msg_body->header.len -= WCN36XX_MAX_SCAN_IE_LEN; |
675 | 681 | ||
676 | if (req->ie_len > 0) { | 682 | if (req->ie_len > 0) { |
677 | msg_body.ie_len = req->ie_len; | 683 | msg_body->ie_len = req->ie_len; |
678 | msg_body.header.len += req->ie_len; | 684 | msg_body->header.len += req->ie_len; |
679 | memcpy(msg_body.ie, req->ie, req->ie_len); | 685 | memcpy(msg_body->ie, req->ie, req->ie_len); |
680 | } | 686 | } |
681 | 687 | ||
682 | PREPARE_HAL_BUF(wcn->hal_buf, msg_body); | 688 | PREPARE_HAL_BUF(wcn->hal_buf, (*msg_body)); |
683 | 689 | ||
684 | wcn36xx_dbg(WCN36XX_DBG_HAL, | 690 | wcn36xx_dbg(WCN36XX_DBG_HAL, |
685 | "hal start hw-scan (channels: %u; ssids: %u; p2p: %s)\n", | 691 | "hal start hw-scan (channels: %u; ssids: %u; p2p: %s)\n", |
686 | msg_body.num_channel, msg_body.num_ssid, | 692 | msg_body->num_channel, msg_body->num_ssid, |
687 | msg_body.p2p_search ? "yes" : "no"); | 693 | msg_body->p2p_search ? "yes" : "no"); |
688 | 694 | ||
689 | ret = wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); | 695 | ret = wcn36xx_smd_send_and_wait(wcn, msg_body->header.len); |
690 | if (ret) { | 696 | if (ret) { |
691 | wcn36xx_err("Sending hal_start_scan_offload failed\n"); | 697 | wcn36xx_err("Sending hal_start_scan_offload failed\n"); |
692 | goto out; | 698 | goto out; |
@@ -698,6 +704,7 @@ int wcn36xx_smd_start_hw_scan(struct wcn36xx *wcn, struct ieee80211_vif *vif, | |||
698 | goto out; | 704 | goto out; |
699 | } | 705 | } |
700 | out: | 706 | out: |
707 | kfree(msg_body); | ||
701 | mutex_unlock(&wcn->hal_mutex); | 708 | mutex_unlock(&wcn->hal_mutex); |
702 | return ret; | 709 | return ret; |
703 | } | 710 | } |
@@ -1257,96 +1264,104 @@ out: | |||
1257 | static int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn, | 1264 | static int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn, |
1258 | const struct wcn36xx_hal_config_bss_req_msg *orig) | 1265 | const struct wcn36xx_hal_config_bss_req_msg *orig) |
1259 | { | 1266 | { |
1260 | struct wcn36xx_hal_config_bss_req_msg_v1 msg_body; | 1267 | struct wcn36xx_hal_config_bss_req_msg_v1 *msg_body; |
1261 | struct wcn36xx_hal_config_bss_params_v1 *bss = &msg_body.bss_params; | 1268 | struct wcn36xx_hal_config_bss_params_v1 *bss; |
1262 | struct wcn36xx_hal_config_sta_params_v1 *sta = &bss->sta; | 1269 | struct wcn36xx_hal_config_sta_params_v1 *sta; |
1270 | int ret; | ||
1271 | |||
1272 | msg_body = kzalloc(sizeof(*msg_body), GFP_KERNEL); | ||
1273 | if (!msg_body) | ||
1274 | return -ENOMEM; | ||
1275 | |||
1276 | INIT_HAL_MSG((*msg_body), WCN36XX_HAL_CONFIG_BSS_REQ); | ||
1263 | 1277 | ||
1264 | INIT_HAL_MSG(msg_body, WCN36XX_HAL_CONFIG_BSS_REQ); | 1278 | bss = &msg_body->bss_params; |
1279 | sta = &bss->sta; | ||
1265 | 1280 | ||
1266 | /* convert orig to v1 */ | 1281 | /* convert orig to v1 */ |
1267 | memcpy(&msg_body.bss_params.bssid, | 1282 | memcpy(&msg_body->bss_params.bssid, |
1268 | &orig->bss_params.bssid, ETH_ALEN); | 1283 | &orig->bss_params.bssid, ETH_ALEN); |
1269 | memcpy(&msg_body.bss_params.self_mac_addr, | 1284 | memcpy(&msg_body->bss_params.self_mac_addr, |
1270 | &orig->bss_params.self_mac_addr, ETH_ALEN); | 1285 | &orig->bss_params.self_mac_addr, ETH_ALEN); |
1271 | 1286 | ||
1272 | msg_body.bss_params.bss_type = orig->bss_params.bss_type; | 1287 | msg_body->bss_params.bss_type = orig->bss_params.bss_type; |
1273 | msg_body.bss_params.oper_mode = orig->bss_params.oper_mode; | 1288 | msg_body->bss_params.oper_mode = orig->bss_params.oper_mode; |
1274 | msg_body.bss_params.nw_type = orig->bss_params.nw_type; | 1289 | msg_body->bss_params.nw_type = orig->bss_params.nw_type; |
1275 | 1290 | ||
1276 | msg_body.bss_params.short_slot_time_supported = | 1291 | msg_body->bss_params.short_slot_time_supported = |
1277 | orig->bss_params.short_slot_time_supported; | 1292 | orig->bss_params.short_slot_time_supported; |
1278 | msg_body.bss_params.lla_coexist = orig->bss_params.lla_coexist; | 1293 | msg_body->bss_params.lla_coexist = orig->bss_params.lla_coexist; |
1279 | msg_body.bss_params.llb_coexist = orig->bss_params.llb_coexist; | 1294 | msg_body->bss_params.llb_coexist = orig->bss_params.llb_coexist; |
1280 | msg_body.bss_params.llg_coexist = orig->bss_params.llg_coexist; | 1295 | msg_body->bss_params.llg_coexist = orig->bss_params.llg_coexist; |
1281 | msg_body.bss_params.ht20_coexist = orig->bss_params.ht20_coexist; | 1296 | msg_body->bss_params.ht20_coexist = orig->bss_params.ht20_coexist; |
1282 | msg_body.bss_params.lln_non_gf_coexist = | 1297 | msg_body->bss_params.lln_non_gf_coexist = |
1283 | orig->bss_params.lln_non_gf_coexist; | 1298 | orig->bss_params.lln_non_gf_coexist; |
1284 | 1299 | ||
1285 | msg_body.bss_params.lsig_tx_op_protection_full_support = | 1300 | msg_body->bss_params.lsig_tx_op_protection_full_support = |
1286 | orig->bss_params.lsig_tx_op_protection_full_support; | 1301 | orig->bss_params.lsig_tx_op_protection_full_support; |
1287 | msg_body.bss_params.rifs_mode = orig->bss_params.rifs_mode; | 1302 | msg_body->bss_params.rifs_mode = orig->bss_params.rifs_mode; |
1288 | msg_body.bss_params.beacon_interval = orig->bss_params.beacon_interval; | 1303 | msg_body->bss_params.beacon_interval = orig->bss_params.beacon_interval; |
1289 | msg_body.bss_params.dtim_period = orig->bss_params.dtim_period; | 1304 | msg_body->bss_params.dtim_period = orig->bss_params.dtim_period; |
1290 | msg_body.bss_params.tx_channel_width_set = | 1305 | msg_body->bss_params.tx_channel_width_set = |
1291 | orig->bss_params.tx_channel_width_set; | 1306 | orig->bss_params.tx_channel_width_set; |
1292 | msg_body.bss_params.oper_channel = orig->bss_params.oper_channel; | 1307 | msg_body->bss_params.oper_channel = orig->bss_params.oper_channel; |
1293 | msg_body.bss_params.ext_channel = orig->bss_params.ext_channel; | 1308 | msg_body->bss_params.ext_channel = orig->bss_params.ext_channel; |
1294 | 1309 | ||
1295 | msg_body.bss_params.reserved = orig->bss_params.reserved; | 1310 | msg_body->bss_params.reserved = orig->bss_params.reserved; |
1296 | 1311 | ||
1297 | memcpy(&msg_body.bss_params.ssid, | 1312 | memcpy(&msg_body->bss_params.ssid, |
1298 | &orig->bss_params.ssid, | 1313 | &orig->bss_params.ssid, |
1299 | sizeof(orig->bss_params.ssid)); | 1314 | sizeof(orig->bss_params.ssid)); |
1300 | 1315 | ||
1301 | msg_body.bss_params.action = orig->bss_params.action; | 1316 | msg_body->bss_params.action = orig->bss_params.action; |
1302 | msg_body.bss_params.rateset = orig->bss_params.rateset; | 1317 | msg_body->bss_params.rateset = orig->bss_params.rateset; |
1303 | msg_body.bss_params.ht = orig->bss_params.ht; | 1318 | msg_body->bss_params.ht = orig->bss_params.ht; |
1304 | msg_body.bss_params.obss_prot_enabled = | 1319 | msg_body->bss_params.obss_prot_enabled = |
1305 | orig->bss_params.obss_prot_enabled; | 1320 | orig->bss_params.obss_prot_enabled; |
1306 | msg_body.bss_params.rmf = orig->bss_params.rmf; | 1321 | msg_body->bss_params.rmf = orig->bss_params.rmf; |
1307 | msg_body.bss_params.ht_oper_mode = orig->bss_params.ht_oper_mode; | 1322 | msg_body->bss_params.ht_oper_mode = orig->bss_params.ht_oper_mode; |
1308 | msg_body.bss_params.dual_cts_protection = | 1323 | msg_body->bss_params.dual_cts_protection = |
1309 | orig->bss_params.dual_cts_protection; | 1324 | orig->bss_params.dual_cts_protection; |
1310 | 1325 | ||
1311 | msg_body.bss_params.max_probe_resp_retry_limit = | 1326 | msg_body->bss_params.max_probe_resp_retry_limit = |
1312 | orig->bss_params.max_probe_resp_retry_limit; | 1327 | orig->bss_params.max_probe_resp_retry_limit; |
1313 | msg_body.bss_params.hidden_ssid = orig->bss_params.hidden_ssid; | 1328 | msg_body->bss_params.hidden_ssid = orig->bss_params.hidden_ssid; |
1314 | msg_body.bss_params.proxy_probe_resp = | 1329 | msg_body->bss_params.proxy_probe_resp = |
1315 | orig->bss_params.proxy_probe_resp; | 1330 | orig->bss_params.proxy_probe_resp; |
1316 | msg_body.bss_params.edca_params_valid = | 1331 | msg_body->bss_params.edca_params_valid = |
1317 | orig->bss_params.edca_params_valid; | 1332 | orig->bss_params.edca_params_valid; |
1318 | 1333 | ||
1319 | memcpy(&msg_body.bss_params.acbe, | 1334 | memcpy(&msg_body->bss_params.acbe, |
1320 | &orig->bss_params.acbe, | 1335 | &orig->bss_params.acbe, |
1321 | sizeof(orig->bss_params.acbe)); | 1336 | sizeof(orig->bss_params.acbe)); |
1322 | memcpy(&msg_body.bss_params.acbk, | 1337 | memcpy(&msg_body->bss_params.acbk, |
1323 | &orig->bss_params.acbk, | 1338 | &orig->bss_params.acbk, |
1324 | sizeof(orig->bss_params.acbk)); | 1339 | sizeof(orig->bss_params.acbk)); |
1325 | memcpy(&msg_body.bss_params.acvi, | 1340 | memcpy(&msg_body->bss_params.acvi, |
1326 | &orig->bss_params.acvi, | 1341 | &orig->bss_params.acvi, |
1327 | sizeof(orig->bss_params.acvi)); | 1342 | sizeof(orig->bss_params.acvi)); |
1328 | memcpy(&msg_body.bss_params.acvo, | 1343 | memcpy(&msg_body->bss_params.acvo, |
1329 | &orig->bss_params.acvo, | 1344 | &orig->bss_params.acvo, |
1330 | sizeof(orig->bss_params.acvo)); | 1345 | sizeof(orig->bss_params.acvo)); |
1331 | 1346 | ||
1332 | msg_body.bss_params.ext_set_sta_key_param_valid = | 1347 | msg_body->bss_params.ext_set_sta_key_param_valid = |
1333 | orig->bss_params.ext_set_sta_key_param_valid; | 1348 | orig->bss_params.ext_set_sta_key_param_valid; |
1334 | 1349 | ||
1335 | memcpy(&msg_body.bss_params.ext_set_sta_key_param, | 1350 | memcpy(&msg_body->bss_params.ext_set_sta_key_param, |
1336 | &orig->bss_params.ext_set_sta_key_param, | 1351 | &orig->bss_params.ext_set_sta_key_param, |
1337 | sizeof(orig->bss_params.acvo)); | 1352 | sizeof(orig->bss_params.acvo)); |
1338 | 1353 | ||
1339 | msg_body.bss_params.wcn36xx_hal_persona = | 1354 | msg_body->bss_params.wcn36xx_hal_persona = |
1340 | orig->bss_params.wcn36xx_hal_persona; | 1355 | orig->bss_params.wcn36xx_hal_persona; |
1341 | msg_body.bss_params.spectrum_mgt_enable = | 1356 | msg_body->bss_params.spectrum_mgt_enable = |
1342 | orig->bss_params.spectrum_mgt_enable; | 1357 | orig->bss_params.spectrum_mgt_enable; |
1343 | msg_body.bss_params.tx_mgmt_power = orig->bss_params.tx_mgmt_power; | 1358 | msg_body->bss_params.tx_mgmt_power = orig->bss_params.tx_mgmt_power; |
1344 | msg_body.bss_params.max_tx_power = orig->bss_params.max_tx_power; | 1359 | msg_body->bss_params.max_tx_power = orig->bss_params.max_tx_power; |
1345 | 1360 | ||
1346 | wcn36xx_smd_convert_sta_to_v1(wcn, &orig->bss_params.sta, | 1361 | wcn36xx_smd_convert_sta_to_v1(wcn, &orig->bss_params.sta, |
1347 | &msg_body.bss_params.sta); | 1362 | &msg_body->bss_params.sta); |
1348 | 1363 | ||
1349 | PREPARE_HAL_BUF(wcn->hal_buf, msg_body); | 1364 | PREPARE_HAL_BUF(wcn->hal_buf, (*msg_body)); |
1350 | 1365 | ||
1351 | wcn36xx_dbg(WCN36XX_DBG_HAL, | 1366 | wcn36xx_dbg(WCN36XX_DBG_HAL, |
1352 | "hal config bss v1 bssid %pM self_mac_addr %pM bss_type %d oper_mode %d nw_type %d\n", | 1367 | "hal config bss v1 bssid %pM self_mac_addr %pM bss_type %d oper_mode %d nw_type %d\n", |
@@ -1358,7 +1373,10 @@ static int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn, | |||
1358 | sta->bssid, sta->action, sta->sta_index, | 1373 | sta->bssid, sta->action, sta->sta_index, |
1359 | sta->bssid_index, sta->aid, sta->type, sta->mac); | 1374 | sta->bssid_index, sta->aid, sta->type, sta->mac); |
1360 | 1375 | ||
1361 | return wcn36xx_smd_send_and_wait(wcn, msg_body.header.len); | 1376 | ret = wcn36xx_smd_send_and_wait(wcn, msg_body->header.len); |
1377 | kfree(msg_body); | ||
1378 | |||
1379 | return ret; | ||
1362 | } | 1380 | } |
1363 | 1381 | ||
1364 | 1382 | ||
@@ -1410,16 +1428,21 @@ int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif, | |||
1410 | struct ieee80211_sta *sta, const u8 *bssid, | 1428 | struct ieee80211_sta *sta, const u8 *bssid, |
1411 | bool update) | 1429 | bool update) |
1412 | { | 1430 | { |
1413 | struct wcn36xx_hal_config_bss_req_msg msg; | 1431 | struct wcn36xx_hal_config_bss_req_msg *msg; |
1414 | struct wcn36xx_hal_config_bss_params *bss; | 1432 | struct wcn36xx_hal_config_bss_params *bss; |
1415 | struct wcn36xx_hal_config_sta_params *sta_params; | 1433 | struct wcn36xx_hal_config_sta_params *sta_params; |
1416 | struct wcn36xx_vif *vif_priv = wcn36xx_vif_to_priv(vif); | 1434 | struct wcn36xx_vif *vif_priv = wcn36xx_vif_to_priv(vif); |
1417 | int ret; | 1435 | int ret; |
1418 | 1436 | ||
1419 | mutex_lock(&wcn->hal_mutex); | 1437 | mutex_lock(&wcn->hal_mutex); |
1420 | INIT_HAL_MSG(msg, WCN36XX_HAL_CONFIG_BSS_REQ); | 1438 | msg = kzalloc(sizeof(*msg), GFP_KERNEL); |
1439 | if (!msg) { | ||
1440 | ret = -ENOMEM; | ||
1441 | goto out; | ||
1442 | } | ||
1443 | INIT_HAL_MSG((*msg), WCN36XX_HAL_CONFIG_BSS_REQ); | ||
1421 | 1444 | ||
1422 | bss = &msg.bss_params; | 1445 | bss = &msg->bss_params; |
1423 | sta_params = &bss->sta; | 1446 | sta_params = &bss->sta; |
1424 | 1447 | ||
1425 | WARN_ON(is_zero_ether_addr(bssid)); | 1448 | WARN_ON(is_zero_ether_addr(bssid)); |
@@ -1514,11 +1537,11 @@ int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif, | |||
1514 | sta_params->mac); | 1537 | sta_params->mac); |
1515 | 1538 | ||
1516 | if (!wcn36xx_is_fw_version(wcn, 1, 2, 2, 24)) { | 1539 | if (!wcn36xx_is_fw_version(wcn, 1, 2, 2, 24)) { |
1517 | ret = wcn36xx_smd_config_bss_v1(wcn, &msg); | 1540 | ret = wcn36xx_smd_config_bss_v1(wcn, msg); |
1518 | } else { | 1541 | } else { |
1519 | PREPARE_HAL_BUF(wcn->hal_buf, msg); | 1542 | PREPARE_HAL_BUF(wcn->hal_buf, (*msg)); |
1520 | 1543 | ||
1521 | ret = wcn36xx_smd_send_and_wait(wcn, msg.header.len); | 1544 | ret = wcn36xx_smd_send_and_wait(wcn, msg->header.len); |
1522 | } | 1545 | } |
1523 | if (ret) { | 1546 | if (ret) { |
1524 | wcn36xx_err("Sending hal_config_bss failed\n"); | 1547 | wcn36xx_err("Sending hal_config_bss failed\n"); |
@@ -1534,6 +1557,7 @@ int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif, | |||
1534 | goto out; | 1557 | goto out; |
1535 | } | 1558 | } |
1536 | out: | 1559 | out: |
1560 | kfree(msg); | ||
1537 | mutex_unlock(&wcn->hal_mutex); | 1561 | mutex_unlock(&wcn->hal_mutex); |
1538 | return ret; | 1562 | return ret; |
1539 | } | 1563 | } |
diff --git a/drivers/net/wireless/ath/wil6210/cfg80211.c b/drivers/net/wireless/ath/wil6210/cfg80211.c index 2414f574bf69..c70854ea5634 100644 --- a/drivers/net/wireless/ath/wil6210/cfg80211.c +++ b/drivers/net/wireless/ath/wil6210/cfg80211.c | |||
@@ -25,6 +25,22 @@ | |||
25 | 25 | ||
26 | #define WIL_MAX_ROC_DURATION_MS 5000 | 26 | #define WIL_MAX_ROC_DURATION_MS 5000 |
27 | 27 | ||
28 | #define WIL_EDMG_CHANNEL_9_SUBCHANNELS (BIT(0) | BIT(1)) | ||
29 | #define WIL_EDMG_CHANNEL_10_SUBCHANNELS (BIT(1) | BIT(2)) | ||
30 | #define WIL_EDMG_CHANNEL_11_SUBCHANNELS (BIT(2) | BIT(3)) | ||
31 | |||
32 | /* WIL_EDMG_BW_CONFIGURATION define the allowed channel bandwidth | ||
33 | * configurations as defined by IEEE 802.11 section 9.4.2.251, Table 13. | ||
34 | * The value 5 allowing CB1 and CB2 of adjacent channels. | ||
35 | */ | ||
36 | #define WIL_EDMG_BW_CONFIGURATION 5 | ||
37 | |||
38 | /* WIL_EDMG_CHANNELS is a bitmap that indicates the 2.16 GHz channel(s) that | ||
39 | * are allowed to be used for EDMG transmissions in the BSS as defined by | ||
40 | * IEEE 802.11 section 9.4.2.251. | ||
41 | */ | ||
42 | #define WIL_EDMG_CHANNELS (BIT(0) | BIT(1) | BIT(2) | BIT(3)) | ||
43 | |||
28 | bool disable_ap_sme; | 44 | bool disable_ap_sme; |
29 | module_param(disable_ap_sme, bool, 0444); | 45 | module_param(disable_ap_sme, bool, 0444); |
30 | MODULE_PARM_DESC(disable_ap_sme, " let user space handle AP mode SME"); | 46 | MODULE_PARM_DESC(disable_ap_sme, " let user space handle AP mode SME"); |
@@ -51,6 +67,39 @@ static struct ieee80211_channel wil_60ghz_channels[] = { | |||
51 | CHAN60G(4, 0), | 67 | CHAN60G(4, 0), |
52 | }; | 68 | }; |
53 | 69 | ||
70 | /* Rx channel bonding mode */ | ||
71 | enum wil_rx_cb_mode { | ||
72 | WIL_RX_CB_MODE_DMG, | ||
73 | WIL_RX_CB_MODE_EDMG, | ||
74 | WIL_RX_CB_MODE_WIDE, | ||
75 | }; | ||
76 | |||
77 | static int wil_rx_cb_mode_to_n_bonded(u8 cb_mode) | ||
78 | { | ||
79 | switch (cb_mode) { | ||
80 | case WIL_RX_CB_MODE_DMG: | ||
81 | case WIL_RX_CB_MODE_EDMG: | ||
82 | return 1; | ||
83 | case WIL_RX_CB_MODE_WIDE: | ||
84 | return 2; | ||
85 | default: | ||
86 | return 1; | ||
87 | } | ||
88 | } | ||
89 | |||
90 | static int wil_tx_cb_mode_to_n_bonded(u8 cb_mode) | ||
91 | { | ||
92 | switch (cb_mode) { | ||
93 | case WMI_TX_MODE_DMG: | ||
94 | case WMI_TX_MODE_EDMG_CB1: | ||
95 | return 1; | ||
96 | case WMI_TX_MODE_EDMG_CB2: | ||
97 | return 2; | ||
98 | default: | ||
99 | return 1; | ||
100 | } | ||
101 | } | ||
102 | |||
54 | static void | 103 | static void |
55 | wil_memdup_ie(u8 **pdst, size_t *pdst_len, const u8 *src, size_t src_len) | 104 | wil_memdup_ie(u8 **pdst, size_t *pdst_len, const u8 *src, size_t src_len) |
56 | { | 105 | { |
@@ -82,6 +131,13 @@ void update_supported_bands(struct wil6210_priv *wil) | |||
82 | 131 | ||
83 | wiphy->bands[NL80211_BAND_60GHZ]->n_channels = | 132 | wiphy->bands[NL80211_BAND_60GHZ]->n_channels = |
84 | wil_num_supported_channels(wil); | 133 | wil_num_supported_channels(wil); |
134 | |||
135 | if (test_bit(WMI_FW_CAPABILITY_CHANNEL_BONDING, wil->fw_capabilities)) { | ||
136 | wiphy->bands[NL80211_BAND_60GHZ]->edmg_cap.channels = | ||
137 | WIL_EDMG_CHANNELS; | ||
138 | wiphy->bands[NL80211_BAND_60GHZ]->edmg_cap.bw_config = | ||
139 | WIL_EDMG_BW_CONFIGURATION; | ||
140 | } | ||
85 | } | 141 | } |
86 | 142 | ||
87 | /* Vendor id to be used in vendor specific command and events | 143 | /* Vendor id to be used in vendor specific command and events |
@@ -275,6 +331,8 @@ static const char * const key_usage_str[] = { | |||
275 | [WMI_KEY_USE_PAIRWISE] = "PTK", | 331 | [WMI_KEY_USE_PAIRWISE] = "PTK", |
276 | [WMI_KEY_USE_RX_GROUP] = "RX_GTK", | 332 | [WMI_KEY_USE_RX_GROUP] = "RX_GTK", |
277 | [WMI_KEY_USE_TX_GROUP] = "TX_GTK", | 333 | [WMI_KEY_USE_TX_GROUP] = "TX_GTK", |
334 | [WMI_KEY_USE_STORE_PTK] = "STORE_PTK", | ||
335 | [WMI_KEY_USE_APPLY_PTK] = "APPLY_PTK", | ||
278 | }; | 336 | }; |
279 | 337 | ||
280 | int wil_iftype_nl2wmi(enum nl80211_iftype type) | 338 | int wil_iftype_nl2wmi(enum nl80211_iftype type) |
@@ -300,6 +358,86 @@ int wil_iftype_nl2wmi(enum nl80211_iftype type) | |||
300 | return -EOPNOTSUPP; | 358 | return -EOPNOTSUPP; |
301 | } | 359 | } |
302 | 360 | ||
361 | int wil_spec2wmi_ch(u8 spec_ch, u8 *wmi_ch) | ||
362 | { | ||
363 | switch (spec_ch) { | ||
364 | case 1: | ||
365 | *wmi_ch = WMI_CHANNEL_1; | ||
366 | break; | ||
367 | case 2: | ||
368 | *wmi_ch = WMI_CHANNEL_2; | ||
369 | break; | ||
370 | case 3: | ||
371 | *wmi_ch = WMI_CHANNEL_3; | ||
372 | break; | ||
373 | case 4: | ||
374 | *wmi_ch = WMI_CHANNEL_4; | ||
375 | break; | ||
376 | case 5: | ||
377 | *wmi_ch = WMI_CHANNEL_5; | ||
378 | break; | ||
379 | case 6: | ||
380 | *wmi_ch = WMI_CHANNEL_6; | ||
381 | break; | ||
382 | case 9: | ||
383 | *wmi_ch = WMI_CHANNEL_9; | ||
384 | break; | ||
385 | case 10: | ||
386 | *wmi_ch = WMI_CHANNEL_10; | ||
387 | break; | ||
388 | case 11: | ||
389 | *wmi_ch = WMI_CHANNEL_11; | ||
390 | break; | ||
391 | case 12: | ||
392 | *wmi_ch = WMI_CHANNEL_12; | ||
393 | break; | ||
394 | default: | ||
395 | return -EINVAL; | ||
396 | } | ||
397 | |||
398 | return 0; | ||
399 | } | ||
400 | |||
401 | int wil_wmi2spec_ch(u8 wmi_ch, u8 *spec_ch) | ||
402 | { | ||
403 | switch (wmi_ch) { | ||
404 | case WMI_CHANNEL_1: | ||
405 | *spec_ch = 1; | ||
406 | break; | ||
407 | case WMI_CHANNEL_2: | ||
408 | *spec_ch = 2; | ||
409 | break; | ||
410 | case WMI_CHANNEL_3: | ||
411 | *spec_ch = 3; | ||
412 | break; | ||
413 | case WMI_CHANNEL_4: | ||
414 | *spec_ch = 4; | ||
415 | break; | ||
416 | case WMI_CHANNEL_5: | ||
417 | *spec_ch = 5; | ||
418 | break; | ||
419 | case WMI_CHANNEL_6: | ||
420 | *spec_ch = 6; | ||
421 | break; | ||
422 | case WMI_CHANNEL_9: | ||
423 | *spec_ch = 9; | ||
424 | break; | ||
425 | case WMI_CHANNEL_10: | ||
426 | *spec_ch = 10; | ||
427 | break; | ||
428 | case WMI_CHANNEL_11: | ||
429 | *spec_ch = 11; | ||
430 | break; | ||
431 | case WMI_CHANNEL_12: | ||
432 | *spec_ch = 12; | ||
433 | break; | ||
434 | default: | ||
435 | return -EINVAL; | ||
436 | } | ||
437 | |||
438 | return 0; | ||
439 | } | ||
440 | |||
303 | int wil_cid_fill_sinfo(struct wil6210_vif *vif, int cid, | 441 | int wil_cid_fill_sinfo(struct wil6210_vif *vif, int cid, |
304 | struct station_info *sinfo) | 442 | struct station_info *sinfo) |
305 | { | 443 | { |
@@ -314,6 +452,7 @@ int wil_cid_fill_sinfo(struct wil6210_vif *vif, int cid, | |||
314 | } __packed reply; | 452 | } __packed reply; |
315 | struct wil_net_stats *stats = &wil->sta[cid].stats; | 453 | struct wil_net_stats *stats = &wil->sta[cid].stats; |
316 | int rc; | 454 | int rc; |
455 | u8 txflag = RATE_INFO_FLAGS_DMG; | ||
317 | 456 | ||
318 | memset(&reply, 0, sizeof(reply)); | 457 | memset(&reply, 0, sizeof(reply)); |
319 | 458 | ||
@@ -327,7 +466,8 @@ int wil_cid_fill_sinfo(struct wil6210_vif *vif, int cid, | |||
327 | " MCS %d TSF 0x%016llx\n" | 466 | " MCS %d TSF 0x%016llx\n" |
328 | " BF status 0x%08x RSSI %d SQI %d%%\n" | 467 | " BF status 0x%08x RSSI %d SQI %d%%\n" |
329 | " Tx Tpt %d goodput %d Rx goodput %d\n" | 468 | " Tx Tpt %d goodput %d Rx goodput %d\n" |
330 | " Sectors(rx:tx) my %d:%d peer %d:%d\n""}\n", | 469 | " Sectors(rx:tx) my %d:%d peer %d:%d\n" |
470 | " Tx mode %d}\n", | ||
331 | cid, vif->mid, le16_to_cpu(reply.evt.bf_mcs), | 471 | cid, vif->mid, le16_to_cpu(reply.evt.bf_mcs), |
332 | le64_to_cpu(reply.evt.tsf), reply.evt.status, | 472 | le64_to_cpu(reply.evt.tsf), reply.evt.status, |
333 | reply.evt.rssi, | 473 | reply.evt.rssi, |
@@ -338,7 +478,8 @@ int wil_cid_fill_sinfo(struct wil6210_vif *vif, int cid, | |||
338 | le16_to_cpu(reply.evt.my_rx_sector), | 478 | le16_to_cpu(reply.evt.my_rx_sector), |
339 | le16_to_cpu(reply.evt.my_tx_sector), | 479 | le16_to_cpu(reply.evt.my_tx_sector), |
340 | le16_to_cpu(reply.evt.other_rx_sector), | 480 | le16_to_cpu(reply.evt.other_rx_sector), |
341 | le16_to_cpu(reply.evt.other_tx_sector)); | 481 | le16_to_cpu(reply.evt.other_tx_sector), |
482 | reply.evt.tx_mode); | ||
342 | 483 | ||
343 | sinfo->generation = wil->sinfo_gen; | 484 | sinfo->generation = wil->sinfo_gen; |
344 | 485 | ||
@@ -351,9 +492,16 @@ int wil_cid_fill_sinfo(struct wil6210_vif *vif, int cid, | |||
351 | BIT_ULL(NL80211_STA_INFO_RX_DROP_MISC) | | 492 | BIT_ULL(NL80211_STA_INFO_RX_DROP_MISC) | |
352 | BIT_ULL(NL80211_STA_INFO_TX_FAILED); | 493 | BIT_ULL(NL80211_STA_INFO_TX_FAILED); |
353 | 494 | ||
354 | sinfo->txrate.flags = RATE_INFO_FLAGS_DMG; | 495 | if (wil->use_enhanced_dma_hw && reply.evt.tx_mode != WMI_TX_MODE_DMG) |
496 | txflag = RATE_INFO_FLAGS_EDMG; | ||
497 | |||
498 | sinfo->txrate.flags = txflag; | ||
355 | sinfo->txrate.mcs = le16_to_cpu(reply.evt.bf_mcs); | 499 | sinfo->txrate.mcs = le16_to_cpu(reply.evt.bf_mcs); |
356 | sinfo->rxrate.mcs = stats->last_mcs_rx; | 500 | sinfo->rxrate.mcs = stats->last_mcs_rx; |
501 | sinfo->txrate.n_bonded_ch = | ||
502 | wil_tx_cb_mode_to_n_bonded(reply.evt.tx_mode); | ||
503 | sinfo->rxrate.n_bonded_ch = | ||
504 | wil_rx_cb_mode_to_n_bonded(stats->last_cb_mode_rx); | ||
357 | sinfo->rx_bytes = stats->rx_bytes; | 505 | sinfo->rx_bytes = stats->rx_bytes; |
358 | sinfo->rx_packets = stats->rx_packets; | 506 | sinfo->rx_packets = stats->rx_packets; |
359 | sinfo->rx_dropped_misc = stats->rx_dropped; | 507 | sinfo->rx_dropped_misc = stats->rx_dropped; |
@@ -396,7 +544,7 @@ static int wil_cfg80211_get_station(struct wiphy *wiphy, | |||
396 | /* | 544 | /* |
397 | * Find @idx-th active STA for specific MID for station dump. | 545 | * Find @idx-th active STA for specific MID for station dump. |
398 | */ | 546 | */ |
399 | static int wil_find_cid_by_idx(struct wil6210_priv *wil, u8 mid, int idx) | 547 | int wil_find_cid_by_idx(struct wil6210_priv *wil, u8 mid, int idx) |
400 | { | 548 | { |
401 | int i; | 549 | int i; |
402 | 550 | ||
@@ -1022,6 +1170,33 @@ static int wil_ft_connect(struct wiphy *wiphy, | |||
1022 | return rc; | 1170 | return rc; |
1023 | } | 1171 | } |
1024 | 1172 | ||
1173 | static int wil_get_wmi_edmg_channel(struct wil6210_priv *wil, u8 edmg_bw_config, | ||
1174 | u8 edmg_channels, u8 *wmi_ch) | ||
1175 | { | ||
1176 | if (!edmg_bw_config) { | ||
1177 | *wmi_ch = 0; | ||
1178 | return 0; | ||
1179 | } else if (edmg_bw_config == WIL_EDMG_BW_CONFIGURATION) { | ||
1180 | /* convert from edmg channel bitmap into edmg channel number */ | ||
1181 | switch (edmg_channels) { | ||
1182 | case WIL_EDMG_CHANNEL_9_SUBCHANNELS: | ||
1183 | return wil_spec2wmi_ch(9, wmi_ch); | ||
1184 | case WIL_EDMG_CHANNEL_10_SUBCHANNELS: | ||
1185 | return wil_spec2wmi_ch(10, wmi_ch); | ||
1186 | case WIL_EDMG_CHANNEL_11_SUBCHANNELS: | ||
1187 | return wil_spec2wmi_ch(11, wmi_ch); | ||
1188 | default: | ||
1189 | wil_err(wil, "Unsupported edmg channel bitmap 0x%x\n", | ||
1190 | edmg_channels); | ||
1191 | return -EINVAL; | ||
1192 | } | ||
1193 | } else { | ||
1194 | wil_err(wil, "Unsupported EDMG BW configuration %d\n", | ||
1195 | edmg_bw_config); | ||
1196 | return -EINVAL; | ||
1197 | } | ||
1198 | } | ||
1199 | |||
1025 | static int wil_cfg80211_connect(struct wiphy *wiphy, | 1200 | static int wil_cfg80211_connect(struct wiphy *wiphy, |
1026 | struct net_device *ndev, | 1201 | struct net_device *ndev, |
1027 | struct cfg80211_connect_params *sme) | 1202 | struct cfg80211_connect_params *sme) |
@@ -1167,6 +1342,11 @@ static int wil_cfg80211_connect(struct wiphy *wiphy, | |||
1167 | memcpy(conn.ssid, ssid_eid+2, conn.ssid_len); | 1342 | memcpy(conn.ssid, ssid_eid+2, conn.ssid_len); |
1168 | conn.channel = ch - 1; | 1343 | conn.channel = ch - 1; |
1169 | 1344 | ||
1345 | rc = wil_get_wmi_edmg_channel(wil, sme->edmg.bw_config, | ||
1346 | sme->edmg.channels, &conn.edmg_channel); | ||
1347 | if (rc < 0) | ||
1348 | return rc; | ||
1349 | |||
1170 | ether_addr_copy(conn.bssid, bss->bssid); | 1350 | ether_addr_copy(conn.bssid, bss->bssid); |
1171 | ether_addr_copy(conn.dst_mac, bss->bssid); | 1351 | ether_addr_copy(conn.dst_mac, bss->bssid); |
1172 | 1352 | ||
@@ -1376,6 +1556,7 @@ void wil_set_crypto_rx(u8 key_index, enum wmi_key_usage key_usage, | |||
1376 | return; | 1556 | return; |
1377 | 1557 | ||
1378 | switch (key_usage) { | 1558 | switch (key_usage) { |
1559 | case WMI_KEY_USE_STORE_PTK: | ||
1379 | case WMI_KEY_USE_PAIRWISE: | 1560 | case WMI_KEY_USE_PAIRWISE: |
1380 | for (tid = 0; tid < WIL_STA_TID_NUM; tid++) { | 1561 | for (tid = 0; tid < WIL_STA_TID_NUM; tid++) { |
1381 | cc = &cs->tid_crypto_rx[tid].key_id[key_index]; | 1562 | cc = &cs->tid_crypto_rx[tid].key_id[key_index]; |
@@ -1473,6 +1654,16 @@ static int wil_cfg80211_add_key(struct wiphy *wiphy, | |||
1473 | return -EINVAL; | 1654 | return -EINVAL; |
1474 | } | 1655 | } |
1475 | 1656 | ||
1657 | spin_lock_bh(&wil->eap_lock); | ||
1658 | if (pairwise && wdev->iftype == NL80211_IFTYPE_STATION && | ||
1659 | (vif->ptk_rekey_state == WIL_REKEY_M3_RECEIVED || | ||
1660 | vif->ptk_rekey_state == WIL_REKEY_WAIT_M4_SENT)) { | ||
1661 | key_usage = WMI_KEY_USE_STORE_PTK; | ||
1662 | vif->ptk_rekey_state = WIL_REKEY_WAIT_M4_SENT; | ||
1663 | wil_dbg_misc(wil, "Store EAPOL key\n"); | ||
1664 | } | ||
1665 | spin_unlock_bh(&wil->eap_lock); | ||
1666 | |||
1476 | rc = wmi_add_cipher_key(vif, key_index, mac_addr, params->key_len, | 1667 | rc = wmi_add_cipher_key(vif, key_index, mac_addr, params->key_len, |
1477 | params->key, key_usage); | 1668 | params->key, key_usage); |
1478 | if (!rc && !IS_ERR(cs)) { | 1669 | if (!rc && !IS_ERR(cs)) { |
@@ -1728,7 +1919,7 @@ out: | |||
1728 | static int _wil_cfg80211_start_ap(struct wiphy *wiphy, | 1919 | static int _wil_cfg80211_start_ap(struct wiphy *wiphy, |
1729 | struct net_device *ndev, | 1920 | struct net_device *ndev, |
1730 | const u8 *ssid, size_t ssid_len, u32 privacy, | 1921 | const u8 *ssid, size_t ssid_len, u32 privacy, |
1731 | int bi, u8 chan, | 1922 | int bi, u8 chan, u8 wmi_edmg_channel, |
1732 | struct cfg80211_beacon_data *bcon, | 1923 | struct cfg80211_beacon_data *bcon, |
1733 | u8 hidden_ssid, u32 pbss) | 1924 | u8 hidden_ssid, u32 pbss) |
1734 | { | 1925 | { |
@@ -1791,6 +1982,7 @@ static int _wil_cfg80211_start_ap(struct wiphy *wiphy, | |||
1791 | 1982 | ||
1792 | vif->privacy = privacy; | 1983 | vif->privacy = privacy; |
1793 | vif->channel = chan; | 1984 | vif->channel = chan; |
1985 | vif->wmi_edmg_channel = wmi_edmg_channel; | ||
1794 | vif->hidden_ssid = hidden_ssid; | 1986 | vif->hidden_ssid = hidden_ssid; |
1795 | vif->pbss = pbss; | 1987 | vif->pbss = pbss; |
1796 | vif->bi = bi; | 1988 | vif->bi = bi; |
@@ -1801,7 +1993,8 @@ static int _wil_cfg80211_start_ap(struct wiphy *wiphy, | |||
1801 | if (!wil_has_other_active_ifaces(wil, ndev, false, true)) | 1993 | if (!wil_has_other_active_ifaces(wil, ndev, false, true)) |
1802 | wil6210_bus_request(wil, WIL_MAX_BUS_REQUEST_KBPS); | 1994 | wil6210_bus_request(wil, WIL_MAX_BUS_REQUEST_KBPS); |
1803 | 1995 | ||
1804 | rc = wmi_pcp_start(vif, bi, wmi_nettype, chan, hidden_ssid, is_go); | 1996 | rc = wmi_pcp_start(vif, bi, wmi_nettype, chan, wmi_edmg_channel, |
1997 | hidden_ssid, is_go); | ||
1805 | if (rc) | 1998 | if (rc) |
1806 | goto err_pcp_start; | 1999 | goto err_pcp_start; |
1807 | 2000 | ||
@@ -1853,7 +2046,8 @@ void wil_cfg80211_ap_recovery(struct wil6210_priv *wil) | |||
1853 | rc = _wil_cfg80211_start_ap(wiphy, ndev, | 2046 | rc = _wil_cfg80211_start_ap(wiphy, ndev, |
1854 | vif->ssid, vif->ssid_len, | 2047 | vif->ssid, vif->ssid_len, |
1855 | vif->privacy, vif->bi, | 2048 | vif->privacy, vif->bi, |
1856 | vif->channel, &bcon, | 2049 | vif->channel, |
2050 | vif->wmi_edmg_channel, &bcon, | ||
1857 | vif->hidden_ssid, vif->pbss); | 2051 | vif->hidden_ssid, vif->pbss); |
1858 | if (rc) { | 2052 | if (rc) { |
1859 | wil_err(wil, "vif %d recovery failed (%d)\n", i, rc); | 2053 | wil_err(wil, "vif %d recovery failed (%d)\n", i, rc); |
@@ -1903,7 +2097,8 @@ static int wil_cfg80211_change_beacon(struct wiphy *wiphy, | |||
1903 | rc = _wil_cfg80211_start_ap(wiphy, ndev, vif->ssid, | 2097 | rc = _wil_cfg80211_start_ap(wiphy, ndev, vif->ssid, |
1904 | vif->ssid_len, privacy, | 2098 | vif->ssid_len, privacy, |
1905 | wdev->beacon_interval, | 2099 | wdev->beacon_interval, |
1906 | vif->channel, bcon, | 2100 | vif->channel, |
2101 | vif->wmi_edmg_channel, bcon, | ||
1907 | vif->hidden_ssid, | 2102 | vif->hidden_ssid, |
1908 | vif->pbss); | 2103 | vif->pbss); |
1909 | } else { | 2104 | } else { |
@@ -1922,10 +2117,17 @@ static int wil_cfg80211_start_ap(struct wiphy *wiphy, | |||
1922 | struct ieee80211_channel *channel = info->chandef.chan; | 2117 | struct ieee80211_channel *channel = info->chandef.chan; |
1923 | struct cfg80211_beacon_data *bcon = &info->beacon; | 2118 | struct cfg80211_beacon_data *bcon = &info->beacon; |
1924 | struct cfg80211_crypto_settings *crypto = &info->crypto; | 2119 | struct cfg80211_crypto_settings *crypto = &info->crypto; |
2120 | u8 wmi_edmg_channel; | ||
1925 | u8 hidden_ssid; | 2121 | u8 hidden_ssid; |
1926 | 2122 | ||
1927 | wil_dbg_misc(wil, "start_ap\n"); | 2123 | wil_dbg_misc(wil, "start_ap\n"); |
1928 | 2124 | ||
2125 | rc = wil_get_wmi_edmg_channel(wil, info->chandef.edmg.bw_config, | ||
2126 | info->chandef.edmg.channels, | ||
2127 | &wmi_edmg_channel); | ||
2128 | if (rc < 0) | ||
2129 | return rc; | ||
2130 | |||
1929 | if (!channel) { | 2131 | if (!channel) { |
1930 | wil_err(wil, "AP: No channel???\n"); | 2132 | wil_err(wil, "AP: No channel???\n"); |
1931 | return -EINVAL; | 2133 | return -EINVAL; |
@@ -1965,7 +2167,8 @@ static int wil_cfg80211_start_ap(struct wiphy *wiphy, | |||
1965 | rc = _wil_cfg80211_start_ap(wiphy, ndev, | 2167 | rc = _wil_cfg80211_start_ap(wiphy, ndev, |
1966 | info->ssid, info->ssid_len, info->privacy, | 2168 | info->ssid, info->ssid_len, info->privacy, |
1967 | info->beacon_interval, channel->hw_value, | 2169 | info->beacon_interval, channel->hw_value, |
1968 | bcon, hidden_ssid, info->pbss); | 2170 | wmi_edmg_channel, bcon, hidden_ssid, |
2171 | info->pbss); | ||
1969 | 2172 | ||
1970 | return rc; | 2173 | return rc; |
1971 | } | 2174 | } |
diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c b/drivers/net/wireless/ath/wil6210/debugfs.c index fd3b2b3d1b5c..304b4d4e506a 100644 --- a/drivers/net/wireless/ath/wil6210/debugfs.c +++ b/drivers/net/wireless/ath/wil6210/debugfs.c | |||
@@ -393,7 +393,8 @@ static int wil_debugfs_iomem_x32_set(void *data, u64 val) | |||
393 | if (ret < 0) | 393 | if (ret < 0) |
394 | return ret; | 394 | return ret; |
395 | 395 | ||
396 | writel(val, (void __iomem *)d->offset); | 396 | writel_relaxed(val, (void __iomem *)d->offset); |
397 | |||
397 | wmb(); /* make sure write propagated to HW */ | 398 | wmb(); /* make sure write propagated to HW */ |
398 | 399 | ||
399 | wil_pm_runtime_put(wil); | 400 | wil_pm_runtime_put(wil); |
@@ -959,6 +960,18 @@ static const struct file_operations fops_pmcdata = { | |||
959 | .llseek = wil_pmc_llseek, | 960 | .llseek = wil_pmc_llseek, |
960 | }; | 961 | }; |
961 | 962 | ||
963 | static int wil_pmcring_seq_open(struct inode *inode, struct file *file) | ||
964 | { | ||
965 | return single_open(file, wil_pmcring_read, inode->i_private); | ||
966 | } | ||
967 | |||
968 | static const struct file_operations fops_pmcring = { | ||
969 | .open = wil_pmcring_seq_open, | ||
970 | .release = single_release, | ||
971 | .read = seq_read, | ||
972 | .llseek = seq_lseek, | ||
973 | }; | ||
974 | |||
962 | /*---tx_mgmt---*/ | 975 | /*---tx_mgmt---*/ |
963 | /* Write mgmt frame to this file to send it */ | 976 | /* Write mgmt frame to this file to send it */ |
964 | static ssize_t wil_write_file_txmgmt(struct file *file, const char __user *buf, | 977 | static ssize_t wil_write_file_txmgmt(struct file *file, const char __user *buf, |
@@ -2371,6 +2384,7 @@ static const struct { | |||
2371 | {"back", 0644, &fops_back}, | 2384 | {"back", 0644, &fops_back}, |
2372 | {"pmccfg", 0644, &fops_pmccfg}, | 2385 | {"pmccfg", 0644, &fops_pmccfg}, |
2373 | {"pmcdata", 0444, &fops_pmcdata}, | 2386 | {"pmcdata", 0444, &fops_pmcdata}, |
2387 | {"pmcring", 0444, &fops_pmcring}, | ||
2374 | {"temp", 0444, &temp_fops}, | 2388 | {"temp", 0444, &temp_fops}, |
2375 | {"freq", 0444, &freq_fops}, | 2389 | {"freq", 0444, &freq_fops}, |
2376 | {"link", 0444, &link_fops}, | 2390 | {"link", 0444, &link_fops}, |
diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c index 173561fe593d..9b72202eeadc 100644 --- a/drivers/net/wireless/ath/wil6210/main.c +++ b/drivers/net/wireless/ath/wil6210/main.c | |||
@@ -373,6 +373,7 @@ static void _wil6210_disconnect_complete(struct wil6210_vif *vif, | |||
373 | } | 373 | } |
374 | clear_bit(wil_vif_fwconnecting, vif->status); | 374 | clear_bit(wil_vif_fwconnecting, vif->status); |
375 | clear_bit(wil_vif_ft_roam, vif->status); | 375 | clear_bit(wil_vif_ft_roam, vif->status); |
376 | vif->ptk_rekey_state = WIL_REKEY_IDLE; | ||
376 | 377 | ||
377 | break; | 378 | break; |
378 | case NL80211_IFTYPE_AP: | 379 | case NL80211_IFTYPE_AP: |
@@ -724,6 +725,8 @@ int wil_priv_init(struct wil6210_priv *wil) | |||
724 | INIT_LIST_HEAD(&wil->pending_wmi_ev); | 725 | INIT_LIST_HEAD(&wil->pending_wmi_ev); |
725 | spin_lock_init(&wil->wmi_ev_lock); | 726 | spin_lock_init(&wil->wmi_ev_lock); |
726 | spin_lock_init(&wil->net_queue_lock); | 727 | spin_lock_init(&wil->net_queue_lock); |
728 | spin_lock_init(&wil->eap_lock); | ||
729 | |||
727 | init_waitqueue_head(&wil->wq); | 730 | init_waitqueue_head(&wil->wq); |
728 | init_rwsem(&wil->mem_lock); | 731 | init_rwsem(&wil->mem_lock); |
729 | 732 | ||
@@ -1654,6 +1657,7 @@ int wil_reset(struct wil6210_priv *wil, bool load_fw) | |||
1654 | cancel_work_sync(&vif->disconnect_worker); | 1657 | cancel_work_sync(&vif->disconnect_worker); |
1655 | wil6210_disconnect(vif, NULL, | 1658 | wil6210_disconnect(vif, NULL, |
1656 | WLAN_REASON_DEAUTH_LEAVING); | 1659 | WLAN_REASON_DEAUTH_LEAVING); |
1660 | vif->ptk_rekey_state = WIL_REKEY_IDLE; | ||
1657 | } | 1661 | } |
1658 | } | 1662 | } |
1659 | wil_bcast_fini_all(wil); | 1663 | wil_bcast_fini_all(wil); |
diff --git a/drivers/net/wireless/ath/wil6210/netdev.c b/drivers/net/wireless/ath/wil6210/netdev.c index 59f041d708fe..a87bb84a8286 100644 --- a/drivers/net/wireless/ath/wil6210/netdev.c +++ b/drivers/net/wireless/ath/wil6210/netdev.c | |||
@@ -218,6 +218,7 @@ static void wil_vif_deinit(struct wil6210_vif *vif) | |||
218 | cancel_work_sync(&vif->p2p.delayed_listen_work); | 218 | cancel_work_sync(&vif->p2p.delayed_listen_work); |
219 | wil_probe_client_flush(vif); | 219 | wil_probe_client_flush(vif); |
220 | cancel_work_sync(&vif->probe_client_worker); | 220 | cancel_work_sync(&vif->probe_client_worker); |
221 | cancel_work_sync(&vif->enable_tx_key_worker); | ||
221 | } | 222 | } |
222 | 223 | ||
223 | void wil_vif_free(struct wil6210_vif *vif) | 224 | void wil_vif_free(struct wil6210_vif *vif) |
@@ -283,7 +284,9 @@ static void wil_vif_init(struct wil6210_vif *vif) | |||
283 | 284 | ||
284 | INIT_WORK(&vif->probe_client_worker, wil_probe_client_worker); | 285 | INIT_WORK(&vif->probe_client_worker, wil_probe_client_worker); |
285 | INIT_WORK(&vif->disconnect_worker, wil_disconnect_worker); | 286 | INIT_WORK(&vif->disconnect_worker, wil_disconnect_worker); |
287 | INIT_WORK(&vif->p2p.discovery_expired_work, wil_p2p_listen_expired); | ||
286 | INIT_WORK(&vif->p2p.delayed_listen_work, wil_p2p_delayed_listen_work); | 288 | INIT_WORK(&vif->p2p.delayed_listen_work, wil_p2p_delayed_listen_work); |
289 | INIT_WORK(&vif->enable_tx_key_worker, wil_enable_tx_key_worker); | ||
287 | 290 | ||
288 | INIT_LIST_HEAD(&vif->probe_client_pending); | 291 | INIT_LIST_HEAD(&vif->probe_client_pending); |
289 | 292 | ||
@@ -540,6 +543,7 @@ void wil_vif_remove(struct wil6210_priv *wil, u8 mid) | |||
540 | cancel_work_sync(&vif->disconnect_worker); | 543 | cancel_work_sync(&vif->disconnect_worker); |
541 | wil_probe_client_flush(vif); | 544 | wil_probe_client_flush(vif); |
542 | cancel_work_sync(&vif->probe_client_worker); | 545 | cancel_work_sync(&vif->probe_client_worker); |
546 | cancel_work_sync(&vif->enable_tx_key_worker); | ||
543 | /* for VIFs, ndev will be freed by destructor after RTNL is unlocked. | 547 | /* for VIFs, ndev will be freed by destructor after RTNL is unlocked. |
544 | * the main interface will be freed in wil_if_free, we need to keep it | 548 | * the main interface will be freed in wil_if_free, we need to keep it |
545 | * a bit longer so logging macros will work. | 549 | * a bit longer so logging macros will work. |
diff --git a/drivers/net/wireless/ath/wil6210/pcie_bus.c b/drivers/net/wireless/ath/wil6210/pcie_bus.c index 9f5a914abc18..18dd8b246022 100644 --- a/drivers/net/wireless/ath/wil6210/pcie_bus.c +++ b/drivers/net/wireless/ath/wil6210/pcie_bus.c | |||
@@ -435,7 +435,7 @@ static int wil_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
435 | mutex_unlock(&wil->mutex); | 435 | mutex_unlock(&wil->mutex); |
436 | if (rc) { | 436 | if (rc) { |
437 | wil_err(wil, "failed to load WMI only FW\n"); | 437 | wil_err(wil, "failed to load WMI only FW\n"); |
438 | goto if_remove; | 438 | /* ignore the error to allow debugging */ |
439 | } | 439 | } |
440 | } | 440 | } |
441 | 441 | ||
@@ -455,8 +455,6 @@ static int wil_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
455 | 455 | ||
456 | return 0; | 456 | return 0; |
457 | 457 | ||
458 | if_remove: | ||
459 | wil_if_remove(wil); | ||
460 | bus_disable: | 458 | bus_disable: |
461 | wil_if_pcie_disable(wil); | 459 | wil_if_pcie_disable(wil); |
462 | err_iounmap: | 460 | err_iounmap: |
diff --git a/drivers/net/wireless/ath/wil6210/pmc.c b/drivers/net/wireless/ath/wil6210/pmc.c index c49f7988369e..4b7ac14fc2a7 100644 --- a/drivers/net/wireless/ath/wil6210/pmc.c +++ b/drivers/net/wireless/ath/wil6210/pmc.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/types.h> | 18 | #include <linux/types.h> |
19 | #include <linux/errno.h> | 19 | #include <linux/errno.h> |
20 | #include <linux/fs.h> | 20 | #include <linux/fs.h> |
21 | #include <linux/seq_file.h> | ||
21 | #include "wmi.h" | 22 | #include "wmi.h" |
22 | #include "wil6210.h" | 23 | #include "wil6210.h" |
23 | #include "txrx.h" | 24 | #include "txrx.h" |
@@ -431,3 +432,28 @@ out: | |||
431 | 432 | ||
432 | return newpos; | 433 | return newpos; |
433 | } | 434 | } |
435 | |||
436 | int wil_pmcring_read(struct seq_file *s, void *data) | ||
437 | { | ||
438 | struct wil6210_priv *wil = s->private; | ||
439 | struct pmc_ctx *pmc = &wil->pmc; | ||
440 | size_t pmc_ring_size = | ||
441 | sizeof(struct vring_rx_desc) * pmc->num_descriptors; | ||
442 | |||
443 | mutex_lock(&pmc->lock); | ||
444 | |||
445 | if (!wil_is_pmc_allocated(pmc)) { | ||
446 | wil_err(wil, "error, pmc is not allocated!\n"); | ||
447 | pmc->last_cmd_status = -EPERM; | ||
448 | mutex_unlock(&pmc->lock); | ||
449 | return -EPERM; | ||
450 | } | ||
451 | |||
452 | wil_dbg_misc(wil, "pmcring_read: size %zu\n", pmc_ring_size); | ||
453 | |||
454 | seq_write(s, pmc->pring_va, pmc_ring_size); | ||
455 | |||
456 | mutex_unlock(&pmc->lock); | ||
457 | |||
458 | return 0; | ||
459 | } | ||
diff --git a/drivers/net/wireless/ath/wil6210/pmc.h b/drivers/net/wireless/ath/wil6210/pmc.h index bebc8d52e1e6..92b8c4d84a6a 100644 --- a/drivers/net/wireless/ath/wil6210/pmc.h +++ b/drivers/net/wireless/ath/wil6210/pmc.h | |||
@@ -25,3 +25,4 @@ void wil_pmc_free(struct wil6210_priv *wil, int send_pmc_cmd); | |||
25 | int wil_pmc_last_cmd_status(struct wil6210_priv *wil); | 25 | int wil_pmc_last_cmd_status(struct wil6210_priv *wil); |
26 | ssize_t wil_pmc_read(struct file *, char __user *, size_t, loff_t *); | 26 | ssize_t wil_pmc_read(struct file *, char __user *, size_t, loff_t *); |
27 | loff_t wil_pmc_llseek(struct file *filp, loff_t off, int whence); | 27 | loff_t wil_pmc_llseek(struct file *filp, loff_t off, int whence); |
28 | int wil_pmcring_read(struct seq_file *s, void *data); | ||
diff --git a/drivers/net/wireless/ath/wil6210/rx_reorder.c b/drivers/net/wireless/ath/wil6210/rx_reorder.c index 784239bcb3a6..13246d216803 100644 --- a/drivers/net/wireless/ath/wil6210/rx_reorder.c +++ b/drivers/net/wireless/ath/wil6210/rx_reorder.c | |||
@@ -260,7 +260,6 @@ struct wil_tid_ampdu_rx *wil_tid_ampdu_rx_alloc(struct wil6210_priv *wil, | |||
260 | r->reorder_buf = | 260 | r->reorder_buf = |
261 | kcalloc(size, sizeof(struct sk_buff *), GFP_KERNEL); | 261 | kcalloc(size, sizeof(struct sk_buff *), GFP_KERNEL); |
262 | if (!r->reorder_buf) { | 262 | if (!r->reorder_buf) { |
263 | kfree(r->reorder_buf); | ||
264 | kfree(r); | 263 | kfree(r); |
265 | return NULL; | 264 | return NULL; |
266 | } | 265 | } |
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c index 8b01ef8269da..cb13652491ad 100644 --- a/drivers/net/wireless/ath/wil6210/txrx.c +++ b/drivers/net/wireless/ath/wil6210/txrx.c | |||
@@ -725,24 +725,198 @@ static void wil_get_netif_rx_params(struct sk_buff *skb, int *cid, | |||
725 | } | 725 | } |
726 | 726 | ||
727 | /* | 727 | /* |
728 | * Check if skb is ptk eapol key message | ||
729 | * | ||
730 | * returns a pointer to the start of the eapol key structure, NULL | ||
731 | * if frame is not PTK eapol key | ||
732 | */ | ||
733 | static struct wil_eapol_key *wil_is_ptk_eapol_key(struct wil6210_priv *wil, | ||
734 | struct sk_buff *skb) | ||
735 | { | ||
736 | u8 *buf; | ||
737 | const struct wil_1x_hdr *hdr; | ||
738 | struct wil_eapol_key *key; | ||
739 | u16 key_info; | ||
740 | int len = skb->len; | ||
741 | |||
742 | if (!skb_mac_header_was_set(skb)) { | ||
743 | wil_err(wil, "mac header was not set\n"); | ||
744 | return NULL; | ||
745 | } | ||
746 | |||
747 | len -= skb_mac_offset(skb); | ||
748 | |||
749 | if (len < sizeof(struct ethhdr) + sizeof(struct wil_1x_hdr) + | ||
750 | sizeof(struct wil_eapol_key)) | ||
751 | return NULL; | ||
752 | |||
753 | buf = skb_mac_header(skb) + sizeof(struct ethhdr); | ||
754 | |||
755 | hdr = (const struct wil_1x_hdr *)buf; | ||
756 | if (hdr->type != WIL_1X_TYPE_EAPOL_KEY) | ||
757 | return NULL; | ||
758 | |||
759 | key = (struct wil_eapol_key *)(buf + sizeof(struct wil_1x_hdr)); | ||
760 | if (key->type != WIL_EAPOL_KEY_TYPE_WPA && | ||
761 | key->type != WIL_EAPOL_KEY_TYPE_RSN) | ||
762 | return NULL; | ||
763 | |||
764 | key_info = be16_to_cpu(key->key_info); | ||
765 | if (!(key_info & WIL_KEY_INFO_KEY_TYPE)) /* check if pairwise */ | ||
766 | return NULL; | ||
767 | |||
768 | return key; | ||
769 | } | ||
770 | |||
771 | static bool wil_skb_is_eap_3(struct wil6210_priv *wil, struct sk_buff *skb) | ||
772 | { | ||
773 | struct wil_eapol_key *key; | ||
774 | u16 key_info; | ||
775 | |||
776 | key = wil_is_ptk_eapol_key(wil, skb); | ||
777 | if (!key) | ||
778 | return false; | ||
779 | |||
780 | key_info = be16_to_cpu(key->key_info); | ||
781 | if (key_info & (WIL_KEY_INFO_MIC | | ||
782 | WIL_KEY_INFO_ENCR_KEY_DATA)) { | ||
783 | /* 3/4 of 4-Way Handshake */ | ||
784 | wil_dbg_misc(wil, "EAPOL key message 3\n"); | ||
785 | return true; | ||
786 | } | ||
787 | /* 1/4 of 4-Way Handshake */ | ||
788 | wil_dbg_misc(wil, "EAPOL key message 1\n"); | ||
789 | |||
790 | return false; | ||
791 | } | ||
792 | |||
793 | static bool wil_skb_is_eap_4(struct wil6210_priv *wil, struct sk_buff *skb) | ||
794 | { | ||
795 | struct wil_eapol_key *key; | ||
796 | u32 *nonce, i; | ||
797 | |||
798 | key = wil_is_ptk_eapol_key(wil, skb); | ||
799 | if (!key) | ||
800 | return false; | ||
801 | |||
802 | nonce = (u32 *)key->key_nonce; | ||
803 | for (i = 0; i < WIL_EAP_NONCE_LEN / sizeof(u32); i++, nonce++) { | ||
804 | if (*nonce != 0) { | ||
805 | /* message 2/4 */ | ||
806 | wil_dbg_misc(wil, "EAPOL key message 2\n"); | ||
807 | return false; | ||
808 | } | ||
809 | } | ||
810 | wil_dbg_misc(wil, "EAPOL key message 4\n"); | ||
811 | |||
812 | return true; | ||
813 | } | ||
814 | |||
815 | void wil_enable_tx_key_worker(struct work_struct *work) | ||
816 | { | ||
817 | struct wil6210_vif *vif = container_of(work, | ||
818 | struct wil6210_vif, enable_tx_key_worker); | ||
819 | struct wil6210_priv *wil = vif_to_wil(vif); | ||
820 | int rc, cid; | ||
821 | |||
822 | rtnl_lock(); | ||
823 | if (vif->ptk_rekey_state != WIL_REKEY_WAIT_M4_SENT) { | ||
824 | wil_dbg_misc(wil, "Invalid rekey state = %d\n", | ||
825 | vif->ptk_rekey_state); | ||
826 | rtnl_unlock(); | ||
827 | return; | ||
828 | } | ||
829 | |||
830 | cid = wil_find_cid_by_idx(wil, vif->mid, 0); | ||
831 | if (!wil_cid_valid(wil, cid)) { | ||
832 | wil_err(wil, "Invalid cid = %d\n", cid); | ||
833 | rtnl_unlock(); | ||
834 | return; | ||
835 | } | ||
836 | |||
837 | wil_dbg_misc(wil, "Apply PTK key after eapol was sent out\n"); | ||
838 | rc = wmi_add_cipher_key(vif, 0, wil->sta[cid].addr, 0, NULL, | ||
839 | WMI_KEY_USE_APPLY_PTK); | ||
840 | |||
841 | vif->ptk_rekey_state = WIL_REKEY_IDLE; | ||
842 | rtnl_unlock(); | ||
843 | |||
844 | if (rc) | ||
845 | wil_err(wil, "Apply PTK key failed %d\n", rc); | ||
846 | } | ||
847 | |||
848 | void wil_tx_complete_handle_eapol(struct wil6210_vif *vif, struct sk_buff *skb) | ||
849 | { | ||
850 | struct wil6210_priv *wil = vif_to_wil(vif); | ||
851 | struct wireless_dev *wdev = vif_to_wdev(vif); | ||
852 | bool q = false; | ||
853 | |||
854 | if (wdev->iftype != NL80211_IFTYPE_STATION || | ||
855 | !test_bit(WMI_FW_CAPABILITY_SPLIT_REKEY, wil->fw_capabilities)) | ||
856 | return; | ||
857 | |||
858 | /* check if skb is an EAP message 4/4 */ | ||
859 | if (!wil_skb_is_eap_4(wil, skb)) | ||
860 | return; | ||
861 | |||
862 | spin_lock_bh(&wil->eap_lock); | ||
863 | switch (vif->ptk_rekey_state) { | ||
864 | case WIL_REKEY_IDLE: | ||
865 | /* ignore idle state, can happen due to M4 retransmission */ | ||
866 | break; | ||
867 | case WIL_REKEY_M3_RECEIVED: | ||
868 | vif->ptk_rekey_state = WIL_REKEY_IDLE; | ||
869 | break; | ||
870 | case WIL_REKEY_WAIT_M4_SENT: | ||
871 | q = true; | ||
872 | break; | ||
873 | default: | ||
874 | wil_err(wil, "Unknown rekey state = %d", | ||
875 | vif->ptk_rekey_state); | ||
876 | } | ||
877 | spin_unlock_bh(&wil->eap_lock); | ||
878 | |||
879 | if (q) { | ||
880 | q = queue_work(wil->wmi_wq, &vif->enable_tx_key_worker); | ||
881 | wil_dbg_misc(wil, "queue_work of enable_tx_key_worker -> %d\n", | ||
882 | q); | ||
883 | } | ||
884 | } | ||
885 | |||
886 | static void wil_rx_handle_eapol(struct wil6210_vif *vif, struct sk_buff *skb) | ||
887 | { | ||
888 | struct wil6210_priv *wil = vif_to_wil(vif); | ||
889 | struct wireless_dev *wdev = vif_to_wdev(vif); | ||
890 | |||
891 | if (wdev->iftype != NL80211_IFTYPE_STATION || | ||
892 | !test_bit(WMI_FW_CAPABILITY_SPLIT_REKEY, wil->fw_capabilities)) | ||
893 | return; | ||
894 | |||
895 | /* check if skb is a EAP message 3/4 */ | ||
896 | if (!wil_skb_is_eap_3(wil, skb)) | ||
897 | return; | ||
898 | |||
899 | if (vif->ptk_rekey_state == WIL_REKEY_IDLE) | ||
900 | vif->ptk_rekey_state = WIL_REKEY_M3_RECEIVED; | ||
901 | } | ||
902 | |||
903 | /* | ||
728 | * Pass Rx packet to the netif. Update statistics. | 904 | * Pass Rx packet to the netif. Update statistics. |
729 | * Called in softirq context (NAPI poll). | 905 | * Called in softirq context (NAPI poll). |
730 | */ | 906 | */ |
731 | void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev) | 907 | void wil_netif_rx(struct sk_buff *skb, struct net_device *ndev, int cid, |
908 | struct wil_net_stats *stats, bool gro) | ||
732 | { | 909 | { |
733 | gro_result_t rc = GRO_NORMAL; | 910 | gro_result_t rc = GRO_NORMAL; |
734 | struct wil6210_vif *vif = ndev_to_vif(ndev); | 911 | struct wil6210_vif *vif = ndev_to_vif(ndev); |
735 | struct wil6210_priv *wil = ndev_to_wil(ndev); | 912 | struct wil6210_priv *wil = ndev_to_wil(ndev); |
736 | struct wireless_dev *wdev = vif_to_wdev(vif); | 913 | struct wireless_dev *wdev = vif_to_wdev(vif); |
737 | unsigned int len = skb->len; | 914 | unsigned int len = skb->len; |
738 | int cid; | ||
739 | int security; | ||
740 | u8 *sa, *da = wil_skb_get_da(skb); | 915 | u8 *sa, *da = wil_skb_get_da(skb); |
741 | /* here looking for DA, not A1, thus Rxdesc's 'mcast' indication | 916 | /* here looking for DA, not A1, thus Rxdesc's 'mcast' indication |
742 | * is not suitable, need to look at data | 917 | * is not suitable, need to look at data |
743 | */ | 918 | */ |
744 | int mcast = is_multicast_ether_addr(da); | 919 | int mcast = is_multicast_ether_addr(da); |
745 | struct wil_net_stats *stats; | ||
746 | struct sk_buff *xmit_skb = NULL; | 920 | struct sk_buff *xmit_skb = NULL; |
747 | static const char * const gro_res_str[] = { | 921 | static const char * const gro_res_str[] = { |
748 | [GRO_MERGED] = "GRO_MERGED", | 922 | [GRO_MERGED] = "GRO_MERGED", |
@@ -753,25 +927,6 @@ void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev) | |||
753 | [GRO_CONSUMED] = "GRO_CONSUMED", | 927 | [GRO_CONSUMED] = "GRO_CONSUMED", |
754 | }; | 928 | }; |
755 | 929 | ||
756 | wil->txrx_ops.get_netif_rx_params(skb, &cid, &security); | ||
757 | |||
758 | stats = &wil->sta[cid].stats; | ||
759 | |||
760 | skb_orphan(skb); | ||
761 | |||
762 | if (security && (wil->txrx_ops.rx_crypto_check(wil, skb) != 0)) { | ||
763 | rc = GRO_DROP; | ||
764 | dev_kfree_skb(skb); | ||
765 | stats->rx_replay++; | ||
766 | goto stats; | ||
767 | } | ||
768 | |||
769 | /* check errors reported by HW and update statistics */ | ||
770 | if (unlikely(wil->txrx_ops.rx_error_check(wil, skb, stats))) { | ||
771 | dev_kfree_skb(skb); | ||
772 | return; | ||
773 | } | ||
774 | |||
775 | if (wdev->iftype == NL80211_IFTYPE_STATION) { | 930 | if (wdev->iftype == NL80211_IFTYPE_STATION) { |
776 | sa = wil_skb_get_sa(skb); | 931 | sa = wil_skb_get_sa(skb); |
777 | if (mcast && ether_addr_equal(sa, ndev->dev_addr)) { | 932 | if (mcast && ether_addr_equal(sa, ndev->dev_addr)) { |
@@ -817,7 +972,14 @@ void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev) | |||
817 | if (skb) { /* deliver to local stack */ | 972 | if (skb) { /* deliver to local stack */ |
818 | skb->protocol = eth_type_trans(skb, ndev); | 973 | skb->protocol = eth_type_trans(skb, ndev); |
819 | skb->dev = ndev; | 974 | skb->dev = ndev; |
820 | rc = napi_gro_receive(&wil->napi_rx, skb); | 975 | |
976 | if (skb->protocol == cpu_to_be16(ETH_P_PAE)) | ||
977 | wil_rx_handle_eapol(vif, skb); | ||
978 | |||
979 | if (gro) | ||
980 | rc = napi_gro_receive(&wil->napi_rx, skb); | ||
981 | else | ||
982 | netif_rx_ni(skb); | ||
821 | wil_dbg_txrx(wil, "Rx complete %d bytes => %s\n", | 983 | wil_dbg_txrx(wil, "Rx complete %d bytes => %s\n", |
822 | len, gro_res_str[rc]); | 984 | len, gro_res_str[rc]); |
823 | } | 985 | } |
@@ -837,6 +999,36 @@ stats: | |||
837 | } | 999 | } |
838 | } | 1000 | } |
839 | 1001 | ||
1002 | void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev) | ||
1003 | { | ||
1004 | int cid, security; | ||
1005 | struct wil6210_priv *wil = ndev_to_wil(ndev); | ||
1006 | struct wil_net_stats *stats; | ||
1007 | |||
1008 | wil->txrx_ops.get_netif_rx_params(skb, &cid, &security); | ||
1009 | |||
1010 | stats = &wil->sta[cid].stats; | ||
1011 | |||
1012 | skb_orphan(skb); | ||
1013 | |||
1014 | if (security && (wil->txrx_ops.rx_crypto_check(wil, skb) != 0)) { | ||
1015 | dev_kfree_skb(skb); | ||
1016 | ndev->stats.rx_dropped++; | ||
1017 | stats->rx_replay++; | ||
1018 | stats->rx_dropped++; | ||
1019 | wil_dbg_txrx(wil, "Rx drop %d bytes\n", skb->len); | ||
1020 | return; | ||
1021 | } | ||
1022 | |||
1023 | /* check errors reported by HW and update statistics */ | ||
1024 | if (unlikely(wil->txrx_ops.rx_error_check(wil, skb, stats))) { | ||
1025 | dev_kfree_skb(skb); | ||
1026 | return; | ||
1027 | } | ||
1028 | |||
1029 | wil_netif_rx(skb, ndev, cid, stats, true); | ||
1030 | } | ||
1031 | |||
840 | /** | 1032 | /** |
841 | * Proceed all completed skb's from Rx VRING | 1033 | * Proceed all completed skb's from Rx VRING |
842 | * | 1034 | * |
@@ -2320,6 +2512,10 @@ int wil_tx_complete(struct wil6210_vif *vif, int ringid) | |||
2320 | if (stats) | 2512 | if (stats) |
2321 | stats->tx_errors++; | 2513 | stats->tx_errors++; |
2322 | } | 2514 | } |
2515 | |||
2516 | if (skb->protocol == cpu_to_be16(ETH_P_PAE)) | ||
2517 | wil_tx_complete_handle_eapol(vif, skb); | ||
2518 | |||
2323 | wil_consume_skb(skb, d->dma.error == 0); | 2519 | wil_consume_skb(skb, d->dma.error == 0); |
2324 | } | 2520 | } |
2325 | memset(ctx, 0, sizeof(*ctx)); | 2521 | memset(ctx, 0, sizeof(*ctx)); |
diff --git a/drivers/net/wireless/ath/wil6210/txrx.h b/drivers/net/wireless/ath/wil6210/txrx.h index c0da1340c2d2..5120475b0cd7 100644 --- a/drivers/net/wireless/ath/wil6210/txrx.h +++ b/drivers/net/wireless/ath/wil6210/txrx.h | |||
@@ -423,6 +423,46 @@ struct vring_rx_mac { | |||
423 | #define RX_DMA_STATUS_PHY_INFO BIT(6) | 423 | #define RX_DMA_STATUS_PHY_INFO BIT(6) |
424 | #define RX_DMA_STATUS_FFM BIT(7) /* EtherType Flex Filter Match */ | 424 | #define RX_DMA_STATUS_FFM BIT(7) /* EtherType Flex Filter Match */ |
425 | 425 | ||
426 | /* IEEE 802.11, 8.5.2 EAPOL-Key frames */ | ||
427 | #define WIL_KEY_INFO_KEY_TYPE BIT(3) /* val of 1 = Pairwise, 0 = Group key */ | ||
428 | |||
429 | #define WIL_KEY_INFO_MIC BIT(8) | ||
430 | #define WIL_KEY_INFO_ENCR_KEY_DATA BIT(12) /* for rsn only */ | ||
431 | |||
432 | #define WIL_EAP_NONCE_LEN 32 | ||
433 | #define WIL_EAP_KEY_RSC_LEN 8 | ||
434 | #define WIL_EAP_REPLAY_COUNTER_LEN 8 | ||
435 | #define WIL_EAP_KEY_IV_LEN 16 | ||
436 | #define WIL_EAP_KEY_ID_LEN 8 | ||
437 | |||
438 | enum { | ||
439 | WIL_1X_TYPE_EAP_PACKET = 0, | ||
440 | WIL_1X_TYPE_EAPOL_START = 1, | ||
441 | WIL_1X_TYPE_EAPOL_LOGOFF = 2, | ||
442 | WIL_1X_TYPE_EAPOL_KEY = 3, | ||
443 | }; | ||
444 | |||
445 | #define WIL_EAPOL_KEY_TYPE_RSN 2 | ||
446 | #define WIL_EAPOL_KEY_TYPE_WPA 254 | ||
447 | |||
448 | struct wil_1x_hdr { | ||
449 | u8 version; | ||
450 | u8 type; | ||
451 | __be16 length; | ||
452 | /* followed by data */ | ||
453 | } __packed; | ||
454 | |||
455 | struct wil_eapol_key { | ||
456 | u8 type; | ||
457 | __be16 key_info; | ||
458 | __be16 key_length; | ||
459 | u8 replay_counter[WIL_EAP_REPLAY_COUNTER_LEN]; | ||
460 | u8 key_nonce[WIL_EAP_NONCE_LEN]; | ||
461 | u8 key_iv[WIL_EAP_KEY_IV_LEN]; | ||
462 | u8 key_rsc[WIL_EAP_KEY_RSC_LEN]; | ||
463 | u8 key_id[WIL_EAP_KEY_ID_LEN]; | ||
464 | } __packed; | ||
465 | |||
426 | struct vring_rx_dma { | 466 | struct vring_rx_dma { |
427 | u32 d0; | 467 | u32 d0; |
428 | struct wil_ring_dma_addr addr; | 468 | struct wil_ring_dma_addr addr; |
@@ -646,6 +686,8 @@ static inline void wil_skb_set_cid(struct sk_buff *skb, u8 cid) | |||
646 | } | 686 | } |
647 | 687 | ||
648 | void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev); | 688 | void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev); |
689 | void wil_netif_rx(struct sk_buff *skb, struct net_device *ndev, int cid, | ||
690 | struct wil_net_stats *stats, bool gro); | ||
649 | void wil_rx_reorder(struct wil6210_priv *wil, struct sk_buff *skb); | 691 | void wil_rx_reorder(struct wil6210_priv *wil, struct sk_buff *skb); |
650 | void wil_rx_bar(struct wil6210_priv *wil, struct wil6210_vif *vif, | 692 | void wil_rx_bar(struct wil6210_priv *wil, struct wil6210_vif *vif, |
651 | u8 cid, u8 tid, u16 seq); | 693 | u8 cid, u8 tid, u16 seq); |
diff --git a/drivers/net/wireless/ath/wil6210/txrx_edma.c b/drivers/net/wireless/ath/wil6210/txrx_edma.c index 71b7ad4b6454..04d576deae72 100644 --- a/drivers/net/wireless/ath/wil6210/txrx_edma.c +++ b/drivers/net/wireless/ath/wil6210/txrx_edma.c | |||
@@ -221,10 +221,17 @@ static int wil_ring_alloc_skb_edma(struct wil6210_priv *wil, | |||
221 | } | 221 | } |
222 | 222 | ||
223 | static inline | 223 | static inline |
224 | void wil_get_next_rx_status_msg(struct wil_status_ring *sring, void *msg) | 224 | void wil_get_next_rx_status_msg(struct wil_status_ring *sring, u8 *dr_bit, |
225 | void *msg) | ||
225 | { | 226 | { |
226 | memcpy(msg, (void *)(sring->va + (sring->elem_size * sring->swhead)), | 227 | struct wil_rx_status_compressed *_msg; |
227 | sring->elem_size); | 228 | |
229 | _msg = (struct wil_rx_status_compressed *) | ||
230 | (sring->va + (sring->elem_size * sring->swhead)); | ||
231 | *dr_bit = WIL_GET_BITS(_msg->d0, 31, 31); | ||
232 | /* make sure dr_bit is read before the rest of status msg */ | ||
233 | rmb(); | ||
234 | memcpy(msg, (void *)_msg, sring->elem_size); | ||
228 | } | 235 | } |
229 | 236 | ||
230 | static inline void wil_sring_advance_swhead(struct wil_status_ring *sring) | 237 | static inline void wil_sring_advance_swhead(struct wil_status_ring *sring) |
@@ -587,8 +594,7 @@ static bool wil_is_rx_idle_edma(struct wil6210_priv *wil) | |||
587 | if (!sring->va) | 594 | if (!sring->va) |
588 | continue; | 595 | continue; |
589 | 596 | ||
590 | wil_get_next_rx_status_msg(sring, msg); | 597 | wil_get_next_rx_status_msg(sring, &dr_bit, msg); |
591 | dr_bit = wil_rx_status_get_desc_rdy_bit(msg); | ||
592 | 598 | ||
593 | /* Check if there are unhandled RX status messages */ | 599 | /* Check if there are unhandled RX status messages */ |
594 | if (dr_bit == sring->desc_rdy_pol) | 600 | if (dr_bit == sring->desc_rdy_pol) |
@@ -878,8 +884,7 @@ static struct sk_buff *wil_sring_reap_rx_edma(struct wil6210_priv *wil, | |||
878 | BUILD_BUG_ON(sizeof(struct wil_rx_status_extended) > sizeof(skb->cb)); | 884 | BUILD_BUG_ON(sizeof(struct wil_rx_status_extended) > sizeof(skb->cb)); |
879 | 885 | ||
880 | again: | 886 | again: |
881 | wil_get_next_rx_status_msg(sring, msg); | 887 | wil_get_next_rx_status_msg(sring, &dr_bit, msg); |
882 | dr_bit = wil_rx_status_get_desc_rdy_bit(msg); | ||
883 | 888 | ||
884 | /* Completed handling all the ready status messages */ | 889 | /* Completed handling all the ready status messages */ |
885 | if (dr_bit != sring->desc_rdy_pol) | 890 | if (dr_bit != sring->desc_rdy_pol) |
@@ -959,8 +964,8 @@ again: | |||
959 | } | 964 | } |
960 | stats = &wil->sta[cid].stats; | 965 | stats = &wil->sta[cid].stats; |
961 | 966 | ||
962 | if (unlikely(skb->len < ETH_HLEN)) { | 967 | if (unlikely(dmalen < ETH_HLEN)) { |
963 | wil_dbg_txrx(wil, "Short frame, len = %d\n", skb->len); | 968 | wil_dbg_txrx(wil, "Short frame, len = %d\n", dmalen); |
964 | stats->rx_short_frame++; | 969 | stats->rx_short_frame++; |
965 | rxdata->skipping = true; | 970 | rxdata->skipping = true; |
966 | goto skipping; | 971 | goto skipping; |
@@ -1023,6 +1028,8 @@ skipping: | |||
1023 | stats->last_mcs_rx = wil_rx_status_get_mcs(msg); | 1028 | stats->last_mcs_rx = wil_rx_status_get_mcs(msg); |
1024 | if (stats->last_mcs_rx < ARRAY_SIZE(stats->rx_per_mcs)) | 1029 | if (stats->last_mcs_rx < ARRAY_SIZE(stats->rx_per_mcs)) |
1025 | stats->rx_per_mcs[stats->last_mcs_rx]++; | 1030 | stats->rx_per_mcs[stats->last_mcs_rx]++; |
1031 | |||
1032 | stats->last_cb_mode_rx = wil_rx_status_get_cb_mode(msg); | ||
1026 | } | 1033 | } |
1027 | 1034 | ||
1028 | if (!wil->use_rx_hw_reordering && !wil->use_compressed_rx_status && | 1035 | if (!wil->use_rx_hw_reordering && !wil->use_compressed_rx_status && |
@@ -1133,12 +1140,15 @@ static int wil_tx_desc_map_edma(union wil_tx_desc *desc, | |||
1133 | } | 1140 | } |
1134 | 1141 | ||
1135 | static inline void | 1142 | static inline void |
1136 | wil_get_next_tx_status_msg(struct wil_status_ring *sring, | 1143 | wil_get_next_tx_status_msg(struct wil_status_ring *sring, u8 *dr_bit, |
1137 | struct wil_ring_tx_status *msg) | 1144 | struct wil_ring_tx_status *msg) |
1138 | { | 1145 | { |
1139 | struct wil_ring_tx_status *_msg = (struct wil_ring_tx_status *) | 1146 | struct wil_ring_tx_status *_msg = (struct wil_ring_tx_status *) |
1140 | (sring->va + (sring->elem_size * sring->swhead)); | 1147 | (sring->va + (sring->elem_size * sring->swhead)); |
1141 | 1148 | ||
1149 | *dr_bit = _msg->desc_ready >> TX_STATUS_DESC_READY_POS; | ||
1150 | /* make sure dr_bit is read before the rest of status msg */ | ||
1151 | rmb(); | ||
1142 | *msg = *_msg; | 1152 | *msg = *_msg; |
1143 | } | 1153 | } |
1144 | 1154 | ||
@@ -1167,8 +1177,7 @@ int wil_tx_sring_handler(struct wil6210_priv *wil, | |||
1167 | int used_before_complete; | 1177 | int used_before_complete; |
1168 | int used_new; | 1178 | int used_new; |
1169 | 1179 | ||
1170 | wil_get_next_tx_status_msg(sring, &msg); | 1180 | wil_get_next_tx_status_msg(sring, &dr_bit, &msg); |
1171 | dr_bit = msg.desc_ready >> TX_STATUS_DESC_READY_POS; | ||
1172 | 1181 | ||
1173 | /* Process completion messages while DR bit has the expected polarity */ | 1182 | /* Process completion messages while DR bit has the expected polarity */ |
1174 | while (dr_bit == sring->desc_rdy_pol) { | 1183 | while (dr_bit == sring->desc_rdy_pol) { |
@@ -1255,6 +1264,10 @@ int wil_tx_sring_handler(struct wil6210_priv *wil, | |||
1255 | if (stats) | 1264 | if (stats) |
1256 | stats->tx_errors++; | 1265 | stats->tx_errors++; |
1257 | } | 1266 | } |
1267 | |||
1268 | if (skb->protocol == cpu_to_be16(ETH_P_PAE)) | ||
1269 | wil_tx_complete_handle_eapol(vif, skb); | ||
1270 | |||
1258 | wil_consume_skb(skb, msg.status == 0); | 1271 | wil_consume_skb(skb, msg.status == 0); |
1259 | } | 1272 | } |
1260 | memset(ctx, 0, sizeof(*ctx)); | 1273 | memset(ctx, 0, sizeof(*ctx)); |
@@ -1287,8 +1300,7 @@ again: | |||
1287 | 1300 | ||
1288 | wil_sring_advance_swhead(sring); | 1301 | wil_sring_advance_swhead(sring); |
1289 | 1302 | ||
1290 | wil_get_next_tx_status_msg(sring, &msg); | 1303 | wil_get_next_tx_status_msg(sring, &dr_bit, &msg); |
1291 | dr_bit = msg.desc_ready >> TX_STATUS_DESC_READY_POS; | ||
1292 | } | 1304 | } |
1293 | 1305 | ||
1294 | /* shall we wake net queues? */ | 1306 | /* shall we wake net queues? */ |
diff --git a/drivers/net/wireless/ath/wil6210/txrx_edma.h b/drivers/net/wireless/ath/wil6210/txrx_edma.h index e9e6ea9b16b9..136c51c338cf 100644 --- a/drivers/net/wireless/ath/wil6210/txrx_edma.h +++ b/drivers/net/wireless/ath/wil6210/txrx_edma.h | |||
@@ -366,6 +366,12 @@ static inline u8 wil_rx_status_get_mcs(void *msg) | |||
366 | 16, 21); | 366 | 16, 21); |
367 | } | 367 | } |
368 | 368 | ||
369 | static inline u8 wil_rx_status_get_cb_mode(void *msg) | ||
370 | { | ||
371 | return WIL_GET_BITS(((struct wil_rx_status_compressed *)msg)->d1, | ||
372 | 22, 23); | ||
373 | } | ||
374 | |||
369 | static inline u16 wil_rx_status_get_flow_id(void *msg) | 375 | static inline u16 wil_rx_status_get_flow_id(void *msg) |
370 | { | 376 | { |
371 | return WIL_GET_BITS(((struct wil_rx_status_compressed *)msg)->d0, | 377 | return WIL_GET_BITS(((struct wil_rx_status_compressed *)msg)->d0, |
@@ -415,12 +421,6 @@ static inline u8 wil_rx_status_get_tid(void *msg) | |||
415 | return val & WIL_RX_EDMA_DLPF_LU_MISS_CID_TID_MASK; | 421 | return val & WIL_RX_EDMA_DLPF_LU_MISS_CID_TID_MASK; |
416 | } | 422 | } |
417 | 423 | ||
418 | static inline int wil_rx_status_get_desc_rdy_bit(void *msg) | ||
419 | { | ||
420 | return WIL_GET_BITS(((struct wil_rx_status_compressed *)msg)->d0, | ||
421 | 31, 31); | ||
422 | } | ||
423 | |||
424 | static inline int wil_rx_status_get_eop(void *msg) /* EoP = End of Packet */ | 424 | static inline int wil_rx_status_get_eop(void *msg) /* EoP = End of Packet */ |
425 | { | 425 | { |
426 | return WIL_GET_BITS(((struct wil_rx_status_compressed *)msg)->d0, | 426 | return WIL_GET_BITS(((struct wil_rx_status_compressed *)msg)->d0, |
diff --git a/drivers/net/wireless/ath/wil6210/wil6210.h b/drivers/net/wireless/ath/wil6210/wil6210.h index 6f456b311a39..0783c7963621 100644 --- a/drivers/net/wireless/ath/wil6210/wil6210.h +++ b/drivers/net/wireless/ath/wil6210/wil6210.h | |||
@@ -590,6 +590,7 @@ struct wil_net_stats { | |||
590 | unsigned long rx_amsdu_error; /* eDMA specific */ | 590 | unsigned long rx_amsdu_error; /* eDMA specific */ |
591 | unsigned long rx_csum_err; | 591 | unsigned long rx_csum_err; |
592 | u16 last_mcs_rx; | 592 | u16 last_mcs_rx; |
593 | u8 last_cb_mode_rx; | ||
593 | u64 rx_per_mcs[WIL_MCS_MAX + 1]; | 594 | u64 rx_per_mcs[WIL_MCS_MAX + 1]; |
594 | u32 ft_roams; /* relevant in STA mode */ | 595 | u32 ft_roams; /* relevant in STA mode */ |
595 | }; | 596 | }; |
@@ -730,6 +731,12 @@ enum wil_sta_status { | |||
730 | wil_sta_connected = 2, | 731 | wil_sta_connected = 2, |
731 | }; | 732 | }; |
732 | 733 | ||
734 | enum wil_rekey_state { | ||
735 | WIL_REKEY_IDLE = 0, | ||
736 | WIL_REKEY_M3_RECEIVED = 1, | ||
737 | WIL_REKEY_WAIT_M4_SENT = 2, | ||
738 | }; | ||
739 | |||
733 | /** | 740 | /** |
734 | * struct wil_sta_info - data for peer | 741 | * struct wil_sta_info - data for peer |
735 | * | 742 | * |
@@ -850,6 +857,7 @@ struct wil6210_vif { | |||
850 | DECLARE_BITMAP(status, wil_vif_status_last); | 857 | DECLARE_BITMAP(status, wil_vif_status_last); |
851 | u32 privacy; /* secure connection? */ | 858 | u32 privacy; /* secure connection? */ |
852 | u16 channel; /* relevant in AP mode */ | 859 | u16 channel; /* relevant in AP mode */ |
860 | u8 wmi_edmg_channel; /* relevant in AP mode */ | ||
853 | u8 hidden_ssid; /* relevant in AP mode */ | 861 | u8 hidden_ssid; /* relevant in AP mode */ |
854 | u32 ap_isolate; /* no intra-BSS communication */ | 862 | u32 ap_isolate; /* no intra-BSS communication */ |
855 | bool pbss; | 863 | bool pbss; |
@@ -877,6 +885,10 @@ struct wil6210_vif { | |||
877 | int net_queue_stopped; /* netif_tx_stop_all_queues invoked */ | 885 | int net_queue_stopped; /* netif_tx_stop_all_queues invoked */ |
878 | bool fw_stats_ready; /* per-cid statistics are ready inside sta_info */ | 886 | bool fw_stats_ready; /* per-cid statistics are ready inside sta_info */ |
879 | u64 fw_stats_tsf; /* measurement timestamp */ | 887 | u64 fw_stats_tsf; /* measurement timestamp */ |
888 | |||
889 | /* PTK rekey race prevention, this is relevant to station mode only */ | ||
890 | enum wil_rekey_state ptk_rekey_state; | ||
891 | struct work_struct enable_tx_key_worker; | ||
880 | }; | 892 | }; |
881 | 893 | ||
882 | /** | 894 | /** |
@@ -977,6 +989,7 @@ struct wil6210_priv { | |||
977 | */ | 989 | */ |
978 | spinlock_t wmi_ev_lock; | 990 | spinlock_t wmi_ev_lock; |
979 | spinlock_t net_queue_lock; /* guarding stop/wake netif queue */ | 991 | spinlock_t net_queue_lock; /* guarding stop/wake netif queue */ |
992 | spinlock_t eap_lock; /* guarding access to eap rekey fields */ | ||
980 | struct napi_struct napi_rx; | 993 | struct napi_struct napi_rx; |
981 | struct napi_struct napi_tx; | 994 | struct napi_struct napi_tx; |
982 | struct net_device napi_ndev; /* dummy net_device serving all VIFs */ | 995 | struct net_device napi_ndev; /* dummy net_device serving all VIFs */ |
@@ -1144,7 +1157,7 @@ static inline void wil_c(struct wil6210_priv *wil, u32 reg, u32 val) | |||
1144 | /** | 1157 | /** |
1145 | * wil_cid_valid - check cid is valid | 1158 | * wil_cid_valid - check cid is valid |
1146 | */ | 1159 | */ |
1147 | static inline bool wil_cid_valid(struct wil6210_priv *wil, u8 cid) | 1160 | static inline bool wil_cid_valid(struct wil6210_priv *wil, int cid) |
1148 | { | 1161 | { |
1149 | return (cid >= 0 && cid < wil->max_assoc_sta); | 1162 | return (cid >= 0 && cid < wil->max_assoc_sta); |
1150 | } | 1163 | } |
@@ -1224,6 +1237,7 @@ int __wil_down(struct wil6210_priv *wil); | |||
1224 | void wil_refresh_fw_capabilities(struct wil6210_priv *wil); | 1237 | void wil_refresh_fw_capabilities(struct wil6210_priv *wil); |
1225 | void wil_mbox_ring_le2cpus(struct wil6210_mbox_ring *r); | 1238 | void wil_mbox_ring_le2cpus(struct wil6210_mbox_ring *r); |
1226 | int wil_find_cid(struct wil6210_priv *wil, u8 mid, const u8 *mac); | 1239 | int wil_find_cid(struct wil6210_priv *wil, u8 mid, const u8 *mac); |
1240 | int wil_find_cid_by_idx(struct wil6210_priv *wil, u8 mid, int idx); | ||
1227 | void wil_set_ethtoolops(struct net_device *ndev); | 1241 | void wil_set_ethtoolops(struct net_device *ndev); |
1228 | 1242 | ||
1229 | struct fw_map *wil_find_fw_mapping(const char *section); | 1243 | struct fw_map *wil_find_fw_mapping(const char *section); |
@@ -1335,7 +1349,7 @@ void wil_p2p_wdev_free(struct wil6210_priv *wil); | |||
1335 | 1349 | ||
1336 | int wmi_set_mac_address(struct wil6210_priv *wil, void *addr); | 1350 | int wmi_set_mac_address(struct wil6210_priv *wil, void *addr); |
1337 | int wmi_pcp_start(struct wil6210_vif *vif, int bi, u8 wmi_nettype, u8 chan, | 1351 | int wmi_pcp_start(struct wil6210_vif *vif, int bi, u8 wmi_nettype, u8 chan, |
1338 | u8 hidden_ssid, u8 is_go); | 1352 | u8 edmg_chan, u8 hidden_ssid, u8 is_go); |
1339 | int wmi_pcp_stop(struct wil6210_vif *vif); | 1353 | int wmi_pcp_stop(struct wil6210_vif *vif); |
1340 | int wmi_led_cfg(struct wil6210_priv *wil, bool enable); | 1354 | int wmi_led_cfg(struct wil6210_priv *wil, bool enable); |
1341 | int wmi_abort_scan(struct wil6210_vif *vif); | 1355 | int wmi_abort_scan(struct wil6210_vif *vif); |
@@ -1349,6 +1363,7 @@ void wil6210_disconnect_complete(struct wil6210_vif *vif, const u8 *bssid, | |||
1349 | void wil_probe_client_flush(struct wil6210_vif *vif); | 1363 | void wil_probe_client_flush(struct wil6210_vif *vif); |
1350 | void wil_probe_client_worker(struct work_struct *work); | 1364 | void wil_probe_client_worker(struct work_struct *work); |
1351 | void wil_disconnect_worker(struct work_struct *work); | 1365 | void wil_disconnect_worker(struct work_struct *work); |
1366 | void wil_enable_tx_key_worker(struct work_struct *work); | ||
1352 | 1367 | ||
1353 | void wil_init_txrx_ops(struct wil6210_priv *wil); | 1368 | void wil_init_txrx_ops(struct wil6210_priv *wil); |
1354 | 1369 | ||
@@ -1365,6 +1380,8 @@ void wil_update_net_queues_bh(struct wil6210_priv *wil, struct wil6210_vif *vif, | |||
1365 | struct wil_ring *ring, bool check_stop); | 1380 | struct wil_ring *ring, bool check_stop); |
1366 | netdev_tx_t wil_start_xmit(struct sk_buff *skb, struct net_device *ndev); | 1381 | netdev_tx_t wil_start_xmit(struct sk_buff *skb, struct net_device *ndev); |
1367 | int wil_tx_complete(struct wil6210_vif *vif, int ringid); | 1382 | int wil_tx_complete(struct wil6210_vif *vif, int ringid); |
1383 | void wil_tx_complete_handle_eapol(struct wil6210_vif *vif, | ||
1384 | struct sk_buff *skb); | ||
1368 | void wil6210_unmask_irq_tx(struct wil6210_priv *wil); | 1385 | void wil6210_unmask_irq_tx(struct wil6210_priv *wil); |
1369 | void wil6210_unmask_irq_tx_edma(struct wil6210_priv *wil); | 1386 | void wil6210_unmask_irq_tx_edma(struct wil6210_priv *wil); |
1370 | 1387 | ||
@@ -1412,6 +1429,10 @@ int wmi_mgmt_tx_ext(struct wil6210_vif *vif, const u8 *buf, size_t len, | |||
1412 | u8 channel, u16 duration_ms); | 1429 | u8 channel, u16 duration_ms); |
1413 | int wmi_rbufcap_cfg(struct wil6210_priv *wil, bool enable, u16 threshold); | 1430 | int wmi_rbufcap_cfg(struct wil6210_priv *wil, bool enable, u16 threshold); |
1414 | 1431 | ||
1432 | int wil_wmi2spec_ch(u8 wmi_ch, u8 *spec_ch); | ||
1433 | int wil_spec2wmi_ch(u8 spec_ch, u8 *wmi_ch); | ||
1434 | void wil_update_supported_bands(struct wil6210_priv *wil); | ||
1435 | |||
1415 | int reverse_memcmp(const void *cs, const void *ct, size_t count); | 1436 | int reverse_memcmp(const void *cs, const void *ct, size_t count); |
1416 | 1437 | ||
1417 | /* WMI for enhanced DMA */ | 1438 | /* WMI for enhanced DMA */ |
diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c index 475b1a233cc9..153b84447e40 100644 --- a/drivers/net/wireless/ath/wil6210/wmi.c +++ b/drivers/net/wireless/ath/wil6210/wmi.c | |||
@@ -878,6 +878,12 @@ static void wmi_evt_rx_mgmt(struct wil6210_vif *vif, int id, void *d, int len) | |||
878 | 878 | ||
879 | if (ieee80211_is_beacon(fc) || ieee80211_is_probe_resp(fc)) { | 879 | if (ieee80211_is_beacon(fc) || ieee80211_is_probe_resp(fc)) { |
880 | struct cfg80211_bss *bss; | 880 | struct cfg80211_bss *bss; |
881 | struct cfg80211_inform_bss bss_data = { | ||
882 | .chan = channel, | ||
883 | .scan_width = NL80211_BSS_CHAN_WIDTH_20, | ||
884 | .signal = signal, | ||
885 | .boottime_ns = ktime_to_ns(ktime_get_boottime()), | ||
886 | }; | ||
881 | u64 tsf = le64_to_cpu(rx_mgmt_frame->u.beacon.timestamp); | 887 | u64 tsf = le64_to_cpu(rx_mgmt_frame->u.beacon.timestamp); |
882 | u16 cap = le16_to_cpu(rx_mgmt_frame->u.beacon.capab_info); | 888 | u16 cap = le16_to_cpu(rx_mgmt_frame->u.beacon.capab_info); |
883 | u16 bi = le16_to_cpu(rx_mgmt_frame->u.beacon.beacon_int); | 889 | u16 bi = le16_to_cpu(rx_mgmt_frame->u.beacon.beacon_int); |
@@ -892,8 +898,9 @@ static void wmi_evt_rx_mgmt(struct wil6210_vif *vif, int id, void *d, int len) | |||
892 | 898 | ||
893 | wil_dbg_wmi(wil, "Capability info : 0x%04x\n", cap); | 899 | wil_dbg_wmi(wil, "Capability info : 0x%04x\n", cap); |
894 | 900 | ||
895 | bss = cfg80211_inform_bss_frame(wiphy, channel, rx_mgmt_frame, | 901 | bss = cfg80211_inform_bss_frame_data(wiphy, &bss_data, |
896 | d_len, signal, GFP_KERNEL); | 902 | rx_mgmt_frame, |
903 | d_len, GFP_KERNEL); | ||
897 | if (bss) { | 904 | if (bss) { |
898 | wil_dbg_wmi(wil, "Added BSS %pM\n", | 905 | wil_dbg_wmi(wil, "Added BSS %pM\n", |
899 | rx_mgmt_frame->bssid); | 906 | rx_mgmt_frame->bssid); |
@@ -1332,6 +1339,12 @@ __acquires(&sta->tid_rx_lock) __releases(&sta->tid_rx_lock) | |||
1332 | cid = evt->cid; | 1339 | cid = evt->cid; |
1333 | tid = evt->tid; | 1340 | tid = evt->tid; |
1334 | } | 1341 | } |
1342 | |||
1343 | if (!wil_cid_valid(wil, cid)) { | ||
1344 | wil_err(wil, "DELBA: Invalid CID %d\n", cid); | ||
1345 | return; | ||
1346 | } | ||
1347 | |||
1335 | wil_dbg_wmi(wil, "DELBA MID %d CID %d TID %d from %s reason %d\n", | 1348 | wil_dbg_wmi(wil, "DELBA MID %d CID %d TID %d from %s reason %d\n", |
1336 | vif->mid, cid, tid, | 1349 | vif->mid, cid, tid, |
1337 | evt->from_initiator ? "originator" : "recipient", | 1350 | evt->from_initiator ? "originator" : "recipient", |
@@ -1385,6 +1398,10 @@ wmi_evt_sched_scan_result(struct wil6210_vif *vif, int id, void *d, int len) | |||
1385 | __le16 fc; | 1398 | __le16 fc; |
1386 | u32 d_len; | 1399 | u32 d_len; |
1387 | struct cfg80211_bss *bss; | 1400 | struct cfg80211_bss *bss; |
1401 | struct cfg80211_inform_bss bss_data = { | ||
1402 | .scan_width = NL80211_BSS_CHAN_WIDTH_20, | ||
1403 | .boottime_ns = ktime_to_ns(ktime_get_boottime()), | ||
1404 | }; | ||
1388 | 1405 | ||
1389 | if (flen < 0) { | 1406 | if (flen < 0) { |
1390 | wil_err(wil, "sched scan result event too short, len %d\n", | 1407 | wil_err(wil, "sched scan result event too short, len %d\n", |
@@ -1427,8 +1444,10 @@ wmi_evt_sched_scan_result(struct wil6210_vif *vif, int id, void *d, int len) | |||
1427 | return; | 1444 | return; |
1428 | } | 1445 | } |
1429 | 1446 | ||
1430 | bss = cfg80211_inform_bss_frame(wiphy, channel, rx_mgmt_frame, | 1447 | bss_data.signal = signal; |
1431 | d_len, signal, GFP_KERNEL); | 1448 | bss_data.chan = channel; |
1449 | bss = cfg80211_inform_bss_frame_data(wiphy, &bss_data, rx_mgmt_frame, | ||
1450 | d_len, GFP_KERNEL); | ||
1432 | if (bss) { | 1451 | if (bss) { |
1433 | wil_dbg_wmi(wil, "Added BSS %pM\n", rx_mgmt_frame->bssid); | 1452 | wil_dbg_wmi(wil, "Added BSS %pM\n", rx_mgmt_frame->bssid); |
1434 | cfg80211_put_bss(wiphy, bss); | 1453 | cfg80211_put_bss(wiphy, bss); |
@@ -2163,8 +2182,8 @@ int wmi_rbufcap_cfg(struct wil6210_priv *wil, bool enable, u16 threshold) | |||
2163 | return rc; | 2182 | return rc; |
2164 | } | 2183 | } |
2165 | 2184 | ||
2166 | int wmi_pcp_start(struct wil6210_vif *vif, | 2185 | int wmi_pcp_start(struct wil6210_vif *vif, int bi, u8 wmi_nettype, |
2167 | int bi, u8 wmi_nettype, u8 chan, u8 hidden_ssid, u8 is_go) | 2186 | u8 chan, u8 wmi_edmg_chan, u8 hidden_ssid, u8 is_go) |
2168 | { | 2187 | { |
2169 | struct wil6210_priv *wil = vif_to_wil(vif); | 2188 | struct wil6210_priv *wil = vif_to_wil(vif); |
2170 | int rc; | 2189 | int rc; |
@@ -2174,6 +2193,7 @@ int wmi_pcp_start(struct wil6210_vif *vif, | |||
2174 | .network_type = wmi_nettype, | 2193 | .network_type = wmi_nettype, |
2175 | .disable_sec_offload = 1, | 2194 | .disable_sec_offload = 1, |
2176 | .channel = chan - 1, | 2195 | .channel = chan - 1, |
2196 | .edmg_channel = wmi_edmg_chan, | ||
2177 | .pcp_max_assoc_sta = wil->max_assoc_sta, | 2197 | .pcp_max_assoc_sta = wil->max_assoc_sta, |
2178 | .hidden_ssid = hidden_ssid, | 2198 | .hidden_ssid = hidden_ssid, |
2179 | .is_go = is_go, | 2199 | .is_go = is_go, |
@@ -2437,10 +2457,17 @@ int wmi_add_cipher_key(struct wil6210_vif *vif, u8 key_index, | |||
2437 | .key_len = key_len, | 2457 | .key_len = key_len, |
2438 | }; | 2458 | }; |
2439 | 2459 | ||
2440 | if (!key || (key_len > sizeof(cmd.key))) | 2460 | if (key_len > sizeof(cmd.key)) |
2441 | return -EINVAL; | 2461 | return -EINVAL; |
2442 | 2462 | ||
2443 | memcpy(cmd.key, key, key_len); | 2463 | /* key len = 0 is allowed only for usage of WMI_KEY_USE_APPLY */ |
2464 | if ((key_len == 0 || !key) && | ||
2465 | key_usage != WMI_KEY_USE_APPLY_PTK) | ||
2466 | return -EINVAL; | ||
2467 | |||
2468 | if (key) | ||
2469 | memcpy(cmd.key, key, key_len); | ||
2470 | |||
2444 | if (mac_addr) | 2471 | if (mac_addr) |
2445 | memcpy(cmd.mac, mac_addr, WMI_MAC_LEN); | 2472 | memcpy(cmd.mac, mac_addr, WMI_MAC_LEN); |
2446 | 2473 | ||
diff --git a/drivers/net/wireless/ath/wil6210/wmi.h b/drivers/net/wireless/ath/wil6210/wmi.h index 3e37229b36b5..a2f7034489ae 100644 --- a/drivers/net/wireless/ath/wil6210/wmi.h +++ b/drivers/net/wireless/ath/wil6210/wmi.h | |||
@@ -97,6 +97,7 @@ enum wmi_fw_capability { | |||
97 | WMI_FW_CAPABILITY_SET_SILENT_RSSI_TABLE = 13, | 97 | WMI_FW_CAPABILITY_SET_SILENT_RSSI_TABLE = 13, |
98 | WMI_FW_CAPABILITY_LO_POWER_CALIB_FROM_OTP = 14, | 98 | WMI_FW_CAPABILITY_LO_POWER_CALIB_FROM_OTP = 14, |
99 | WMI_FW_CAPABILITY_PNO = 15, | 99 | WMI_FW_CAPABILITY_PNO = 15, |
100 | WMI_FW_CAPABILITY_CHANNEL_BONDING = 17, | ||
100 | WMI_FW_CAPABILITY_REF_CLOCK_CONTROL = 18, | 101 | WMI_FW_CAPABILITY_REF_CLOCK_CONTROL = 18, |
101 | WMI_FW_CAPABILITY_AP_SME_OFFLOAD_NONE = 19, | 102 | WMI_FW_CAPABILITY_AP_SME_OFFLOAD_NONE = 19, |
102 | WMI_FW_CAPABILITY_MULTI_VIFS = 20, | 103 | WMI_FW_CAPABILITY_MULTI_VIFS = 20, |
@@ -108,6 +109,7 @@ enum wmi_fw_capability { | |||
108 | WMI_FW_CAPABILITY_CHANNEL_4 = 26, | 109 | WMI_FW_CAPABILITY_CHANNEL_4 = 26, |
109 | WMI_FW_CAPABILITY_IPA = 27, | 110 | WMI_FW_CAPABILITY_IPA = 27, |
110 | WMI_FW_CAPABILITY_TEMPERATURE_ALL_RF = 30, | 111 | WMI_FW_CAPABILITY_TEMPERATURE_ALL_RF = 30, |
112 | WMI_FW_CAPABILITY_SPLIT_REKEY = 31, | ||
111 | WMI_FW_CAPABILITY_MAX, | 113 | WMI_FW_CAPABILITY_MAX, |
112 | }; | 114 | }; |
113 | 115 | ||
@@ -361,6 +363,19 @@ enum wmi_connect_ctrl_flag_bits { | |||
361 | 363 | ||
362 | #define WMI_MAX_SSID_LEN (32) | 364 | #define WMI_MAX_SSID_LEN (32) |
363 | 365 | ||
366 | enum wmi_channel { | ||
367 | WMI_CHANNEL_1 = 0x00, | ||
368 | WMI_CHANNEL_2 = 0x01, | ||
369 | WMI_CHANNEL_3 = 0x02, | ||
370 | WMI_CHANNEL_4 = 0x03, | ||
371 | WMI_CHANNEL_5 = 0x04, | ||
372 | WMI_CHANNEL_6 = 0x05, | ||
373 | WMI_CHANNEL_9 = 0x06, | ||
374 | WMI_CHANNEL_10 = 0x07, | ||
375 | WMI_CHANNEL_11 = 0x08, | ||
376 | WMI_CHANNEL_12 = 0x09, | ||
377 | }; | ||
378 | |||
364 | /* WMI_CONNECT_CMDID */ | 379 | /* WMI_CONNECT_CMDID */ |
365 | struct wmi_connect_cmd { | 380 | struct wmi_connect_cmd { |
366 | u8 network_type; | 381 | u8 network_type; |
@@ -372,8 +387,12 @@ struct wmi_connect_cmd { | |||
372 | u8 group_crypto_len; | 387 | u8 group_crypto_len; |
373 | u8 ssid_len; | 388 | u8 ssid_len; |
374 | u8 ssid[WMI_MAX_SSID_LEN]; | 389 | u8 ssid[WMI_MAX_SSID_LEN]; |
390 | /* enum wmi_channel WMI_CHANNEL_1..WMI_CHANNEL_6; for EDMG this is | ||
391 | * the primary channel number | ||
392 | */ | ||
375 | u8 channel; | 393 | u8 channel; |
376 | u8 reserved0; | 394 | /* enum wmi_channel WMI_CHANNEL_9..WMI_CHANNEL_12 */ |
395 | u8 edmg_channel; | ||
377 | u8 bssid[WMI_MAC_LEN]; | 396 | u8 bssid[WMI_MAC_LEN]; |
378 | __le32 ctrl_flags; | 397 | __le32 ctrl_flags; |
379 | u8 dst_mac[WMI_MAC_LEN]; | 398 | u8 dst_mac[WMI_MAC_LEN]; |
@@ -403,6 +422,8 @@ enum wmi_key_usage { | |||
403 | WMI_KEY_USE_PAIRWISE = 0x00, | 422 | WMI_KEY_USE_PAIRWISE = 0x00, |
404 | WMI_KEY_USE_RX_GROUP = 0x01, | 423 | WMI_KEY_USE_RX_GROUP = 0x01, |
405 | WMI_KEY_USE_TX_GROUP = 0x02, | 424 | WMI_KEY_USE_TX_GROUP = 0x02, |
425 | WMI_KEY_USE_STORE_PTK = 0x03, | ||
426 | WMI_KEY_USE_APPLY_PTK = 0x04, | ||
406 | }; | 427 | }; |
407 | 428 | ||
408 | struct wmi_add_cipher_key_cmd { | 429 | struct wmi_add_cipher_key_cmd { |
@@ -2312,8 +2333,12 @@ struct wmi_notify_req_done_event { | |||
2312 | 2333 | ||
2313 | /* WMI_CONNECT_EVENTID */ | 2334 | /* WMI_CONNECT_EVENTID */ |
2314 | struct wmi_connect_event { | 2335 | struct wmi_connect_event { |
2336 | /* enum wmi_channel WMI_CHANNEL_1..WMI_CHANNEL_6; for EDMG this is | ||
2337 | * the primary channel number | ||
2338 | */ | ||
2315 | u8 channel; | 2339 | u8 channel; |
2316 | u8 reserved0; | 2340 | /* enum wmi_channel WMI_CHANNEL_9..WMI_CHANNEL_12 */ |
2341 | u8 edmg_channel; | ||
2317 | u8 bssid[WMI_MAC_LEN]; | 2342 | u8 bssid[WMI_MAC_LEN]; |
2318 | __le16 listen_interval; | 2343 | __le16 listen_interval; |
2319 | __le16 beacon_interval; | 2344 | __le16 beacon_interval; |
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h index 0988a166a785..623c0168da79 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h | |||
@@ -253,10 +253,12 @@ void brcmf_rx_frame(struct device *dev, struct sk_buff *rxp, bool handle_event); | |||
253 | /* Receive async event packet from firmware. Callee disposes of rxp. */ | 253 | /* Receive async event packet from firmware. Callee disposes of rxp. */ |
254 | void brcmf_rx_event(struct device *dev, struct sk_buff *rxp); | 254 | void brcmf_rx_event(struct device *dev, struct sk_buff *rxp); |
255 | 255 | ||
256 | int brcmf_alloc(struct device *dev, struct brcmf_mp_device *settings); | ||
256 | /* Indication from bus module regarding presence/insertion of dongle. */ | 257 | /* Indication from bus module regarding presence/insertion of dongle. */ |
257 | int brcmf_attach(struct device *dev, struct brcmf_mp_device *settings); | 258 | int brcmf_attach(struct device *dev); |
258 | /* Indication from bus module regarding removal/absence of dongle */ | 259 | /* Indication from bus module regarding removal/absence of dongle */ |
259 | void brcmf_detach(struct device *dev); | 260 | void brcmf_detach(struct device *dev); |
261 | void brcmf_free(struct device *dev); | ||
260 | /* Indication from bus module that dongle should be reset */ | 262 | /* Indication from bus module that dongle should be reset */ |
261 | void brcmf_dev_reset(struct device *dev); | 263 | void brcmf_dev_reset(struct device *dev); |
262 | /* Request from bus module to initiate a coredump */ | 264 | /* Request from bus module to initiate a coredump */ |
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index dd6303f5f72e..e3ebb7abbdae 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | |||
@@ -7202,7 +7202,6 @@ void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg) | |||
7202 | brcmf_pno_detach(cfg); | 7202 | brcmf_pno_detach(cfg); |
7203 | brcmf_btcoex_detach(cfg); | 7203 | brcmf_btcoex_detach(cfg); |
7204 | wiphy_unregister(cfg->wiphy); | 7204 | wiphy_unregister(cfg->wiphy); |
7205 | kfree(cfg->ops); | ||
7206 | wl_deinit_priv(cfg); | 7205 | wl_deinit_priv(cfg); |
7207 | brcmf_free_wiphy(cfg->wiphy); | 7206 | brcmf_free_wiphy(cfg->wiphy); |
7208 | kfree(cfg); | 7207 | kfree(cfg); |
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h index b7b50b07f776..14d5bbad1db1 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h | |||
@@ -292,7 +292,6 @@ struct brcmf_cfg80211_wowl { | |||
292 | */ | 292 | */ |
293 | struct brcmf_cfg80211_info { | 293 | struct brcmf_cfg80211_info { |
294 | struct wiphy *wiphy; | 294 | struct wiphy *wiphy; |
295 | struct cfg80211_ops *ops; | ||
296 | struct brcmf_cfg80211_conf *conf; | 295 | struct brcmf_cfg80211_conf *conf; |
297 | struct brcmf_p2p_info p2p; | 296 | struct brcmf_p2p_info p2p; |
298 | struct brcmf_btcoex_info *btcoex; | 297 | struct brcmf_btcoex_info *btcoex; |
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index 21e07d1ceeae..406b367c284c 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | |||
@@ -1209,13 +1209,11 @@ fail: | |||
1209 | return ret; | 1209 | return ret; |
1210 | } | 1210 | } |
1211 | 1211 | ||
1212 | int brcmf_attach(struct device *dev, struct brcmf_mp_device *settings) | 1212 | int brcmf_alloc(struct device *dev, struct brcmf_mp_device *settings) |
1213 | { | 1213 | { |
1214 | struct wiphy *wiphy; | 1214 | struct wiphy *wiphy; |
1215 | struct cfg80211_ops *ops; | 1215 | struct cfg80211_ops *ops; |
1216 | struct brcmf_pub *drvr = NULL; | 1216 | struct brcmf_pub *drvr = NULL; |
1217 | int ret = 0; | ||
1218 | int i; | ||
1219 | 1217 | ||
1220 | brcmf_dbg(TRACE, "Enter\n"); | 1218 | brcmf_dbg(TRACE, "Enter\n"); |
1221 | 1219 | ||
@@ -1224,12 +1222,30 @@ int brcmf_attach(struct device *dev, struct brcmf_mp_device *settings) | |||
1224 | return -ENOMEM; | 1222 | return -ENOMEM; |
1225 | 1223 | ||
1226 | wiphy = wiphy_new(ops, sizeof(*drvr)); | 1224 | wiphy = wiphy_new(ops, sizeof(*drvr)); |
1227 | if (!wiphy) | 1225 | if (!wiphy) { |
1226 | kfree(ops); | ||
1228 | return -ENOMEM; | 1227 | return -ENOMEM; |
1228 | } | ||
1229 | 1229 | ||
1230 | set_wiphy_dev(wiphy, dev); | 1230 | set_wiphy_dev(wiphy, dev); |
1231 | drvr = wiphy_priv(wiphy); | 1231 | drvr = wiphy_priv(wiphy); |
1232 | drvr->wiphy = wiphy; | 1232 | drvr->wiphy = wiphy; |
1233 | drvr->ops = ops; | ||
1234 | drvr->bus_if = dev_get_drvdata(dev); | ||
1235 | drvr->bus_if->drvr = drvr; | ||
1236 | drvr->settings = settings; | ||
1237 | |||
1238 | return 0; | ||
1239 | } | ||
1240 | |||
1241 | int brcmf_attach(struct device *dev) | ||
1242 | { | ||
1243 | struct brcmf_bus *bus_if = dev_get_drvdata(dev); | ||
1244 | struct brcmf_pub *drvr = bus_if->drvr; | ||
1245 | int ret = 0; | ||
1246 | int i; | ||
1247 | |||
1248 | brcmf_dbg(TRACE, "Enter\n"); | ||
1233 | 1249 | ||
1234 | for (i = 0; i < ARRAY_SIZE(drvr->if2bss); i++) | 1250 | for (i = 0; i < ARRAY_SIZE(drvr->if2bss); i++) |
1235 | drvr->if2bss[i] = BRCMF_BSSIDX_INVALID; | 1251 | drvr->if2bss[i] = BRCMF_BSSIDX_INVALID; |
@@ -1238,9 +1254,6 @@ int brcmf_attach(struct device *dev, struct brcmf_mp_device *settings) | |||
1238 | 1254 | ||
1239 | /* Link to bus module */ | 1255 | /* Link to bus module */ |
1240 | drvr->hdrlen = 0; | 1256 | drvr->hdrlen = 0; |
1241 | drvr->bus_if = dev_get_drvdata(dev); | ||
1242 | drvr->bus_if->drvr = drvr; | ||
1243 | drvr->settings = settings; | ||
1244 | 1257 | ||
1245 | /* Attach and link in the protocol */ | 1258 | /* Attach and link in the protocol */ |
1246 | ret = brcmf_proto_attach(drvr); | 1259 | ret = brcmf_proto_attach(drvr); |
@@ -1256,18 +1269,16 @@ int brcmf_attach(struct device *dev, struct brcmf_mp_device *settings) | |||
1256 | /* attach firmware event handler */ | 1269 | /* attach firmware event handler */ |
1257 | brcmf_fweh_attach(drvr); | 1270 | brcmf_fweh_attach(drvr); |
1258 | 1271 | ||
1259 | ret = brcmf_bus_started(drvr, ops); | 1272 | ret = brcmf_bus_started(drvr, drvr->ops); |
1260 | if (ret != 0) { | 1273 | if (ret != 0) { |
1261 | bphy_err(drvr, "dongle is not responding: err=%d\n", ret); | 1274 | bphy_err(drvr, "dongle is not responding: err=%d\n", ret); |
1262 | goto fail; | 1275 | goto fail; |
1263 | } | 1276 | } |
1264 | 1277 | ||
1265 | drvr->config->ops = ops; | ||
1266 | return 0; | 1278 | return 0; |
1267 | 1279 | ||
1268 | fail: | 1280 | fail: |
1269 | brcmf_detach(dev); | 1281 | brcmf_detach(dev); |
1270 | kfree(ops); | ||
1271 | 1282 | ||
1272 | return ret; | 1283 | return ret; |
1273 | } | 1284 | } |
@@ -1350,9 +1361,20 @@ void brcmf_detach(struct device *dev) | |||
1350 | brcmf_cfg80211_detach(drvr->config); | 1361 | brcmf_cfg80211_detach(drvr->config); |
1351 | drvr->config = NULL; | 1362 | drvr->config = NULL; |
1352 | } | 1363 | } |
1364 | } | ||
1365 | |||
1366 | void brcmf_free(struct device *dev) | ||
1367 | { | ||
1368 | struct brcmf_bus *bus_if = dev_get_drvdata(dev); | ||
1369 | struct brcmf_pub *drvr = bus_if->drvr; | ||
1370 | |||
1371 | if (!drvr) | ||
1372 | return; | ||
1353 | 1373 | ||
1354 | bus_if->drvr = NULL; | 1374 | bus_if->drvr = NULL; |
1355 | 1375 | ||
1376 | kfree(drvr->ops); | ||
1377 | |||
1356 | wiphy_free(drvr->wiphy); | 1378 | wiphy_free(drvr->wiphy); |
1357 | } | 1379 | } |
1358 | 1380 | ||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h index 86517a3d74b1..6699637d3bf8 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h | |||
@@ -97,6 +97,7 @@ struct brcmf_pub { | |||
97 | struct brcmf_bus *bus_if; | 97 | struct brcmf_bus *bus_if; |
98 | struct brcmf_proto *proto; | 98 | struct brcmf_proto *proto; |
99 | struct wiphy *wiphy; | 99 | struct wiphy *wiphy; |
100 | struct cfg80211_ops *ops; | ||
100 | struct brcmf_cfg80211_info *config; | 101 | struct brcmf_cfg80211_info *config; |
101 | 102 | ||
102 | /* Internal brcmf items */ | 103 | /* Internal brcmf items */ |
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c index 7ac945369762..6c463475e90b 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | |||
@@ -1824,11 +1824,15 @@ static void brcmf_pcie_setup(struct device *dev, int ret, | |||
1824 | 1824 | ||
1825 | brcmf_pcie_intr_enable(devinfo); | 1825 | brcmf_pcie_intr_enable(devinfo); |
1826 | brcmf_pcie_hostready(devinfo); | 1826 | brcmf_pcie_hostready(devinfo); |
1827 | if (brcmf_attach(&devinfo->pdev->dev, devinfo->settings) == 0) | 1827 | |
1828 | return; | 1828 | ret = brcmf_attach(&devinfo->pdev->dev); |
1829 | if (ret) | ||
1830 | goto fail; | ||
1829 | 1831 | ||
1830 | brcmf_pcie_bus_console_read(devinfo, false); | 1832 | brcmf_pcie_bus_console_read(devinfo, false); |
1831 | 1833 | ||
1834 | return; | ||
1835 | |||
1832 | fail: | 1836 | fail: |
1833 | device_release_driver(dev); | 1837 | device_release_driver(dev); |
1834 | } | 1838 | } |
@@ -1923,6 +1927,10 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1923 | bus->wowl_supported = pci_pme_capable(pdev, PCI_D3hot); | 1927 | bus->wowl_supported = pci_pme_capable(pdev, PCI_D3hot); |
1924 | dev_set_drvdata(&pdev->dev, bus); | 1928 | dev_set_drvdata(&pdev->dev, bus); |
1925 | 1929 | ||
1930 | ret = brcmf_alloc(&devinfo->pdev->dev, devinfo->settings); | ||
1931 | if (ret) | ||
1932 | goto fail_bus; | ||
1933 | |||
1926 | fwreq = brcmf_pcie_prepare_fw_request(devinfo); | 1934 | fwreq = brcmf_pcie_prepare_fw_request(devinfo); |
1927 | if (!fwreq) { | 1935 | if (!fwreq) { |
1928 | ret = -ENOMEM; | 1936 | ret = -ENOMEM; |
@@ -1971,6 +1979,7 @@ brcmf_pcie_remove(struct pci_dev *pdev) | |||
1971 | brcmf_pcie_intr_disable(devinfo); | 1979 | brcmf_pcie_intr_disable(devinfo); |
1972 | 1980 | ||
1973 | brcmf_detach(&pdev->dev); | 1981 | brcmf_detach(&pdev->dev); |
1982 | brcmf_free(&pdev->dev); | ||
1974 | 1983 | ||
1975 | kfree(bus->bus_priv.pcie); | 1984 | kfree(bus->bus_priv.pcie); |
1976 | kfree(bus->msgbuf->flowrings); | 1985 | kfree(bus->msgbuf->flowrings); |
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index 629140b6d7e2..264ad63232f8 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | |||
@@ -4247,17 +4247,26 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, | |||
4247 | sdiod->bus_if->chip = bus->ci->chip; | 4247 | sdiod->bus_if->chip = bus->ci->chip; |
4248 | sdiod->bus_if->chiprev = bus->ci->chiprev; | 4248 | sdiod->bus_if->chiprev = bus->ci->chiprev; |
4249 | 4249 | ||
4250 | err = brcmf_alloc(sdiod->dev, sdiod->settings); | ||
4251 | if (err) { | ||
4252 | brcmf_err("brcmf_alloc failed\n"); | ||
4253 | goto claim; | ||
4254 | } | ||
4255 | |||
4250 | /* Attach to the common layer, reserve hdr space */ | 4256 | /* Attach to the common layer, reserve hdr space */ |
4251 | err = brcmf_attach(sdiod->dev, sdiod->settings); | 4257 | err = brcmf_attach(sdiod->dev); |
4252 | if (err != 0) { | 4258 | if (err != 0) { |
4253 | brcmf_err("brcmf_attach failed\n"); | 4259 | brcmf_err("brcmf_attach failed\n"); |
4254 | sdio_claim_host(sdiod->func1); | 4260 | goto free; |
4255 | goto checkdied; | ||
4256 | } | 4261 | } |
4257 | 4262 | ||
4258 | /* ready */ | 4263 | /* ready */ |
4259 | return; | 4264 | return; |
4260 | 4265 | ||
4266 | free: | ||
4267 | brcmf_free(sdiod->dev); | ||
4268 | claim: | ||
4269 | sdio_claim_host(sdiod->func1); | ||
4261 | checkdied: | 4270 | checkdied: |
4262 | brcmf_sdio_checkdied(bus); | 4271 | brcmf_sdio_checkdied(bus); |
4263 | release: | 4272 | release: |
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c index d33628b79a3a..06f3c01f10b3 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | |||
@@ -1178,8 +1178,12 @@ static void brcmf_usb_probe_phase2(struct device *dev, int ret, | |||
1178 | if (ret) | 1178 | if (ret) |
1179 | goto error; | 1179 | goto error; |
1180 | 1180 | ||
1181 | ret = brcmf_alloc(devinfo->dev, devinfo->settings); | ||
1182 | if (ret) | ||
1183 | goto error; | ||
1184 | |||
1181 | /* Attach to the common driver interface */ | 1185 | /* Attach to the common driver interface */ |
1182 | ret = brcmf_attach(devinfo->dev, devinfo->settings); | 1186 | ret = brcmf_attach(devinfo->dev); |
1183 | if (ret) | 1187 | if (ret) |
1184 | goto error; | 1188 | goto error; |
1185 | 1189 | ||
@@ -1251,7 +1255,10 @@ static int brcmf_usb_probe_cb(struct brcmf_usbdev_info *devinfo) | |||
1251 | } | 1255 | } |
1252 | 1256 | ||
1253 | if (!brcmf_usb_dlneeded(devinfo)) { | 1257 | if (!brcmf_usb_dlneeded(devinfo)) { |
1254 | ret = brcmf_attach(devinfo->dev, devinfo->settings); | 1258 | ret = brcmf_alloc(devinfo->dev, devinfo->settings); |
1259 | if (ret) | ||
1260 | goto fail; | ||
1261 | ret = brcmf_attach(devinfo->dev); | ||
1255 | if (ret) | 1262 | if (ret) |
1256 | goto fail; | 1263 | goto fail; |
1257 | /* we are done */ | 1264 | /* we are done */ |
@@ -1279,6 +1286,7 @@ static int brcmf_usb_probe_cb(struct brcmf_usbdev_info *devinfo) | |||
1279 | 1286 | ||
1280 | fail: | 1287 | fail: |
1281 | /* Release resources in reverse order */ | 1288 | /* Release resources in reverse order */ |
1289 | brcmf_free(devinfo->dev); | ||
1282 | kfree(bus); | 1290 | kfree(bus); |
1283 | brcmf_usb_detach(devinfo); | 1291 | brcmf_usb_detach(devinfo); |
1284 | return ret; | 1292 | return ret; |
@@ -1292,6 +1300,7 @@ brcmf_usb_disconnect_cb(struct brcmf_usbdev_info *devinfo) | |||
1292 | brcmf_dbg(USB, "Enter, bus_pub %p\n", devinfo); | 1300 | brcmf_dbg(USB, "Enter, bus_pub %p\n", devinfo); |
1293 | 1301 | ||
1294 | brcmf_detach(devinfo->dev); | 1302 | brcmf_detach(devinfo->dev); |
1303 | brcmf_free(devinfo->dev); | ||
1295 | kfree(devinfo->bus_pub.bus); | 1304 | kfree(devinfo->bus_pub.bus); |
1296 | brcmf_usb_detach(devinfo); | 1305 | brcmf_usb_detach(devinfo); |
1297 | } | 1306 | } |
@@ -1435,10 +1444,12 @@ static int brcmf_usb_suspend(struct usb_interface *intf, pm_message_t state) | |||
1435 | 1444 | ||
1436 | brcmf_dbg(USB, "Enter\n"); | 1445 | brcmf_dbg(USB, "Enter\n"); |
1437 | devinfo->bus_pub.state = BRCMFMAC_USB_STATE_SLEEP; | 1446 | devinfo->bus_pub.state = BRCMFMAC_USB_STATE_SLEEP; |
1438 | if (devinfo->wowl_enabled) | 1447 | if (devinfo->wowl_enabled) { |
1439 | brcmf_cancel_all_urbs(devinfo); | 1448 | brcmf_cancel_all_urbs(devinfo); |
1440 | else | 1449 | } else { |
1441 | brcmf_detach(&usb->dev); | 1450 | brcmf_detach(&usb->dev); |
1451 | brcmf_free(&usb->dev); | ||
1452 | } | ||
1442 | return 0; | 1453 | return 0; |
1443 | } | 1454 | } |
1444 | 1455 | ||
@@ -1451,8 +1462,19 @@ static int brcmf_usb_resume(struct usb_interface *intf) | |||
1451 | struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(&usb->dev); | 1462 | struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(&usb->dev); |
1452 | 1463 | ||
1453 | brcmf_dbg(USB, "Enter\n"); | 1464 | brcmf_dbg(USB, "Enter\n"); |
1454 | if (!devinfo->wowl_enabled) | 1465 | if (!devinfo->wowl_enabled) { |
1455 | return brcmf_attach(devinfo->dev, devinfo->settings); | 1466 | int err; |
1467 | |||
1468 | err = brcmf_alloc(&usb->dev, devinfo->settings); | ||
1469 | if (err) | ||
1470 | return err; | ||
1471 | |||
1472 | err = brcmf_attach(devinfo->dev); | ||
1473 | if (err) { | ||
1474 | brcmf_free(devinfo->dev); | ||
1475 | return err; | ||
1476 | } | ||
1477 | } | ||
1456 | 1478 | ||
1457 | devinfo->bus_pub.state = BRCMFMAC_USB_STATE_UP; | 1479 | devinfo->bus_pub.state = BRCMFMAC_USB_STATE_UP; |
1458 | brcmf_usb_rx_fill_all(devinfo); | 1480 | brcmf_usb_rx_fill_all(devinfo); |
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c index 0c57d48f47b1..a3f094568cfb 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c | |||
@@ -17748,7 +17748,7 @@ static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi) | |||
17748 | num = 8 * | 17748 | num = 8 * |
17749 | (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx); | 17749 | (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx); |
17750 | den = 32768 + a1[tbl_id - 26] * idx; | 17750 | den = 32768 + a1[tbl_id - 26] * idx; |
17751 | pwr_est = max(((4 * num + den / 2) / den), -8); | 17751 | pwr_est = max(DIV_ROUND_CLOSEST(4 * num, den), -8); |
17752 | if (NREV_LT(pi->pubpi.phy_rev, 3)) { | 17752 | if (NREV_LT(pi->pubpi.phy_rev, 3)) { |
17753 | if (idx <= | 17753 | if (idx <= |
17754 | (uint) (31 - idle_tssi[tbl_id - 26] + 1)) | 17754 | (uint) (31 - idle_tssi[tbl_id - 26] + 1)) |
@@ -26990,8 +26990,8 @@ wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core, | |||
26990 | NPHY_RXCAL_TONEAMP, 0, cal_type, false); | 26990 | NPHY_RXCAL_TONEAMP, 0, cal_type, false); |
26991 | 26991 | ||
26992 | wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0); | 26992 | wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0); |
26993 | i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps; | 26993 | i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr, num_samps); |
26994 | q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps; | 26994 | q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr, num_samps); |
26995 | curr_pwr = i_pwr + q_pwr; | 26995 | curr_pwr = i_pwr + q_pwr; |
26996 | 26996 | ||
26997 | switch (gainctrl_dirn) { | 26997 | switch (gainctrl_dirn) { |
@@ -27673,10 +27673,10 @@ wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi, | |||
27673 | wlc_phy_rx_iq_est_nphy(pi, est, | 27673 | wlc_phy_rx_iq_est_nphy(pi, est, |
27674 | num_samps, 32, | 27674 | num_samps, 32, |
27675 | 0); | 27675 | 0); |
27676 | i_pwr = (est[rx_core].i_pwr + | 27676 | i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr, |
27677 | num_samps / 2) / num_samps; | 27677 | num_samps); |
27678 | q_pwr = (est[rx_core].q_pwr + | 27678 | q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr, |
27679 | num_samps / 2) / num_samps; | 27679 | num_samps); |
27680 | tot_pwr[gain_pass] = i_pwr + q_pwr; | 27680 | tot_pwr[gain_pass] = i_pwr + q_pwr; |
27681 | } else { | 27681 | } else { |
27682 | 27682 | ||
diff --git a/drivers/net/wireless/marvell/libertas/dev.h b/drivers/net/wireless/marvell/libertas/dev.h index 469134930026..4b6e05a8e5d5 100644 --- a/drivers/net/wireless/marvell/libertas/dev.h +++ b/drivers/net/wireless/marvell/libertas/dev.h | |||
@@ -58,8 +58,6 @@ struct lbs_private { | |||
58 | #ifdef CONFIG_LIBERTAS_MESH | 58 | #ifdef CONFIG_LIBERTAS_MESH |
59 | struct lbs_mesh_stats mstats; | 59 | struct lbs_mesh_stats mstats; |
60 | uint16_t mesh_tlv; | 60 | uint16_t mesh_tlv; |
61 | u8 mesh_ssid[IEEE80211_MAX_SSID_LEN + 1]; | ||
62 | u8 mesh_ssid_len; | ||
63 | u8 mesh_channel; | 61 | u8 mesh_channel; |
64 | #endif | 62 | #endif |
65 | 63 | ||
diff --git a/drivers/net/wireless/marvell/libertas/mesh.c b/drivers/net/wireless/marvell/libertas/mesh.c index 2315fdff56c2..2747c957d18c 100644 --- a/drivers/net/wireless/marvell/libertas/mesh.c +++ b/drivers/net/wireless/marvell/libertas/mesh.c | |||
@@ -86,6 +86,7 @@ static int lbs_mesh_config_send(struct lbs_private *priv, | |||
86 | static int lbs_mesh_config(struct lbs_private *priv, uint16_t action, | 86 | static int lbs_mesh_config(struct lbs_private *priv, uint16_t action, |
87 | uint16_t chan) | 87 | uint16_t chan) |
88 | { | 88 | { |
89 | struct wireless_dev *mesh_wdev; | ||
89 | struct cmd_ds_mesh_config cmd; | 90 | struct cmd_ds_mesh_config cmd; |
90 | struct mrvl_meshie *ie; | 91 | struct mrvl_meshie *ie; |
91 | 92 | ||
@@ -105,10 +106,17 @@ static int lbs_mesh_config(struct lbs_private *priv, uint16_t action, | |||
105 | ie->val.active_protocol_id = MARVELL_MESH_PROTO_ID_HWMP; | 106 | ie->val.active_protocol_id = MARVELL_MESH_PROTO_ID_HWMP; |
106 | ie->val.active_metric_id = MARVELL_MESH_METRIC_ID; | 107 | ie->val.active_metric_id = MARVELL_MESH_METRIC_ID; |
107 | ie->val.mesh_capability = MARVELL_MESH_CAPABILITY; | 108 | ie->val.mesh_capability = MARVELL_MESH_CAPABILITY; |
108 | ie->val.mesh_id_len = priv->mesh_ssid_len; | 109 | |
109 | memcpy(ie->val.mesh_id, priv->mesh_ssid, priv->mesh_ssid_len); | 110 | if (priv->mesh_dev) { |
111 | mesh_wdev = priv->mesh_dev->ieee80211_ptr; | ||
112 | ie->val.mesh_id_len = mesh_wdev->mesh_id_up_len; | ||
113 | memcpy(ie->val.mesh_id, mesh_wdev->ssid, | ||
114 | mesh_wdev->mesh_id_up_len); | ||
115 | } | ||
116 | |||
110 | ie->len = sizeof(struct mrvl_meshie_val) - | 117 | ie->len = sizeof(struct mrvl_meshie_val) - |
111 | IEEE80211_MAX_SSID_LEN + priv->mesh_ssid_len; | 118 | IEEE80211_MAX_SSID_LEN + ie->val.mesh_id_len; |
119 | |||
112 | cmd.length = cpu_to_le16(sizeof(struct mrvl_meshie_val)); | 120 | cmd.length = cpu_to_le16(sizeof(struct mrvl_meshie_val)); |
113 | break; | 121 | break; |
114 | case CMD_ACT_MESH_CONFIG_STOP: | 122 | case CMD_ACT_MESH_CONFIG_STOP: |
@@ -117,8 +125,8 @@ static int lbs_mesh_config(struct lbs_private *priv, uint16_t action, | |||
117 | return -1; | 125 | return -1; |
118 | } | 126 | } |
119 | lbs_deb_cmd("mesh config action %d type %x channel %d SSID %*pE\n", | 127 | lbs_deb_cmd("mesh config action %d type %x channel %d SSID %*pE\n", |
120 | action, priv->mesh_tlv, chan, priv->mesh_ssid_len, | 128 | action, priv->mesh_tlv, chan, ie->val.mesh_id_len, |
121 | priv->mesh_ssid); | 129 | ie->val.mesh_id); |
122 | 130 | ||
123 | return __lbs_mesh_config_send(priv, &cmd, action, priv->mesh_tlv); | 131 | return __lbs_mesh_config_send(priv, &cmd, action, priv->mesh_tlv); |
124 | } | 132 | } |
@@ -863,12 +871,6 @@ int lbs_init_mesh(struct lbs_private *priv) | |||
863 | /* Stop meshing until interface is brought up */ | 871 | /* Stop meshing until interface is brought up */ |
864 | lbs_mesh_config(priv, CMD_ACT_MESH_CONFIG_STOP, 1); | 872 | lbs_mesh_config(priv, CMD_ACT_MESH_CONFIG_STOP, 1); |
865 | 873 | ||
866 | if (priv->mesh_tlv) { | ||
867 | sprintf(priv->mesh_ssid, "mesh"); | ||
868 | priv->mesh_ssid_len = 4; | ||
869 | ret = 1; | ||
870 | } | ||
871 | |||
872 | return ret; | 874 | return ret; |
873 | } | 875 | } |
874 | 876 | ||
@@ -997,6 +999,13 @@ static int lbs_add_mesh(struct lbs_private *priv) | |||
997 | 999 | ||
998 | mesh_wdev->iftype = NL80211_IFTYPE_MESH_POINT; | 1000 | mesh_wdev->iftype = NL80211_IFTYPE_MESH_POINT; |
999 | mesh_wdev->wiphy = priv->wdev->wiphy; | 1001 | mesh_wdev->wiphy = priv->wdev->wiphy; |
1002 | |||
1003 | if (priv->mesh_tlv) { | ||
1004 | sprintf(mesh_wdev->ssid, "mesh"); | ||
1005 | mesh_wdev->mesh_id_up_len = 4; | ||
1006 | ret = 1; | ||
1007 | } | ||
1008 | |||
1000 | mesh_wdev->netdev = mesh_dev; | 1009 | mesh_wdev->netdev = mesh_dev; |
1001 | 1010 | ||
1002 | mesh_dev->ml_priv = priv; | 1011 | mesh_dev->ml_priv = priv; |
diff --git a/drivers/net/wireless/marvell/libertas/mesh.h b/drivers/net/wireless/marvell/libertas/mesh.h index dfe22c91aade..1561018f226f 100644 --- a/drivers/net/wireless/marvell/libertas/mesh.h +++ b/drivers/net/wireless/marvell/libertas/mesh.h | |||
@@ -24,8 +24,7 @@ void lbs_remove_mesh(struct lbs_private *priv); | |||
24 | 24 | ||
25 | static inline bool lbs_mesh_activated(struct lbs_private *priv) | 25 | static inline bool lbs_mesh_activated(struct lbs_private *priv) |
26 | { | 26 | { |
27 | /* Mesh SSID is only programmed after successful init */ | 27 | return !!priv->mesh_tlv; |
28 | return priv->mesh_ssid_len != 0; | ||
29 | } | 28 | } |
30 | 29 | ||
31 | int lbs_mesh_set_channel(struct lbs_private *priv, u8 channel); | 30 | int lbs_mesh_set_channel(struct lbs_private *priv, u8 channel); |
diff --git a/drivers/net/wireless/realtek/rtlwifi/base.h b/drivers/net/wireless/realtek/rtlwifi/base.h index 99565ad09cdc..e4a7e074ae3f 100644 --- a/drivers/net/wireless/realtek/rtlwifi/base.h +++ b/drivers/net/wireless/realtek/rtlwifi/base.h | |||
@@ -46,15 +46,6 @@ enum ap_peer { | |||
46 | #define MAX_LISTEN_INTERVAL 10 | 46 | #define MAX_LISTEN_INTERVAL 10 |
47 | #define MAX_RATE_TRIES 4 | 47 | #define MAX_RATE_TRIES 4 |
48 | 48 | ||
49 | #define SET_80211_HDR_FRAME_CONTROL(_hdr, _val) \ | ||
50 | WRITEEF2BYTE(_hdr, _val) | ||
51 | #define SET_80211_HDR_TYPE_AND_SUBTYPE(_hdr, _val) \ | ||
52 | WRITEEF1BYTE(_hdr, _val) | ||
53 | #define SET_80211_HDR_PWR_MGNT(_hdr, _val) \ | ||
54 | SET_BITS_TO_LE_2BYTE(_hdr, 12, 1, _val) | ||
55 | #define SET_80211_HDR_TO_DS(_hdr, _val) \ | ||
56 | SET_BITS_TO_LE_2BYTE(_hdr, 8, 1, _val) | ||
57 | |||
58 | #define SET_80211_PS_POLL_AID(_hdr, _val) \ | 49 | #define SET_80211_PS_POLL_AID(_hdr, _val) \ |
59 | (*(u16 *)((u8 *)(_hdr) + 2) = _val) | 50 | (*(u16 *)((u8 *)(_hdr) + 2) = _val) |
60 | #define SET_80211_PS_POLL_BSSID(_hdr, _val) \ | 51 | #define SET_80211_PS_POLL_BSSID(_hdr, _val) \ |
@@ -62,30 +53,12 @@ enum ap_peer { | |||
62 | #define SET_80211_PS_POLL_TA(_hdr, _val) \ | 53 | #define SET_80211_PS_POLL_TA(_hdr, _val) \ |
63 | ether_addr_copy(((u8 *)(_hdr))+10, (u8 *)(_val)) | 54 | ether_addr_copy(((u8 *)(_hdr))+10, (u8 *)(_val)) |
64 | 55 | ||
65 | #define SET_80211_HDR_DURATION(_hdr, _val) \ | ||
66 | (*(u16 *)((u8 *)(_hdr) + FRAME_OFFSET_DURATION) = le16_to_cpu(_val)) | ||
67 | #define SET_80211_HDR_ADDRESS1(_hdr, _val) \ | 56 | #define SET_80211_HDR_ADDRESS1(_hdr, _val) \ |
68 | CP_MACADDR((u8 *)(_hdr)+FRAME_OFFSET_ADDRESS1, (u8 *)(_val)) | 57 | CP_MACADDR((u8 *)(_hdr)+FRAME_OFFSET_ADDRESS1, (u8 *)(_val)) |
69 | #define SET_80211_HDR_ADDRESS2(_hdr, _val) \ | 58 | #define SET_80211_HDR_ADDRESS2(_hdr, _val) \ |
70 | CP_MACADDR((u8 *)(_hdr)+FRAME_OFFSET_ADDRESS2, (u8 *)(_val)) | 59 | CP_MACADDR((u8 *)(_hdr)+FRAME_OFFSET_ADDRESS2, (u8 *)(_val)) |
71 | #define SET_80211_HDR_ADDRESS3(_hdr, _val) \ | 60 | #define SET_80211_HDR_ADDRESS3(_hdr, _val) \ |
72 | CP_MACADDR((u8 *)(_hdr)+FRAME_OFFSET_ADDRESS3, (u8 *)(_val)) | 61 | CP_MACADDR((u8 *)(_hdr)+FRAME_OFFSET_ADDRESS3, (u8 *)(_val)) |
73 | #define SET_80211_HDR_FRAGMENT_SEQUENCE(_hdr, _val) \ | ||
74 | WRITEEF2BYTE((u8 *)(_hdr)+FRAME_OFFSET_SEQUENCE, _val) | ||
75 | |||
76 | #define SET_BEACON_PROBE_RSP_TIME_STAMP_LOW(__phdr, __val) \ | ||
77 | WRITEEF4BYTE(((u8 *)(__phdr)) + 24, __val) | ||
78 | #define SET_BEACON_PROBE_RSP_TIME_STAMP_HIGH(__phdr, __val) \ | ||
79 | WRITEEF4BYTE(((u8 *)(__phdr)) + 28, __val) | ||
80 | #define SET_BEACON_PROBE_RSP_BEACON_INTERVAL(__phdr, __val) \ | ||
81 | WRITEEF2BYTE(((u8 *)(__phdr)) + 32, __val) | ||
82 | #define GET_BEACON_PROBE_RSP_CAPABILITY_INFO(__phdr) \ | ||
83 | READEF2BYTE(((u8 *)(__phdr)) + 34) | ||
84 | #define SET_BEACON_PROBE_RSP_CAPABILITY_INFO(__phdr, __val) \ | ||
85 | WRITEEF2BYTE(((u8 *)(__phdr)) + 34, __val) | ||
86 | #define MASK_BEACON_PROBE_RSP_CAPABILITY_INFO(__phdr, __val) \ | ||
87 | SET_BEACON_PROBE_RSP_CAPABILITY_INFO(__phdr, \ | ||
88 | (GET_BEACON_PROBE_RSP_CAPABILITY_INFO(__phdr) & (~(__val)))) | ||
89 | 62 | ||
90 | #define SET_TX_DESC_SPE_RPT(__pdesc, __val) \ | 63 | #define SET_TX_DESC_SPE_RPT(__pdesc, __val) \ |
91 | SET_BITS_TO_LE_4BYTE((__pdesc) + 8, 19, 1, __val) | 64 | SET_BITS_TO_LE_4BYTE((__pdesc) + 8, 19, 1, __val) |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/def.h b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/def.h index fa2e1b063f68..edcca42c7464 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/def.h +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/def.h | |||
@@ -12,35 +12,6 @@ | |||
12 | #define RX_CMD_QUEUE 1 | 12 | #define RX_CMD_QUEUE 1 |
13 | 13 | ||
14 | #define C2H_RX_CMD_HDR_LEN 8 | 14 | #define C2H_RX_CMD_HDR_LEN 8 |
15 | #define GET_C2H_CMD_CMD_LEN(__prxhdr) \ | ||
16 | LE_BITS_TO_4BYTE((__prxhdr), 0, 16) | ||
17 | #define GET_C2H_CMD_ELEMENT_ID(__prxhdr) \ | ||
18 | LE_BITS_TO_4BYTE((__prxhdr), 16, 8) | ||
19 | #define GET_C2H_CMD_CMD_SEQ(__prxhdr) \ | ||
20 | LE_BITS_TO_4BYTE((__prxhdr), 24, 7) | ||
21 | #define GET_C2H_CMD_CONTINUE(__prxhdr) \ | ||
22 | LE_BITS_TO_4BYTE((__prxhdr), 31, 1) | ||
23 | #define GET_C2H_CMD_CONTENT(__prxhdr) \ | ||
24 | ((u8 *)(__prxhdr) + C2H_RX_CMD_HDR_LEN) | ||
25 | |||
26 | #define GET_C2H_CMD_FEEDBACK_ELEMENT_ID(__pcmdfbhdr) \ | ||
27 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 0, 8) | ||
28 | #define GET_C2H_CMD_FEEDBACK_CCX_LEN(__pcmdfbhdr) \ | ||
29 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 8, 8) | ||
30 | #define GET_C2H_CMD_FEEDBACK_CCX_CMD_CNT(__pcmdfbhdr) \ | ||
31 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 16, 16) | ||
32 | #define GET_C2H_CMD_FEEDBACK_CCX_MAC_ID(__pcmdfbhdr) \ | ||
33 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 0, 5) | ||
34 | #define GET_C2H_CMD_FEEDBACK_CCX_VALID(__pcmdfbhdr) \ | ||
35 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 7, 1) | ||
36 | #define GET_C2H_CMD_FEEDBACK_CCX_RETRY_CNT(__pcmdfbhdr) \ | ||
37 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 8, 5) | ||
38 | #define GET_C2H_CMD_FEEDBACK_CCX_TOK(__pcmdfbhdr) \ | ||
39 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 15, 1) | ||
40 | #define GET_C2H_CMD_FEEDBACK_CCX_QSEL(__pcmdfbhdr) \ | ||
41 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 16, 4) | ||
42 | #define GET_C2H_CMD_FEEDBACK_CCX_SEQ(__pcmdfbhdr) \ | ||
43 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12) | ||
44 | 15 | ||
45 | #define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) | 16 | #define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) |
46 | 17 | ||
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/def.h b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/def.h index 147bf2407f8f..34486bd3e109 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/def.h +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/def.h | |||
@@ -17,39 +17,6 @@ | |||
17 | #define RX_MPDU_QUEUE 0 | 17 | #define RX_MPDU_QUEUE 0 |
18 | #define RX_CMD_QUEUE 1 | 18 | #define RX_CMD_QUEUE 1 |
19 | 19 | ||
20 | #define C2H_RX_CMD_HDR_LEN 8 | ||
21 | #define GET_C2H_CMD_CMD_LEN(__prxhdr) \ | ||
22 | LE_BITS_TO_4BYTE((__prxhdr), 0, 16) | ||
23 | #define GET_C2H_CMD_ELEMENT_ID(__prxhdr) \ | ||
24 | LE_BITS_TO_4BYTE((__prxhdr), 16, 8) | ||
25 | #define GET_C2H_CMD_CMD_SEQ(__prxhdr) \ | ||
26 | LE_BITS_TO_4BYTE((__prxhdr), 24, 7) | ||
27 | #define GET_C2H_CMD_CONTINUE(__prxhdr) \ | ||
28 | LE_BITS_TO_4BYTE((__prxhdr), 31, 1) | ||
29 | #define GET_C2H_CMD_CONTENT(__prxhdr) \ | ||
30 | ((u8 *)(__prxhdr) + C2H_RX_CMD_HDR_LEN) | ||
31 | |||
32 | #define GET_C2H_CMD_FEEDBACK_ELEMENT_ID(__pcmdfbhdr) \ | ||
33 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 0, 8) | ||
34 | #define GET_C2H_CMD_FEEDBACK_CCX_LEN(__pcmdfbhdr) \ | ||
35 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 8, 8) | ||
36 | #define GET_C2H_CMD_FEEDBACK_CCX_CMD_CNT(__pcmdfbhdr) \ | ||
37 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 16, 16) | ||
38 | #define GET_C2H_CMD_FEEDBACK_CCX_MAC_ID(__pcmdfbhdr) \ | ||
39 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 0, 5) | ||
40 | #define GET_C2H_CMD_FEEDBACK_CCX_VALID(__pcmdfbhdr) \ | ||
41 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 7, 1) | ||
42 | #define GET_C2H_CMD_FEEDBACK_CCX_RETRY_CNT(__pcmdfbhdr) \ | ||
43 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 8, 5) | ||
44 | #define GET_C2H_CMD_FEEDBACK_CCX_TOK(__pcmdfbhdr) \ | ||
45 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 15, 1) | ||
46 | #define GET_C2H_CMD_FEEDBACK_CCX_QSEL(__pcmdfbhdr) \ | ||
47 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 16, 4) | ||
48 | #define GET_C2H_CMD_FEEDBACK_CCX_SEQ(__pcmdfbhdr) \ | ||
49 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12) | ||
50 | #define GET_RX_STATUS_DESC_BUFF_ADDR(__pdesc) \ | ||
51 | SHIFT_AND_MASK_LE(__pdesc + 24, 0, 32) | ||
52 | |||
53 | #define CHIP_VER_B BIT(4) | 20 | #define CHIP_VER_B BIT(4) |
54 | #define CHIP_BONDING_IDENTIFIER(_value) (((_value) >> 22) & 0x3) | 21 | #define CHIP_BONDING_IDENTIFIER(_value) (((_value) >> 22) & 0x3) |
55 | #define CHIP_BONDING_92C_1T2R 0x1 | 22 | #define CHIP_BONDING_92C_1T2R 0x1 |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/trx.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/trx.c index 123dbf0903a1..fc9a3aae047f 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/trx.c +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/trx.c | |||
@@ -33,27 +33,6 @@ static u8 _rtl92c_query_rxpwrpercentage(s8 antpower) | |||
33 | return 100 + antpower; | 33 | return 100 + antpower; |
34 | } | 34 | } |
35 | 35 | ||
36 | static u8 _rtl92c_evm_db_to_percentage(s8 value) | ||
37 | { | ||
38 | s8 ret_val; | ||
39 | |||
40 | ret_val = value; | ||
41 | |||
42 | if (ret_val >= 0) | ||
43 | ret_val = 0; | ||
44 | |||
45 | if (ret_val <= -33) | ||
46 | ret_val = -33; | ||
47 | |||
48 | ret_val = 0 - ret_val; | ||
49 | ret_val *= 3; | ||
50 | |||
51 | if (ret_val == 99) | ||
52 | ret_val = 100; | ||
53 | |||
54 | return ret_val; | ||
55 | } | ||
56 | |||
57 | static long _rtl92ce_signal_scale_mapping(struct ieee80211_hw *hw, | 36 | static long _rtl92ce_signal_scale_mapping(struct ieee80211_hw *hw, |
58 | long currsig) | 37 | long currsig) |
59 | { | 38 | { |
@@ -243,7 +222,7 @@ static void _rtl92ce_query_rxphystatus(struct ieee80211_hw *hw, | |||
243 | max_spatial_stream = 1; | 222 | max_spatial_stream = 1; |
244 | 223 | ||
245 | for (i = 0; i < max_spatial_stream; i++) { | 224 | for (i = 0; i < max_spatial_stream; i++) { |
246 | evm = _rtl92c_evm_db_to_percentage(p_drvinfo->rxevm[i]); | 225 | evm = rtl_evm_db_to_percentage(p_drvinfo->rxevm[i]); |
247 | 226 | ||
248 | if (packet_match_bssid) { | 227 | if (packet_match_bssid) { |
249 | /* Fill value in RFD, Get the first | 228 | /* Fill value in RFD, Get the first |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/mac.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/mac.c index c8daad1e749f..cec19b32c7e2 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/mac.c +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/mac.c | |||
@@ -577,22 +577,6 @@ static u8 _rtl92c_query_rxpwrpercentage(s8 antpower) | |||
577 | return 100 + antpower; | 577 | return 100 + antpower; |
578 | } | 578 | } |
579 | 579 | ||
580 | static u8 _rtl92c_evm_db_to_percentage(s8 value) | ||
581 | { | ||
582 | s8 ret_val; | ||
583 | |||
584 | ret_val = value; | ||
585 | if (ret_val >= 0) | ||
586 | ret_val = 0; | ||
587 | if (ret_val <= -33) | ||
588 | ret_val = -33; | ||
589 | ret_val = 0 - ret_val; | ||
590 | ret_val *= 3; | ||
591 | if (ret_val == 99) | ||
592 | ret_val = 100; | ||
593 | return ret_val; | ||
594 | } | ||
595 | |||
596 | static long _rtl92c_signal_scale_mapping(struct ieee80211_hw *hw, | 580 | static long _rtl92c_signal_scale_mapping(struct ieee80211_hw *hw, |
597 | long currsig) | 581 | long currsig) |
598 | { | 582 | { |
@@ -743,7 +727,7 @@ static void _rtl92c_query_rxphystatus(struct ieee80211_hw *hw, | |||
743 | else | 727 | else |
744 | max_spatial_stream = 1; | 728 | max_spatial_stream = 1; |
745 | for (i = 0; i < max_spatial_stream; i++) { | 729 | for (i = 0; i < max_spatial_stream; i++) { |
746 | evm = _rtl92c_evm_db_to_percentage(p_drvinfo->rxevm[i]); | 730 | evm = rtl_evm_db_to_percentage(p_drvinfo->rxevm[i]); |
747 | if (packet_match_bssid) { | 731 | if (packet_match_bssid) { |
748 | if (i == 0) | 732 | if (i == 0) |
749 | pstats->signalquality = | 733 | pstats->signalquality = |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/def.h b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/def.h index fa33b05db052..21726d9b4aef 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/def.h +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/def.h | |||
@@ -26,37 +26,6 @@ | |||
26 | #define RX_MPDU_QUEUE 0 | 26 | #define RX_MPDU_QUEUE 0 |
27 | #define RX_CMD_QUEUE 1 | 27 | #define RX_CMD_QUEUE 1 |
28 | 28 | ||
29 | #define C2H_RX_CMD_HDR_LEN 8 | ||
30 | #define GET_C2H_CMD_CMD_LEN(__prxhdr) \ | ||
31 | LE_BITS_TO_4BYTE((__prxhdr), 0, 16) | ||
32 | #define GET_C2H_CMD_ELEMENT_ID(__prxhdr) \ | ||
33 | LE_BITS_TO_4BYTE((__prxhdr), 16, 8) | ||
34 | #define GET_C2H_CMD_CMD_SEQ(__prxhdr) \ | ||
35 | LE_BITS_TO_4BYTE((__prxhdr), 24, 7) | ||
36 | #define GET_C2H_CMD_CONTINUE(__prxhdr) \ | ||
37 | LE_BITS_TO_4BYTE((__prxhdr), 31, 1) | ||
38 | #define GET_C2H_CMD_CONTENT(__prxhdr) \ | ||
39 | ((u8 *)(__prxhdr) + C2H_RX_CMD_HDR_LEN) | ||
40 | |||
41 | #define GET_C2H_CMD_FEEDBACK_ELEMENT_ID(__pcmdfbhdr) \ | ||
42 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 0, 8) | ||
43 | #define GET_C2H_CMD_FEEDBACK_CCX_LEN(__pcmdfbhdr) \ | ||
44 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 8, 8) | ||
45 | #define GET_C2H_CMD_FEEDBACK_CCX_CMD_CNT(__pcmdfbhdr) \ | ||
46 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 16, 16) | ||
47 | #define GET_C2H_CMD_FEEDBACK_CCX_MAC_ID(__pcmdfbhdr) \ | ||
48 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 0, 5) | ||
49 | #define GET_C2H_CMD_FEEDBACK_CCX_VALID(__pcmdfbhdr) \ | ||
50 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 7, 1) | ||
51 | #define GET_C2H_CMD_FEEDBACK_CCX_RETRY_CNT(__pcmdfbhdr) \ | ||
52 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 8, 5) | ||
53 | #define GET_C2H_CMD_FEEDBACK_CCX_TOK(__pcmdfbhdr) \ | ||
54 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 15, 1) | ||
55 | #define GET_C2H_CMD_FEEDBACK_CCX_QSEL(__pcmdfbhdr) \ | ||
56 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 16, 4) | ||
57 | #define GET_C2H_CMD_FEEDBACK_CCX_SEQ(__pcmdfbhdr) \ | ||
58 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12) | ||
59 | |||
60 | enum version_8192d { | 29 | enum version_8192d { |
61 | VERSION_TEST_CHIP_88C = 0x0000, | 30 | VERSION_TEST_CHIP_88C = 0x0000, |
62 | VERSION_TEST_CHIP_92C = 0x0020, | 31 | VERSION_TEST_CHIP_92C = 0x0020, |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c index d162884a9e00..2494e1f118f8 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c | |||
@@ -4,6 +4,7 @@ | |||
4 | #include "../wifi.h" | 4 | #include "../wifi.h" |
5 | #include "../pci.h" | 5 | #include "../pci.h" |
6 | #include "../base.h" | 6 | #include "../base.h" |
7 | #include "../stats.h" | ||
7 | #include "reg.h" | 8 | #include "reg.h" |
8 | #include "def.h" | 9 | #include "def.h" |
9 | #include "phy.h" | 10 | #include "phy.h" |
@@ -32,21 +33,6 @@ static u8 _rtl92d_query_rxpwrpercentage(s8 antpower) | |||
32 | return 100 + antpower; | 33 | return 100 + antpower; |
33 | } | 34 | } |
34 | 35 | ||
35 | static u8 _rtl92d_evm_db_to_percentage(s8 value) | ||
36 | { | ||
37 | s8 ret_val = value; | ||
38 | |||
39 | if (ret_val >= 0) | ||
40 | ret_val = 0; | ||
41 | if (ret_val <= -33) | ||
42 | ret_val = -33; | ||
43 | ret_val = 0 - ret_val; | ||
44 | ret_val *= 3; | ||
45 | if (ret_val == 99) | ||
46 | ret_val = 100; | ||
47 | return ret_val; | ||
48 | } | ||
49 | |||
50 | static long _rtl92de_translate_todbm(struct ieee80211_hw *hw, | 36 | static long _rtl92de_translate_todbm(struct ieee80211_hw *hw, |
51 | u8 signal_strength_index) | 37 | u8 signal_strength_index) |
52 | { | 38 | { |
@@ -215,7 +201,7 @@ static void _rtl92de_query_rxphystatus(struct ieee80211_hw *hw, | |||
215 | else | 201 | else |
216 | max_spatial_stream = 1; | 202 | max_spatial_stream = 1; |
217 | for (i = 0; i < max_spatial_stream; i++) { | 203 | for (i = 0; i < max_spatial_stream; i++) { |
218 | evm = _rtl92d_evm_db_to_percentage(p_drvinfo->rxevm[i]); | 204 | evm = rtl_evm_db_to_percentage(p_drvinfo->rxevm[i]); |
219 | if (packet_match_bssid) { | 205 | if (packet_match_bssid) { |
220 | if (i == 0) | 206 | if (i == 0) |
221 | pstats->signalquality = | 207 | pstats->signalquality = |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/def.h b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/def.h index 42958df6b5d4..84505a8500c0 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/def.h +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/def.h | |||
@@ -11,37 +11,6 @@ | |||
11 | #define RX_MPDU_QUEUE 0 | 11 | #define RX_MPDU_QUEUE 0 |
12 | #define RX_CMD_QUEUE 1 | 12 | #define RX_CMD_QUEUE 1 |
13 | 13 | ||
14 | #define C2H_RX_CMD_HDR_LEN 8 | ||
15 | #define GET_C2H_CMD_CMD_LEN(__prxhdr) \ | ||
16 | LE_BITS_TO_4BYTE((__prxhdr), 0, 16) | ||
17 | #define GET_C2H_CMD_ELEMENT_ID(__prxhdr) \ | ||
18 | LE_BITS_TO_4BYTE((__prxhdr), 16, 8) | ||
19 | #define GET_C2H_CMD_CMD_SEQ(__prxhdr) \ | ||
20 | LE_BITS_TO_4BYTE((__prxhdr), 24, 7) | ||
21 | #define GET_C2H_CMD_CONTINUE(__prxhdr) \ | ||
22 | LE_BITS_TO_4BYTE((__prxhdr), 31, 1) | ||
23 | #define GET_C2H_CMD_CONTENT(__prxhdr) \ | ||
24 | ((u8 *)(__prxhdr) + C2H_RX_CMD_HDR_LEN) | ||
25 | |||
26 | #define GET_C2H_CMD_FEEDBACK_ELEMENT_ID(__pcmdfbhdr) \ | ||
27 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 0, 8) | ||
28 | #define GET_C2H_CMD_FEEDBACK_CCX_LEN(__pcmdfbhdr) \ | ||
29 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 8, 8) | ||
30 | #define GET_C2H_CMD_FEEDBACK_CCX_CMD_CNT(__pcmdfbhdr) \ | ||
31 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 16, 16) | ||
32 | #define GET_C2H_CMD_FEEDBACK_CCX_MAC_ID(__pcmdfbhdr) \ | ||
33 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 0, 5) | ||
34 | #define GET_C2H_CMD_FEEDBACK_CCX_VALID(__pcmdfbhdr) \ | ||
35 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 7, 1) | ||
36 | #define GET_C2H_CMD_FEEDBACK_CCX_RETRY_CNT(__pcmdfbhdr) \ | ||
37 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 8, 5) | ||
38 | #define GET_C2H_CMD_FEEDBACK_CCX_TOK(__pcmdfbhdr) \ | ||
39 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 15, 1) | ||
40 | #define GET_C2H_CMD_FEEDBACK_CCX_QSEL(__pcmdfbhdr) \ | ||
41 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 16, 4) | ||
42 | #define GET_C2H_CMD_FEEDBACK_CCX_SEQ(__pcmdfbhdr) \ | ||
43 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12) | ||
44 | |||
45 | #define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) | 14 | #define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) |
46 | #define CHIP_BONDING_92C_1T2R 0x1 | 15 | #define CHIP_BONDING_92C_1T2R 0x1 |
47 | 16 | ||
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/trx.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/trx.c index 90dc91b0d35b..a04ce15d5538 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/trx.c +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/trx.c | |||
@@ -260,28 +260,29 @@ static void translate_rx_signal_stuff(struct ieee80211_hw *hw, | |||
260 | bool rtl8723e_rx_query_desc(struct ieee80211_hw *hw, | 260 | bool rtl8723e_rx_query_desc(struct ieee80211_hw *hw, |
261 | struct rtl_stats *status, | 261 | struct rtl_stats *status, |
262 | struct ieee80211_rx_status *rx_status, | 262 | struct ieee80211_rx_status *rx_status, |
263 | u8 *pdesc, struct sk_buff *skb) | 263 | u8 *pdesc8, struct sk_buff *skb) |
264 | { | 264 | { |
265 | struct rx_fwinfo_8723e *p_drvinfo; | 265 | struct rx_fwinfo_8723e *p_drvinfo; |
266 | struct ieee80211_hdr *hdr; | 266 | struct ieee80211_hdr *hdr; |
267 | u32 phystatus = GET_RX_DESC_PHYST(pdesc); | 267 | __le32 *pdesc = (__le32 *)pdesc8; |
268 | u32 phystatus = get_rx_desc_physt(pdesc); | ||
268 | 269 | ||
269 | status->length = (u16)GET_RX_DESC_PKT_LEN(pdesc); | 270 | status->length = (u16)get_rx_desc_pkt_len(pdesc); |
270 | status->rx_drvinfo_size = (u8)GET_RX_DESC_DRV_INFO_SIZE(pdesc) * | 271 | status->rx_drvinfo_size = (u8)get_rx_desc_drv_info_size(pdesc) * |
271 | RX_DRV_INFO_SIZE_UNIT; | 272 | RX_DRV_INFO_SIZE_UNIT; |
272 | status->rx_bufshift = (u8)(GET_RX_DESC_SHIFT(pdesc) & 0x03); | 273 | status->rx_bufshift = (u8)(get_rx_desc_shift(pdesc) & 0x03); |
273 | status->icv = (u16)GET_RX_DESC_ICV(pdesc); | 274 | status->icv = (u16)get_rx_desc_icv(pdesc); |
274 | status->crc = (u16)GET_RX_DESC_CRC32(pdesc); | 275 | status->crc = (u16)get_rx_desc_crc32(pdesc); |
275 | status->hwerror = (status->crc | status->icv); | 276 | status->hwerror = (status->crc | status->icv); |
276 | status->decrypted = !GET_RX_DESC_SWDEC(pdesc); | 277 | status->decrypted = !get_rx_desc_swdec(pdesc); |
277 | status->rate = (u8)GET_RX_DESC_RXMCS(pdesc); | 278 | status->rate = (u8)get_rx_desc_rxmcs(pdesc); |
278 | status->shortpreamble = (u16)GET_RX_DESC_SPLCP(pdesc); | 279 | status->shortpreamble = (u16)get_rx_desc_splcp(pdesc); |
279 | status->isampdu = (bool)(GET_RX_DESC_PAGGR(pdesc) == 1); | 280 | status->isampdu = (bool)(get_rx_desc_paggr(pdesc) == 1); |
280 | status->isfirst_ampdu = (bool)((GET_RX_DESC_PAGGR(pdesc) == 1) && | 281 | status->isfirst_ampdu = (bool)((get_rx_desc_paggr(pdesc) == 1) && |
281 | (GET_RX_DESC_FAGGR(pdesc) == 1)); | 282 | (get_rx_desc_faggr(pdesc) == 1)); |
282 | status->timestamp_low = GET_RX_DESC_TSFL(pdesc); | 283 | status->timestamp_low = get_rx_desc_tsfl(pdesc); |
283 | status->rx_is40mhzpacket = (bool)GET_RX_DESC_BW(pdesc); | 284 | status->rx_is40mhzpacket = (bool)get_rx_desc_bw(pdesc); |
284 | status->is_ht = (bool)GET_RX_DESC_RXHT(pdesc); | 285 | status->is_ht = (bool)get_rx_desc_rxht(pdesc); |
285 | 286 | ||
286 | status->is_cck = RX_HAL_IS_CCK_RATE(status->rate); | 287 | status->is_cck = RX_HAL_IS_CCK_RATE(status->rate); |
287 | 288 | ||
@@ -331,7 +332,7 @@ bool rtl8723e_rx_query_desc(struct ieee80211_hw *hw, | |||
331 | p_drvinfo = (struct rx_fwinfo_8723e *)(skb->data + | 332 | p_drvinfo = (struct rx_fwinfo_8723e *)(skb->data + |
332 | status->rx_bufshift); | 333 | status->rx_bufshift); |
333 | 334 | ||
334 | translate_rx_signal_stuff(hw, skb, status, pdesc, p_drvinfo); | 335 | translate_rx_signal_stuff(hw, skb, status, pdesc8, p_drvinfo); |
335 | } | 336 | } |
336 | rx_status->signal = status->recvsignalpower + 10; | 337 | rx_status->signal = status->recvsignalpower + 10; |
337 | return true; | 338 | return true; |
@@ -350,7 +351,8 @@ void rtl8723e_tx_fill_desc(struct ieee80211_hw *hw, | |||
350 | struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); | 351 | struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); |
351 | bool b_defaultadapter = true; | 352 | bool b_defaultadapter = true; |
352 | /* bool b_trigger_ac = false; */ | 353 | /* bool b_trigger_ac = false; */ |
353 | u8 *pdesc = (u8 *)pdesc_tx; | 354 | u8 *pdesc8 = (u8 *)pdesc_tx; |
355 | __le32 *pdesc = (__le32 *)pdesc8; | ||
354 | u16 seq_number; | 356 | u16 seq_number; |
355 | __le16 fc = hdr->frame_control; | 357 | __le16 fc = hdr->frame_control; |
356 | u8 fw_qsel = _rtl8723e_map_hwqueue_to_fwqueue(skb, hw_queue); | 358 | u8 fw_qsel = _rtl8723e_map_hwqueue_to_fwqueue(skb, hw_queue); |
@@ -383,7 +385,7 @@ void rtl8723e_tx_fill_desc(struct ieee80211_hw *hw, | |||
383 | 385 | ||
384 | rtl_get_tcb_desc(hw, info, sta, skb, ptcb_desc); | 386 | rtl_get_tcb_desc(hw, info, sta, skb, ptcb_desc); |
385 | 387 | ||
386 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, sizeof(struct tx_desc_8723e)); | 388 | clear_pci_tx_desc_content(pdesc, sizeof(struct tx_desc_8723e)); |
387 | 389 | ||
388 | if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) { | 390 | if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) { |
389 | firstseg = true; | 391 | firstseg = true; |
@@ -391,58 +393,58 @@ void rtl8723e_tx_fill_desc(struct ieee80211_hw *hw, | |||
391 | } | 393 | } |
392 | 394 | ||
393 | if (firstseg) { | 395 | if (firstseg) { |
394 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); | 396 | set_tx_desc_offset(pdesc, USB_HWDESC_HEADER_LEN); |
395 | 397 | ||
396 | SET_TX_DESC_TX_RATE(pdesc, ptcb_desc->hw_rate); | 398 | set_tx_desc_tx_rate(pdesc, ptcb_desc->hw_rate); |
397 | 399 | ||
398 | if (ptcb_desc->use_shortgi || ptcb_desc->use_shortpreamble) | 400 | if (ptcb_desc->use_shortgi || ptcb_desc->use_shortpreamble) |
399 | SET_TX_DESC_DATA_SHORTGI(pdesc, 1); | 401 | set_tx_desc_data_shortgi(pdesc, 1); |
400 | 402 | ||
401 | if (info->flags & IEEE80211_TX_CTL_AMPDU) { | 403 | if (info->flags & IEEE80211_TX_CTL_AMPDU) { |
402 | SET_TX_DESC_AGG_BREAK(pdesc, 1); | 404 | set_tx_desc_agg_break(pdesc, 1); |
403 | SET_TX_DESC_MAX_AGG_NUM(pdesc, 0x14); | 405 | set_tx_desc_max_agg_num(pdesc, 0x14); |
404 | } | 406 | } |
405 | SET_TX_DESC_SEQ(pdesc, seq_number); | 407 | set_tx_desc_seq(pdesc, seq_number); |
406 | 408 | ||
407 | SET_TX_DESC_RTS_ENABLE(pdesc, | 409 | set_tx_desc_rts_enable(pdesc, |
408 | ((ptcb_desc->rts_enable && | 410 | ((ptcb_desc->rts_enable && |
409 | !ptcb_desc->cts_enable) ? 1 : 0)); | 411 | !ptcb_desc->cts_enable) ? 1 : 0)); |
410 | SET_TX_DESC_HW_RTS_ENABLE(pdesc, | 412 | set_tx_desc_hw_rts_enable(pdesc, |
411 | ((ptcb_desc->rts_enable || | 413 | ((ptcb_desc->rts_enable || |
412 | ptcb_desc->cts_enable) ? 1 : 0)); | 414 | ptcb_desc->cts_enable) ? 1 : 0)); |
413 | SET_TX_DESC_CTS2SELF(pdesc, | 415 | set_tx_desc_cts2self(pdesc, |
414 | ((ptcb_desc->cts_enable) ? 1 : 0)); | 416 | ((ptcb_desc->cts_enable) ? 1 : 0)); |
415 | SET_TX_DESC_RTS_STBC(pdesc, | 417 | set_tx_desc_rts_stbc(pdesc, |
416 | ((ptcb_desc->rts_stbc) ? 1 : 0)); | 418 | ((ptcb_desc->rts_stbc) ? 1 : 0)); |
417 | 419 | ||
418 | SET_TX_DESC_RTS_RATE(pdesc, ptcb_desc->rts_rate); | 420 | set_tx_desc_rts_rate(pdesc, ptcb_desc->rts_rate); |
419 | SET_TX_DESC_RTS_BW(pdesc, 0); | 421 | set_tx_desc_rts_bw(pdesc, 0); |
420 | SET_TX_DESC_RTS_SC(pdesc, ptcb_desc->rts_sc); | 422 | set_tx_desc_rts_sc(pdesc, ptcb_desc->rts_sc); |
421 | SET_TX_DESC_RTS_SHORT(pdesc, | 423 | set_tx_desc_rts_short(pdesc, |
422 | ((ptcb_desc->rts_rate <= DESC92C_RATE54M) ? | 424 | ((ptcb_desc->rts_rate <= DESC92C_RATE54M) ? |
423 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) | 425 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) |
424 | : (ptcb_desc->rts_use_shortgi ? 1 : 0))); | 426 | : (ptcb_desc->rts_use_shortgi ? 1 : 0))); |
425 | 427 | ||
426 | if (bw_40) { | 428 | if (bw_40) { |
427 | if (ptcb_desc->packet_bw == HT_CHANNEL_WIDTH_20_40) { | 429 | if (ptcb_desc->packet_bw == HT_CHANNEL_WIDTH_20_40) { |
428 | SET_TX_DESC_DATA_BW(pdesc, 1); | 430 | set_tx_desc_data_bw(pdesc, 1); |
429 | SET_TX_DESC_TX_SUB_CARRIER(pdesc, 3); | 431 | set_tx_desc_tx_sub_carrier(pdesc, 3); |
430 | } else { | 432 | } else { |
431 | SET_TX_DESC_DATA_BW(pdesc, 0); | 433 | set_tx_desc_data_bw(pdesc, 0); |
432 | SET_TX_DESC_TX_SUB_CARRIER(pdesc, | 434 | set_tx_desc_tx_sub_carrier(pdesc, |
433 | mac->cur_40_prime_sc); | 435 | mac->cur_40_prime_sc); |
434 | } | 436 | } |
435 | } else { | 437 | } else { |
436 | SET_TX_DESC_DATA_BW(pdesc, 0); | 438 | set_tx_desc_data_bw(pdesc, 0); |
437 | SET_TX_DESC_TX_SUB_CARRIER(pdesc, 0); | 439 | set_tx_desc_tx_sub_carrier(pdesc, 0); |
438 | } | 440 | } |
439 | 441 | ||
440 | SET_TX_DESC_LINIP(pdesc, 0); | 442 | set_tx_desc_linip(pdesc, 0); |
441 | SET_TX_DESC_PKT_SIZE(pdesc, (u16) skb->len); | 443 | set_tx_desc_pkt_size(pdesc, (u16)skb->len); |
442 | 444 | ||
443 | if (sta) { | 445 | if (sta) { |
444 | u8 ampdu_density = sta->ht_cap.ampdu_density; | 446 | u8 ampdu_density = sta->ht_cap.ampdu_density; |
445 | SET_TX_DESC_AMPDU_DENSITY(pdesc, ampdu_density); | 447 | set_tx_desc_ampdu_density(pdesc, ampdu_density); |
446 | } | 448 | } |
447 | 449 | ||
448 | if (info->control.hw_key) { | 450 | if (info->control.hw_key) { |
@@ -453,78 +455,79 @@ void rtl8723e_tx_fill_desc(struct ieee80211_hw *hw, | |||
453 | case WLAN_CIPHER_SUITE_WEP40: | 455 | case WLAN_CIPHER_SUITE_WEP40: |
454 | case WLAN_CIPHER_SUITE_WEP104: | 456 | case WLAN_CIPHER_SUITE_WEP104: |
455 | case WLAN_CIPHER_SUITE_TKIP: | 457 | case WLAN_CIPHER_SUITE_TKIP: |
456 | SET_TX_DESC_SEC_TYPE(pdesc, 0x1); | 458 | set_tx_desc_sec_type(pdesc, 0x1); |
457 | break; | 459 | break; |
458 | case WLAN_CIPHER_SUITE_CCMP: | 460 | case WLAN_CIPHER_SUITE_CCMP: |
459 | SET_TX_DESC_SEC_TYPE(pdesc, 0x3); | 461 | set_tx_desc_sec_type(pdesc, 0x3); |
460 | break; | 462 | break; |
461 | default: | 463 | default: |
462 | SET_TX_DESC_SEC_TYPE(pdesc, 0x0); | 464 | set_tx_desc_sec_type(pdesc, 0x0); |
463 | break; | 465 | break; |
464 | 466 | ||
465 | } | 467 | } |
466 | } | 468 | } |
467 | 469 | ||
468 | SET_TX_DESC_PKT_ID(pdesc, 0); | 470 | set_tx_desc_pkt_id(pdesc, 0); |
469 | SET_TX_DESC_QUEUE_SEL(pdesc, fw_qsel); | 471 | set_tx_desc_queue_sel(pdesc, fw_qsel); |
470 | 472 | ||
471 | SET_TX_DESC_DATA_RATE_FB_LIMIT(pdesc, 0x1F); | 473 | set_tx_desc_data_rate_fb_limit(pdesc, 0x1F); |
472 | SET_TX_DESC_RTS_RATE_FB_LIMIT(pdesc, 0xF); | 474 | set_tx_desc_rts_rate_fb_limit(pdesc, 0xF); |
473 | SET_TX_DESC_DISABLE_FB(pdesc, 0); | 475 | set_tx_desc_disable_fb(pdesc, 0); |
474 | SET_TX_DESC_USE_RATE(pdesc, ptcb_desc->use_driver_rate ? 1 : 0); | 476 | set_tx_desc_use_rate(pdesc, ptcb_desc->use_driver_rate ? 1 : 0); |
475 | 477 | ||
476 | if (ieee80211_is_data_qos(fc)) { | 478 | if (ieee80211_is_data_qos(fc)) { |
477 | if (mac->rdg_en) { | 479 | if (mac->rdg_en) { |
478 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | 480 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, |
479 | "Enable RDG function.\n"); | 481 | "Enable RDG function.\n"); |
480 | SET_TX_DESC_RDG_ENABLE(pdesc, 1); | 482 | set_tx_desc_rdg_enable(pdesc, 1); |
481 | SET_TX_DESC_HTC(pdesc, 1); | 483 | set_tx_desc_htc(pdesc, 1); |
482 | } | 484 | } |
483 | } | 485 | } |
484 | } | 486 | } |
485 | 487 | ||
486 | SET_TX_DESC_FIRST_SEG(pdesc, (firstseg ? 1 : 0)); | 488 | set_tx_desc_first_seg(pdesc, (firstseg ? 1 : 0)); |
487 | SET_TX_DESC_LAST_SEG(pdesc, (lastseg ? 1 : 0)); | 489 | set_tx_desc_last_seg(pdesc, (lastseg ? 1 : 0)); |
488 | 490 | ||
489 | SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16) skb->len); | 491 | set_tx_desc_tx_buffer_size(pdesc, (u16)skb->len); |
490 | 492 | ||
491 | SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, mapping); | 493 | set_tx_desc_tx_buffer_address(pdesc, mapping); |
492 | 494 | ||
493 | if (rtlpriv->dm.useramask) { | 495 | if (rtlpriv->dm.useramask) { |
494 | SET_TX_DESC_RATE_ID(pdesc, ptcb_desc->ratr_index); | 496 | set_tx_desc_rate_id(pdesc, ptcb_desc->ratr_index); |
495 | SET_TX_DESC_MACID(pdesc, ptcb_desc->mac_id); | 497 | set_tx_desc_macid(pdesc, ptcb_desc->mac_id); |
496 | } else { | 498 | } else { |
497 | SET_TX_DESC_RATE_ID(pdesc, 0xC + ptcb_desc->ratr_index); | 499 | set_tx_desc_rate_id(pdesc, 0xC + ptcb_desc->ratr_index); |
498 | SET_TX_DESC_MACID(pdesc, ptcb_desc->ratr_index); | 500 | set_tx_desc_macid(pdesc, ptcb_desc->ratr_index); |
499 | } | 501 | } |
500 | 502 | ||
501 | if ((!ieee80211_is_data_qos(fc)) && ppsc->fwctrl_lps) { | 503 | if ((!ieee80211_is_data_qos(fc)) && ppsc->fwctrl_lps) { |
502 | SET_TX_DESC_HWSEQ_EN_8723(pdesc, 1); | 504 | set_tx_desc_hwseq_en_8723(pdesc, 1); |
503 | /* SET_TX_DESC_HWSEQ_EN(pdesc, 1); */ | 505 | /* set_tx_desc_hwseq_en(pdesc, 1); */ |
504 | /* SET_TX_DESC_PKT_ID(pdesc, 8); */ | 506 | /* set_tx_desc_pkt_id(pdesc, 8); */ |
505 | 507 | ||
506 | if (!b_defaultadapter) | 508 | if (!b_defaultadapter) |
507 | SET_TX_DESC_HWSEQ_SEL_8723(pdesc, 1); | 509 | set_tx_desc_hwseq_sel_8723(pdesc, 1); |
508 | /* SET_TX_DESC_QOS(pdesc, 1); */ | 510 | /* set_tx_desc_qos(pdesc, 1); */ |
509 | } | 511 | } |
510 | 512 | ||
511 | SET_TX_DESC_MORE_FRAG(pdesc, (lastseg ? 0 : 1)); | 513 | set_tx_desc_more_frag(pdesc, (lastseg ? 0 : 1)); |
512 | 514 | ||
513 | if (is_multicast_ether_addr(ieee80211_get_DA(hdr)) || | 515 | if (is_multicast_ether_addr(ieee80211_get_DA(hdr)) || |
514 | is_broadcast_ether_addr(ieee80211_get_DA(hdr))) { | 516 | is_broadcast_ether_addr(ieee80211_get_DA(hdr))) { |
515 | SET_TX_DESC_BMC(pdesc, 1); | 517 | set_tx_desc_bmc(pdesc, 1); |
516 | } | 518 | } |
517 | 519 | ||
518 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, "\n"); | 520 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, "\n"); |
519 | } | 521 | } |
520 | 522 | ||
521 | void rtl8723e_tx_fill_cmddesc(struct ieee80211_hw *hw, | 523 | void rtl8723e_tx_fill_cmddesc(struct ieee80211_hw *hw, |
522 | u8 *pdesc, bool firstseg, | 524 | u8 *pdesc8, bool firstseg, |
523 | bool lastseg, struct sk_buff *skb) | 525 | bool lastseg, struct sk_buff *skb) |
524 | { | 526 | { |
525 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 527 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
526 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | 528 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
527 | u8 fw_queue = QSLT_BEACON; | 529 | u8 fw_queue = QSLT_BEACON; |
530 | __le32 *pdesc = (__le32 *)pdesc8; | ||
528 | 531 | ||
529 | dma_addr_t mapping = pci_map_single(rtlpci->pdev, | 532 | dma_addr_t mapping = pci_map_single(rtlpci->pdev, |
530 | skb->data, skb->len, | 533 | skb->data, skb->len, |
@@ -538,44 +541,44 @@ void rtl8723e_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
538 | "DMA mapping error\n"); | 541 | "DMA mapping error\n"); |
539 | return; | 542 | return; |
540 | } | 543 | } |
541 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); | 544 | clear_pci_tx_desc_content(pdesc, TX_DESC_SIZE); |
542 | 545 | ||
543 | if (firstseg) | 546 | if (firstseg) |
544 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); | 547 | set_tx_desc_offset(pdesc, USB_HWDESC_HEADER_LEN); |
545 | 548 | ||
546 | SET_TX_DESC_TX_RATE(pdesc, DESC92C_RATE1M); | 549 | set_tx_desc_tx_rate(pdesc, DESC92C_RATE1M); |
547 | 550 | ||
548 | SET_TX_DESC_SEQ(pdesc, 0); | 551 | set_tx_desc_seq(pdesc, 0); |
549 | 552 | ||
550 | SET_TX_DESC_LINIP(pdesc, 0); | 553 | set_tx_desc_linip(pdesc, 0); |
551 | 554 | ||
552 | SET_TX_DESC_QUEUE_SEL(pdesc, fw_queue); | 555 | set_tx_desc_queue_sel(pdesc, fw_queue); |
553 | 556 | ||
554 | SET_TX_DESC_FIRST_SEG(pdesc, 1); | 557 | set_tx_desc_first_seg(pdesc, 1); |
555 | SET_TX_DESC_LAST_SEG(pdesc, 1); | 558 | set_tx_desc_last_seg(pdesc, 1); |
556 | 559 | ||
557 | SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16) (skb->len)); | 560 | set_tx_desc_tx_buffer_size(pdesc, (u16)(skb->len)); |
558 | 561 | ||
559 | SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, mapping); | 562 | set_tx_desc_tx_buffer_address(pdesc, mapping); |
560 | 563 | ||
561 | SET_TX_DESC_RATE_ID(pdesc, 7); | 564 | set_tx_desc_rate_id(pdesc, 7); |
562 | SET_TX_DESC_MACID(pdesc, 0); | 565 | set_tx_desc_macid(pdesc, 0); |
563 | 566 | ||
564 | SET_TX_DESC_OWN(pdesc, 1); | 567 | set_tx_desc_own(pdesc, 1); |
565 | 568 | ||
566 | SET_TX_DESC_PKT_SIZE((u8 *)pdesc, (u16)(skb->len)); | 569 | set_tx_desc_pkt_size(pdesc, (u16)(skb->len)); |
567 | 570 | ||
568 | SET_TX_DESC_FIRST_SEG(pdesc, 1); | 571 | set_tx_desc_first_seg(pdesc, 1); |
569 | SET_TX_DESC_LAST_SEG(pdesc, 1); | 572 | set_tx_desc_last_seg(pdesc, 1); |
570 | 573 | ||
571 | SET_TX_DESC_OFFSET(pdesc, 0x20); | 574 | set_tx_desc_offset(pdesc, 0x20); |
572 | 575 | ||
573 | SET_TX_DESC_USE_RATE(pdesc, 1); | 576 | set_tx_desc_use_rate(pdesc, 1); |
574 | 577 | ||
575 | if (!ieee80211_is_data_qos(fc)) { | 578 | if (!ieee80211_is_data_qos(fc)) { |
576 | SET_TX_DESC_HWSEQ_EN_8723(pdesc, 1); | 579 | set_tx_desc_hwseq_en_8723(pdesc, 1); |
577 | /* SET_TX_DESC_HWSEQ_EN(pdesc, 1); */ | 580 | /* set_tx_desc_hwseq_en(pdesc, 1); */ |
578 | /* SET_TX_DESC_PKT_ID(pdesc, 8); */ | 581 | /* set_tx_desc_pkt_id(pdesc, 8); */ |
579 | } | 582 | } |
580 | 583 | ||
581 | RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_LOUD, | 584 | RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_LOUD, |
@@ -583,16 +586,18 @@ void rtl8723e_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
583 | pdesc, TX_DESC_SIZE); | 586 | pdesc, TX_DESC_SIZE); |
584 | } | 587 | } |
585 | 588 | ||
586 | void rtl8723e_set_desc(struct ieee80211_hw *hw, u8 *pdesc, | 589 | void rtl8723e_set_desc(struct ieee80211_hw *hw, u8 *pdesc8, |
587 | bool istx, u8 desc_name, u8 *val) | 590 | bool istx, u8 desc_name, u8 *val) |
588 | { | 591 | { |
592 | __le32 *pdesc = (__le32 *)pdesc8; | ||
593 | |||
589 | if (istx == true) { | 594 | if (istx == true) { |
590 | switch (desc_name) { | 595 | switch (desc_name) { |
591 | case HW_DESC_OWN: | 596 | case HW_DESC_OWN: |
592 | SET_TX_DESC_OWN(pdesc, 1); | 597 | set_tx_desc_own(pdesc, 1); |
593 | break; | 598 | break; |
594 | case HW_DESC_TX_NEXTDESC_ADDR: | 599 | case HW_DESC_TX_NEXTDESC_ADDR: |
595 | SET_TX_DESC_NEXT_DESC_ADDRESS(pdesc, *(u32 *) val); | 600 | set_tx_desc_next_desc_address(pdesc, *(u32 *)val); |
596 | break; | 601 | break; |
597 | default: | 602 | default: |
598 | WARN_ONCE(true, "rtl8723ae: ERR txdesc :%d not processed\n", | 603 | WARN_ONCE(true, "rtl8723ae: ERR txdesc :%d not processed\n", |
@@ -602,16 +607,16 @@ void rtl8723e_set_desc(struct ieee80211_hw *hw, u8 *pdesc, | |||
602 | } else { | 607 | } else { |
603 | switch (desc_name) { | 608 | switch (desc_name) { |
604 | case HW_DESC_RXOWN: | 609 | case HW_DESC_RXOWN: |
605 | SET_RX_DESC_OWN(pdesc, 1); | 610 | set_rx_desc_own(pdesc, 1); |
606 | break; | 611 | break; |
607 | case HW_DESC_RXBUFF_ADDR: | 612 | case HW_DESC_RXBUFF_ADDR: |
608 | SET_RX_DESC_BUFF_ADDR(pdesc, *(u32 *) val); | 613 | set_rx_desc_buff_addr(pdesc, *(u32 *)val); |
609 | break; | 614 | break; |
610 | case HW_DESC_RXPKT_LEN: | 615 | case HW_DESC_RXPKT_LEN: |
611 | SET_RX_DESC_PKT_LEN(pdesc, *(u32 *) val); | 616 | set_rx_desc_pkt_len(pdesc, *(u32 *)val); |
612 | break; | 617 | break; |
613 | case HW_DESC_RXERO: | 618 | case HW_DESC_RXERO: |
614 | SET_RX_DESC_EOR(pdesc, 1); | 619 | set_rx_desc_eor(pdesc, 1); |
615 | break; | 620 | break; |
616 | default: | 621 | default: |
617 | WARN_ONCE(true, "rtl8723ae: ERR rxdesc :%d not processed\n", | 622 | WARN_ONCE(true, "rtl8723ae: ERR rxdesc :%d not processed\n", |
@@ -622,17 +627,18 @@ void rtl8723e_set_desc(struct ieee80211_hw *hw, u8 *pdesc, | |||
622 | } | 627 | } |
623 | 628 | ||
624 | u64 rtl8723e_get_desc(struct ieee80211_hw *hw, | 629 | u64 rtl8723e_get_desc(struct ieee80211_hw *hw, |
625 | u8 *pdesc, bool istx, u8 desc_name) | 630 | u8 *pdesc8, bool istx, u8 desc_name) |
626 | { | 631 | { |
627 | u32 ret = 0; | 632 | u32 ret = 0; |
633 | __le32 *pdesc = (__le32 *)pdesc8; | ||
628 | 634 | ||
629 | if (istx == true) { | 635 | if (istx == true) { |
630 | switch (desc_name) { | 636 | switch (desc_name) { |
631 | case HW_DESC_OWN: | 637 | case HW_DESC_OWN: |
632 | ret = GET_TX_DESC_OWN(pdesc); | 638 | ret = get_tx_desc_own(pdesc); |
633 | break; | 639 | break; |
634 | case HW_DESC_TXBUFF_ADDR: | 640 | case HW_DESC_TXBUFF_ADDR: |
635 | ret = GET_TX_DESC_TX_BUFFER_ADDRESS(pdesc); | 641 | ret = get_tx_desc_tx_buffer_address(pdesc); |
636 | break; | 642 | break; |
637 | default: | 643 | default: |
638 | WARN_ONCE(true, "rtl8723ae: ERR txdesc :%d not processed\n", | 644 | WARN_ONCE(true, "rtl8723ae: ERR txdesc :%d not processed\n", |
@@ -642,13 +648,13 @@ u64 rtl8723e_get_desc(struct ieee80211_hw *hw, | |||
642 | } else { | 648 | } else { |
643 | switch (desc_name) { | 649 | switch (desc_name) { |
644 | case HW_DESC_OWN: | 650 | case HW_DESC_OWN: |
645 | ret = GET_RX_DESC_OWN(pdesc); | 651 | ret = get_rx_desc_own(pdesc); |
646 | break; | 652 | break; |
647 | case HW_DESC_RXPKT_LEN: | 653 | case HW_DESC_RXPKT_LEN: |
648 | ret = GET_RX_DESC_PKT_LEN(pdesc); | 654 | ret = get_rx_desc_pkt_len(pdesc); |
649 | break; | 655 | break; |
650 | case HW_DESC_RXBUFF_ADDR: | 656 | case HW_DESC_RXBUFF_ADDR: |
651 | ret = GET_RX_DESC_BUFF_ADDR(pdesc); | 657 | ret = get_rx_desc_buff_addr(pdesc); |
652 | break; | 658 | break; |
653 | default: | 659 | default: |
654 | WARN_ONCE(true, "rtl8723ae: ERR rxdesc :%d not processed\n", | 660 | WARN_ONCE(true, "rtl8723ae: ERR rxdesc :%d not processed\n", |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/trx.h b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/trx.h index 4a19ea76b290..2d25f62a4d52 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/trx.h +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/trx.h | |||
@@ -14,486 +14,324 @@ | |||
14 | #define USB_HWDESC_HEADER_LEN 32 | 14 | #define USB_HWDESC_HEADER_LEN 32 |
15 | #define CRCLENGTH 4 | 15 | #define CRCLENGTH 4 |
16 | 16 | ||
17 | #define SET_TX_DESC_PKT_SIZE(__pdesc, __val) \ | 17 | static inline void set_tx_desc_pkt_size(__le32 *__pdesc, u32 __val) |
18 | SET_BITS_TO_LE_4BYTE(__pdesc, 0, 16, __val) | 18 | { |
19 | #define SET_TX_DESC_OFFSET(__pdesc, __val) \ | 19 | le32p_replace_bits(__pdesc, __val, GENMASK(15, 0)); |
20 | SET_BITS_TO_LE_4BYTE(__pdesc, 16, 8, __val) | 20 | } |
21 | #define SET_TX_DESC_BMC(__pdesc, __val) \ | 21 | |
22 | SET_BITS_TO_LE_4BYTE(__pdesc, 24, 1, __val) | 22 | static inline void set_tx_desc_offset(__le32 *__pdesc, u32 __val) |
23 | #define SET_TX_DESC_HTC(__pdesc, __val) \ | 23 | { |
24 | SET_BITS_TO_LE_4BYTE(__pdesc, 25, 1, __val) | 24 | le32p_replace_bits(__pdesc, __val, GENMASK(23, 16)); |
25 | #define SET_TX_DESC_LAST_SEG(__pdesc, __val) \ | 25 | } |
26 | SET_BITS_TO_LE_4BYTE(__pdesc, 26, 1, __val) | 26 | |
27 | #define SET_TX_DESC_FIRST_SEG(__pdesc, __val) \ | 27 | static inline void set_tx_desc_bmc(__le32 *__pdesc, u32 __val) |
28 | SET_BITS_TO_LE_4BYTE(__pdesc, 27, 1, __val) | 28 | { |
29 | #define SET_TX_DESC_LINIP(__pdesc, __val) \ | 29 | le32p_replace_bits(__pdesc, __val, BIT(24)); |
30 | SET_BITS_TO_LE_4BYTE(__pdesc, 28, 1, __val) | 30 | } |
31 | #define SET_TX_DESC_NO_ACM(__pdesc, __val) \ | 31 | |
32 | SET_BITS_TO_LE_4BYTE(__pdesc, 29, 1, __val) | 32 | static inline void set_tx_desc_htc(__le32 *__pdesc, u32 __val) |
33 | #define SET_TX_DESC_GF(__pdesc, __val) \ | 33 | { |
34 | SET_BITS_TO_LE_4BYTE(__pdesc, 30, 1, __val) | 34 | le32p_replace_bits(__pdesc, __val, BIT(25)); |
35 | #define SET_TX_DESC_OWN(__pdesc, __val) \ | 35 | } |
36 | SET_BITS_TO_LE_4BYTE(__pdesc, 31, 1, __val) | 36 | |
37 | 37 | static inline void set_tx_desc_last_seg(__le32 *__pdesc, u32 __val) | |
38 | #define GET_TX_DESC_PKT_SIZE(__pdesc) \ | 38 | { |
39 | LE_BITS_TO_4BYTE(__pdesc, 0, 16) | 39 | le32p_replace_bits(__pdesc, __val, BIT(26)); |
40 | #define GET_TX_DESC_OFFSET(__pdesc) \ | 40 | } |
41 | LE_BITS_TO_4BYTE(__pdesc, 16, 8) | 41 | |
42 | #define GET_TX_DESC_BMC(__pdesc) \ | 42 | static inline void set_tx_desc_first_seg(__le32 *__pdesc, u32 __val) |
43 | LE_BITS_TO_4BYTE(__pdesc, 24, 1) | 43 | { |
44 | #define GET_TX_DESC_HTC(__pdesc) \ | 44 | le32p_replace_bits(__pdesc, __val, BIT(27)); |
45 | LE_BITS_TO_4BYTE(__pdesc, 25, 1) | 45 | } |
46 | #define GET_TX_DESC_LAST_SEG(__pdesc) \ | 46 | |
47 | LE_BITS_TO_4BYTE(__pdesc, 26, 1) | 47 | static inline void set_tx_desc_linip(__le32 *__pdesc, u32 __val) |
48 | #define GET_TX_DESC_FIRST_SEG(__pdesc) \ | 48 | { |
49 | LE_BITS_TO_4BYTE(__pdesc, 27, 1) | 49 | le32p_replace_bits(__pdesc, __val, BIT(28)); |
50 | #define GET_TX_DESC_LINIP(__pdesc) \ | 50 | } |
51 | LE_BITS_TO_4BYTE(__pdesc, 28, 1) | 51 | |
52 | #define GET_TX_DESC_NO_ACM(__pdesc) \ | 52 | static inline void set_tx_desc_own(__le32 *__pdesc, u32 __val) |
53 | LE_BITS_TO_4BYTE(__pdesc, 29, 1) | 53 | { |
54 | #define GET_TX_DESC_GF(__pdesc) \ | 54 | le32p_replace_bits(__pdesc, __val, BIT(31)); |
55 | LE_BITS_TO_4BYTE(__pdesc, 30, 1) | 55 | } |
56 | #define GET_TX_DESC_OWN(__pdesc) \ | 56 | |
57 | LE_BITS_TO_4BYTE(__pdesc, 31, 1) | 57 | static inline u32 get_tx_desc_own(__le32 *__pdesc) |
58 | 58 | { | |
59 | #define SET_TX_DESC_MACID(__pdesc, __val) \ | 59 | return le32_get_bits(*__pdesc, BIT(31)); |
60 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 0, 5, __val) | 60 | } |
61 | #define SET_TX_DESC_AGG_BREAK(__pdesc, __val) \ | 61 | |
62 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 5, 1, __val) | 62 | static inline void set_tx_desc_macid(__le32 *__pdesc, u32 __val) |
63 | #define SET_TX_DESC_BK(__pdesc, __val) \ | 63 | { |
64 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 6, 1, __val) | 64 | le32p_replace_bits((__pdesc + 1), __val, GENMASK(4, 0)); |
65 | #define SET_TX_DESC_RDG_ENABLE(__pdesc, __val) \ | 65 | } |
66 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 7, 1, __val) | 66 | |
67 | #define SET_TX_DESC_QUEUE_SEL(__pdesc, __val) \ | 67 | static inline void set_tx_desc_agg_break(__le32 *__pdesc, u32 __val) |
68 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 8, 5, __val) | 68 | { |
69 | #define SET_TX_DESC_RDG_NAV_EXT(__pdesc, __val) \ | 69 | le32p_replace_bits((__pdesc + 1), __val, BIT(5)); |
70 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 13, 1, __val) | 70 | } |
71 | #define SET_TX_DESC_LSIG_TXOP_EN(__pdesc, __val) \ | 71 | |
72 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 14, 1, __val) | 72 | static inline void set_tx_desc_rdg_enable(__le32 *__pdesc, u32 __val) |
73 | #define SET_TX_DESC_PIFS(__pdesc, __val) \ | 73 | { |
74 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 15, 1, __val) | 74 | le32p_replace_bits((__pdesc + 1), __val, BIT(7)); |
75 | #define SET_TX_DESC_RATE_ID(__pdesc, __val) \ | 75 | } |
76 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 16, 4, __val) | 76 | |
77 | #define SET_TX_DESC_NAV_USE_HDR(__pdesc, __val) \ | 77 | static inline void set_tx_desc_queue_sel(__le32 *__pdesc, u32 __val) |
78 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 20, 1, __val) | 78 | { |
79 | #define SET_TX_DESC_EN_DESC_ID(__pdesc, __val) \ | 79 | le32p_replace_bits((__pdesc + 1), __val, GENMASK(12, 8)); |
80 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 21, 1, __val) | 80 | } |
81 | #define SET_TX_DESC_SEC_TYPE(__pdesc, __val) \ | 81 | |
82 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 22, 2, __val) | 82 | static inline void set_tx_desc_rate_id(__le32 *__pdesc, u32 __val) |
83 | #define SET_TX_DESC_PKT_OFFSET(__pdesc, __val) \ | 83 | { |
84 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 24, 8, __val) | 84 | le32p_replace_bits((__pdesc + 1), __val, GENMASK(19, 16)); |
85 | 85 | } | |
86 | #define GET_TX_DESC_MACID(__pdesc) \ | 86 | |
87 | LE_BITS_TO_4BYTE(__pdesc+4, 0, 5) | 87 | static inline void set_tx_desc_sec_type(__le32 *__pdesc, u32 __val) |
88 | #define GET_TX_DESC_AGG_ENABLE(__pdesc) \ | 88 | { |
89 | LE_BITS_TO_4BYTE(__pdesc+4, 5, 1) | 89 | le32p_replace_bits((__pdesc + 1), __val, GENMASK(23, 22)); |
90 | #define GET_TX_DESC_AGG_BREAK(__pdesc) \ | 90 | } |
91 | LE_BITS_TO_4BYTE(__pdesc+4, 6, 1) | 91 | |
92 | #define GET_TX_DESC_RDG_ENABLE(__pdesc) \ | 92 | static inline void set_tx_desc_more_frag(__le32 *__pdesc, u32 __val) |
93 | LE_BITS_TO_4BYTE(__pdesc+4, 7, 1) | 93 | { |
94 | #define GET_TX_DESC_QUEUE_SEL(__pdesc) \ | 94 | le32p_replace_bits((__pdesc + 2), __val, BIT(17)); |
95 | LE_BITS_TO_4BYTE(__pdesc+4, 8, 5) | 95 | } |
96 | #define GET_TX_DESC_RDG_NAV_EXT(__pdesc) \ | 96 | |
97 | LE_BITS_TO_4BYTE(__pdesc+4, 13, 1) | 97 | static inline void set_tx_desc_ampdu_density(__le32 *__pdesc, u32 __val) |
98 | #define GET_TX_DESC_LSIG_TXOP_EN(__pdesc) \ | 98 | { |
99 | LE_BITS_TO_4BYTE(__pdesc+4, 14, 1) | 99 | le32p_replace_bits((__pdesc + 2), __val, GENMASK(22, 20)); |
100 | #define GET_TX_DESC_PIFS(__pdesc) \ | 100 | } |
101 | LE_BITS_TO_4BYTE(__pdesc+4, 15, 1) | 101 | |
102 | #define GET_TX_DESC_RATE_ID(__pdesc) \ | 102 | static inline void set_tx_desc_seq(__le32 *__pdesc, u32 __val) |
103 | LE_BITS_TO_4BYTE(__pdesc+4, 16, 4) | 103 | { |
104 | #define GET_TX_DESC_NAV_USE_HDR(__pdesc) \ | 104 | le32p_replace_bits((__pdesc + 3), __val, GENMASK(27, 16)); |
105 | LE_BITS_TO_4BYTE(__pdesc+4, 20, 1) | 105 | } |
106 | #define GET_TX_DESC_EN_DESC_ID(__pdesc) \ | 106 | |
107 | LE_BITS_TO_4BYTE(__pdesc+4, 21, 1) | 107 | static inline void set_tx_desc_pkt_id(__le32 *__pdesc, u32 __val) |
108 | #define GET_TX_DESC_SEC_TYPE(__pdesc) \ | 108 | { |
109 | LE_BITS_TO_4BYTE(__pdesc+4, 22, 2) | 109 | le32p_replace_bits((__pdesc + 3), __val, GENMASK(31, 28)); |
110 | #define GET_TX_DESC_PKT_OFFSET(__pdesc) \ | 110 | } |
111 | LE_BITS_TO_4BYTE(__pdesc+4, 24, 8) | ||
112 | |||
113 | #define SET_TX_DESC_RTS_RC(__pdesc, __val) \ | ||
114 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 0, 6, __val) | ||
115 | #define SET_TX_DESC_DATA_RC(__pdesc, __val) \ | ||
116 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 6, 6, __val) | ||
117 | #define SET_TX_DESC_BAR_RTY_TH(__pdesc, __val) \ | ||
118 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 14, 2, __val) | ||
119 | #define SET_TX_DESC_MORE_FRAG(__pdesc, __val) \ | ||
120 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 17, 1, __val) | ||
121 | #define SET_TX_DESC_RAW(__pdesc, __val) \ | ||
122 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 18, 1, __val) | ||
123 | #define SET_TX_DESC_CCX(__pdesc, __val) \ | ||
124 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 19, 1, __val) | ||
125 | #define SET_TX_DESC_AMPDU_DENSITY(__pdesc, __val) \ | ||
126 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 20, 3, __val) | ||
127 | #define SET_TX_DESC_ANTSEL_A(__pdesc, __val) \ | ||
128 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 24, 1, __val) | ||
129 | #define SET_TX_DESC_ANTSEL_B(__pdesc, __val) \ | ||
130 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 25, 1, __val) | ||
131 | #define SET_TX_DESC_TX_ANT_CCK(__pdesc, __val) \ | ||
132 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 26, 2, __val) | ||
133 | #define SET_TX_DESC_TX_ANTL(__pdesc, __val) \ | ||
134 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 28, 2, __val) | ||
135 | #define SET_TX_DESC_TX_ANT_HT(__pdesc, __val) \ | ||
136 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 30, 2, __val) | ||
137 | |||
138 | #define GET_TX_DESC_RTS_RC(__pdesc) \ | ||
139 | LE_BITS_TO_4BYTE(__pdesc+8, 0, 6) | ||
140 | #define GET_TX_DESC_DATA_RC(__pdesc) \ | ||
141 | LE_BITS_TO_4BYTE(__pdesc+8, 6, 6) | ||
142 | #define GET_TX_DESC_BAR_RTY_TH(__pdesc) \ | ||
143 | LE_BITS_TO_4BYTE(__pdesc+8, 14, 2) | ||
144 | #define GET_TX_DESC_MORE_FRAG(__pdesc) \ | ||
145 | LE_BITS_TO_4BYTE(__pdesc+8, 17, 1) | ||
146 | #define GET_TX_DESC_RAW(__pdesc) \ | ||
147 | LE_BITS_TO_4BYTE(__pdesc+8, 18, 1) | ||
148 | #define GET_TX_DESC_CCX(__pdesc) \ | ||
149 | LE_BITS_TO_4BYTE(__pdesc+8, 19, 1) | ||
150 | #define GET_TX_DESC_AMPDU_DENSITY(__pdesc) \ | ||
151 | LE_BITS_TO_4BYTE(__pdesc+8, 20, 3) | ||
152 | #define GET_TX_DESC_ANTSEL_A(__pdesc) \ | ||
153 | LE_BITS_TO_4BYTE(__pdesc+8, 24, 1) | ||
154 | #define GET_TX_DESC_ANTSEL_B(__pdesc) \ | ||
155 | LE_BITS_TO_4BYTE(__pdesc+8, 25, 1) | ||
156 | #define GET_TX_DESC_TX_ANT_CCK(__pdesc) \ | ||
157 | LE_BITS_TO_4BYTE(__pdesc+8, 26, 2) | ||
158 | #define GET_TX_DESC_TX_ANTL(__pdesc) \ | ||
159 | LE_BITS_TO_4BYTE(__pdesc+8, 28, 2) | ||
160 | #define GET_TX_DESC_TX_ANT_HT(__pdesc) \ | ||
161 | LE_BITS_TO_4BYTE(__pdesc+8, 30, 2) | ||
162 | |||
163 | #define SET_TX_DESC_NEXT_HEAP_PAGE(__pdesc, __val) \ | ||
164 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 0, 8, __val) | ||
165 | #define SET_TX_DESC_TAIL_PAGE(__pdesc, __val) \ | ||
166 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 8, 8, __val) | ||
167 | #define SET_TX_DESC_SEQ(__pdesc, __val) \ | ||
168 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 16, 12, __val) | ||
169 | #define SET_TX_DESC_PKT_ID(__pdesc, __val) \ | ||
170 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 28, 4, __val) | ||
171 | |||
172 | #define GET_TX_DESC_NEXT_HEAP_PAGE(__pdesc) \ | ||
173 | LE_BITS_TO_4BYTE(__pdesc+12, 0, 8) | ||
174 | #define GET_TX_DESC_TAIL_PAGE(__pdesc) \ | ||
175 | LE_BITS_TO_4BYTE(__pdesc+12, 8, 8) | ||
176 | #define GET_TX_DESC_SEQ(__pdesc) \ | ||
177 | LE_BITS_TO_4BYTE(__pdesc+12, 16, 12) | ||
178 | #define GET_TX_DESC_PKT_ID(__pdesc) \ | ||
179 | LE_BITS_TO_4BYTE(__pdesc+12, 28, 4) | ||
180 | 111 | ||
181 | /* For RTL8723 */ | 112 | /* For RTL8723 */ |
182 | #define SET_TX_DESC_TRIGGER_INT(__pdesc, __val) \ | 113 | static inline void set_tx_desc_hwseq_en_8723(__le32 *__pdesc, u32 __val) |
183 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 30, 1, __val) | 114 | { |
184 | #define SET_TX_DESC_HWSEQ_EN_8723(__pdesc, __val) \ | 115 | le32p_replace_bits((__pdesc + 3), __val, BIT(31)); |
185 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 31, 1, __val) | 116 | } |
186 | #define SET_TX_DESC_HWSEQ_SEL_8723(__txdesc, __value) \ | 117 | |
187 | SET_BITS_TO_LE_4BYTE(__txdesc+16, 6, 2, __value) | 118 | static inline void set_tx_desc_hwseq_sel_8723(__le32 *__txdesc, u32 __value) |
188 | 119 | { | |
189 | #define SET_TX_DESC_RTS_RATE(__pdesc, __val) \ | 120 | le32p_replace_bits((__txdesc + 4), __value, GENMASK(7, 6)); |
190 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 0, 5, __val) | 121 | } |
191 | #define SET_TX_DESC_AP_DCFE(__pdesc, __val) \ | 122 | |
192 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 5, 1, __val) | 123 | static inline void set_tx_desc_rts_rate(__le32 *__pdesc, u32 __val) |
193 | #define SET_TX_DESC_QOS(__pdesc, __val) \ | 124 | { |
194 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 6, 1, __val) | 125 | le32p_replace_bits((__pdesc + 4), __val, GENMASK(4, 0)); |
195 | #define SET_TX_DESC_HWSEQ_EN(__pdesc, __val) \ | 126 | } |
196 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 7, 1, __val) | 127 | |
197 | #define SET_TX_DESC_USE_RATE(__pdesc, __val) \ | 128 | static inline void set_tx_desc_use_rate(__le32 *__pdesc, u32 __val) |
198 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 8, 1, __val) | 129 | { |
199 | #define SET_TX_DESC_DISABLE_RTS_FB(__pdesc, __val) \ | 130 | le32p_replace_bits((__pdesc + 4), __val, BIT(8)); |
200 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 9, 1, __val) | 131 | } |
201 | #define SET_TX_DESC_DISABLE_FB(__pdesc, __val) \ | 132 | |
202 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 10, 1, __val) | 133 | static inline void set_tx_desc_disable_fb(__le32 *__pdesc, u32 __val) |
203 | #define SET_TX_DESC_CTS2SELF(__pdesc, __val) \ | 134 | { |
204 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 11, 1, __val) | 135 | le32p_replace_bits((__pdesc + 4), __val, BIT(10)); |
205 | #define SET_TX_DESC_RTS_ENABLE(__pdesc, __val) \ | 136 | } |
206 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 12, 1, __val) | 137 | |
207 | #define SET_TX_DESC_HW_RTS_ENABLE(__pdesc, __val) \ | 138 | static inline void set_tx_desc_cts2self(__le32 *__pdesc, u32 __val) |
208 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 13, 1, __val) | 139 | { |
209 | #define SET_TX_DESC_PORT_ID(__pdesc, __val) \ | 140 | le32p_replace_bits((__pdesc + 4), __val, BIT(11)); |
210 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 14, 1, __val) | 141 | } |
211 | #define SET_TX_DESC_WAIT_DCTS(__pdesc, __val) \ | 142 | |
212 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 18, 1, __val) | 143 | static inline void set_tx_desc_rts_enable(__le32 *__pdesc, u32 __val) |
213 | #define SET_TX_DESC_CTS2AP_EN(__pdesc, __val) \ | 144 | { |
214 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 19, 1, __val) | 145 | le32p_replace_bits((__pdesc + 4), __val, BIT(12)); |
215 | #define SET_TX_DESC_TX_SUB_CARRIER(__pdesc, __val) \ | 146 | } |
216 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 20, 2, __val) | 147 | |
217 | #define SET_TX_DESC_TX_STBC(__pdesc, __val) \ | 148 | static inline void set_tx_desc_hw_rts_enable(__le32 *__pdesc, u32 __val) |
218 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 22, 2, __val) | 149 | { |
219 | #define SET_TX_DESC_DATA_SHORT(__pdesc, __val) \ | 150 | le32p_replace_bits((__pdesc + 4), __val, BIT(13)); |
220 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 24, 1, __val) | 151 | } |
221 | #define SET_TX_DESC_DATA_BW(__pdesc, __val) \ | 152 | |
222 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 25, 1, __val) | 153 | static inline void set_tx_desc_tx_sub_carrier(__le32 *__pdesc, u32 __val) |
223 | #define SET_TX_DESC_RTS_SHORT(__pdesc, __val) \ | 154 | { |
224 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 26, 1, __val) | 155 | le32p_replace_bits((__pdesc + 4), __val, GENMASK(21, 20)); |
225 | #define SET_TX_DESC_RTS_BW(__pdesc, __val) \ | 156 | } |
226 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 27, 1, __val) | 157 | |
227 | #define SET_TX_DESC_RTS_SC(__pdesc, __val) \ | 158 | static inline void set_tx_desc_data_bw(__le32 *__pdesc, u32 __val) |
228 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 28, 2, __val) | 159 | { |
229 | #define SET_TX_DESC_RTS_STBC(__pdesc, __val) \ | 160 | le32p_replace_bits((__pdesc + 4), __val, BIT(25)); |
230 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 30, 2, __val) | 161 | } |
231 | 162 | ||
232 | #define GET_TX_DESC_RTS_RATE(__pdesc) \ | 163 | static inline void set_tx_desc_rts_short(__le32 *__pdesc, u32 __val) |
233 | LE_BITS_TO_4BYTE(__pdesc+16, 0, 5) | 164 | { |
234 | #define GET_TX_DESC_AP_DCFE(__pdesc) \ | 165 | le32p_replace_bits((__pdesc + 4), __val, BIT(26)); |
235 | LE_BITS_TO_4BYTE(__pdesc+16, 5, 1) | 166 | } |
236 | #define GET_TX_DESC_QOS(__pdesc) \ | 167 | |
237 | LE_BITS_TO_4BYTE(__pdesc+16, 6, 1) | 168 | static inline void set_tx_desc_rts_bw(__le32 *__pdesc, u32 __val) |
238 | #define GET_TX_DESC_HWSEQ_EN(__pdesc) \ | 169 | { |
239 | LE_BITS_TO_4BYTE(__pdesc+16, 7, 1) | 170 | le32p_replace_bits((__pdesc + 4), __val, BIT(27)); |
240 | #define GET_TX_DESC_USE_RATE(__pdesc) \ | 171 | } |
241 | LE_BITS_TO_4BYTE(__pdesc+16, 8, 1) | 172 | |
242 | #define GET_TX_DESC_DISABLE_RTS_FB(__pdesc) \ | 173 | static inline void set_tx_desc_rts_sc(__le32 *__pdesc, u32 __val) |
243 | LE_BITS_TO_4BYTE(__pdesc+16, 9, 1) | 174 | { |
244 | #define GET_TX_DESC_DISABLE_FB(__pdesc) \ | 175 | le32p_replace_bits((__pdesc + 4), __val, GENMASK(29, 28)); |
245 | LE_BITS_TO_4BYTE(__pdesc+16, 10, 1) | 176 | } |
246 | #define GET_TX_DESC_CTS2SELF(__pdesc) \ | 177 | |
247 | LE_BITS_TO_4BYTE(__pdesc+16, 11, 1) | 178 | static inline void set_tx_desc_rts_stbc(__le32 *__pdesc, u32 __val) |
248 | #define GET_TX_DESC_RTS_ENABLE(__pdesc) \ | 179 | { |
249 | LE_BITS_TO_4BYTE(__pdesc+16, 12, 1) | 180 | le32p_replace_bits((__pdesc + 4), __val, GENMASK(31, 30)); |
250 | #define GET_TX_DESC_HW_RTS_ENABLE(__pdesc) \ | 181 | } |
251 | LE_BITS_TO_4BYTE(__pdesc+16, 13, 1) | 182 | |
252 | #define GET_TX_DESC_PORT_ID(__pdesc) \ | 183 | static inline void set_tx_desc_tx_rate(__le32 *__pdesc, u32 __val) |
253 | LE_BITS_TO_4BYTE(__pdesc+16, 14, 1) | 184 | { |
254 | #define GET_TX_DESC_WAIT_DCTS(__pdesc) \ | 185 | le32p_replace_bits((__pdesc + 5), __val, GENMASK(5, 0)); |
255 | LE_BITS_TO_4BYTE(__pdesc+16, 18, 1) | 186 | } |
256 | #define GET_TX_DESC_CTS2AP_EN(__pdesc) \ | 187 | |
257 | LE_BITS_TO_4BYTE(__pdesc+16, 19, 1) | 188 | static inline void set_tx_desc_data_shortgi(__le32 *__pdesc, u32 __val) |
258 | #define GET_TX_DESC_TX_SUB_CARRIER(__pdesc) \ | 189 | { |
259 | LE_BITS_TO_4BYTE(__pdesc+16, 20, 2) | 190 | le32p_replace_bits((__pdesc + 5), __val, BIT(6)); |
260 | #define GET_TX_DESC_TX_STBC(__pdesc) \ | 191 | } |
261 | LE_BITS_TO_4BYTE(__pdesc+16, 22, 2) | 192 | |
262 | #define GET_TX_DESC_DATA_SHORT(__pdesc) \ | 193 | static inline void set_tx_desc_data_rate_fb_limit(__le32 *__pdesc, u32 __val) |
263 | LE_BITS_TO_4BYTE(__pdesc+16, 24, 1) | 194 | { |
264 | #define GET_TX_DESC_DATA_BW(__pdesc) \ | 195 | le32p_replace_bits((__pdesc + 5), __val, GENMASK(12, 8)); |
265 | LE_BITS_TO_4BYTE(__pdesc+16, 25, 1) | 196 | } |
266 | #define GET_TX_DESC_RTS_SHORT(__pdesc) \ | 197 | |
267 | LE_BITS_TO_4BYTE(__pdesc+16, 26, 1) | 198 | static inline void set_tx_desc_rts_rate_fb_limit(__le32 *__pdesc, u32 __val) |
268 | #define GET_TX_DESC_RTS_BW(__pdesc) \ | 199 | { |
269 | LE_BITS_TO_4BYTE(__pdesc+16, 27, 1) | 200 | le32p_replace_bits((__pdesc + 5), __val, GENMASK(16, 13)); |
270 | #define GET_TX_DESC_RTS_SC(__pdesc) \ | 201 | } |
271 | LE_BITS_TO_4BYTE(__pdesc+16, 28, 2) | 202 | |
272 | #define GET_TX_DESC_RTS_STBC(__pdesc) \ | 203 | static inline void set_tx_desc_max_agg_num(__le32 *__pdesc, u32 __val) |
273 | LE_BITS_TO_4BYTE(__pdesc+16, 30, 2) | 204 | { |
274 | 205 | le32p_replace_bits((__pdesc + 6), __val, GENMASK(15, 11)); | |
275 | #define SET_TX_DESC_TX_RATE(__pdesc, __val) \ | 206 | } |
276 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 0, 6, __val) | 207 | |
277 | #define SET_TX_DESC_DATA_SHORTGI(__pdesc, __val) \ | 208 | static inline void set_tx_desc_tx_buffer_size(__le32 *__pdesc, u32 __val) |
278 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 6, 1, __val) | 209 | { |
279 | #define SET_TX_DESC_CCX_TAG(__pdesc, __val) \ | 210 | le32p_replace_bits((__pdesc + 7), __val, GENMASK(15, 0)); |
280 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 7, 1, __val) | 211 | } |
281 | #define SET_TX_DESC_DATA_RATE_FB_LIMIT(__pdesc, __val) \ | 212 | |
282 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 8, 5, __val) | 213 | static inline void set_tx_desc_tx_buffer_address(__le32 *__pdesc, u32 __val) |
283 | #define SET_TX_DESC_RTS_RATE_FB_LIMIT(__pdesc, __val) \ | 214 | { |
284 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 13, 4, __val) | 215 | *(__pdesc + 8) = cpu_to_le32(__val); |
285 | #define SET_TX_DESC_RETRY_LIMIT_ENABLE(__pdesc, __val) \ | 216 | } |
286 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 17, 1, __val) | 217 | |
287 | #define SET_TX_DESC_DATA_RETRY_LIMIT(__pdesc, __val) \ | 218 | static inline u32 get_tx_desc_tx_buffer_address(__le32 *__pdesc) |
288 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 18, 6, __val) | 219 | { |
289 | #define SET_TX_DESC_USB_TXAGG_NUM(__pdesc, __val) \ | 220 | return le32_to_cpu(*(__pdesc + 8)); |
290 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 24, 8, __val) | 221 | } |
291 | 222 | ||
292 | #define GET_TX_DESC_TX_RATE(__pdesc) \ | 223 | static inline void set_tx_desc_next_desc_address(__le32 *__pdesc, u32 __val) |
293 | LE_BITS_TO_4BYTE(__pdesc+20, 0, 6) | 224 | { |
294 | #define GET_TX_DESC_DATA_SHORTGI(__pdesc) \ | 225 | *(__pdesc + 10) = cpu_to_le32(__val); |
295 | LE_BITS_TO_4BYTE(__pdesc+20, 6, 1) | 226 | } |
296 | #define GET_TX_DESC_CCX_TAG(__pdesc) \ | 227 | |
297 | LE_BITS_TO_4BYTE(__pdesc+20, 7, 1) | 228 | static inline u32 get_rx_desc_pkt_len(__le32 *__pdesc) |
298 | #define GET_TX_DESC_DATA_RATE_FB_LIMIT(__pdesc) \ | 229 | { |
299 | LE_BITS_TO_4BYTE(__pdesc+20, 8, 5) | 230 | return le32_get_bits(*__pdesc, GENMASK(13, 0)); |
300 | #define GET_TX_DESC_RTS_RATE_FB_LIMIT(__pdesc) \ | 231 | } |
301 | LE_BITS_TO_4BYTE(__pdesc+20, 13, 4) | 232 | |
302 | #define GET_TX_DESC_RETRY_LIMIT_ENABLE(__pdesc) \ | 233 | static inline u32 get_rx_desc_crc32(__le32 *__pdesc) |
303 | LE_BITS_TO_4BYTE(__pdesc+20, 17, 1) | 234 | { |
304 | #define GET_TX_DESC_DATA_RETRY_LIMIT(__pdesc) \ | 235 | return le32_get_bits(*__pdesc, BIT(14)); |
305 | LE_BITS_TO_4BYTE(__pdesc+20, 18, 6) | 236 | } |
306 | #define GET_TX_DESC_USB_TXAGG_NUM(__pdesc) \ | 237 | |
307 | LE_BITS_TO_4BYTE(__pdesc+20, 24, 8) | 238 | static inline u32 get_rx_desc_icv(__le32 *__pdesc) |
308 | 239 | { | |
309 | #define SET_TX_DESC_TXAGC_A(__pdesc, __val) \ | 240 | return le32_get_bits(*__pdesc, BIT(15)); |
310 | SET_BITS_TO_LE_4BYTE(__pdesc+24, 0, 5, __val) | 241 | } |
311 | #define SET_TX_DESC_TXAGC_B(__pdesc, __val) \ | 242 | |
312 | SET_BITS_TO_LE_4BYTE(__pdesc+24, 5, 5, __val) | 243 | static inline u32 get_rx_desc_drv_info_size(__le32 *__pdesc) |
313 | #define SET_TX_DESC_USE_MAX_LEN(__pdesc, __val) \ | 244 | { |
314 | SET_BITS_TO_LE_4BYTE(__pdesc+24, 10, 1, __val) | 245 | return le32_get_bits(*__pdesc, GENMASK(19, 16)); |
315 | #define SET_TX_DESC_MAX_AGG_NUM(__pdesc, __val) \ | 246 | } |
316 | SET_BITS_TO_LE_4BYTE(__pdesc+24, 11, 5, __val) | 247 | |
317 | #define SET_TX_DESC_MCSG1_MAX_LEN(__pdesc, __val) \ | 248 | static inline u32 get_rx_desc_shift(__le32 *__pdesc) |
318 | SET_BITS_TO_LE_4BYTE(__pdesc+24, 16, 4, __val) | 249 | { |
319 | #define SET_TX_DESC_MCSG2_MAX_LEN(__pdesc, __val) \ | 250 | return le32_get_bits(*__pdesc, GENMASK(25, 24)); |
320 | SET_BITS_TO_LE_4BYTE(__pdesc+24, 20, 4, __val) | 251 | } |
321 | #define SET_TX_DESC_MCSG3_MAX_LEN(__pdesc, __val) \ | 252 | |
322 | SET_BITS_TO_LE_4BYTE(__pdesc+24, 24, 4, __val) | 253 | static inline u32 get_rx_desc_physt(__le32 *__pdesc) |
323 | #define SET_TX_DESC_MCS7_SGI_MAX_LEN(__pdesc, __val)\ | 254 | { |
324 | SET_BITS_TO_LE_4BYTE(__pdesc+24, 28, 4, __val) | 255 | return le32_get_bits(*__pdesc, BIT(26)); |
325 | 256 | } | |
326 | #define GET_TX_DESC_TXAGC_A(__pdesc) \ | 257 | |
327 | LE_BITS_TO_4BYTE(__pdesc+24, 0, 5) | 258 | static inline u32 get_rx_desc_swdec(__le32 *__pdesc) |
328 | #define GET_TX_DESC_TXAGC_B(__pdesc) \ | 259 | { |
329 | LE_BITS_TO_4BYTE(__pdesc+24, 5, 5) | 260 | return le32_get_bits(*__pdesc, BIT(27)); |
330 | #define GET_TX_DESC_USE_MAX_LEN(__pdesc) \ | 261 | } |
331 | LE_BITS_TO_4BYTE(__pdesc+24, 10, 1) | 262 | |
332 | #define GET_TX_DESC_MAX_AGG_NUM(__pdesc) \ | 263 | static inline u32 get_rx_desc_own(__le32 *__pdesc) |
333 | LE_BITS_TO_4BYTE(__pdesc+24, 11, 5) | 264 | { |
334 | #define GET_TX_DESC_MCSG1_MAX_LEN(__pdesc) \ | 265 | return le32_get_bits(*__pdesc, BIT(31)); |
335 | LE_BITS_TO_4BYTE(__pdesc+24, 16, 4) | 266 | } |
336 | #define GET_TX_DESC_MCSG2_MAX_LEN(__pdesc) \ | 267 | |
337 | LE_BITS_TO_4BYTE(__pdesc+24, 20, 4) | 268 | static inline void set_rx_desc_pkt_len(__le32 *__pdesc, u32 __val) |
338 | #define GET_TX_DESC_MCSG3_MAX_LEN(__pdesc) \ | 269 | { |
339 | LE_BITS_TO_4BYTE(__pdesc+24, 24, 4) | 270 | le32p_replace_bits(__pdesc, __val, GENMASK(13, 0)); |
340 | #define GET_TX_DESC_MCS7_SGI_MAX_LEN(__pdesc) \ | 271 | } |
341 | LE_BITS_TO_4BYTE(__pdesc+24, 28, 4) | 272 | |
342 | 273 | static inline void set_rx_desc_eor(__le32 *__pdesc, u32 __val) | |
343 | #define SET_TX_DESC_TX_BUFFER_SIZE(__pdesc, __val) \ | 274 | { |
344 | SET_BITS_TO_LE_4BYTE(__pdesc+28, 0, 16, __val) | 275 | le32p_replace_bits(__pdesc, __val, BIT(30)); |
345 | #define SET_TX_DESC_MCSG4_MAX_LEN(__pdesc, __val) \ | 276 | } |
346 | SET_BITS_TO_LE_4BYTE(__pdesc+28, 16, 4, __val) | 277 | |
347 | #define SET_TX_DESC_MCSG5_MAX_LEN(__pdesc, __val) \ | 278 | static inline void set_rx_desc_own(__le32 *__pdesc, u32 __val) |
348 | SET_BITS_TO_LE_4BYTE(__pdesc+28, 20, 4, __val) | 279 | { |
349 | #define SET_TX_DESC_MCSG6_MAX_LEN(__pdesc, __val) \ | 280 | le32p_replace_bits(__pdesc, __val, BIT(31)); |
350 | SET_BITS_TO_LE_4BYTE(__pdesc+28, 24, 4, __val) | 281 | } |
351 | #define SET_TX_DESC_MCS15_SGI_MAX_LEN(__pdesc, __val) \ | 282 | |
352 | SET_BITS_TO_LE_4BYTE(__pdesc+28, 28, 4, __val) | 283 | static inline u32 get_rx_desc_paggr(__le32 *__pdesc) |
353 | 284 | { | |
354 | #define GET_TX_DESC_TX_BUFFER_SIZE(__pdesc) \ | 285 | return le32_get_bits(*(__pdesc + 1), BIT(14)); |
355 | LE_BITS_TO_4BYTE(__pdesc+28, 0, 16) | 286 | } |
356 | #define GET_TX_DESC_MCSG4_MAX_LEN(__pdesc) \ | 287 | |
357 | LE_BITS_TO_4BYTE(__pdesc+28, 16, 4) | 288 | static inline u32 get_rx_desc_faggr(__le32 *__pdesc) |
358 | #define GET_TX_DESC_MCSG5_MAX_LEN(__pdesc) \ | 289 | { |
359 | LE_BITS_TO_4BYTE(__pdesc+28, 20, 4) | 290 | return le32_get_bits(*(__pdesc + 1), BIT(15)); |
360 | #define GET_TX_DESC_MCSG6_MAX_LEN(__pdesc) \ | 291 | } |
361 | LE_BITS_TO_4BYTE(__pdesc+28, 24, 4) | 292 | |
362 | #define GET_TX_DESC_MCS15_SGI_MAX_LEN(__pdesc) \ | 293 | static inline u32 get_rx_desc_rxmcs(__le32 *__pdesc) |
363 | LE_BITS_TO_4BYTE(__pdesc+28, 28, 4) | 294 | { |
364 | 295 | return le32_get_bits(*(__pdesc + 3), GENMASK(5, 0)); | |
365 | #define SET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc, __val) \ | 296 | } |
366 | SET_BITS_TO_LE_4BYTE(__pdesc+32, 0, 32, __val) | 297 | |
367 | #define SET_TX_DESC_TX_BUFFER_ADDRESS64(__pdesc, __val) \ | 298 | static inline u32 get_rx_desc_rxht(__le32 *__pdesc) |
368 | SET_BITS_TO_LE_4BYTE(__pdesc+36, 0, 32, __val) | 299 | { |
369 | 300 | return le32_get_bits(*(__pdesc + 3), BIT(6)); | |
370 | #define GET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc) \ | 301 | } |
371 | LE_BITS_TO_4BYTE(__pdesc+32, 0, 32) | 302 | |
372 | #define GET_TX_DESC_TX_BUFFER_ADDRESS64(__pdesc) \ | 303 | static inline u32 get_rx_desc_splcp(__le32 *__pdesc) |
373 | LE_BITS_TO_4BYTE(__pdesc+36, 0, 32) | 304 | { |
374 | 305 | return le32_get_bits(*(__pdesc + 3), BIT(8)); | |
375 | #define SET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc, __val) \ | 306 | } |
376 | SET_BITS_TO_LE_4BYTE(__pdesc+40, 0, 32, __val) | 307 | |
377 | #define SET_TX_DESC_NEXT_DESC_ADDRESS64(__pdesc, __val) \ | 308 | static inline u32 get_rx_desc_bw(__le32 *__pdesc) |
378 | SET_BITS_TO_LE_4BYTE(__pdesc+44, 0, 32, __val) | 309 | { |
379 | 310 | return le32_get_bits(*(__pdesc + 3), BIT(9)); | |
380 | #define GET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc) \ | 311 | } |
381 | LE_BITS_TO_4BYTE(__pdesc+40, 0, 32) | 312 | |
382 | #define GET_TX_DESC_NEXT_DESC_ADDRESS64(__pdesc) \ | 313 | static inline u32 get_rx_desc_tsfl(__le32 *__pdesc) |
383 | LE_BITS_TO_4BYTE(__pdesc+44, 0, 32) | 314 | { |
384 | 315 | return le32_to_cpu(*(__pdesc + 5)); | |
385 | #define GET_RX_DESC_PKT_LEN(__pdesc) \ | 316 | } |
386 | LE_BITS_TO_4BYTE(__pdesc, 0, 14) | 317 | |
387 | #define GET_RX_DESC_CRC32(__pdesc) \ | 318 | static inline u32 get_rx_desc_buff_addr(__le32 *__pdesc) |
388 | LE_BITS_TO_4BYTE(__pdesc, 14, 1) | 319 | { |
389 | #define GET_RX_DESC_ICV(__pdesc) \ | 320 | return le32_to_cpu(*(__pdesc + 6)); |
390 | LE_BITS_TO_4BYTE(__pdesc, 15, 1) | 321 | } |
391 | #define GET_RX_DESC_DRV_INFO_SIZE(__pdesc) \ | 322 | |
392 | LE_BITS_TO_4BYTE(__pdesc, 16, 4) | 323 | static inline void set_rx_desc_buff_addr(__le32 *__pdesc, u32 __val) |
393 | #define GET_RX_DESC_SECURITY(__pdesc) \ | 324 | { |
394 | LE_BITS_TO_4BYTE(__pdesc, 20, 3) | 325 | *(__pdesc + 6) = cpu_to_le32(__val); |
395 | #define GET_RX_DESC_QOS(__pdesc) \ | 326 | } |
396 | LE_BITS_TO_4BYTE(__pdesc, 23, 1) | 327 | |
397 | #define GET_RX_DESC_SHIFT(__pdesc) \ | 328 | static inline void clear_pci_tx_desc_content(__le32 *__pdesc, u32 _size) |
398 | LE_BITS_TO_4BYTE(__pdesc, 24, 2) | 329 | { |
399 | #define GET_RX_DESC_PHYST(__pdesc) \ | 330 | if (_size > TX_DESC_NEXT_DESC_OFFSET) |
400 | LE_BITS_TO_4BYTE(__pdesc, 26, 1) | 331 | memset(__pdesc, 0, TX_DESC_NEXT_DESC_OFFSET); |
401 | #define GET_RX_DESC_SWDEC(__pdesc) \ | 332 | else |
402 | LE_BITS_TO_4BYTE(__pdesc, 27, 1) | 333 | memset(__pdesc, 0, _size); |
403 | #define GET_RX_DESC_LS(__pdesc) \ | 334 | } |
404 | LE_BITS_TO_4BYTE(__pdesc, 28, 1) | ||
405 | #define GET_RX_DESC_FS(__pdesc) \ | ||
406 | LE_BITS_TO_4BYTE(__pdesc, 29, 1) | ||
407 | #define GET_RX_DESC_EOR(__pdesc) \ | ||
408 | LE_BITS_TO_4BYTE(__pdesc, 30, 1) | ||
409 | #define GET_RX_DESC_OWN(__pdesc) \ | ||
410 | LE_BITS_TO_4BYTE(__pdesc, 31, 1) | ||
411 | |||
412 | #define SET_RX_DESC_PKT_LEN(__pdesc, __val) \ | ||
413 | SET_BITS_TO_LE_4BYTE(__pdesc, 0, 14, __val) | ||
414 | #define SET_RX_DESC_EOR(__pdesc, __val) \ | ||
415 | SET_BITS_TO_LE_4BYTE(__pdesc, 30, 1, __val) | ||
416 | #define SET_RX_DESC_OWN(__pdesc, __val) \ | ||
417 | SET_BITS_TO_LE_4BYTE(__pdesc, 31, 1, __val) | ||
418 | |||
419 | #define GET_RX_DESC_MACID(__pdesc) \ | ||
420 | LE_BITS_TO_4BYTE(__pdesc+4, 0, 5) | ||
421 | #define GET_RX_DESC_TID(__pdesc) \ | ||
422 | LE_BITS_TO_4BYTE(__pdesc+4, 5, 4) | ||
423 | #define GET_RX_DESC_HWRSVD(__pdesc) \ | ||
424 | LE_BITS_TO_4BYTE(__pdesc+4, 9, 5) | ||
425 | #define GET_RX_DESC_PAGGR(__pdesc) \ | ||
426 | LE_BITS_TO_4BYTE(__pdesc+4, 14, 1) | ||
427 | #define GET_RX_DESC_FAGGR(__pdesc) \ | ||
428 | LE_BITS_TO_4BYTE(__pdesc+4, 15, 1) | ||
429 | #define GET_RX_DESC_A1_FIT(__pdesc) \ | ||
430 | LE_BITS_TO_4BYTE(__pdesc+4, 16, 4) | ||
431 | #define GET_RX_DESC_A2_FIT(__pdesc) \ | ||
432 | LE_BITS_TO_4BYTE(__pdesc+4, 20, 4) | ||
433 | #define GET_RX_DESC_PAM(__pdesc) \ | ||
434 | LE_BITS_TO_4BYTE(__pdesc+4, 24, 1) | ||
435 | #define GET_RX_DESC_PWR(__pdesc) \ | ||
436 | LE_BITS_TO_4BYTE(__pdesc+4, 25, 1) | ||
437 | #define GET_RX_DESC_MD(__pdesc) \ | ||
438 | LE_BITS_TO_4BYTE(__pdesc+4, 26, 1) | ||
439 | #define GET_RX_DESC_MF(__pdesc) \ | ||
440 | LE_BITS_TO_4BYTE(__pdesc+4, 27, 1) | ||
441 | #define GET_RX_DESC_TYPE(__pdesc) \ | ||
442 | LE_BITS_TO_4BYTE(__pdesc+4, 28, 2) | ||
443 | #define GET_RX_DESC_MC(__pdesc) \ | ||
444 | LE_BITS_TO_4BYTE(__pdesc+4, 30, 1) | ||
445 | #define GET_RX_DESC_BC(__pdesc) \ | ||
446 | LE_BITS_TO_4BYTE(__pdesc+4, 31, 1) | ||
447 | #define GET_RX_DESC_SEQ(__pdesc) \ | ||
448 | LE_BITS_TO_4BYTE(__pdesc+8, 0, 12) | ||
449 | #define GET_RX_DESC_FRAG(__pdesc) \ | ||
450 | LE_BITS_TO_4BYTE(__pdesc+8, 12, 4) | ||
451 | #define GET_RX_DESC_NEXT_PKT_LEN(__pdesc) \ | ||
452 | LE_BITS_TO_4BYTE(__pdesc+8, 16, 14) | ||
453 | #define GET_RX_DESC_NEXT_IND(__pdesc) \ | ||
454 | LE_BITS_TO_4BYTE(__pdesc+8, 30, 1) | ||
455 | #define GET_RX_DESC_RSVD(__pdesc) \ | ||
456 | LE_BITS_TO_4BYTE(__pdesc+8, 31, 1) | ||
457 | |||
458 | #define GET_RX_DESC_RXMCS(__pdesc) \ | ||
459 | LE_BITS_TO_4BYTE(__pdesc+12, 0, 6) | ||
460 | #define GET_RX_DESC_RXHT(__pdesc) \ | ||
461 | LE_BITS_TO_4BYTE(__pdesc+12, 6, 1) | ||
462 | #define GET_RX_DESC_SPLCP(__pdesc) \ | ||
463 | LE_BITS_TO_4BYTE(__pdesc+12, 8, 1) | ||
464 | #define GET_RX_DESC_BW(__pdesc) \ | ||
465 | LE_BITS_TO_4BYTE(__pdesc+12, 9, 1) | ||
466 | #define GET_RX_DESC_HTC(__pdesc) \ | ||
467 | LE_BITS_TO_4BYTE(__pdesc+12, 10, 1) | ||
468 | #define GET_RX_DESC_HWPC_ERR(__pdesc) \ | ||
469 | LE_BITS_TO_4BYTE(__pdesc+12, 14, 1) | ||
470 | #define GET_RX_DESC_HWPC_IND(__pdesc) \ | ||
471 | LE_BITS_TO_4BYTE(__pdesc+12, 15, 1) | ||
472 | #define GET_RX_DESC_IV0(__pdesc) \ | ||
473 | LE_BITS_TO_4BYTE(__pdesc+12, 16, 16) | ||
474 | |||
475 | #define GET_RX_DESC_IV1(__pdesc) \ | ||
476 | LE_BITS_TO_4BYTE(__pdesc+16, 0, 32) | ||
477 | #define GET_RX_DESC_TSFL(__pdesc) \ | ||
478 | LE_BITS_TO_4BYTE(__pdesc+20, 0, 32) | ||
479 | |||
480 | #define GET_RX_DESC_BUFF_ADDR(__pdesc) \ | ||
481 | LE_BITS_TO_4BYTE(__pdesc+24, 0, 32) | ||
482 | #define GET_RX_DESC_BUFF_ADDR64(__pdesc) \ | ||
483 | LE_BITS_TO_4BYTE(__pdesc+28, 0, 32) | ||
484 | |||
485 | #define SET_RX_DESC_BUFF_ADDR(__pdesc, __val) \ | ||
486 | SET_BITS_TO_LE_4BYTE(__pdesc+24, 0, 32, __val) | ||
487 | #define SET_RX_DESC_BUFF_ADDR64(__pdesc, __val) \ | ||
488 | SET_BITS_TO_LE_4BYTE(__pdesc+28, 0, 32, __val) | ||
489 | |||
490 | #define CLEAR_PCI_TX_DESC_CONTENT(__pdesc, _size) \ | ||
491 | do { \ | ||
492 | if (_size > TX_DESC_NEXT_DESC_OFFSET) \ | ||
493 | memset(__pdesc, 0, TX_DESC_NEXT_DESC_OFFSET); \ | ||
494 | else \ | ||
495 | memset(__pdesc, 0, _size); \ | ||
496 | } while (0) | ||
497 | 335 | ||
498 | struct rx_fwinfo_8723e { | 336 | struct rx_fwinfo_8723e { |
499 | u8 gain_trsw[4]; | 337 | u8 gain_trsw[4]; |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/trx.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/trx.c index d87ba03fe78f..b8081e196cdf 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/trx.c +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/trx.c | |||
@@ -26,7 +26,8 @@ static u8 _rtl8723be_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 hw_queue) | |||
26 | } | 26 | } |
27 | 27 | ||
28 | static void _rtl8723be_query_rxphystatus(struct ieee80211_hw *hw, | 28 | static void _rtl8723be_query_rxphystatus(struct ieee80211_hw *hw, |
29 | struct rtl_stats *pstatus, u8 *pdesc, | 29 | struct rtl_stats *pstatus, |
30 | __le32 *pdesc, | ||
30 | struct rx_fwinfo_8723be *p_drvinfo, | 31 | struct rx_fwinfo_8723be *p_drvinfo, |
31 | bool bpacket_match_bssid, | 32 | bool bpacket_match_bssid, |
32 | bool bpacket_toself, | 33 | bool bpacket_toself, |
@@ -189,7 +190,7 @@ static void _rtl8723be_query_rxphystatus(struct ieee80211_hw *hw, | |||
189 | static void _rtl8723be_translate_rx_signal_stuff(struct ieee80211_hw *hw, | 190 | static void _rtl8723be_translate_rx_signal_stuff(struct ieee80211_hw *hw, |
190 | struct sk_buff *skb, | 191 | struct sk_buff *skb, |
191 | struct rtl_stats *pstatus, | 192 | struct rtl_stats *pstatus, |
192 | u8 *pdesc, | 193 | __le32 *pdesc, |
193 | struct rx_fwinfo_8723be *p_drvinfo) | 194 | struct rx_fwinfo_8723be *p_drvinfo) |
194 | { | 195 | { |
195 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | 196 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
@@ -242,12 +243,12 @@ static void _rtl8723be_translate_rx_signal_stuff(struct ieee80211_hw *hw, | |||
242 | } | 243 | } |
243 | 244 | ||
244 | static void _rtl8723be_insert_emcontent(struct rtl_tcb_desc *ptcb_desc, | 245 | static void _rtl8723be_insert_emcontent(struct rtl_tcb_desc *ptcb_desc, |
245 | u8 *virtualaddress) | 246 | __le32 *virtualaddress) |
246 | { | 247 | { |
247 | u32 dwtmp = 0; | 248 | u32 dwtmp = 0; |
248 | memset(virtualaddress, 0, 8); | 249 | memset(virtualaddress, 0, 8); |
249 | 250 | ||
250 | SET_EARLYMODE_PKTNUM(virtualaddress, ptcb_desc->empkt_num); | 251 | set_earlymode_pktnum(virtualaddress, ptcb_desc->empkt_num); |
251 | if (ptcb_desc->empkt_num == 1) { | 252 | if (ptcb_desc->empkt_num == 1) { |
252 | dwtmp = ptcb_desc->empkt_len[0]; | 253 | dwtmp = ptcb_desc->empkt_len[0]; |
253 | } else { | 254 | } else { |
@@ -255,7 +256,7 @@ static void _rtl8723be_insert_emcontent(struct rtl_tcb_desc *ptcb_desc, | |||
255 | dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; | 256 | dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; |
256 | dwtmp += ptcb_desc->empkt_len[1]; | 257 | dwtmp += ptcb_desc->empkt_len[1]; |
257 | } | 258 | } |
258 | SET_EARLYMODE_LEN0(virtualaddress, dwtmp); | 259 | set_earlymode_len0(virtualaddress, dwtmp); |
259 | 260 | ||
260 | if (ptcb_desc->empkt_num <= 3) { | 261 | if (ptcb_desc->empkt_num <= 3) { |
261 | dwtmp = ptcb_desc->empkt_len[2]; | 262 | dwtmp = ptcb_desc->empkt_len[2]; |
@@ -264,7 +265,7 @@ static void _rtl8723be_insert_emcontent(struct rtl_tcb_desc *ptcb_desc, | |||
264 | dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; | 265 | dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; |
265 | dwtmp += ptcb_desc->empkt_len[3]; | 266 | dwtmp += ptcb_desc->empkt_len[3]; |
266 | } | 267 | } |
267 | SET_EARLYMODE_LEN1(virtualaddress, dwtmp); | 268 | set_earlymode_len1(virtualaddress, dwtmp); |
268 | if (ptcb_desc->empkt_num <= 5) { | 269 | if (ptcb_desc->empkt_num <= 5) { |
269 | dwtmp = ptcb_desc->empkt_len[4]; | 270 | dwtmp = ptcb_desc->empkt_len[4]; |
270 | } else { | 271 | } else { |
@@ -272,8 +273,8 @@ static void _rtl8723be_insert_emcontent(struct rtl_tcb_desc *ptcb_desc, | |||
272 | dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; | 273 | dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; |
273 | dwtmp += ptcb_desc->empkt_len[5]; | 274 | dwtmp += ptcb_desc->empkt_len[5]; |
274 | } | 275 | } |
275 | SET_EARLYMODE_LEN2_1(virtualaddress, dwtmp & 0xF); | 276 | set_earlymode_len2_1(virtualaddress, dwtmp & 0xF); |
276 | SET_EARLYMODE_LEN2_2(virtualaddress, dwtmp >> 4); | 277 | set_earlymode_len2_2(virtualaddress, dwtmp >> 4); |
277 | if (ptcb_desc->empkt_num <= 7) { | 278 | if (ptcb_desc->empkt_num <= 7) { |
278 | dwtmp = ptcb_desc->empkt_len[6]; | 279 | dwtmp = ptcb_desc->empkt_len[6]; |
279 | } else { | 280 | } else { |
@@ -281,7 +282,7 @@ static void _rtl8723be_insert_emcontent(struct rtl_tcb_desc *ptcb_desc, | |||
281 | dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; | 282 | dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; |
282 | dwtmp += ptcb_desc->empkt_len[7]; | 283 | dwtmp += ptcb_desc->empkt_len[7]; |
283 | } | 284 | } |
284 | SET_EARLYMODE_LEN3(virtualaddress, dwtmp); | 285 | set_earlymode_len3(virtualaddress, dwtmp); |
285 | if (ptcb_desc->empkt_num <= 9) { | 286 | if (ptcb_desc->empkt_num <= 9) { |
286 | dwtmp = ptcb_desc->empkt_len[8]; | 287 | dwtmp = ptcb_desc->empkt_len[8]; |
287 | } else { | 288 | } else { |
@@ -289,51 +290,52 @@ static void _rtl8723be_insert_emcontent(struct rtl_tcb_desc *ptcb_desc, | |||
289 | dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; | 290 | dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; |
290 | dwtmp += ptcb_desc->empkt_len[9]; | 291 | dwtmp += ptcb_desc->empkt_len[9]; |
291 | } | 292 | } |
292 | SET_EARLYMODE_LEN4(virtualaddress, dwtmp); | 293 | set_earlymode_len4(virtualaddress, dwtmp); |
293 | } | 294 | } |
294 | 295 | ||
295 | bool rtl8723be_rx_query_desc(struct ieee80211_hw *hw, | 296 | bool rtl8723be_rx_query_desc(struct ieee80211_hw *hw, |
296 | struct rtl_stats *status, | 297 | struct rtl_stats *status, |
297 | struct ieee80211_rx_status *rx_status, | 298 | struct ieee80211_rx_status *rx_status, |
298 | u8 *pdesc, struct sk_buff *skb) | 299 | u8 *pdesc8, struct sk_buff *skb) |
299 | { | 300 | { |
300 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 301 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
301 | struct rx_fwinfo_8723be *p_drvinfo; | 302 | struct rx_fwinfo_8723be *p_drvinfo; |
302 | struct ieee80211_hdr *hdr; | 303 | struct ieee80211_hdr *hdr; |
303 | u8 wake_match; | 304 | u8 wake_match; |
304 | u32 phystatus = GET_RX_DESC_PHYST(pdesc); | 305 | __le32 *pdesc = (__le32 *)pdesc8; |
306 | u32 phystatus = get_rx_desc_physt(pdesc); | ||
305 | 307 | ||
306 | status->length = (u16)GET_RX_DESC_PKT_LEN(pdesc); | 308 | status->length = (u16)get_rx_desc_pkt_len(pdesc); |
307 | status->rx_drvinfo_size = (u8)GET_RX_DESC_DRV_INFO_SIZE(pdesc) * | 309 | status->rx_drvinfo_size = (u8)get_rx_desc_drv_info_size(pdesc) * |
308 | RX_DRV_INFO_SIZE_UNIT; | 310 | RX_DRV_INFO_SIZE_UNIT; |
309 | status->rx_bufshift = (u8)(GET_RX_DESC_SHIFT(pdesc) & 0x03); | 311 | status->rx_bufshift = (u8)(get_rx_desc_shift(pdesc) & 0x03); |
310 | status->icv = (u16) GET_RX_DESC_ICV(pdesc); | 312 | status->icv = (u16)get_rx_desc_icv(pdesc); |
311 | status->crc = (u16) GET_RX_DESC_CRC32(pdesc); | 313 | status->crc = (u16)get_rx_desc_crc32(pdesc); |
312 | status->hwerror = (status->crc | status->icv); | 314 | status->hwerror = (status->crc | status->icv); |
313 | status->decrypted = !GET_RX_DESC_SWDEC(pdesc); | 315 | status->decrypted = !get_rx_desc_swdec(pdesc); |
314 | status->rate = (u8)GET_RX_DESC_RXMCS(pdesc); | 316 | status->rate = (u8)get_rx_desc_rxmcs(pdesc); |
315 | status->shortpreamble = (u16)GET_RX_DESC_SPLCP(pdesc); | 317 | status->shortpreamble = (u16)get_rx_desc_splcp(pdesc); |
316 | status->isampdu = (bool)(GET_RX_DESC_PAGGR(pdesc) == 1); | 318 | status->isampdu = (bool)(get_rx_desc_paggr(pdesc) == 1); |
317 | status->isfirst_ampdu = (bool)(GET_RX_DESC_PAGGR(pdesc) == 1); | 319 | status->isfirst_ampdu = (bool)(get_rx_desc_paggr(pdesc) == 1); |
318 | status->timestamp_low = GET_RX_DESC_TSFL(pdesc); | 320 | status->timestamp_low = get_rx_desc_tsfl(pdesc); |
319 | status->rx_is40mhzpacket = (bool)GET_RX_DESC_BW(pdesc); | 321 | status->rx_is40mhzpacket = (bool)get_rx_desc_bw(pdesc); |
320 | status->bandwidth = (u8)GET_RX_DESC_BW(pdesc); | 322 | status->bandwidth = (u8)get_rx_desc_bw(pdesc); |
321 | status->macid = GET_RX_DESC_MACID(pdesc); | 323 | status->macid = get_rx_desc_macid(pdesc); |
322 | status->is_ht = (bool)GET_RX_DESC_RXHT(pdesc); | 324 | status->is_ht = (bool)get_rx_desc_rxht(pdesc); |
323 | 325 | ||
324 | status->is_cck = RX_HAL_IS_CCK_RATE(status->rate); | 326 | status->is_cck = RX_HAL_IS_CCK_RATE(status->rate); |
325 | 327 | ||
326 | if (GET_RX_STATUS_DESC_RPT_SEL(pdesc)) | 328 | if (get_rx_status_desc_rpt_sel(pdesc)) |
327 | status->packet_report_type = C2H_PACKET; | 329 | status->packet_report_type = C2H_PACKET; |
328 | else | 330 | else |
329 | status->packet_report_type = NORMAL_RX; | 331 | status->packet_report_type = NORMAL_RX; |
330 | 332 | ||
331 | 333 | ||
332 | if (GET_RX_STATUS_DESC_PATTERN_MATCH(pdesc)) | 334 | if (get_rx_status_desc_pattern_match(pdesc)) |
333 | wake_match = BIT(2); | 335 | wake_match = BIT(2); |
334 | else if (GET_RX_STATUS_DESC_MAGIC_MATCH(pdesc)) | 336 | else if (get_rx_status_desc_magic_match(pdesc)) |
335 | wake_match = BIT(1); | 337 | wake_match = BIT(1); |
336 | else if (GET_RX_STATUS_DESC_UNICAST_MATCH(pdesc)) | 338 | else if (get_rx_status_desc_unicast_match(pdesc)) |
337 | wake_match = BIT(0); | 339 | wake_match = BIT(0); |
338 | else | 340 | else |
339 | wake_match = 0; | 341 | wake_match = 0; |
@@ -392,15 +394,15 @@ bool rtl8723be_rx_query_desc(struct ieee80211_hw *hw, | |||
392 | rx_status->signal = status->recvsignalpower + 10; | 394 | rx_status->signal = status->recvsignalpower + 10; |
393 | if (status->packet_report_type == TX_REPORT2) { | 395 | if (status->packet_report_type == TX_REPORT2) { |
394 | status->macid_valid_entry[0] = | 396 | status->macid_valid_entry[0] = |
395 | GET_RX_RPT2_DESC_MACID_VALID_1(pdesc); | 397 | get_rx_rpt2_desc_macid_valid_1(pdesc); |
396 | status->macid_valid_entry[1] = | 398 | status->macid_valid_entry[1] = |
397 | GET_RX_RPT2_DESC_MACID_VALID_2(pdesc); | 399 | get_rx_rpt2_desc_macid_valid_2(pdesc); |
398 | } | 400 | } |
399 | return true; | 401 | return true; |
400 | } | 402 | } |
401 | 403 | ||
402 | void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, | 404 | void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, |
403 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 405 | struct ieee80211_hdr *hdr, u8 *pdesc8, |
404 | u8 *txbd, struct ieee80211_tx_info *info, | 406 | u8 *txbd, struct ieee80211_tx_info *info, |
405 | struct ieee80211_sta *sta, struct sk_buff *skb, | 407 | struct ieee80211_sta *sta, struct sk_buff *skb, |
406 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) | 408 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) |
@@ -410,7 +412,7 @@ void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, | |||
410 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | 412 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
411 | struct rtl_hal *rtlhal = rtl_hal(rtlpriv); | 413 | struct rtl_hal *rtlhal = rtl_hal(rtlpriv); |
412 | struct rtlwifi_tx_info *tx_info = rtl_tx_skb_cb_info(skb); | 414 | struct rtlwifi_tx_info *tx_info = rtl_tx_skb_cb_info(skb); |
413 | u8 *pdesc = (u8 *)pdesc_tx; | 415 | __le32 *pdesc = (__le32 *)pdesc8; |
414 | u16 seq_number; | 416 | u16 seq_number; |
415 | __le16 fc = hdr->frame_control; | 417 | __le16 fc = hdr->frame_control; |
416 | unsigned int buf_len = 0; | 418 | unsigned int buf_len = 0; |
@@ -446,78 +448,78 @@ void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, | |||
446 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, "DMA mapping error\n"); | 448 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, "DMA mapping error\n"); |
447 | return; | 449 | return; |
448 | } | 450 | } |
449 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, sizeof(struct tx_desc_8723be)); | 451 | clear_pci_tx_desc_content(pdesc, sizeof(struct tx_desc_8723be)); |
450 | if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) { | 452 | if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) { |
451 | firstseg = true; | 453 | firstseg = true; |
452 | lastseg = true; | 454 | lastseg = true; |
453 | } | 455 | } |
454 | if (firstseg) { | 456 | if (firstseg) { |
455 | if (rtlhal->earlymode_enable) { | 457 | if (rtlhal->earlymode_enable) { |
456 | SET_TX_DESC_PKT_OFFSET(pdesc, 1); | 458 | set_tx_desc_pkt_offset(pdesc, 1); |
457 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN + | 459 | set_tx_desc_offset(pdesc, USB_HWDESC_HEADER_LEN + |
458 | EM_HDR_LEN); | 460 | EM_HDR_LEN); |
459 | if (ptcb_desc->empkt_num) { | 461 | if (ptcb_desc->empkt_num) { |
460 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | 462 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, |
461 | "Insert 8 byte.pTcb->EMPktNum:%d\n", | 463 | "Insert 8 byte.pTcb->EMPktNum:%d\n", |
462 | ptcb_desc->empkt_num); | 464 | ptcb_desc->empkt_num); |
463 | _rtl8723be_insert_emcontent(ptcb_desc, | 465 | _rtl8723be_insert_emcontent(ptcb_desc, |
464 | (u8 *)(skb->data)); | 466 | (__le32 *)(skb->data)); |
465 | } | 467 | } |
466 | } else { | 468 | } else { |
467 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); | 469 | set_tx_desc_offset(pdesc, USB_HWDESC_HEADER_LEN); |
468 | } | 470 | } |
469 | 471 | ||
470 | 472 | ||
471 | /* ptcb_desc->use_driver_rate = true; */ | 473 | /* ptcb_desc->use_driver_rate = true; */ |
472 | SET_TX_DESC_TX_RATE(pdesc, ptcb_desc->hw_rate); | 474 | set_tx_desc_tx_rate(pdesc, ptcb_desc->hw_rate); |
473 | if (ptcb_desc->hw_rate > DESC92C_RATEMCS0) | 475 | if (ptcb_desc->hw_rate > DESC92C_RATEMCS0) |
474 | short_gi = (ptcb_desc->use_shortgi) ? 1 : 0; | 476 | short_gi = (ptcb_desc->use_shortgi) ? 1 : 0; |
475 | else | 477 | else |
476 | short_gi = (ptcb_desc->use_shortpreamble) ? 1 : 0; | 478 | short_gi = (ptcb_desc->use_shortpreamble) ? 1 : 0; |
477 | 479 | ||
478 | SET_TX_DESC_DATA_SHORTGI(pdesc, short_gi); | 480 | set_tx_desc_data_shortgi(pdesc, short_gi); |
479 | 481 | ||
480 | if (info->flags & IEEE80211_TX_CTL_AMPDU) { | 482 | if (info->flags & IEEE80211_TX_CTL_AMPDU) { |
481 | SET_TX_DESC_AGG_ENABLE(pdesc, 1); | 483 | set_tx_desc_agg_enable(pdesc, 1); |
482 | SET_TX_DESC_MAX_AGG_NUM(pdesc, 0x14); | 484 | set_tx_desc_max_agg_num(pdesc, 0x14); |
483 | } | 485 | } |
484 | SET_TX_DESC_SEQ(pdesc, seq_number); | 486 | set_tx_desc_seq(pdesc, seq_number); |
485 | SET_TX_DESC_RTS_ENABLE(pdesc, ((ptcb_desc->rts_enable && | 487 | set_tx_desc_rts_enable(pdesc, ((ptcb_desc->rts_enable && |
486 | !ptcb_desc->cts_enable) ? | 488 | !ptcb_desc->cts_enable) ? |
487 | 1 : 0)); | 489 | 1 : 0)); |
488 | SET_TX_DESC_HW_RTS_ENABLE(pdesc, 0); | 490 | set_tx_desc_hw_rts_enable(pdesc, 0); |
489 | SET_TX_DESC_CTS2SELF(pdesc, ((ptcb_desc->cts_enable) ? | 491 | set_tx_desc_cts2self(pdesc, ((ptcb_desc->cts_enable) ? |
490 | 1 : 0)); | 492 | 1 : 0)); |
491 | 493 | ||
492 | SET_TX_DESC_RTS_RATE(pdesc, ptcb_desc->rts_rate); | 494 | set_tx_desc_rts_rate(pdesc, ptcb_desc->rts_rate); |
493 | 495 | ||
494 | SET_TX_DESC_RTS_SC(pdesc, ptcb_desc->rts_sc); | 496 | set_tx_desc_rts_sc(pdesc, ptcb_desc->rts_sc); |
495 | SET_TX_DESC_RTS_SHORT(pdesc, | 497 | set_tx_desc_rts_short(pdesc, |
496 | ((ptcb_desc->rts_rate <= DESC92C_RATE54M) ? | 498 | ((ptcb_desc->rts_rate <= DESC92C_RATE54M) ? |
497 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) : | 499 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) : |
498 | (ptcb_desc->rts_use_shortgi ? 1 : 0))); | 500 | (ptcb_desc->rts_use_shortgi ? 1 : 0))); |
499 | 501 | ||
500 | if (ptcb_desc->tx_enable_sw_calc_duration) | 502 | if (ptcb_desc->tx_enable_sw_calc_duration) |
501 | SET_TX_DESC_NAV_USE_HDR(pdesc, 1); | 503 | set_tx_desc_nav_use_hdr(pdesc, 1); |
502 | 504 | ||
503 | if (bw_40) { | 505 | if (bw_40) { |
504 | if (ptcb_desc->packet_bw == HT_CHANNEL_WIDTH_20_40) { | 506 | if (ptcb_desc->packet_bw == HT_CHANNEL_WIDTH_20_40) { |
505 | SET_TX_DESC_DATA_BW(pdesc, 1); | 507 | set_tx_desc_data_bw(pdesc, 1); |
506 | SET_TX_DESC_TX_SUB_CARRIER(pdesc, 3); | 508 | set_tx_desc_tx_sub_carrier(pdesc, 3); |
507 | } else { | 509 | } else { |
508 | SET_TX_DESC_DATA_BW(pdesc, 0); | 510 | set_tx_desc_data_bw(pdesc, 0); |
509 | SET_TX_DESC_TX_SUB_CARRIER(pdesc, mac->cur_40_prime_sc); | 511 | set_tx_desc_tx_sub_carrier(pdesc, mac->cur_40_prime_sc); |
510 | } | 512 | } |
511 | } else { | 513 | } else { |
512 | SET_TX_DESC_DATA_BW(pdesc, 0); | 514 | set_tx_desc_data_bw(pdesc, 0); |
513 | SET_TX_DESC_TX_SUB_CARRIER(pdesc, 0); | 515 | set_tx_desc_tx_sub_carrier(pdesc, 0); |
514 | } | 516 | } |
515 | 517 | ||
516 | SET_TX_DESC_LINIP(pdesc, 0); | 518 | set_tx_desc_linip(pdesc, 0); |
517 | SET_TX_DESC_PKT_SIZE(pdesc, (u16) skb_len); | 519 | set_tx_desc_pkt_size(pdesc, (u16)skb_len); |
518 | if (sta) { | 520 | if (sta) { |
519 | u8 ampdu_density = sta->ht_cap.ampdu_density; | 521 | u8 ampdu_density = sta->ht_cap.ampdu_density; |
520 | SET_TX_DESC_AMPDU_DENSITY(pdesc, ampdu_density); | 522 | set_tx_desc_ampdu_density(pdesc, ampdu_density); |
521 | } | 523 | } |
522 | if (info->control.hw_key) { | 524 | if (info->control.hw_key) { |
523 | struct ieee80211_key_conf *keyconf = | 525 | struct ieee80211_key_conf *keyconf = |
@@ -526,23 +528,23 @@ void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, | |||
526 | case WLAN_CIPHER_SUITE_WEP40: | 528 | case WLAN_CIPHER_SUITE_WEP40: |
527 | case WLAN_CIPHER_SUITE_WEP104: | 529 | case WLAN_CIPHER_SUITE_WEP104: |
528 | case WLAN_CIPHER_SUITE_TKIP: | 530 | case WLAN_CIPHER_SUITE_TKIP: |
529 | SET_TX_DESC_SEC_TYPE(pdesc, 0x1); | 531 | set_tx_desc_sec_type(pdesc, 0x1); |
530 | break; | 532 | break; |
531 | case WLAN_CIPHER_SUITE_CCMP: | 533 | case WLAN_CIPHER_SUITE_CCMP: |
532 | SET_TX_DESC_SEC_TYPE(pdesc, 0x3); | 534 | set_tx_desc_sec_type(pdesc, 0x3); |
533 | break; | 535 | break; |
534 | default: | 536 | default: |
535 | SET_TX_DESC_SEC_TYPE(pdesc, 0x0); | 537 | set_tx_desc_sec_type(pdesc, 0x0); |
536 | break; | 538 | break; |
537 | } | 539 | } |
538 | } | 540 | } |
539 | 541 | ||
540 | SET_TX_DESC_QUEUE_SEL(pdesc, fw_qsel); | 542 | set_tx_desc_queue_sel(pdesc, fw_qsel); |
541 | SET_TX_DESC_DATA_RATE_FB_LIMIT(pdesc, 0x1F); | 543 | set_tx_desc_data_rate_fb_limit(pdesc, 0x1F); |
542 | SET_TX_DESC_RTS_RATE_FB_LIMIT(pdesc, 0xF); | 544 | set_tx_desc_rts_rate_fb_limit(pdesc, 0xF); |
543 | SET_TX_DESC_DISABLE_FB(pdesc, ptcb_desc->disable_ratefallback ? | 545 | set_tx_desc_disable_fb(pdesc, ptcb_desc->disable_ratefallback ? |
544 | 1 : 0); | 546 | 1 : 0); |
545 | SET_TX_DESC_USE_RATE(pdesc, ptcb_desc->use_driver_rate ? 1 : 0); | 547 | set_tx_desc_use_rate(pdesc, ptcb_desc->use_driver_rate ? 1 : 0); |
546 | 548 | ||
547 | /* Set TxRate and RTSRate in TxDesc */ | 549 | /* Set TxRate and RTSRate in TxDesc */ |
548 | /* This prevent Tx initial rate of new-coming packets */ | 550 | /* This prevent Tx initial rate of new-coming packets */ |
@@ -551,46 +553,47 @@ void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, | |||
551 | if (mac->rdg_en) { | 553 | if (mac->rdg_en) { |
552 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | 554 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, |
553 | "Enable RDG function.\n"); | 555 | "Enable RDG function.\n"); |
554 | SET_TX_DESC_RDG_ENABLE(pdesc, 1); | 556 | set_tx_desc_rdg_enable(pdesc, 1); |
555 | SET_TX_DESC_HTC(pdesc, 1); | 557 | set_tx_desc_htc(pdesc, 1); |
556 | } | 558 | } |
557 | } | 559 | } |
558 | /* tx report */ | 560 | /* tx report */ |
559 | rtl_set_tx_report(ptcb_desc, pdesc, hw, tx_info); | 561 | rtl_set_tx_report(ptcb_desc, pdesc8, hw, tx_info); |
560 | } | 562 | } |
561 | 563 | ||
562 | SET_TX_DESC_FIRST_SEG(pdesc, (firstseg ? 1 : 0)); | 564 | set_tx_desc_first_seg(pdesc, (firstseg ? 1 : 0)); |
563 | SET_TX_DESC_LAST_SEG(pdesc, (lastseg ? 1 : 0)); | 565 | set_tx_desc_last_seg(pdesc, (lastseg ? 1 : 0)); |
564 | SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16) buf_len); | 566 | set_tx_desc_tx_buffer_size(pdesc, (u16)buf_len); |
565 | SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, mapping); | 567 | set_tx_desc_tx_buffer_address(pdesc, mapping); |
566 | /* if (rtlpriv->dm.useramask) { */ | 568 | /* if (rtlpriv->dm.useramask) { */ |
567 | if (1) { | 569 | if (1) { |
568 | SET_TX_DESC_RATE_ID(pdesc, ptcb_desc->ratr_index); | 570 | set_tx_desc_rate_id(pdesc, ptcb_desc->ratr_index); |
569 | SET_TX_DESC_MACID(pdesc, ptcb_desc->mac_id); | 571 | set_tx_desc_macid(pdesc, ptcb_desc->mac_id); |
570 | } else { | 572 | } else { |
571 | SET_TX_DESC_RATE_ID(pdesc, 0xC + ptcb_desc->ratr_index); | 573 | set_tx_desc_rate_id(pdesc, 0xC + ptcb_desc->ratr_index); |
572 | SET_TX_DESC_MACID(pdesc, ptcb_desc->mac_id); | 574 | set_tx_desc_macid(pdesc, ptcb_desc->mac_id); |
573 | } | 575 | } |
574 | if (!ieee80211_is_data_qos(fc)) { | 576 | if (!ieee80211_is_data_qos(fc)) { |
575 | SET_TX_DESC_HWSEQ_EN(pdesc, 1); | 577 | set_tx_desc_hwseq_en(pdesc, 1); |
576 | SET_TX_DESC_HWSEQ_SEL(pdesc, 0); | 578 | set_tx_desc_hwseq_sel(pdesc, 0); |
577 | } | 579 | } |
578 | SET_TX_DESC_MORE_FRAG(pdesc, (lastseg ? 0 : 1)); | 580 | set_tx_desc_more_frag(pdesc, (lastseg ? 0 : 1)); |
579 | if (is_multicast_ether_addr(ieee80211_get_DA(hdr)) || | 581 | if (is_multicast_ether_addr(ieee80211_get_DA(hdr)) || |
580 | is_broadcast_ether_addr(ieee80211_get_DA(hdr))) { | 582 | is_broadcast_ether_addr(ieee80211_get_DA(hdr))) { |
581 | SET_TX_DESC_BMC(pdesc, 1); | 583 | set_tx_desc_bmc(pdesc, 1); |
582 | } | 584 | } |
583 | 585 | ||
584 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, "\n"); | 586 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, "\n"); |
585 | } | 587 | } |
586 | 588 | ||
587 | void rtl8723be_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, | 589 | void rtl8723be_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc8, |
588 | bool firstseg, bool lastseg, | 590 | bool firstseg, bool lastseg, |
589 | struct sk_buff *skb) | 591 | struct sk_buff *skb) |
590 | { | 592 | { |
591 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 593 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
592 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | 594 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
593 | u8 fw_queue = QSLT_BEACON; | 595 | u8 fw_queue = QSLT_BEACON; |
596 | __le32 *pdesc = (__le32 *)pdesc8; | ||
594 | 597 | ||
595 | dma_addr_t mapping = pci_map_single(rtlpci->pdev, | 598 | dma_addr_t mapping = pci_map_single(rtlpci->pdev, |
596 | skb->data, skb->len, | 599 | skb->data, skb->len, |
@@ -601,51 +604,53 @@ void rtl8723be_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, | |||
601 | "DMA mapping error\n"); | 604 | "DMA mapping error\n"); |
602 | return; | 605 | return; |
603 | } | 606 | } |
604 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); | 607 | clear_pci_tx_desc_content(pdesc, TX_DESC_SIZE); |
605 | 608 | ||
606 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); | 609 | set_tx_desc_offset(pdesc, USB_HWDESC_HEADER_LEN); |
607 | 610 | ||
608 | SET_TX_DESC_TX_RATE(pdesc, DESC92C_RATE1M); | 611 | set_tx_desc_tx_rate(pdesc, DESC92C_RATE1M); |
609 | 612 | ||
610 | SET_TX_DESC_SEQ(pdesc, 0); | 613 | set_tx_desc_seq(pdesc, 0); |
611 | 614 | ||
612 | SET_TX_DESC_LINIP(pdesc, 0); | 615 | set_tx_desc_linip(pdesc, 0); |
613 | 616 | ||
614 | SET_TX_DESC_QUEUE_SEL(pdesc, fw_queue); | 617 | set_tx_desc_queue_sel(pdesc, fw_queue); |
615 | 618 | ||
616 | SET_TX_DESC_FIRST_SEG(pdesc, 1); | 619 | set_tx_desc_first_seg(pdesc, 1); |
617 | SET_TX_DESC_LAST_SEG(pdesc, 1); | 620 | set_tx_desc_last_seg(pdesc, 1); |
618 | 621 | ||
619 | SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16)(skb->len)); | 622 | set_tx_desc_tx_buffer_size(pdesc, (u16)(skb->len)); |
620 | 623 | ||
621 | SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, mapping); | 624 | set_tx_desc_tx_buffer_address(pdesc, mapping); |
622 | 625 | ||
623 | SET_TX_DESC_RATE_ID(pdesc, 0); | 626 | set_tx_desc_rate_id(pdesc, 0); |
624 | SET_TX_DESC_MACID(pdesc, 0); | 627 | set_tx_desc_macid(pdesc, 0); |
625 | 628 | ||
626 | SET_TX_DESC_OWN(pdesc, 1); | 629 | set_tx_desc_own(pdesc, 1); |
627 | 630 | ||
628 | SET_TX_DESC_PKT_SIZE((u8 *)pdesc, (u16)(skb->len)); | 631 | set_tx_desc_pkt_size(pdesc, (u16)(skb->len)); |
629 | 632 | ||
630 | SET_TX_DESC_FIRST_SEG(pdesc, 1); | 633 | set_tx_desc_first_seg(pdesc, 1); |
631 | SET_TX_DESC_LAST_SEG(pdesc, 1); | 634 | set_tx_desc_last_seg(pdesc, 1); |
632 | 635 | ||
633 | SET_TX_DESC_USE_RATE(pdesc, 1); | 636 | set_tx_desc_use_rate(pdesc, 1); |
634 | 637 | ||
635 | RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_LOUD, | 638 | RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_LOUD, |
636 | "H2C Tx Cmd Content\n", pdesc, TX_DESC_SIZE); | 639 | "H2C Tx Cmd Content\n", pdesc, TX_DESC_SIZE); |
637 | } | 640 | } |
638 | 641 | ||
639 | void rtl8723be_set_desc(struct ieee80211_hw *hw, u8 *pdesc, | 642 | void rtl8723be_set_desc(struct ieee80211_hw *hw, u8 *pdesc8, |
640 | bool istx, u8 desc_name, u8 *val) | 643 | bool istx, u8 desc_name, u8 *val) |
641 | { | 644 | { |
645 | __le32 *pdesc = (__le32 *)pdesc8; | ||
646 | |||
642 | if (istx) { | 647 | if (istx) { |
643 | switch (desc_name) { | 648 | switch (desc_name) { |
644 | case HW_DESC_OWN: | 649 | case HW_DESC_OWN: |
645 | SET_TX_DESC_OWN(pdesc, 1); | 650 | set_tx_desc_own(pdesc, 1); |
646 | break; | 651 | break; |
647 | case HW_DESC_TX_NEXTDESC_ADDR: | 652 | case HW_DESC_TX_NEXTDESC_ADDR: |
648 | SET_TX_DESC_NEXT_DESC_ADDRESS(pdesc, *(u32 *)val); | 653 | set_tx_desc_next_desc_address(pdesc, *(u32 *)val); |
649 | break; | 654 | break; |
650 | default: | 655 | default: |
651 | WARN_ONCE(true, "rtl8723be: ERR txdesc :%d not processed\n", | 656 | WARN_ONCE(true, "rtl8723be: ERR txdesc :%d not processed\n", |
@@ -655,16 +660,16 @@ void rtl8723be_set_desc(struct ieee80211_hw *hw, u8 *pdesc, | |||
655 | } else { | 660 | } else { |
656 | switch (desc_name) { | 661 | switch (desc_name) { |
657 | case HW_DESC_RXOWN: | 662 | case HW_DESC_RXOWN: |
658 | SET_RX_DESC_OWN(pdesc, 1); | 663 | set_rx_desc_own(pdesc, 1); |
659 | break; | 664 | break; |
660 | case HW_DESC_RXBUFF_ADDR: | 665 | case HW_DESC_RXBUFF_ADDR: |
661 | SET_RX_DESC_BUFF_ADDR(pdesc, *(u32 *)val); | 666 | set_rx_desc_buff_addr(pdesc, *(u32 *)val); |
662 | break; | 667 | break; |
663 | case HW_DESC_RXPKT_LEN: | 668 | case HW_DESC_RXPKT_LEN: |
664 | SET_RX_DESC_PKT_LEN(pdesc, *(u32 *)val); | 669 | set_rx_desc_pkt_len(pdesc, *(u32 *)val); |
665 | break; | 670 | break; |
666 | case HW_DESC_RXERO: | 671 | case HW_DESC_RXERO: |
667 | SET_RX_DESC_EOR(pdesc, 1); | 672 | set_rx_desc_eor(pdesc, 1); |
668 | break; | 673 | break; |
669 | default: | 674 | default: |
670 | WARN_ONCE(true, "rtl8723be: ERR rxdesc :%d not process\n", | 675 | WARN_ONCE(true, "rtl8723be: ERR rxdesc :%d not process\n", |
@@ -675,17 +680,18 @@ void rtl8723be_set_desc(struct ieee80211_hw *hw, u8 *pdesc, | |||
675 | } | 680 | } |
676 | 681 | ||
677 | u64 rtl8723be_get_desc(struct ieee80211_hw *hw, | 682 | u64 rtl8723be_get_desc(struct ieee80211_hw *hw, |
678 | u8 *pdesc, bool istx, u8 desc_name) | 683 | u8 *pdesc8, bool istx, u8 desc_name) |
679 | { | 684 | { |
680 | u32 ret = 0; | 685 | u32 ret = 0; |
686 | __le32 *pdesc = (__le32 *)pdesc8; | ||
681 | 687 | ||
682 | if (istx) { | 688 | if (istx) { |
683 | switch (desc_name) { | 689 | switch (desc_name) { |
684 | case HW_DESC_OWN: | 690 | case HW_DESC_OWN: |
685 | ret = GET_TX_DESC_OWN(pdesc); | 691 | ret = get_tx_desc_own(pdesc); |
686 | break; | 692 | break; |
687 | case HW_DESC_TXBUFF_ADDR: | 693 | case HW_DESC_TXBUFF_ADDR: |
688 | ret = GET_TX_DESC_TX_BUFFER_ADDRESS(pdesc); | 694 | ret = get_tx_desc_tx_buffer_address(pdesc); |
689 | break; | 695 | break; |
690 | default: | 696 | default: |
691 | WARN_ONCE(true, "rtl8723be: ERR txdesc :%d not process\n", | 697 | WARN_ONCE(true, "rtl8723be: ERR txdesc :%d not process\n", |
@@ -695,13 +701,13 @@ u64 rtl8723be_get_desc(struct ieee80211_hw *hw, | |||
695 | } else { | 701 | } else { |
696 | switch (desc_name) { | 702 | switch (desc_name) { |
697 | case HW_DESC_OWN: | 703 | case HW_DESC_OWN: |
698 | ret = GET_RX_DESC_OWN(pdesc); | 704 | ret = get_rx_desc_own(pdesc); |
699 | break; | 705 | break; |
700 | case HW_DESC_RXPKT_LEN: | 706 | case HW_DESC_RXPKT_LEN: |
701 | ret = GET_RX_DESC_PKT_LEN(pdesc); | 707 | ret = get_rx_desc_pkt_len(pdesc); |
702 | break; | 708 | break; |
703 | case HW_DESC_RXBUFF_ADDR: | 709 | case HW_DESC_RXBUFF_ADDR: |
704 | ret = GET_RX_DESC_BUFF_ADDR(pdesc); | 710 | ret = get_rx_desc_buff_addr(pdesc); |
705 | break; | 711 | break; |
706 | default: | 712 | default: |
707 | WARN_ONCE(true, "rtl8723be: ERR rxdesc :%d not processed\n", | 713 | WARN_ONCE(true, "rtl8723be: ERR rxdesc :%d not processed\n", |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/trx.h b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/trx.h index 11e75a4e68bd..174aca20c7e1 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/trx.h +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/trx.h | |||
@@ -14,351 +14,385 @@ | |||
14 | #define USB_HWDESC_HEADER_LEN 40 | 14 | #define USB_HWDESC_HEADER_LEN 40 |
15 | #define CRCLENGTH 4 | 15 | #define CRCLENGTH 4 |
16 | 16 | ||
17 | #define SET_TX_DESC_PKT_SIZE(__pdesc, __val) \ | 17 | static inline void set_tx_desc_pkt_size(__le32 *__pdesc, u32 __val) |
18 | SET_BITS_TO_LE_4BYTE(__pdesc, 0, 16, __val) | 18 | { |
19 | #define SET_TX_DESC_OFFSET(__pdesc, __val) \ | 19 | le32p_replace_bits(__pdesc, __val, GENMASK(15, 0)); |
20 | SET_BITS_TO_LE_4BYTE(__pdesc, 16, 8, __val) | 20 | } |
21 | #define SET_TX_DESC_BMC(__pdesc, __val) \ | 21 | |
22 | SET_BITS_TO_LE_4BYTE(__pdesc, 24, 1, __val) | 22 | static inline void set_tx_desc_offset(__le32 *__pdesc, u32 __val) |
23 | #define SET_TX_DESC_HTC(__pdesc, __val) \ | 23 | { |
24 | SET_BITS_TO_LE_4BYTE(__pdesc, 25, 1, __val) | 24 | le32p_replace_bits(__pdesc, __val, GENMASK(23, 16)); |
25 | #define SET_TX_DESC_LAST_SEG(__pdesc, __val) \ | 25 | } |
26 | SET_BITS_TO_LE_4BYTE(__pdesc, 26, 1, __val) | 26 | |
27 | #define SET_TX_DESC_FIRST_SEG(__pdesc, __val) \ | 27 | static inline void set_tx_desc_bmc(__le32 *__pdesc, u32 __val) |
28 | SET_BITS_TO_LE_4BYTE(__pdesc, 27, 1, __val) | 28 | { |
29 | #define SET_TX_DESC_LINIP(__pdesc, __val) \ | 29 | le32p_replace_bits(__pdesc, __val, BIT(24)); |
30 | SET_BITS_TO_LE_4BYTE(__pdesc, 28, 1, __val) | 30 | } |
31 | #define SET_TX_DESC_NO_ACM(__pdesc, __val) \ | 31 | |
32 | SET_BITS_TO_LE_4BYTE(__pdesc, 29, 1, __val) | 32 | static inline void set_tx_desc_htc(__le32 *__pdesc, u32 __val) |
33 | #define SET_TX_DESC_GF(__pdesc, __val) \ | 33 | { |
34 | SET_BITS_TO_LE_4BYTE(__pdesc, 30, 1, __val) | 34 | le32p_replace_bits(__pdesc, __val, BIT(25)); |
35 | #define SET_TX_DESC_OWN(__pdesc, __val) \ | 35 | } |
36 | SET_BITS_TO_LE_4BYTE(__pdesc, 31, 1, __val) | 36 | |
37 | 37 | static inline void set_tx_desc_last_seg(__le32 *__pdesc, u32 __val) | |
38 | #define GET_TX_DESC_PKT_SIZE(__pdesc) \ | 38 | { |
39 | LE_BITS_TO_4BYTE(__pdesc, 0, 16) | 39 | le32p_replace_bits(__pdesc, __val, BIT(26)); |
40 | #define GET_TX_DESC_OFFSET(__pdesc) \ | 40 | } |
41 | LE_BITS_TO_4BYTE(__pdesc, 16, 8) | 41 | |
42 | #define GET_TX_DESC_BMC(__pdesc) \ | 42 | static inline void set_tx_desc_first_seg(__le32 *__pdesc, u32 __val) |
43 | LE_BITS_TO_4BYTE(__pdesc, 24, 1) | 43 | { |
44 | #define GET_TX_DESC_HTC(__pdesc) \ | 44 | le32p_replace_bits(__pdesc, __val, BIT(27)); |
45 | LE_BITS_TO_4BYTE(__pdesc, 25, 1) | 45 | } |
46 | #define GET_TX_DESC_LAST_SEG(__pdesc) \ | 46 | |
47 | LE_BITS_TO_4BYTE(__pdesc, 26, 1) | 47 | static inline void set_tx_desc_linip(__le32 *__pdesc, u32 __val) |
48 | #define GET_TX_DESC_FIRST_SEG(__pdesc) \ | 48 | { |
49 | LE_BITS_TO_4BYTE(__pdesc, 27, 1) | 49 | le32p_replace_bits(__pdesc, __val, BIT(28)); |
50 | #define GET_TX_DESC_LINIP(__pdesc) \ | 50 | } |
51 | LE_BITS_TO_4BYTE(__pdesc, 28, 1) | 51 | |
52 | #define GET_TX_DESC_NO_ACM(__pdesc) \ | 52 | static inline void set_tx_desc_own(__le32 *__pdesc, u32 __val) |
53 | LE_BITS_TO_4BYTE(__pdesc, 29, 1) | 53 | { |
54 | #define GET_TX_DESC_GF(__pdesc) \ | 54 | le32p_replace_bits(__pdesc, __val, BIT(31)); |
55 | LE_BITS_TO_4BYTE(__pdesc, 30, 1) | 55 | } |
56 | #define GET_TX_DESC_OWN(__pdesc) \ | 56 | |
57 | LE_BITS_TO_4BYTE(__pdesc, 31, 1) | 57 | static inline u32 get_tx_desc_own(__le32 *__pdesc) |
58 | 58 | { | |
59 | #define SET_TX_DESC_MACID(__pdesc, __val) \ | 59 | return le32_get_bits(*__pdesc, BIT(31)); |
60 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 0, 7, __val) | 60 | } |
61 | #define SET_TX_DESC_QUEUE_SEL(__pdesc, __val) \ | 61 | |
62 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 8, 5, __val) | 62 | static inline void set_tx_desc_macid(__le32 *__pdesc, u32 __val) |
63 | #define SET_TX_DESC_RDG_NAV_EXT(__pdesc, __val) \ | 63 | { |
64 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 13, 1, __val) | 64 | le32p_replace_bits((__pdesc + 1), __val, GENMASK(6, 0)); |
65 | #define SET_TX_DESC_LSIG_TXOP_EN(__pdesc, __val) \ | 65 | } |
66 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 14, 1, __val) | 66 | |
67 | #define SET_TX_DESC_PIFS(__pdesc, __val) \ | 67 | static inline void set_tx_desc_queue_sel(__le32 *__pdesc, u32 __val) |
68 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 15, 1, __val) | 68 | { |
69 | #define SET_TX_DESC_RATE_ID(__pdesc, __val) \ | 69 | le32p_replace_bits((__pdesc + 1), __val, GENMASK(12, 8)); |
70 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 16, 5, __val) | 70 | } |
71 | #define SET_TX_DESC_EN_DESC_ID(__pdesc, __val) \ | 71 | |
72 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 21, 1, __val) | 72 | static inline void set_tx_desc_rate_id(__le32 *__pdesc, u32 __val) |
73 | #define SET_TX_DESC_SEC_TYPE(__pdesc, __val) \ | 73 | { |
74 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 22, 2, __val) | 74 | le32p_replace_bits((__pdesc + 1), __val, GENMASK(20, 16)); |
75 | #define SET_TX_DESC_PKT_OFFSET(__pdesc, __val) \ | 75 | } |
76 | SET_BITS_TO_LE_4BYTE(__pdesc+4, 24, 5, __val) | 76 | |
77 | 77 | static inline void set_tx_desc_sec_type(__le32 *__pdesc, u32 __val) | |
78 | 78 | { | |
79 | #define SET_TX_DESC_PAID(__pdesc, __val) \ | 79 | le32p_replace_bits((__pdesc + 1), __val, GENMASK(23, 22)); |
80 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 0, 9, __val) | 80 | } |
81 | #define SET_TX_DESC_CCA_RTS(__pdesc, __val) \ | 81 | |
82 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 10, 2, __val) | 82 | static inline void set_tx_desc_pkt_offset(__le32 *__pdesc, u32 __val) |
83 | #define SET_TX_DESC_AGG_ENABLE(__pdesc, __val) \ | 83 | { |
84 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 12, 1, __val) | 84 | le32p_replace_bits((__pdesc + 1), __val, GENMASK(28, 24)); |
85 | #define SET_TX_DESC_RDG_ENABLE(__pdesc, __val) \ | 85 | } |
86 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 13, 1, __val) | 86 | |
87 | #define SET_TX_DESC_BAR_RTY_TH(__pdesc, __val) \ | 87 | static inline void set_tx_desc_agg_enable(__le32 *__pdesc, u32 __val) |
88 | SET_BITS_TO_LE_4BYTE((__pdesc) + 8, 14, 2, __val) | 88 | { |
89 | #define SET_TX_DESC_AGG_BREAK(__pdesc, __val) \ | 89 | le32p_replace_bits((__pdesc + 2), __val, BIT(12)); |
90 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 16, 1, __val) | 90 | } |
91 | #define SET_TX_DESC_MORE_FRAG(__pdesc, __val) \ | 91 | |
92 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 17, 1, __val) | 92 | static inline void set_tx_desc_rdg_enable(__le32 *__pdesc, u32 __val) |
93 | #define SET_TX_DESC_RAW(__pdesc, __val) \ | 93 | { |
94 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 18, 1, __val) | 94 | le32p_replace_bits((__pdesc + 2), __val, BIT(13)); |
95 | #define SET_TX_DESC_SPE_RPT(__pdesc, __val) \ | 95 | } |
96 | SET_BITS_TO_LE_4BYTE((__pdesc) + 8, 19, 1, __val) | 96 | |
97 | #define SET_TX_DESC_AMPDU_DENSITY(__pdesc, __val) \ | 97 | static inline void set_tx_desc_more_frag(__le32 *__pdesc, u32 __val) |
98 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 20, 3, __val) | 98 | { |
99 | #define SET_TX_DESC_BT_INT(__pdesc, __val) \ | 99 | le32p_replace_bits((__pdesc + 2), __val, BIT(17)); |
100 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 23, 1, __val) | 100 | } |
101 | #define SET_TX_DESC_GID(__pdesc, __val) \ | 101 | |
102 | SET_BITS_TO_LE_4BYTE(__pdesc+8, 24, 6, __val) | 102 | static inline void set_tx_desc_ampdu_density(__le32 *__pdesc, u32 __val) |
103 | 103 | { | |
104 | 104 | le32p_replace_bits((__pdesc + 2), __val, GENMASK(22, 20)); | |
105 | #define SET_TX_DESC_WHEADER_LEN(__pdesc, __val) \ | 105 | } |
106 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 0, 4, __val) | 106 | |
107 | #define SET_TX_DESC_CHK_EN(__pdesc, __val) \ | 107 | static inline void set_tx_desc_hwseq_sel(__le32 *__pdesc, u32 __val) |
108 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 4, 1, __val) | 108 | { |
109 | #define SET_TX_DESC_EARLY_MODE(__pdesc, __val) \ | 109 | le32p_replace_bits((__pdesc + 3), __val, GENMASK(7, 6)); |
110 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 5, 1, __val) | 110 | } |
111 | #define SET_TX_DESC_HWSEQ_SEL(__pdesc, __val) \ | 111 | |
112 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 6, 2, __val) | 112 | static inline void set_tx_desc_use_rate(__le32 *__pdesc, u32 __val) |
113 | #define SET_TX_DESC_USE_RATE(__pdesc, __val) \ | 113 | { |
114 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 8, 1, __val) | 114 | le32p_replace_bits((__pdesc + 3), __val, BIT(8)); |
115 | #define SET_TX_DESC_DISABLE_RTS_FB(__pdesc, __val) \ | 115 | } |
116 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 9, 1, __val) | 116 | |
117 | #define SET_TX_DESC_DISABLE_FB(__pdesc, __val) \ | 117 | static inline void set_tx_desc_disable_fb(__le32 *__pdesc, u32 __val) |
118 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 10, 1, __val) | 118 | { |
119 | #define SET_TX_DESC_CTS2SELF(__pdesc, __val) \ | 119 | le32p_replace_bits((__pdesc + 3), __val, BIT(10)); |
120 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 11, 1, __val) | 120 | } |
121 | #define SET_TX_DESC_RTS_ENABLE(__pdesc, __val) \ | 121 | |
122 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 12, 1, __val) | 122 | static inline void set_tx_desc_cts2self(__le32 *__pdesc, u32 __val) |
123 | #define SET_TX_DESC_HW_RTS_ENABLE(__pdesc, __val) \ | 123 | { |
124 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 13, 1, __val) | 124 | le32p_replace_bits((__pdesc + 3), __val, BIT(11)); |
125 | #define SET_TX_DESC_NAV_USE_HDR(__pdesc, __val) \ | 125 | } |
126 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 15, 1, __val) | 126 | |
127 | #define SET_TX_DESC_USE_MAX_LEN(__pdesc, __val) \ | 127 | static inline void set_tx_desc_rts_enable(__le32 *__pdesc, u32 __val) |
128 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 16, 1, __val) | 128 | { |
129 | #define SET_TX_DESC_MAX_AGG_NUM(__pdesc, __val) \ | 129 | le32p_replace_bits((__pdesc + 3), __val, BIT(12)); |
130 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 17, 5, __val) | 130 | } |
131 | #define SET_TX_DESC_NDPA(__pdesc, __val) \ | 131 | |
132 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 22, 2, __val) | 132 | static inline void set_tx_desc_hw_rts_enable(__le32 *__pdesc, u32 __val) |
133 | #define SET_TX_DESC_AMPDU_MAX_TIME(__pdesc, __val) \ | 133 | { |
134 | SET_BITS_TO_LE_4BYTE(__pdesc+12, 24, 8, __val) | 134 | le32p_replace_bits((__pdesc + 3), __val, BIT(13)); |
135 | 135 | } | |
136 | 136 | ||
137 | #define SET_TX_DESC_TX_RATE(__pdesc, __val) \ | 137 | static inline void set_tx_desc_nav_use_hdr(__le32 *__pdesc, u32 __val) |
138 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 0, 7, __val) | 138 | { |
139 | #define SET_TX_DESC_DATA_RATE_FB_LIMIT(__pdesc, __val) \ | 139 | le32p_replace_bits((__pdesc + 3), __val, BIT(15)); |
140 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 8, 5, __val) | 140 | } |
141 | #define SET_TX_DESC_RTS_RATE_FB_LIMIT(__pdesc, __val) \ | 141 | |
142 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 13, 4, __val) | 142 | static inline void set_tx_desc_max_agg_num(__le32 *__pdesc, u32 __val) |
143 | #define SET_TX_DESC_RETRY_LIMIT_ENABLE(__pdesc, __val) \ | 143 | { |
144 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 17, 1, __val) | 144 | le32p_replace_bits((__pdesc + 3), __val, GENMASK(21, 17)); |
145 | #define SET_TX_DESC_DATA_RETRY_LIMIT(__pdesc, __val) \ | 145 | } |
146 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 18, 6, __val) | 146 | |
147 | #define SET_TX_DESC_RTS_RATE(__pdesc, __val) \ | 147 | static inline void set_tx_desc_tx_rate(__le32 *__pdesc, u32 __val) |
148 | SET_BITS_TO_LE_4BYTE(__pdesc+16, 24, 5, __val) | 148 | { |
149 | 149 | le32p_replace_bits((__pdesc + 4), __val, GENMASK(6, 0)); | |
150 | 150 | } | |
151 | #define SET_TX_DESC_TX_SUB_CARRIER(__pdesc, __val) \ | 151 | |
152 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 0, 4, __val) | 152 | static inline void set_tx_desc_data_rate_fb_limit(__le32 *__pdesc, u32 __val) |
153 | #define SET_TX_DESC_DATA_SHORTGI(__pdesc, __val) \ | 153 | { |
154 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 4, 1, __val) | 154 | le32p_replace_bits((__pdesc + 4), __val, GENMASK(12, 8)); |
155 | #define SET_TX_DESC_DATA_BW(__pdesc, __val) \ | 155 | } |
156 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 5, 2, __val) | 156 | |
157 | #define SET_TX_DESC_DATA_LDPC(__pdesc, __val) \ | 157 | static inline void set_tx_desc_rts_rate_fb_limit(__le32 *__pdesc, u32 __val) |
158 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 7, 1, __val) | 158 | { |
159 | #define SET_TX_DESC_DATA_STBC(__pdesc, __val) \ | 159 | le32p_replace_bits((__pdesc + 4), __val, GENMASK(16, 13)); |
160 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 8, 2, __val) | 160 | } |
161 | #define SET_TX_DESC_CTROL_STBC(__pdesc, __val) \ | 161 | |
162 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 10, 2, __val) | 162 | static inline void set_tx_desc_rts_rate(__le32 *__pdesc, u32 __val) |
163 | #define SET_TX_DESC_RTS_SHORT(__pdesc, __val) \ | 163 | { |
164 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 12, 1, __val) | 164 | le32p_replace_bits((__pdesc + 4), __val, GENMASK(28, 24)); |
165 | #define SET_TX_DESC_RTS_SC(__pdesc, __val) \ | 165 | } |
166 | SET_BITS_TO_LE_4BYTE(__pdesc+20, 13, 4, __val) | 166 | |
167 | 167 | static inline void set_tx_desc_tx_sub_carrier(__le32 *__pdesc, u32 __val) | |
168 | #define SET_TX_DESC_SW_DEFINE(__pdesc, __val) \ | 168 | { |
169 | SET_BITS_TO_LE_4BYTE((__pdesc) + 24, 0, 12, __val) | 169 | le32p_replace_bits((__pdesc + 5), __val, GENMASK(3, 0)); |
170 | #define SET_TX_DESC_MBSSID(__pdesc, __val) \ | 170 | } |
171 | SET_BITS_TO_LE_4BYTE((__pdesc) + 24, 12, 4, __val) | 171 | |
172 | #define SET_TX_DESC_ANTSEL_A(__pdesc, __val) \ | 172 | static inline void set_tx_desc_data_shortgi(__le32 *__pdesc, u32 __val) |
173 | SET_BITS_TO_LE_4BYTE((__pdesc) + 24, 16, 3, __val) | 173 | { |
174 | #define SET_TX_DESC_ANTSEL_B(__pdesc, __val) \ | 174 | le32p_replace_bits((__pdesc + 5), __val, BIT(4)); |
175 | SET_BITS_TO_LE_4BYTE((__pdesc) + 24, 19, 3, __val) | 175 | } |
176 | #define SET_TX_DESC_ANTSEL_C(__pdesc, __val) \ | 176 | |
177 | SET_BITS_TO_LE_4BYTE((__pdesc) + 24, 22, 3, __val) | 177 | static inline void set_tx_desc_data_bw(__le32 *__pdesc, u32 __val) |
178 | #define SET_TX_DESC_ANTSEL_D(__pdesc, __val) \ | 178 | { |
179 | SET_BITS_TO_LE_4BYTE((__pdesc) + 24, 25, 3, __val) | 179 | le32p_replace_bits((__pdesc + 5), __val, GENMASK(6, 5)); |
180 | 180 | } | |
181 | #define SET_TX_DESC_TX_BUFFER_SIZE(__pdesc, __val) \ | 181 | |
182 | SET_BITS_TO_LE_4BYTE(__pdesc+28, 0, 16, __val) | 182 | static inline void set_tx_desc_rts_short(__le32 *__pdesc, u32 __val) |
183 | 183 | { | |
184 | #define GET_TX_DESC_TX_BUFFER_SIZE(__pdesc) \ | 184 | le32p_replace_bits((__pdesc + 5), __val, BIT(12)); |
185 | LE_BITS_TO_4BYTE(__pdesc+28, 0, 16) | 185 | } |
186 | 186 | ||
187 | #define SET_TX_DESC_HWSEQ_EN(__pdesc, __val) \ | 187 | static inline void set_tx_desc_rts_sc(__le32 *__pdesc, u32 __val) |
188 | SET_BITS_TO_LE_4BYTE(__pdesc+32, 15, 1, __val) | 188 | { |
189 | 189 | le32p_replace_bits((__pdesc + 5), __val, GENMASK(16, 13)); | |
190 | #define SET_TX_DESC_SEQ(__pdesc, __val) \ | 190 | } |
191 | SET_BITS_TO_LE_4BYTE(__pdesc+36, 12, 12, __val) | 191 | |
192 | 192 | static inline void set_tx_desc_tx_buffer_size(__le32 *__pdesc, u32 __val) | |
193 | #define SET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc, __val) \ | 193 | { |
194 | SET_BITS_TO_LE_4BYTE(__pdesc+40, 0, 32, __val) | 194 | le32p_replace_bits((__pdesc + 7), __val, GENMASK(15, 0)); |
195 | 195 | } | |
196 | #define GET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc) \ | 196 | |
197 | LE_BITS_TO_4BYTE(__pdesc+40, 0, 32) | 197 | static inline void set_tx_desc_hwseq_en(__le32 *__pdesc, u32 __val) |
198 | 198 | { | |
199 | 199 | le32p_replace_bits((__pdesc + 8), __val, BIT(15)); | |
200 | #define SET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc, __val) \ | 200 | } |
201 | SET_BITS_TO_LE_4BYTE(__pdesc+48, 0, 32, __val) | 201 | |
202 | 202 | static inline void set_tx_desc_seq(__le32 *__pdesc, u32 __val) | |
203 | #define GET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc) \ | 203 | { |
204 | LE_BITS_TO_4BYTE(__pdesc+48, 0, 32) | 204 | le32p_replace_bits((__pdesc + 9), __val, GENMASK(23, 12)); |
205 | 205 | } | |
206 | #define GET_RX_DESC_PKT_LEN(__pdesc) \ | 206 | |
207 | LE_BITS_TO_4BYTE(__pdesc, 0, 14) | 207 | static inline void set_tx_desc_tx_buffer_address(__le32 *__pdesc, u32 __val) |
208 | #define GET_RX_DESC_CRC32(__pdesc) \ | 208 | { |
209 | LE_BITS_TO_4BYTE(__pdesc, 14, 1) | 209 | *(__pdesc + 10) = cpu_to_le32(__val); |
210 | #define GET_RX_DESC_ICV(__pdesc) \ | 210 | } |
211 | LE_BITS_TO_4BYTE(__pdesc, 15, 1) | 211 | |
212 | #define GET_RX_DESC_DRV_INFO_SIZE(__pdesc) \ | 212 | static inline u32 get_tx_desc_tx_buffer_address(__le32 *__pdesc) |
213 | LE_BITS_TO_4BYTE(__pdesc, 16, 4) | 213 | { |
214 | #define GET_RX_DESC_SECURITY(__pdesc) \ | 214 | return le32_to_cpu(*((__pdesc + 10))); |
215 | LE_BITS_TO_4BYTE(__pdesc, 20, 3) | 215 | } |
216 | #define GET_RX_DESC_QOS(__pdesc) \ | 216 | |
217 | LE_BITS_TO_4BYTE(__pdesc, 23, 1) | 217 | static inline void set_tx_desc_next_desc_address(__le32 *__pdesc, u32 __val) |
218 | #define GET_RX_DESC_SHIFT(__pdesc) \ | 218 | { |
219 | LE_BITS_TO_4BYTE(__pdesc, 24, 2) | 219 | *(__pdesc + 12) = cpu_to_le32(__val); |
220 | #define GET_RX_DESC_PHYST(__pdesc) \ | 220 | } |
221 | LE_BITS_TO_4BYTE(__pdesc, 26, 1) | 221 | |
222 | #define GET_RX_DESC_SWDEC(__pdesc) \ | 222 | static inline u32 get_rx_desc_pkt_len(__le32 *__pdesc) |
223 | LE_BITS_TO_4BYTE(__pdesc, 27, 1) | 223 | { |
224 | #define GET_RX_DESC_LS(__pdesc) \ | 224 | return le32_get_bits(*__pdesc, GENMASK(13, 0)); |
225 | LE_BITS_TO_4BYTE(__pdesc, 28, 1) | 225 | } |
226 | #define GET_RX_DESC_FS(__pdesc) \ | 226 | |
227 | LE_BITS_TO_4BYTE(__pdesc, 29, 1) | 227 | static inline u32 get_rx_desc_crc32(__le32 *__pdesc) |
228 | #define GET_RX_DESC_EOR(__pdesc) \ | 228 | { |
229 | LE_BITS_TO_4BYTE(__pdesc, 30, 1) | 229 | return le32_get_bits(*__pdesc, BIT(14)); |
230 | #define GET_RX_DESC_OWN(__pdesc) \ | 230 | } |
231 | LE_BITS_TO_4BYTE(__pdesc, 31, 1) | 231 | |
232 | 232 | static inline u32 get_rx_desc_icv(__le32 *__pdesc) | |
233 | #define SET_RX_DESC_PKT_LEN(__pdesc, __val) \ | 233 | { |
234 | SET_BITS_TO_LE_4BYTE(__pdesc, 0, 14, __val) | 234 | return le32_get_bits(*__pdesc, BIT(15)); |
235 | #define SET_RX_DESC_EOR(__pdesc, __val) \ | 235 | } |
236 | SET_BITS_TO_LE_4BYTE(__pdesc, 30, 1, __val) | 236 | |
237 | #define SET_RX_DESC_OWN(__pdesc, __val) \ | 237 | static inline u32 get_rx_desc_drv_info_size(__le32 *__pdesc) |
238 | SET_BITS_TO_LE_4BYTE(__pdesc, 31, 1, __val) | 238 | { |
239 | 239 | return le32_get_bits(*__pdesc, GENMASK(19, 16)); | |
240 | #define GET_RX_DESC_MACID(__pdesc) \ | 240 | } |
241 | LE_BITS_TO_4BYTE(__pdesc+4, 0, 7) | 241 | |
242 | #define GET_RX_DESC_TID(__pdesc) \ | 242 | static inline u32 get_rx_desc_shift(__le32 *__pdesc) |
243 | LE_BITS_TO_4BYTE(__pdesc+4, 8, 4) | 243 | { |
244 | #define GET_RX_DESC_AMSDU(__pdesc) \ | 244 | return le32_get_bits(*__pdesc, GENMASK(25, 24)); |
245 | LE_BITS_TO_4BYTE(__pdesc+4, 13, 1) | 245 | } |
246 | #define GET_RX_STATUS_DESC_RXID_MATCH(__pdesc) \ | 246 | |
247 | LE_BITS_TO_4BYTE(__pdesc+4, 14, 1) | 247 | static inline u32 get_rx_desc_physt(__le32 *__pdesc) |
248 | #define GET_RX_DESC_PAGGR(__pdesc) \ | 248 | { |
249 | LE_BITS_TO_4BYTE(__pdesc+4, 15, 1) | 249 | return le32_get_bits(*__pdesc, BIT(26)); |
250 | #define GET_RX_DESC_A1_FIT(__pdesc) \ | 250 | } |
251 | LE_BITS_TO_4BYTE(__pdesc+4, 16, 4) | 251 | |
252 | #define GET_RX_DESC_CHKERR(__pdesc) \ | 252 | static inline u32 get_rx_desc_swdec(__le32 *__pdesc) |
253 | LE_BITS_TO_4BYTE(__pdesc+4, 20, 1) | 253 | { |
254 | #define GET_RX_DESC_IPVER(__pdesc) \ | 254 | return le32_get_bits(*__pdesc, BIT(27)); |
255 | LE_BITS_TO_4BYTE(__pdesc+4, 21, 1) | 255 | } |
256 | #define GET_RX_STATUS_DESC_IS_TCPUDP(__pdesc) \ | 256 | |
257 | LE_BITS_TO_4BYTE(__pdesc+4, 22, 1) | 257 | static inline u32 get_rx_desc_own(__le32 *__pdesc) |
258 | #define GET_RX_STATUS_DESC_CHK_VLD(__pdesc) \ | 258 | { |
259 | LE_BITS_TO_4BYTE(__pdesc+4, 23, 1) | 259 | return le32_get_bits(*__pdesc, BIT(31)); |
260 | #define GET_RX_DESC_PAM(__pdesc) \ | 260 | } |
261 | LE_BITS_TO_4BYTE(__pdesc+4, 24, 1) | 261 | |
262 | #define GET_RX_DESC_PWR(__pdesc) \ | 262 | static inline void set_rx_desc_pkt_len(__le32 *__pdesc, u32 __val) |
263 | LE_BITS_TO_4BYTE(__pdesc+4, 25, 1) | 263 | { |
264 | #define GET_RX_DESC_MD(__pdesc) \ | 264 | le32p_replace_bits(__pdesc, __val, GENMASK(13, 0)); |
265 | LE_BITS_TO_4BYTE(__pdesc+4, 26, 1) | 265 | } |
266 | #define GET_RX_DESC_MF(__pdesc) \ | 266 | |
267 | LE_BITS_TO_4BYTE(__pdesc+4, 27, 1) | 267 | static inline void set_rx_desc_eor(__le32 *__pdesc, u32 __val) |
268 | #define GET_RX_DESC_TYPE(__pdesc) \ | 268 | { |
269 | LE_BITS_TO_4BYTE(__pdesc+4, 28, 2) | 269 | le32p_replace_bits(__pdesc, __val, BIT(30)); |
270 | #define GET_RX_DESC_MC(__pdesc) \ | 270 | } |
271 | LE_BITS_TO_4BYTE(__pdesc+4, 30, 1) | 271 | |
272 | #define GET_RX_DESC_BC(__pdesc) \ | 272 | static inline void set_rx_desc_own(__le32 *__pdesc, u32 __val) |
273 | LE_BITS_TO_4BYTE(__pdesc+4, 31, 1) | 273 | { |
274 | 274 | le32p_replace_bits(__pdesc, __val, BIT(31)); | |
275 | 275 | } | |
276 | #define GET_RX_DESC_SEQ(__pdesc) \ | 276 | |
277 | LE_BITS_TO_4BYTE(__pdesc+8, 0, 12) | 277 | static inline u32 get_rx_desc_macid(__le32 *__pdesc) |
278 | #define GET_RX_DESC_FRAG(__pdesc) \ | 278 | { |
279 | LE_BITS_TO_4BYTE(__pdesc+8, 12, 4) | 279 | return le32_get_bits(*(__pdesc + 1), GENMASK(6, 0)); |
280 | #define GET_RX_STATUS_DESC_RX_IS_QOS(__pdesc) \ | 280 | } |
281 | LE_BITS_TO_4BYTE(__pdesc+8, 16, 1) | 281 | |
282 | #define GET_RX_STATUS_DESC_WLANHD_IV_LEN(__pdesc) \ | 282 | static inline u32 get_rx_desc_paggr(__le32 *__pdesc) |
283 | LE_BITS_TO_4BYTE(__pdesc+8, 18, 6) | 283 | { |
284 | #define GET_RX_STATUS_DESC_RPT_SEL(__pdesc) \ | 284 | return le32_get_bits(*(__pdesc + 1), BIT(15)); |
285 | LE_BITS_TO_4BYTE(__pdesc+8, 28, 1) | 285 | } |
286 | 286 | ||
287 | 287 | static inline u32 get_rx_status_desc_rpt_sel(__le32 *__pdesc) | |
288 | #define GET_RX_DESC_RXMCS(__pdesc) \ | 288 | { |
289 | LE_BITS_TO_4BYTE(__pdesc+12, 0, 7) | 289 | return le32_get_bits(*(__pdesc + 2), BIT(28)); |
290 | #define GET_RX_DESC_RXHT(__pdesc) \ | 290 | } |
291 | LE_BITS_TO_4BYTE(__pdesc+12, 6, 1) | 291 | |
292 | #define GET_RX_STATUS_DESC_RX_GF(__pdesc) \ | 292 | static inline u32 get_rx_desc_rxmcs(__le32 *__pdesc) |
293 | LE_BITS_TO_4BYTE(__pdesc+12, 7, 1) | 293 | { |
294 | #define GET_RX_DESC_HTC(__pdesc) \ | 294 | return le32_get_bits(*(__pdesc + 3), GENMASK(6, 0)); |
295 | LE_BITS_TO_4BYTE(__pdesc+12, 10, 1) | 295 | } |
296 | #define GET_RX_STATUS_DESC_EOSP(__pdesc) \ | 296 | |
297 | LE_BITS_TO_4BYTE(__pdesc+12, 11, 1) | 297 | static inline u32 get_rx_desc_rxht(__le32 *__pdesc) |
298 | #define GET_RX_STATUS_DESC_BSSID_FIT(__pdesc) \ | 298 | { |
299 | LE_BITS_TO_4BYTE(__pdesc+12, 12, 2) | 299 | return le32_get_bits(*(__pdesc + 3), BIT(6)); |
300 | 300 | } | |
301 | #define GET_RX_STATUS_DESC_PATTERN_MATCH(__pdesc) \ | 301 | |
302 | LE_BITS_TO_4BYTE(__pdesc+12, 29, 1) | 302 | static inline u32 get_rx_status_desc_pattern_match(__le32 *__pdesc) |
303 | #define GET_RX_STATUS_DESC_UNICAST_MATCH(__pdesc) \ | 303 | { |
304 | LE_BITS_TO_4BYTE(__pdesc+12, 30, 1) | 304 | return le32_get_bits(*(__pdesc + 3), BIT(29)); |
305 | #define GET_RX_STATUS_DESC_MAGIC_MATCH(__pdesc) \ | 305 | } |
306 | LE_BITS_TO_4BYTE(__pdesc+12, 31, 1) | 306 | |
307 | 307 | static inline u32 get_rx_status_desc_unicast_match(__le32 *__pdesc) | |
308 | #define GET_RX_DESC_SPLCP(__pdesc) \ | 308 | { |
309 | LE_BITS_TO_4BYTE(__pdesc+16, 0, 1) | 309 | return le32_get_bits(*(__pdesc + 3), BIT(30)); |
310 | #define GET_RX_STATUS_DESC_LDPC(__pdesc) \ | 310 | } |
311 | LE_BITS_TO_4BYTE(__pdesc+16, 1, 1) | 311 | |
312 | #define GET_RX_STATUS_DESC_STBC(__pdesc) \ | 312 | static inline u32 get_rx_status_desc_magic_match(__le32 *__pdesc) |
313 | LE_BITS_TO_4BYTE(__pdesc+16, 2, 1) | 313 | { |
314 | #define GET_RX_DESC_BW(__pdesc) \ | 314 | return le32_get_bits(*(__pdesc + 3), BIT(31)); |
315 | LE_BITS_TO_4BYTE(__pdesc+16, 4, 2) | 315 | } |
316 | 316 | ||
317 | #define GET_RX_DESC_TSFL(__pdesc) \ | 317 | static inline u32 get_rx_desc_splcp(__le32 *__pdesc) |
318 | LE_BITS_TO_4BYTE(__pdesc+20, 0, 32) | 318 | { |
319 | 319 | return le32_get_bits(*(__pdesc + 4), BIT(0)); | |
320 | #define GET_RX_DESC_BUFF_ADDR(__pdesc) \ | 320 | } |
321 | LE_BITS_TO_4BYTE(__pdesc+24, 0, 32) | 321 | |
322 | #define GET_RX_DESC_BUFF_ADDR64(__pdesc) \ | 322 | static inline u32 get_rx_desc_bw(__le32 *__pdesc) |
323 | LE_BITS_TO_4BYTE(__pdesc+28, 0, 32) | 323 | { |
324 | 324 | return le32_get_bits(*(__pdesc + 4), GENMASK(5, 4)); | |
325 | #define SET_RX_DESC_BUFF_ADDR(__pdesc, __val) \ | 325 | } |
326 | SET_BITS_TO_LE_4BYTE(__pdesc+24, 0, 32, __val) | 326 | |
327 | #define SET_RX_DESC_BUFF_ADDR64(__pdesc, __val) \ | 327 | static inline u32 get_rx_desc_tsfl(__le32 *__pdesc) |
328 | SET_BITS_TO_LE_4BYTE(__pdesc+28, 0, 32, __val) | 328 | { |
329 | 329 | return le32_to_cpu(*((__pdesc + 5))); | |
330 | } | ||
331 | |||
332 | static inline u32 get_rx_desc_buff_addr(__le32 *__pdesc) | ||
333 | { | ||
334 | return le32_to_cpu(*((__pdesc + 6))); | ||
335 | } | ||
336 | |||
337 | static inline void set_rx_desc_buff_addr(__le32 *__pdesc, u32 __val) | ||
338 | { | ||
339 | *(__pdesc + 6) = cpu_to_le32(__val); | ||
340 | } | ||
330 | 341 | ||
331 | /* TX report 2 format in Rx desc*/ | 342 | /* TX report 2 format in Rx desc*/ |
332 | 343 | ||
333 | #define GET_RX_RPT2_DESC_PKT_LEN(__rxstatusdesc) \ | 344 | static inline u32 get_rx_rpt2_desc_macid_valid_1(__le32 *__rxstatusdesc) |
334 | LE_BITS_TO_4BYTE(__rxstatusdesc, 0, 9) | 345 | { |
335 | #define GET_RX_RPT2_DESC_MACID_VALID_1(__rxstatusdesc) \ | 346 | return le32_to_cpu(*((__rxstatusdesc + 4))); |
336 | LE_BITS_TO_4BYTE(__rxstatusdesc+16, 0, 32) | 347 | } |
337 | #define GET_RX_RPT2_DESC_MACID_VALID_2(__rxstatusdesc) \ | 348 | |
338 | LE_BITS_TO_4BYTE(__rxstatusdesc+20, 0, 32) | 349 | static inline u32 get_rx_rpt2_desc_macid_valid_2(__le32 *__rxstatusdesc) |
339 | 350 | { | |
340 | #define SET_EARLYMODE_PKTNUM(__paddr, __value) \ | 351 | return le32_to_cpu(*((__rxstatusdesc + 5))); |
341 | SET_BITS_TO_LE_4BYTE(__paddr, 0, 4, __value) | 352 | } |
342 | #define SET_EARLYMODE_LEN0(__paddr, __value) \ | 353 | |
343 | SET_BITS_TO_LE_4BYTE(__paddr, 4, 12, __value) | 354 | static inline void set_earlymode_pktnum(__le32 *__paddr, u32 __value) |
344 | #define SET_EARLYMODE_LEN1(__paddr, __value) \ | 355 | { |
345 | SET_BITS_TO_LE_4BYTE(__paddr, 16, 12, __value) | 356 | le32p_replace_bits(__paddr, __value, GENMASK(3, 0)); |
346 | #define SET_EARLYMODE_LEN2_1(__paddr, __value) \ | 357 | } |
347 | SET_BITS_TO_LE_4BYTE(__paddr, 28, 4, __value) | 358 | |
348 | #define SET_EARLYMODE_LEN2_2(__paddr, __value) \ | 359 | static inline void set_earlymode_len0(__le32 *__paddr, u32 __value) |
349 | SET_BITS_TO_LE_4BYTE(__paddr+4, 0, 8, __value) | 360 | { |
350 | #define SET_EARLYMODE_LEN3(__paddr, __value) \ | 361 | le32p_replace_bits(__paddr, __value, GENMASK(15, 4)); |
351 | SET_BITS_TO_LE_4BYTE(__paddr+4, 8, 12, __value) | 362 | } |
352 | #define SET_EARLYMODE_LEN4(__paddr, __value) \ | 363 | |
353 | SET_BITS_TO_LE_4BYTE(__paddr+4, 20, 12, __value) | 364 | static inline void set_earlymode_len1(__le32 *__paddr, u32 __value) |
354 | 365 | { | |
355 | #define CLEAR_PCI_TX_DESC_CONTENT(__pdesc, _size) \ | 366 | le32p_replace_bits(__paddr, __value, GENMASK(27, 16)); |
356 | do { \ | 367 | } |
357 | if (_size > TX_DESC_NEXT_DESC_OFFSET) \ | 368 | |
358 | memset(__pdesc, 0, TX_DESC_NEXT_DESC_OFFSET); \ | 369 | static inline void set_earlymode_len2_1(__le32 *__paddr, u32 __value) |
359 | else \ | 370 | { |
360 | memset(__pdesc, 0, _size); \ | 371 | le32p_replace_bits(__paddr, __value, GENMASK(31, 28)); |
361 | } while (0) | 372 | } |
373 | |||
374 | static inline void set_earlymode_len2_2(__le32 *__paddr, u32 __value) | ||
375 | { | ||
376 | le32p_replace_bits((__paddr + 1), __value, GENMASK(7, 0)); | ||
377 | } | ||
378 | |||
379 | static inline void set_earlymode_len3(__le32 *__paddr, u32 __value) | ||
380 | { | ||
381 | le32p_replace_bits((__paddr + 1), __value, GENMASK(19, 8)); | ||
382 | } | ||
383 | |||
384 | static inline void set_earlymode_len4(__le32 *__paddr, u32 __value) | ||
385 | { | ||
386 | le32p_replace_bits((__paddr + 1), __value, GENMASK(31, 20)); | ||
387 | } | ||
388 | |||
389 | static inline void clear_pci_tx_desc_content(__le32 *__pdesc, u32 _size) | ||
390 | { | ||
391 | if (_size > TX_DESC_NEXT_DESC_OFFSET) | ||
392 | memset(__pdesc, 0, TX_DESC_NEXT_DESC_OFFSET); | ||
393 | else | ||
394 | memset(__pdesc, 0, _size); | ||
395 | } | ||
362 | 396 | ||
363 | struct phy_rx_agc_info_t { | 397 | struct phy_rx_agc_info_t { |
364 | #ifdef __LITTLE_ENDIAN | 398 | #ifdef __LITTLE_ENDIAN |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/def.h b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/def.h index 827bc5f35d2a..235a7965675c 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/def.h +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/def.h | |||
@@ -107,37 +107,6 @@ | |||
107 | 107 | ||
108 | #define MAX_RX_DMA_BUFFER_SIZE_8812 0x3E80 | 108 | #define MAX_RX_DMA_BUFFER_SIZE_8812 0x3E80 |
109 | 109 | ||
110 | #define C2H_RX_CMD_HDR_LEN 8 | ||
111 | #define GET_C2H_CMD_CMD_LEN(__prxhdr) \ | ||
112 | LE_BITS_TO_4BYTE((__prxhdr), 0, 16) | ||
113 | #define GET_C2H_CMD_ELEMENT_ID(__prxhdr) \ | ||
114 | LE_BITS_TO_4BYTE((__prxhdr), 16, 8) | ||
115 | #define GET_C2H_CMD_CMD_SEQ(__prxhdr) \ | ||
116 | LE_BITS_TO_4BYTE((__prxhdr), 24, 7) | ||
117 | #define GET_C2H_CMD_CONTINUE(__prxhdr) \ | ||
118 | LE_BITS_TO_4BYTE((__prxhdr), 31, 1) | ||
119 | #define GET_C2H_CMD_CONTENT(__prxhdr) \ | ||
120 | ((u8 *)(__prxhdr) + C2H_RX_CMD_HDR_LEN) | ||
121 | |||
122 | #define GET_C2H_CMD_FEEDBACK_ELEMENT_ID(__pcmdfbhdr) \ | ||
123 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 0, 8) | ||
124 | #define GET_C2H_CMD_FEEDBACK_CCX_LEN(__pcmdfbhdr) \ | ||
125 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 8, 8) | ||
126 | #define GET_C2H_CMD_FEEDBACK_CCX_CMD_CNT(__pcmdfbhdr) \ | ||
127 | LE_BITS_TO_4BYTE((__pcmdfbhdr), 16, 16) | ||
128 | #define GET_C2H_CMD_FEEDBACK_CCX_MAC_ID(__pcmdfbhdr) \ | ||
129 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 0, 5) | ||
130 | #define GET_C2H_CMD_FEEDBACK_CCX_VALID(__pcmdfbhdr) \ | ||
131 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 7, 1) | ||
132 | #define GET_C2H_CMD_FEEDBACK_CCX_RETRY_CNT(__pcmdfbhdr) \ | ||
133 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 8, 5) | ||
134 | #define GET_C2H_CMD_FEEDBACK_CCX_TOK(__pcmdfbhdr) \ | ||
135 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 15, 1) | ||
136 | #define GET_C2H_CMD_FEEDBACK_CCX_QSEL(__pcmdfbhdr) \ | ||
137 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 16, 4) | ||
138 | #define GET_C2H_CMD_FEEDBACK_CCX_SEQ(__pcmdfbhdr) \ | ||
139 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12) | ||
140 | |||
141 | #define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) | 110 | #define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) |
142 | 111 | ||
143 | #define CHIP_8812 BIT(2) | 112 | #define CHIP_8812 BIT(2) |
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c index 408af144098e..979e434a4e73 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c | |||
@@ -3613,14 +3613,14 @@ u8 rtl8821ae_phy_sw_chnl(struct ieee80211_hw *hw) | |||
3613 | 3613 | ||
3614 | u8 _rtl8812ae_get_right_chnl_place_for_iqk(u8 chnl) | 3614 | u8 _rtl8812ae_get_right_chnl_place_for_iqk(u8 chnl) |
3615 | { | 3615 | { |
3616 | u8 channel_all[TARGET_CHNL_NUM_2G_5G_8812] = { | 3616 | static const u8 channel_all[TARGET_CHNL_NUM_2G_5G_8812] = { |
3617 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, | 3617 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, |
3618 | 14, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, | 3618 | 14, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, |
3619 | 56, 58, 60, 62, 64, 100, 102, 104, 106, 108, | 3619 | 56, 58, 60, 62, 64, 100, 102, 104, 106, 108, |
3620 | 110, 112, 114, 116, 118, 120, 122, 124, 126, | 3620 | 110, 112, 114, 116, 118, 120, 122, 124, 126, |
3621 | 128, 130, 132, 134, 136, 138, 140, 149, 151, | 3621 | 128, 130, 132, 134, 136, 138, 140, 149, 151, |
3622 | 153, 155, 157, 159, 161, 163, 165}; | 3622 | 153, 155, 157, 159, 161, 163, 165}; |
3623 | u8 place = chnl; | 3623 | u8 place; |
3624 | 3624 | ||
3625 | if (chnl > 14) { | 3625 | if (chnl > 14) { |
3626 | for (place = 14; place < sizeof(channel_all); place++) | 3626 | for (place = 14; place < sizeof(channel_all); place++) |
diff --git a/drivers/net/wireless/realtek/rtw88/coex.c b/drivers/net/wireless/realtek/rtw88/coex.c index 26e16ad5892a..793b40bdbf7c 100644 --- a/drivers/net/wireless/realtek/rtw88/coex.c +++ b/drivers/net/wireless/realtek/rtw88/coex.c | |||
@@ -721,7 +721,7 @@ static void rtw_coex_set_rf_para(struct rtw_dev *rtwdev, | |||
721 | rtw_coex_set_bt_rx_gain(rtwdev, para.bt_lna_lvl); | 721 | rtw_coex_set_bt_rx_gain(rtwdev, para.bt_lna_lvl); |
722 | } | 722 | } |
723 | 723 | ||
724 | static u32 rtw_coex_read_indirect_reg(struct rtw_dev *rtwdev, u16 addr) | 724 | u32 rtw_coex_read_indirect_reg(struct rtw_dev *rtwdev, u16 addr) |
725 | { | 725 | { |
726 | u32 val; | 726 | u32 val; |
727 | 727 | ||
diff --git a/drivers/net/wireless/realtek/rtw88/coex.h b/drivers/net/wireless/realtek/rtw88/coex.h index 56e871b2d6c2..008d1af5996b 100644 --- a/drivers/net/wireless/realtek/rtw88/coex.h +++ b/drivers/net/wireless/realtek/rtw88/coex.h | |||
@@ -346,6 +346,7 @@ void rtw_coex_set_wl_rx_gain(struct rtw_dev *rtwdev, bool low_gain) | |||
346 | } | 346 | } |
347 | 347 | ||
348 | void rtw_coex_info_response(struct rtw_dev *rtwdev, struct sk_buff *skb); | 348 | void rtw_coex_info_response(struct rtw_dev *rtwdev, struct sk_buff *skb); |
349 | u32 rtw_coex_read_indirect_reg(struct rtw_dev *rtwdev, u16 addr); | ||
349 | void rtw_coex_write_indirect_reg(struct rtw_dev *rtwdev, u16 addr, | 350 | void rtw_coex_write_indirect_reg(struct rtw_dev *rtwdev, u16 addr, |
350 | u32 mask, u32 val); | 351 | u32 mask, u32 val); |
351 | void rtw_coex_write_scbd(struct rtw_dev *rtwdev, u16 bitpos, bool set); | 352 | void rtw_coex_write_scbd(struct rtw_dev *rtwdev, u16 bitpos, bool set); |
diff --git a/drivers/net/wireless/realtek/rtw88/mac80211.c b/drivers/net/wireless/realtek/rtw88/mac80211.c index fedea28c7a97..e5e3605bb693 100644 --- a/drivers/net/wireless/realtek/rtw88/mac80211.c +++ b/drivers/net/wireless/realtek/rtw88/mac80211.c | |||
@@ -256,7 +256,7 @@ static void rtw_ops_bss_info_changed(struct ieee80211_hw *hw, | |||
256 | if (conf->assoc) { | 256 | if (conf->assoc) { |
257 | rtw_coex_connect_notify(rtwdev, COEX_ASSOCIATE_FINISH); | 257 | rtw_coex_connect_notify(rtwdev, COEX_ASSOCIATE_FINISH); |
258 | net_type = RTW_NET_MGD_LINKED; | 258 | net_type = RTW_NET_MGD_LINKED; |
259 | chip->ops->do_iqk(rtwdev); | 259 | chip->ops->phy_calibration(rtwdev); |
260 | 260 | ||
261 | rtwvif->aid = conf->aid; | 261 | rtwvif->aid = conf->aid; |
262 | rtw_add_rsvd_page(rtwdev, RSVD_PS_POLL, true); | 262 | rtw_add_rsvd_page(rtwdev, RSVD_PS_POLL, true); |
diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c index e5a6bc094808..fc8f6213fc8f 100644 --- a/drivers/net/wireless/realtek/rtw88/main.c +++ b/drivers/net/wireless/realtek/rtw88/main.c | |||
@@ -1236,6 +1236,7 @@ int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw) | |||
1236 | ieee80211_hw_set(hw, SUPPORTS_PS); | 1236 | ieee80211_hw_set(hw, SUPPORTS_PS); |
1237 | ieee80211_hw_set(hw, SUPPORTS_DYNAMIC_PS); | 1237 | ieee80211_hw_set(hw, SUPPORTS_DYNAMIC_PS); |
1238 | ieee80211_hw_set(hw, SUPPORT_FAST_XMIT); | 1238 | ieee80211_hw_set(hw, SUPPORT_FAST_XMIT); |
1239 | ieee80211_hw_set(hw, SUPPORTS_AMSDU_IN_AMPDU); | ||
1239 | 1240 | ||
1240 | hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | | 1241 | hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | |
1241 | BIT(NL80211_IFTYPE_AP) | | 1242 | BIT(NL80211_IFTYPE_AP) | |
diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index 9208b9ce5513..bede3f38516e 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h | |||
@@ -640,7 +640,9 @@ struct rtw_chip_ops { | |||
640 | u8 antenna_rx); | 640 | u8 antenna_rx); |
641 | void (*cfg_ldo25)(struct rtw_dev *rtwdev, bool enable); | 641 | void (*cfg_ldo25)(struct rtw_dev *rtwdev, bool enable); |
642 | void (*false_alarm_statistics)(struct rtw_dev *rtwdev); | 642 | void (*false_alarm_statistics)(struct rtw_dev *rtwdev); |
643 | void (*do_iqk)(struct rtw_dev *rtwdev); | 643 | void (*phy_calibration)(struct rtw_dev *rtwdev); |
644 | void (*dpk_track)(struct rtw_dev *rtwdev); | ||
645 | void (*cck_pd_set)(struct rtw_dev *rtwdev, u8 level); | ||
644 | 646 | ||
645 | /* for coex */ | 647 | /* for coex */ |
646 | void (*coex_set_init)(struct rtw_dev *rtwdev); | 648 | void (*coex_set_init)(struct rtw_dev *rtwdev); |
@@ -864,6 +866,9 @@ struct rtw_chip_info { | |||
864 | const struct rtw_rfe_def *rfe_defs; | 866 | const struct rtw_rfe_def *rfe_defs; |
865 | u32 rfe_defs_size; | 867 | u32 rfe_defs_size; |
866 | 868 | ||
869 | bool en_dis_dpd; | ||
870 | u16 dpd_ratemask; | ||
871 | |||
867 | /* coex paras */ | 872 | /* coex paras */ |
868 | u32 coex_para_ver; | 873 | u32 coex_para_ver; |
869 | u8 bt_desired_ver; | 874 | u8 bt_desired_ver; |
@@ -1075,6 +1080,44 @@ struct rtw_coex { | |||
1075 | struct delayed_work defreeze_work; | 1080 | struct delayed_work defreeze_work; |
1076 | }; | 1081 | }; |
1077 | 1082 | ||
1083 | #define DPK_RF_REG_NUM 7 | ||
1084 | #define DPK_RF_PATH_NUM 2 | ||
1085 | #define DPK_BB_REG_NUM 18 | ||
1086 | #define DPK_CHANNEL_WIDTH_80 1 | ||
1087 | |||
1088 | DECLARE_EWMA(thermal, 10, 4); | ||
1089 | |||
1090 | struct rtw_dpk_info { | ||
1091 | bool is_dpk_pwr_on; | ||
1092 | bool is_reload; | ||
1093 | |||
1094 | DECLARE_BITMAP(dpk_path_ok, DPK_RF_PATH_NUM); | ||
1095 | |||
1096 | u8 thermal_dpk[DPK_RF_PATH_NUM]; | ||
1097 | struct ewma_thermal avg_thermal[DPK_RF_PATH_NUM]; | ||
1098 | |||
1099 | u32 gnt_control; | ||
1100 | u32 gnt_value; | ||
1101 | |||
1102 | u8 result[RTW_RF_PATH_MAX]; | ||
1103 | u8 dpk_txagc[RTW_RF_PATH_MAX]; | ||
1104 | u32 coef[RTW_RF_PATH_MAX][20]; | ||
1105 | u16 dpk_gs[RTW_RF_PATH_MAX]; | ||
1106 | u8 thermal_dpk_delta[RTW_RF_PATH_MAX]; | ||
1107 | u8 pre_pwsf[RTW_RF_PATH_MAX]; | ||
1108 | |||
1109 | u8 dpk_band; | ||
1110 | u8 dpk_ch; | ||
1111 | u8 dpk_bw; | ||
1112 | }; | ||
1113 | |||
1114 | struct rtw_phy_cck_pd_reg { | ||
1115 | u32 reg_pd; | ||
1116 | u32 mask_pd; | ||
1117 | u32 reg_cs; | ||
1118 | u32 mask_cs; | ||
1119 | }; | ||
1120 | |||
1078 | #define DACK_MSBK_BACKUP_NUM 0xf | 1121 | #define DACK_MSBK_BACKUP_NUM 0xf |
1079 | #define DACK_DCK_BACKUP_NUM 0x2 | 1122 | #define DACK_DCK_BACKUP_NUM 0x2 |
1080 | 1123 | ||
@@ -1108,6 +1151,12 @@ struct rtw_dm_info { | |||
1108 | u32 dack_adck[RTW_RF_PATH_MAX]; | 1151 | u32 dack_adck[RTW_RF_PATH_MAX]; |
1109 | u16 dack_msbk[RTW_RF_PATH_MAX][2][DACK_MSBK_BACKUP_NUM]; | 1152 | u16 dack_msbk[RTW_RF_PATH_MAX][2][DACK_MSBK_BACKUP_NUM]; |
1110 | u8 dack_dck[RTW_RF_PATH_MAX][2][DACK_DCK_BACKUP_NUM]; | 1153 | u8 dack_dck[RTW_RF_PATH_MAX][2][DACK_DCK_BACKUP_NUM]; |
1154 | |||
1155 | struct rtw_dpk_info dpk_info; | ||
1156 | |||
1157 | /* [bandwidth 0:20M/1:40M][number of path] */ | ||
1158 | u8 cck_pd_lv[2][RTW_RF_PATH_MAX]; | ||
1159 | u32 cck_fa_avg; | ||
1111 | }; | 1160 | }; |
1112 | 1161 | ||
1113 | struct rtw_efuse { | 1162 | struct rtw_efuse { |
@@ -1344,6 +1393,11 @@ static inline void rtw_flag_set(struct rtw_dev *rtwdev, enum rtw_flags flag) | |||
1344 | set_bit(flag, rtwdev->flags); | 1393 | set_bit(flag, rtwdev->flags); |
1345 | } | 1394 | } |
1346 | 1395 | ||
1396 | static inline bool rtw_is_assoc(struct rtw_dev *rtwdev) | ||
1397 | { | ||
1398 | return !!rtwdev->sta_cnt; | ||
1399 | } | ||
1400 | |||
1347 | void rtw_get_channel_params(struct cfg80211_chan_def *chandef, | 1401 | void rtw_get_channel_params(struct cfg80211_chan_def *chandef, |
1348 | struct rtw_channel_params *ch_param); | 1402 | struct rtw_channel_params *ch_param); |
1349 | bool check_hw_ready(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 target); | 1403 | bool check_hw_ready(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 target); |
diff --git a/drivers/net/wireless/realtek/rtw88/phy.c b/drivers/net/wireless/realtek/rtw88/phy.c index 528ee1ee2fd2..d3d3f40de75e 100644 --- a/drivers/net/wireless/realtek/rtw88/phy.c +++ b/drivers/net/wireless/realtek/rtw88/phy.c | |||
@@ -111,6 +111,19 @@ enum rtw_phy_band_type { | |||
111 | PHY_BAND_5G = 1, | 111 | PHY_BAND_5G = 1, |
112 | }; | 112 | }; |
113 | 113 | ||
114 | static void rtw_phy_cck_pd_init(struct rtw_dev *rtwdev) | ||
115 | { | ||
116 | struct rtw_dm_info *dm_info = &rtwdev->dm_info; | ||
117 | u8 i, j; | ||
118 | |||
119 | for (i = 0; i <= RTW_CHANNEL_WIDTH_40; i++) { | ||
120 | for (j = 0; j < RTW_RF_PATH_MAX; j++) | ||
121 | dm_info->cck_pd_lv[i][j] = 0; | ||
122 | } | ||
123 | |||
124 | dm_info->cck_fa_avg = CCK_FA_AVG_RESET; | ||
125 | } | ||
126 | |||
114 | void rtw_phy_init(struct rtw_dev *rtwdev) | 127 | void rtw_phy_init(struct rtw_dev *rtwdev) |
115 | { | 128 | { |
116 | struct rtw_chip_info *chip = rtwdev->chip; | 129 | struct rtw_chip_info *chip = rtwdev->chip; |
@@ -129,6 +142,7 @@ void rtw_phy_init(struct rtw_dev *rtwdev) | |||
129 | addr = chip->dig[0].addr; | 142 | addr = chip->dig[0].addr; |
130 | mask = chip->dig[0].mask; | 143 | mask = chip->dig[0].mask; |
131 | dm_info->igi_history[0] = rtw_read32_mask(rtwdev, addr, mask); | 144 | dm_info->igi_history[0] = rtw_read32_mask(rtwdev, addr, mask); |
145 | rtw_phy_cck_pd_init(rtwdev); | ||
132 | } | 146 | } |
133 | 147 | ||
134 | void rtw_phy_dig_write(struct rtw_dev *rtwdev, u8 igi) | 148 | void rtw_phy_dig_write(struct rtw_dev *rtwdev, u8 igi) |
@@ -439,12 +453,100 @@ static void rtw_phy_ra_info_update(struct rtw_dev *rtwdev) | |||
439 | rtw_iterate_stas_atomic(rtwdev, rtw_phy_ra_info_update_iter, rtwdev); | 453 | rtw_iterate_stas_atomic(rtwdev, rtw_phy_ra_info_update_iter, rtwdev); |
440 | } | 454 | } |
441 | 455 | ||
456 | static void rtw_phy_dpk_track(struct rtw_dev *rtwdev) | ||
457 | { | ||
458 | struct rtw_chip_info *chip = rtwdev->chip; | ||
459 | |||
460 | if (chip->ops->dpk_track) | ||
461 | chip->ops->dpk_track(rtwdev); | ||
462 | } | ||
463 | |||
464 | #define CCK_PD_LV_MAX 5 | ||
465 | #define CCK_PD_FA_LV1_MIN 1000 | ||
466 | #define CCK_PD_FA_LV0_MAX 500 | ||
467 | |||
468 | static u8 rtw_phy_cck_pd_lv_unlink(struct rtw_dev *rtwdev) | ||
469 | { | ||
470 | struct rtw_dm_info *dm_info = &rtwdev->dm_info; | ||
471 | u32 cck_fa_avg = dm_info->cck_fa_avg; | ||
472 | |||
473 | if (cck_fa_avg > CCK_PD_FA_LV1_MIN) | ||
474 | return 1; | ||
475 | |||
476 | if (cck_fa_avg < CCK_PD_FA_LV0_MAX) | ||
477 | return 0; | ||
478 | |||
479 | return CCK_PD_LV_MAX; | ||
480 | } | ||
481 | |||
482 | #define CCK_PD_IGI_LV4_VAL 0x38 | ||
483 | #define CCK_PD_IGI_LV3_VAL 0x2a | ||
484 | #define CCK_PD_IGI_LV2_VAL 0x24 | ||
485 | #define CCK_PD_RSSI_LV4_VAL 32 | ||
486 | #define CCK_PD_RSSI_LV3_VAL 32 | ||
487 | #define CCK_PD_RSSI_LV2_VAL 24 | ||
488 | |||
489 | static u8 rtw_phy_cck_pd_lv_link(struct rtw_dev *rtwdev) | ||
490 | { | ||
491 | struct rtw_dm_info *dm_info = &rtwdev->dm_info; | ||
492 | u8 igi = dm_info->igi_history[0]; | ||
493 | u8 rssi = dm_info->min_rssi; | ||
494 | u32 cck_fa_avg = dm_info->cck_fa_avg; | ||
495 | |||
496 | if (igi > CCK_PD_IGI_LV4_VAL && rssi > CCK_PD_RSSI_LV4_VAL) | ||
497 | return 4; | ||
498 | if (igi > CCK_PD_IGI_LV3_VAL && rssi > CCK_PD_RSSI_LV3_VAL) | ||
499 | return 3; | ||
500 | if (igi > CCK_PD_IGI_LV2_VAL || rssi > CCK_PD_RSSI_LV2_VAL) | ||
501 | return 2; | ||
502 | if (cck_fa_avg > CCK_PD_FA_LV1_MIN) | ||
503 | return 1; | ||
504 | if (cck_fa_avg < CCK_PD_FA_LV0_MAX) | ||
505 | return 0; | ||
506 | |||
507 | return CCK_PD_LV_MAX; | ||
508 | } | ||
509 | |||
510 | static u8 rtw_phy_cck_pd_lv(struct rtw_dev *rtwdev) | ||
511 | { | ||
512 | if (!rtw_is_assoc(rtwdev)) | ||
513 | return rtw_phy_cck_pd_lv_unlink(rtwdev); | ||
514 | else | ||
515 | return rtw_phy_cck_pd_lv_link(rtwdev); | ||
516 | } | ||
517 | |||
518 | static void rtw_phy_cck_pd(struct rtw_dev *rtwdev) | ||
519 | { | ||
520 | struct rtw_dm_info *dm_info = &rtwdev->dm_info; | ||
521 | struct rtw_chip_info *chip = rtwdev->chip; | ||
522 | u32 cck_fa = dm_info->cck_fa_cnt; | ||
523 | u8 level; | ||
524 | |||
525 | if (rtwdev->hal.current_band_type != RTW_BAND_2G) | ||
526 | return; | ||
527 | |||
528 | if (dm_info->cck_fa_avg == CCK_FA_AVG_RESET) | ||
529 | dm_info->cck_fa_avg = cck_fa; | ||
530 | else | ||
531 | dm_info->cck_fa_avg = (dm_info->cck_fa_avg * 3 + cck_fa) >> 2; | ||
532 | |||
533 | level = rtw_phy_cck_pd_lv(rtwdev); | ||
534 | |||
535 | if (level >= CCK_PD_LV_MAX) | ||
536 | return; | ||
537 | |||
538 | if (chip->ops->cck_pd_set) | ||
539 | chip->ops->cck_pd_set(rtwdev, level); | ||
540 | } | ||
541 | |||
442 | void rtw_phy_dynamic_mechanism(struct rtw_dev *rtwdev) | 542 | void rtw_phy_dynamic_mechanism(struct rtw_dev *rtwdev) |
443 | { | 543 | { |
444 | /* for further calculation */ | 544 | /* for further calculation */ |
445 | rtw_phy_statistics(rtwdev); | 545 | rtw_phy_statistics(rtwdev); |
446 | rtw_phy_dig(rtwdev); | 546 | rtw_phy_dig(rtwdev); |
547 | rtw_phy_cck_pd(rtwdev); | ||
447 | rtw_phy_ra_info_update(rtwdev); | 548 | rtw_phy_ra_info_update(rtwdev); |
549 | rtw_phy_dpk_track(rtwdev); | ||
448 | } | 550 | } |
449 | 551 | ||
450 | #define FRAC_BITS 3 | 552 | #define FRAC_BITS 3 |
@@ -1316,11 +1418,20 @@ void rtw_phy_cfg_rf(struct rtw_dev *rtwdev, const struct rtw_table *tbl, | |||
1316 | static void rtw_load_rfk_table(struct rtw_dev *rtwdev) | 1418 | static void rtw_load_rfk_table(struct rtw_dev *rtwdev) |
1317 | { | 1419 | { |
1318 | struct rtw_chip_info *chip = rtwdev->chip; | 1420 | struct rtw_chip_info *chip = rtwdev->chip; |
1421 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
1319 | 1422 | ||
1320 | if (!chip->rfk_init_tbl) | 1423 | if (!chip->rfk_init_tbl) |
1321 | return; | 1424 | return; |
1322 | 1425 | ||
1426 | rtw_write32_mask(rtwdev, 0x1e24, BIT(17), 0x1); | ||
1427 | rtw_write32_mask(rtwdev, 0x1cd0, BIT(28), 0x1); | ||
1428 | rtw_write32_mask(rtwdev, 0x1cd0, BIT(29), 0x1); | ||
1429 | rtw_write32_mask(rtwdev, 0x1cd0, BIT(30), 0x1); | ||
1430 | rtw_write32_mask(rtwdev, 0x1cd0, BIT(31), 0x0); | ||
1431 | |||
1323 | rtw_load_table(rtwdev, chip->rfk_init_tbl); | 1432 | rtw_load_table(rtwdev, chip->rfk_init_tbl); |
1433 | |||
1434 | dpk_info->is_dpk_pwr_on = 1; | ||
1324 | } | 1435 | } |
1325 | 1436 | ||
1326 | void rtw_phy_load_tables(struct rtw_dev *rtwdev) | 1437 | void rtw_phy_load_tables(struct rtw_dev *rtwdev) |
@@ -1430,6 +1541,37 @@ static u8 rtw_get_channel_group(u8 channel) | |||
1430 | } | 1541 | } |
1431 | } | 1542 | } |
1432 | 1543 | ||
1544 | static s8 rtw_phy_get_dis_dpd_by_rate_diff(struct rtw_dev *rtwdev, u16 rate) | ||
1545 | { | ||
1546 | struct rtw_chip_info *chip = rtwdev->chip; | ||
1547 | s8 dpd_diff = 0; | ||
1548 | |||
1549 | if (!chip->en_dis_dpd) | ||
1550 | return 0; | ||
1551 | |||
1552 | #define RTW_DPD_RATE_CHECK(_rate) \ | ||
1553 | case DESC_RATE ## _rate: \ | ||
1554 | if (DIS_DPD_RATE ## _rate & chip->dpd_ratemask) \ | ||
1555 | dpd_diff = -6 * chip->txgi_factor; \ | ||
1556 | break | ||
1557 | |||
1558 | switch (rate) { | ||
1559 | RTW_DPD_RATE_CHECK(6M); | ||
1560 | RTW_DPD_RATE_CHECK(9M); | ||
1561 | RTW_DPD_RATE_CHECK(MCS0); | ||
1562 | RTW_DPD_RATE_CHECK(MCS1); | ||
1563 | RTW_DPD_RATE_CHECK(MCS8); | ||
1564 | RTW_DPD_RATE_CHECK(MCS9); | ||
1565 | RTW_DPD_RATE_CHECK(VHT1SS_MCS0); | ||
1566 | RTW_DPD_RATE_CHECK(VHT1SS_MCS1); | ||
1567 | RTW_DPD_RATE_CHECK(VHT2SS_MCS0); | ||
1568 | RTW_DPD_RATE_CHECK(VHT2SS_MCS1); | ||
1569 | } | ||
1570 | #undef RTW_DPD_RATE_CHECK | ||
1571 | |||
1572 | return dpd_diff; | ||
1573 | } | ||
1574 | |||
1433 | static u8 rtw_phy_get_2g_tx_power_index(struct rtw_dev *rtwdev, | 1575 | static u8 rtw_phy_get_2g_tx_power_index(struct rtw_dev *rtwdev, |
1434 | struct rtw_2g_txpwr_idx *pwr_idx_2g, | 1576 | struct rtw_2g_txpwr_idx *pwr_idx_2g, |
1435 | enum rtw_bandwidth bandwidth, | 1577 | enum rtw_bandwidth bandwidth, |
@@ -1638,6 +1780,9 @@ rtw_phy_get_tx_power_index(struct rtw_dev *rtwdev, u8 rf_path, u8 rate, | |||
1638 | tx_power = pwr_param.pwr_base; | 1780 | tx_power = pwr_param.pwr_base; |
1639 | offset = min_t(s8, pwr_param.pwr_offset, pwr_param.pwr_limit); | 1781 | offset = min_t(s8, pwr_param.pwr_offset, pwr_param.pwr_limit); |
1640 | 1782 | ||
1783 | if (rtwdev->chip->en_dis_dpd) | ||
1784 | offset += rtw_phy_get_dis_dpd_by_rate_diff(rtwdev, rate); | ||
1785 | |||
1641 | tx_power += offset; | 1786 | tx_power += offset; |
1642 | 1787 | ||
1643 | if (tx_power > rtwdev->chip->max_power_index) | 1788 | if (tx_power > rtwdev->chip->max_power_index) |
diff --git a/drivers/net/wireless/realtek/rtw88/phy.h b/drivers/net/wireless/realtek/rtw88/phy.h index cc87b157f23e..e79b084628e7 100644 --- a/drivers/net/wireless/realtek/rtw88/phy.h +++ b/drivers/net/wireless/realtek/rtw88/phy.h | |||
@@ -146,4 +146,6 @@ rtw_get_tx_power_params(struct rtw_dev *rtwdev, u8 path, | |||
146 | #define MASKBYTE3LOWNIBBLE 0x0f000000 | 146 | #define MASKBYTE3LOWNIBBLE 0x0f000000 |
147 | #define MASKL3BYTES 0x00ffffff | 147 | #define MASKL3BYTES 0x00ffffff |
148 | 148 | ||
149 | #define CCK_FA_AVG_RESET 0xffffffff | ||
150 | |||
149 | #endif | 151 | #endif |
diff --git a/drivers/net/wireless/realtek/rtw88/reg.h b/drivers/net/wireless/realtek/rtw88/reg.h index 0bd0717baa8b..fe793e270d22 100644 --- a/drivers/net/wireless/realtek/rtw88/reg.h +++ b/drivers/net/wireless/realtek/rtw88/reg.h | |||
@@ -193,6 +193,8 @@ | |||
193 | #define REG_H2C_READ_ADDR 0x024C | 193 | #define REG_H2C_READ_ADDR 0x024C |
194 | #define REG_H2C_INFO 0x0254 | 194 | #define REG_H2C_INFO 0x0254 |
195 | 195 | ||
196 | #define REG_INT_MIG 0x0304 | ||
197 | |||
196 | #define REG_FWHW_TXQ_CTRL 0x0420 | 198 | #define REG_FWHW_TXQ_CTRL 0x0420 |
197 | #define BIT_EN_BCNQ_DL BIT(22) | 199 | #define BIT_EN_BCNQ_DL BIT(22) |
198 | #define BIT_EN_WR_FREE_TAIL BIT(20) | 200 | #define BIT_EN_WR_FREE_TAIL BIT(20) |
@@ -339,6 +341,20 @@ | |||
339 | 341 | ||
340 | #define REG_RFE_CTRL_E 0x0974 | 342 | #define REG_RFE_CTRL_E 0x0974 |
341 | 343 | ||
344 | #define REG_DIS_DPD 0x0a70 | ||
345 | #define DIS_DPD_MASK GENMASK(9, 0) | ||
346 | #define DIS_DPD_RATE6M BIT(0) | ||
347 | #define DIS_DPD_RATE9M BIT(1) | ||
348 | #define DIS_DPD_RATEMCS0 BIT(2) | ||
349 | #define DIS_DPD_RATEMCS1 BIT(3) | ||
350 | #define DIS_DPD_RATEMCS8 BIT(4) | ||
351 | #define DIS_DPD_RATEMCS9 BIT(5) | ||
352 | #define DIS_DPD_RATEVHT1SS_MCS0 BIT(6) | ||
353 | #define DIS_DPD_RATEVHT1SS_MCS1 BIT(7) | ||
354 | #define DIS_DPD_RATEVHT2SS_MCS0 BIT(8) | ||
355 | #define DIS_DPD_RATEVHT2SS_MCS1 BIT(9) | ||
356 | #define DIS_DPD_RATEALL GENMASK(9, 0) | ||
357 | |||
342 | #define REG_RFE_CTRL8 0x0cb4 | 358 | #define REG_RFE_CTRL8 0x0cb4 |
343 | #define BIT_MASK_RFE_SEL89 GENMASK(7, 0) | 359 | #define BIT_MASK_RFE_SEL89 GENMASK(7, 0) |
344 | #define REG_RFE_INV8 0x0cbd | 360 | #define REG_RFE_INV8 0x0cbd |
@@ -469,6 +485,7 @@ | |||
469 | #define RF_LUTWA 0x33 | 485 | #define RF_LUTWA 0x33 |
470 | #define RF_LUTWD1 0x3e | 486 | #define RF_LUTWD1 0x3e |
471 | #define RF_LUTWD0 0x3f | 487 | #define RF_LUTWD0 0x3f |
488 | #define RF_T_METER 0x42 | ||
472 | #define RF_XTALX2 0xb8 | 489 | #define RF_XTALX2 0xb8 |
473 | #define RF_MALSEL 0xbe | 490 | #define RF_MALSEL 0xbe |
474 | #define RF_RCKD 0xde | 491 | #define RF_RCKD 0xde |
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c b/drivers/net/wireless/realtek/rtw88/rtw8822b.c index 568033afb024..63abda3b0ebf 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c | |||
@@ -766,6 +766,7 @@ static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status, | |||
766 | s8 min_rx_power = -120; | 766 | s8 min_rx_power = -120; |
767 | u8 pwdb = GET_PHY_STAT_P0_PWDB(phy_status); | 767 | u8 pwdb = GET_PHY_STAT_P0_PWDB(phy_status); |
768 | 768 | ||
769 | /* 8822B uses only 1 antenna to RX CCK rates */ | ||
769 | pkt_stat->rx_power[RF_PATH_A] = pwdb - 110; | 770 | pkt_stat->rx_power[RF_PATH_A] = pwdb - 110; |
770 | pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1); | 771 | pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1); |
771 | pkt_stat->bw = RTW_CHANNEL_WIDTH_20; | 772 | pkt_stat->bw = RTW_CHANNEL_WIDTH_20; |
@@ -1001,6 +1002,11 @@ static void rtw8822b_do_iqk(struct rtw_dev *rtwdev) | |||
1001 | counter, reload, ++do_iqk_cnt, iqk_fail_mask); | 1002 | counter, reload, ++do_iqk_cnt, iqk_fail_mask); |
1002 | } | 1003 | } |
1003 | 1004 | ||
1005 | static void rtw8822b_phy_calibration(struct rtw_dev *rtwdev) | ||
1006 | { | ||
1007 | rtw8822b_do_iqk(rtwdev); | ||
1008 | } | ||
1009 | |||
1004 | static void rtw8822b_coex_cfg_init(struct rtw_dev *rtwdev) | 1010 | static void rtw8822b_coex_cfg_init(struct rtw_dev *rtwdev) |
1005 | { | 1011 | { |
1006 | /* enable TBTT nterrupt */ | 1012 | /* enable TBTT nterrupt */ |
@@ -1794,7 +1800,7 @@ static struct rtw_chip_ops rtw8822b_ops = { | |||
1794 | .set_antenna = rtw8822b_set_antenna, | 1800 | .set_antenna = rtw8822b_set_antenna, |
1795 | .cfg_ldo25 = rtw8822b_cfg_ldo25, | 1801 | .cfg_ldo25 = rtw8822b_cfg_ldo25, |
1796 | .false_alarm_statistics = rtw8822b_false_alarm_statistics, | 1802 | .false_alarm_statistics = rtw8822b_false_alarm_statistics, |
1797 | .do_iqk = rtw8822b_do_iqk, | 1803 | .phy_calibration = rtw8822b_phy_calibration, |
1798 | 1804 | ||
1799 | .coex_set_init = rtw8822b_coex_cfg_init, | 1805 | .coex_set_init = rtw8822b_coex_cfg_init, |
1800 | .coex_set_ant_switch = rtw8822b_coex_cfg_ant_switch, | 1806 | .coex_set_ant_switch = rtw8822b_coex_cfg_ant_switch, |
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c index 207f64cc3e55..c2f6cd76a658 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include "mac.h" | 13 | #include "mac.h" |
14 | #include "reg.h" | 14 | #include "reg.h" |
15 | #include "debug.h" | 15 | #include "debug.h" |
16 | #include "util.h" | ||
16 | 17 | ||
17 | static void rtw8822c_config_trx_mode(struct rtw_dev *rtwdev, u8 tx_path, | 18 | static void rtw8822c_config_trx_mode(struct rtw_dev *rtwdev, u8 tx_path, |
18 | u8 rx_path, bool is_tx2_path); | 19 | u8 rx_path, bool is_tx2_path); |
@@ -1017,6 +1018,9 @@ static void rtw8822c_phy_set_param(struct rtw_dev *rtwdev) | |||
1017 | BIT_RF_EN | BIT_RF_RSTB | BIT_RF_SDM_RSTB); | 1018 | BIT_RF_EN | BIT_RF_RSTB | BIT_RF_SDM_RSTB); |
1018 | rtw_write32_set(rtwdev, REG_WLRF1, BIT_WLRF1_BBRF_EN); | 1019 | rtw_write32_set(rtwdev, REG_WLRF1, BIT_WLRF1_BBRF_EN); |
1019 | 1020 | ||
1021 | /* disable low rate DPD */ | ||
1022 | rtw_write32_mask(rtwdev, REG_DIS_DPD, DIS_DPD_MASK, DIS_DPD_RATEALL); | ||
1023 | |||
1020 | /* pre init before header files config */ | 1024 | /* pre init before header files config */ |
1021 | rtw8822c_header_file_init(rtwdev, true); | 1025 | rtw8822c_header_file_init(rtwdev, true); |
1022 | 1026 | ||
@@ -1114,6 +1118,7 @@ static void rtw8822c_phy_set_param(struct rtw_dev *rtwdev) | |||
1114 | #define WLAN_MAC_OPT_NORM_FUNC1 0x98 | 1118 | #define WLAN_MAC_OPT_NORM_FUNC1 0x98 |
1115 | #define WLAN_MAC_OPT_LB_FUNC1 0x80 | 1119 | #define WLAN_MAC_OPT_LB_FUNC1 0x80 |
1116 | #define WLAN_MAC_OPT_FUNC2 0x30810041 | 1120 | #define WLAN_MAC_OPT_FUNC2 0x30810041 |
1121 | #define WLAN_MAC_INT_MIG_CFG 0x33330000 | ||
1117 | 1122 | ||
1118 | #define WLAN_SIFS_CFG (WLAN_SIFS_CCK_CONT_TX | \ | 1123 | #define WLAN_SIFS_CFG (WLAN_SIFS_CCK_CONT_TX | \ |
1119 | (WLAN_SIFS_OFDM_CONT_TX << BIT_SHIFT_SIFS_OFDM_CTX) | \ | 1124 | (WLAN_SIFS_OFDM_CONT_TX << BIT_SHIFT_SIFS_OFDM_CTX) | \ |
@@ -1251,6 +1256,9 @@ static int rtw8822c_mac_init(struct rtw_dev *rtwdev) | |||
1251 | value16 = BIT_SET_RXPSF_ERRTHR(value16, 0x07); | 1256 | value16 = BIT_SET_RXPSF_ERRTHR(value16, 0x07); |
1252 | rtw_write16(rtwdev, REG_RXPSF_CTRL, value16); | 1257 | rtw_write16(rtwdev, REG_RXPSF_CTRL, value16); |
1253 | 1258 | ||
1259 | /* Interrupt migration configuration */ | ||
1260 | rtw_write32(rtwdev, REG_INT_MIG, WLAN_MAC_INT_MIG_CFG); | ||
1261 | |||
1254 | return 0; | 1262 | return 0; |
1255 | } | 1263 | } |
1256 | 1264 | ||
@@ -1620,16 +1628,16 @@ static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status, | |||
1620 | else if (gain_a > u_bnd) | 1628 | else if (gain_a > u_bnd) |
1621 | rx_power[RF_PATH_A] -= (gain_a - u_bnd) << 1; | 1629 | rx_power[RF_PATH_A] -= (gain_a - u_bnd) << 1; |
1622 | if (gain_b < l_bnd) | 1630 | if (gain_b < l_bnd) |
1623 | rx_power[RF_PATH_A] += (l_bnd - gain_b) << 1; | 1631 | rx_power[RF_PATH_B] += (l_bnd - gain_b) << 1; |
1624 | else if (gain_b > u_bnd) | 1632 | else if (gain_b > u_bnd) |
1625 | rx_power[RF_PATH_A] -= (gain_b - u_bnd) << 1; | 1633 | rx_power[RF_PATH_B] -= (gain_b - u_bnd) << 1; |
1626 | 1634 | ||
1627 | rx_power[RF_PATH_A] -= 110; | 1635 | rx_power[RF_PATH_A] -= 110; |
1628 | rx_power[RF_PATH_B] -= 110; | 1636 | rx_power[RF_PATH_B] -= 110; |
1629 | 1637 | ||
1630 | pkt_stat->rx_power[RF_PATH_A] = max3(rx_power[RF_PATH_A], | 1638 | pkt_stat->rx_power[RF_PATH_A] = rx_power[RF_PATH_A]; |
1631 | rx_power[RF_PATH_B], | 1639 | pkt_stat->rx_power[RF_PATH_B] = rx_power[RF_PATH_B]; |
1632 | min_rx_power); | 1640 | |
1633 | pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1); | 1641 | pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1); |
1634 | pkt_stat->bw = RTW_CHANNEL_WIDTH_20; | 1642 | pkt_stat->bw = RTW_CHANNEL_WIDTH_20; |
1635 | pkt_stat->signal_power = max(pkt_stat->rx_power[RF_PATH_A], | 1643 | pkt_stat->signal_power = max(pkt_stat->rx_power[RF_PATH_A], |
@@ -1872,6 +1880,22 @@ static void rtw8822c_false_alarm_statistics(struct rtw_dev *rtwdev) | |||
1872 | 1880 | ||
1873 | static void rtw8822c_do_iqk(struct rtw_dev *rtwdev) | 1881 | static void rtw8822c_do_iqk(struct rtw_dev *rtwdev) |
1874 | { | 1882 | { |
1883 | struct rtw_iqk_para para = {0}; | ||
1884 | u8 iqk_chk; | ||
1885 | int counter; | ||
1886 | |||
1887 | para.clear = 1; | ||
1888 | rtw_fw_do_iqk(rtwdev, ¶); | ||
1889 | |||
1890 | for (counter = 0; counter < 300; counter++) { | ||
1891 | iqk_chk = rtw_read8(rtwdev, REG_RPT_CIP); | ||
1892 | if (iqk_chk == 0xaa) | ||
1893 | break; | ||
1894 | msleep(20); | ||
1895 | } | ||
1896 | rtw_write8(rtwdev, REG_IQKSTAT, 0x0); | ||
1897 | |||
1898 | rtw_dbg(rtwdev, RTW_DBG_RFK, "iqk counter=%d\n", counter); | ||
1875 | } | 1899 | } |
1876 | 1900 | ||
1877 | /* for coex */ | 1901 | /* for coex */ |
@@ -2029,6 +2053,1144 @@ static void rtw8822c_coex_cfg_wl_rx_gain(struct rtw_dev *rtwdev, bool low_gain) | |||
2029 | } | 2053 | } |
2030 | } | 2054 | } |
2031 | 2055 | ||
2056 | struct dpk_cfg_pair { | ||
2057 | u32 addr; | ||
2058 | u32 bitmask; | ||
2059 | u32 data; | ||
2060 | }; | ||
2061 | |||
2062 | void rtw8822c_parse_tbl_dpk(struct rtw_dev *rtwdev, | ||
2063 | const struct rtw_table *tbl) | ||
2064 | { | ||
2065 | const struct dpk_cfg_pair *p = tbl->data; | ||
2066 | const struct dpk_cfg_pair *end = p + tbl->size / 3; | ||
2067 | |||
2068 | BUILD_BUG_ON(sizeof(struct dpk_cfg_pair) != sizeof(u32) * 3); | ||
2069 | |||
2070 | for (; p < end; p++) | ||
2071 | rtw_write32_mask(rtwdev, p->addr, p->bitmask, p->data); | ||
2072 | } | ||
2073 | |||
2074 | static void rtw8822c_dpk_set_gnt_wl(struct rtw_dev *rtwdev, bool is_before_k) | ||
2075 | { | ||
2076 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2077 | |||
2078 | if (is_before_k) { | ||
2079 | dpk_info->gnt_control = rtw_read32(rtwdev, 0x70); | ||
2080 | dpk_info->gnt_value = rtw_coex_read_indirect_reg(rtwdev, 0x38); | ||
2081 | rtw_write32_mask(rtwdev, 0x70, BIT(26), 0x1); | ||
2082 | rtw_coex_write_indirect_reg(rtwdev, 0x38, MASKBYTE1, 0x77); | ||
2083 | } else { | ||
2084 | rtw_coex_write_indirect_reg(rtwdev, 0x38, MASKDWORD, | ||
2085 | dpk_info->gnt_value); | ||
2086 | rtw_write32(rtwdev, 0x70, dpk_info->gnt_control); | ||
2087 | } | ||
2088 | } | ||
2089 | |||
2090 | static void | ||
2091 | rtw8822c_dpk_restore_registers(struct rtw_dev *rtwdev, u32 reg_num, | ||
2092 | struct rtw_backup_info *bckp) | ||
2093 | { | ||
2094 | rtw_restore_reg(rtwdev, bckp, reg_num); | ||
2095 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); | ||
2096 | rtw_write32_mask(rtwdev, REG_RXSRAM_CTL, BIT_DPD_CLK, 0x4); | ||
2097 | } | ||
2098 | |||
2099 | static void | ||
2100 | rtw8822c_dpk_backup_registers(struct rtw_dev *rtwdev, u32 *reg, | ||
2101 | u32 reg_num, struct rtw_backup_info *bckp) | ||
2102 | { | ||
2103 | u32 i; | ||
2104 | |||
2105 | for (i = 0; i < reg_num; i++) { | ||
2106 | bckp[i].len = 4; | ||
2107 | bckp[i].reg = reg[i]; | ||
2108 | bckp[i].val = rtw_read32(rtwdev, reg[i]); | ||
2109 | } | ||
2110 | } | ||
2111 | |||
2112 | static void rtw8822c_dpk_backup_rf_registers(struct rtw_dev *rtwdev, | ||
2113 | u32 *rf_reg, | ||
2114 | u32 rf_reg_bak[][2]) | ||
2115 | { | ||
2116 | u32 i; | ||
2117 | |||
2118 | for (i = 0; i < DPK_RF_REG_NUM; i++) { | ||
2119 | rf_reg_bak[i][RF_PATH_A] = rtw_read_rf(rtwdev, RF_PATH_A, | ||
2120 | rf_reg[i], RFREG_MASK); | ||
2121 | rf_reg_bak[i][RF_PATH_B] = rtw_read_rf(rtwdev, RF_PATH_B, | ||
2122 | rf_reg[i], RFREG_MASK); | ||
2123 | } | ||
2124 | } | ||
2125 | |||
2126 | static void rtw8822c_dpk_reload_rf_registers(struct rtw_dev *rtwdev, | ||
2127 | u32 *rf_reg, | ||
2128 | u32 rf_reg_bak[][2]) | ||
2129 | { | ||
2130 | u32 i; | ||
2131 | |||
2132 | for (i = 0; i < DPK_RF_REG_NUM; i++) { | ||
2133 | rtw_write_rf(rtwdev, RF_PATH_A, rf_reg[i], RFREG_MASK, | ||
2134 | rf_reg_bak[i][RF_PATH_A]); | ||
2135 | rtw_write_rf(rtwdev, RF_PATH_B, rf_reg[i], RFREG_MASK, | ||
2136 | rf_reg_bak[i][RF_PATH_B]); | ||
2137 | } | ||
2138 | } | ||
2139 | |||
2140 | static void rtw8822c_dpk_information(struct rtw_dev *rtwdev) | ||
2141 | { | ||
2142 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2143 | u32 reg; | ||
2144 | u8 band_shift; | ||
2145 | |||
2146 | reg = rtw_read_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK); | ||
2147 | |||
2148 | band_shift = FIELD_GET(BIT(16), reg); | ||
2149 | dpk_info->dpk_band = 1 << band_shift; | ||
2150 | dpk_info->dpk_ch = FIELD_GET(0xff, reg); | ||
2151 | dpk_info->dpk_bw = FIELD_GET(0x3000, reg); | ||
2152 | } | ||
2153 | |||
2154 | static void rtw8822c_dpk_rxbb_dc_cal(struct rtw_dev *rtwdev, u8 path) | ||
2155 | { | ||
2156 | rtw_write_rf(rtwdev, path, 0x92, RFREG_MASK, 0x84800); | ||
2157 | udelay(5); | ||
2158 | rtw_write_rf(rtwdev, path, 0x92, RFREG_MASK, 0x84801); | ||
2159 | usleep_range(600, 610); | ||
2160 | rtw_write_rf(rtwdev, path, 0x92, RFREG_MASK, 0x84800); | ||
2161 | } | ||
2162 | |||
2163 | static u8 rtw8822c_dpk_dc_corr_check(struct rtw_dev *rtwdev, u8 path) | ||
2164 | { | ||
2165 | u16 dc_i, dc_q; | ||
2166 | u8 corr_val, corr_idx; | ||
2167 | |||
2168 | rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x000900f0); | ||
2169 | dc_i = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, GENMASK(27, 16)); | ||
2170 | dc_q = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, GENMASK(11, 0)); | ||
2171 | |||
2172 | if (dc_i & BIT(11)) | ||
2173 | dc_i = 0x1000 - dc_i; | ||
2174 | if (dc_q & BIT(11)) | ||
2175 | dc_q = 0x1000 - dc_q; | ||
2176 | |||
2177 | rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x000000f0); | ||
2178 | corr_idx = (u8)rtw_read32_mask(rtwdev, REG_STAT_RPT, GENMASK(7, 0)); | ||
2179 | corr_val = (u8)rtw_read32_mask(rtwdev, REG_STAT_RPT, GENMASK(15, 8)); | ||
2180 | |||
2181 | if (dc_i > 200 || dc_q > 200 || corr_idx < 40 || corr_idx > 65) | ||
2182 | return 1; | ||
2183 | else | ||
2184 | return 0; | ||
2185 | |||
2186 | } | ||
2187 | |||
2188 | static void rtw8822c_dpk_tx_pause(struct rtw_dev *rtwdev) | ||
2189 | { | ||
2190 | u8 reg_a, reg_b; | ||
2191 | u16 count = 0; | ||
2192 | |||
2193 | rtw_write8(rtwdev, 0x522, 0xff); | ||
2194 | rtw_write32_mask(rtwdev, 0x1e70, 0xf, 0x2); | ||
2195 | |||
2196 | do { | ||
2197 | reg_a = (u8)rtw_read_rf(rtwdev, RF_PATH_A, 0x00, 0xf0000); | ||
2198 | reg_b = (u8)rtw_read_rf(rtwdev, RF_PATH_B, 0x00, 0xf0000); | ||
2199 | udelay(2); | ||
2200 | count++; | ||
2201 | } while ((reg_a == 2 || reg_b == 2) && count < 2500); | ||
2202 | } | ||
2203 | |||
2204 | static void rtw8822c_dpk_mac_bb_setting(struct rtw_dev *rtwdev) | ||
2205 | { | ||
2206 | rtw8822c_dpk_tx_pause(rtwdev); | ||
2207 | rtw_load_table(rtwdev, &rtw8822c_dpk_mac_bb_tbl); | ||
2208 | } | ||
2209 | |||
2210 | static void rtw8822c_dpk_afe_setting(struct rtw_dev *rtwdev, bool is_do_dpk) | ||
2211 | { | ||
2212 | if (is_do_dpk) | ||
2213 | rtw_load_table(rtwdev, &rtw8822c_dpk_afe_is_dpk_tbl); | ||
2214 | else | ||
2215 | rtw_load_table(rtwdev, &rtw8822c_dpk_afe_no_dpk_tbl); | ||
2216 | } | ||
2217 | |||
2218 | static void rtw8822c_dpk_pre_setting(struct rtw_dev *rtwdev) | ||
2219 | { | ||
2220 | u8 path; | ||
2221 | |||
2222 | for (path = 0; path < rtwdev->hal.rf_path_num; path++) { | ||
2223 | rtw_write_rf(rtwdev, path, RF_RXAGC_OFFSET, RFREG_MASK, 0x0); | ||
2224 | rtw_write32(rtwdev, REG_NCTL0, 0x8 | (path << 1)); | ||
2225 | if (rtwdev->dm_info.dpk_info.dpk_band == RTW_BAND_2G) | ||
2226 | rtw_write32(rtwdev, REG_DPD_LUT3, 0x1f100000); | ||
2227 | else | ||
2228 | rtw_write32(rtwdev, REG_DPD_LUT3, 0x1f0d0000); | ||
2229 | rtw_write32_mask(rtwdev, REG_DPD_LUT0, BIT_GLOSS_DB, 0x4); | ||
2230 | rtw_write32_mask(rtwdev, REG_IQK_CTL1, BIT_TX_CFIR, 0x3); | ||
2231 | } | ||
2232 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); | ||
2233 | rtw_write32(rtwdev, REG_DPD_CTL11, 0x3b23170b); | ||
2234 | rtw_write32(rtwdev, REG_DPD_CTL12, 0x775f5347); | ||
2235 | } | ||
2236 | |||
2237 | static u32 rtw8822c_dpk_rf_setting(struct rtw_dev *rtwdev, u8 path) | ||
2238 | { | ||
2239 | u32 ori_txbb; | ||
2240 | |||
2241 | rtw_write_rf(rtwdev, path, RF_MODE_TRXAGC, RFREG_MASK, 0x50017); | ||
2242 | ori_txbb = rtw_read_rf(rtwdev, path, RF_TX_GAIN, RFREG_MASK); | ||
2243 | |||
2244 | rtw_write_rf(rtwdev, path, RF_DEBUG, BIT_DE_TX_GAIN, 0x1); | ||
2245 | rtw_write_rf(rtwdev, path, RF_DEBUG, BIT_DE_PWR_TRIM, 0x1); | ||
2246 | rtw_write_rf(rtwdev, path, RF_TX_GAIN_OFFSET, BIT_TX_OFFSET_VAL, 0x0); | ||
2247 | rtw_write_rf(rtwdev, path, RF_TX_GAIN, RFREG_MASK, ori_txbb); | ||
2248 | |||
2249 | if (rtwdev->dm_info.dpk_info.dpk_band == RTW_BAND_2G) { | ||
2250 | rtw_write_rf(rtwdev, path, RF_TX_GAIN_OFFSET, BIT_LB_ATT, 0x1); | ||
2251 | rtw_write_rf(rtwdev, path, RF_RXG_GAIN, BIT_RXG_GAIN, 0x0); | ||
2252 | } else { | ||
2253 | rtw_write_rf(rtwdev, path, RF_TXA_LB_SW, BIT_TXA_LB_ATT, 0x0); | ||
2254 | rtw_write_rf(rtwdev, path, RF_TXA_LB_SW, BIT_LB_ATT, 0x6); | ||
2255 | rtw_write_rf(rtwdev, path, RF_TXA_LB_SW, BIT_LB_SW, 0x1); | ||
2256 | rtw_write_rf(rtwdev, path, RF_RXA_MIX_GAIN, BIT_RXA_MIX_GAIN, 0); | ||
2257 | } | ||
2258 | |||
2259 | rtw_write_rf(rtwdev, path, RF_MODE_TRXAGC, BIT_RXAGC, 0xf); | ||
2260 | rtw_write_rf(rtwdev, path, RF_DEBUG, BIT_DE_TRXBW, 0x1); | ||
2261 | rtw_write_rf(rtwdev, path, RF_BW_TRXBB, BIT_BW_RXBB, 0x0); | ||
2262 | |||
2263 | if (rtwdev->dm_info.dpk_info.dpk_bw == DPK_CHANNEL_WIDTH_80) | ||
2264 | rtw_write_rf(rtwdev, path, RF_BW_TRXBB, BIT_BW_TXBB, 0x2); | ||
2265 | else | ||
2266 | rtw_write_rf(rtwdev, path, RF_BW_TRXBB, BIT_BW_TXBB, 0x1); | ||
2267 | |||
2268 | rtw_write_rf(rtwdev, path, RF_EXT_TIA_BW, BIT(1), 0x1); | ||
2269 | |||
2270 | usleep_range(100, 110); | ||
2271 | |||
2272 | return ori_txbb & 0x1f; | ||
2273 | } | ||
2274 | |||
2275 | static u16 rtw8822c_dpk_get_cmd(struct rtw_dev *rtwdev, u8 action, u8 path) | ||
2276 | { | ||
2277 | u16 cmd; | ||
2278 | u8 bw = rtwdev->dm_info.dpk_info.dpk_bw == DPK_CHANNEL_WIDTH_80 ? 2 : 0; | ||
2279 | |||
2280 | switch (action) { | ||
2281 | case RTW_DPK_GAIN_LOSS: | ||
2282 | cmd = 0x14 + path; | ||
2283 | break; | ||
2284 | case RTW_DPK_DO_DPK: | ||
2285 | cmd = 0x16 + path + bw; | ||
2286 | break; | ||
2287 | case RTW_DPK_DPK_ON: | ||
2288 | cmd = 0x1a + path; | ||
2289 | break; | ||
2290 | case RTW_DPK_DAGC: | ||
2291 | cmd = 0x1c + path + bw; | ||
2292 | break; | ||
2293 | default: | ||
2294 | return 0; | ||
2295 | } | ||
2296 | |||
2297 | return (cmd << 8) | 0x48; | ||
2298 | } | ||
2299 | |||
2300 | static u8 rtw8822c_dpk_one_shot(struct rtw_dev *rtwdev, u8 path, u8 action) | ||
2301 | { | ||
2302 | u16 dpk_cmd; | ||
2303 | u8 result = 0; | ||
2304 | |||
2305 | rtw8822c_dpk_set_gnt_wl(rtwdev, true); | ||
2306 | |||
2307 | if (action == RTW_DPK_CAL_PWR) { | ||
2308 | rtw_write32_mask(rtwdev, REG_DPD_CTL0, BIT(12), 0x1); | ||
2309 | rtw_write32_mask(rtwdev, REG_DPD_CTL0, BIT(12), 0x0); | ||
2310 | rtw_write32_mask(rtwdev, REG_RXSRAM_CTL, BIT_RPT_SEL, 0x0); | ||
2311 | msleep(10); | ||
2312 | if (!check_hw_ready(rtwdev, REG_STAT_RPT, BIT(31), 0x1)) { | ||
2313 | result = 1; | ||
2314 | rtw_dbg(rtwdev, RTW_DBG_RFK, "[DPK] one-shot over 20ms\n"); | ||
2315 | } | ||
2316 | } else { | ||
2317 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, | ||
2318 | 0x8 | (path << 1)); | ||
2319 | rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_IQ_SWITCH, 0x9); | ||
2320 | |||
2321 | dpk_cmd = rtw8822c_dpk_get_cmd(rtwdev, action, path); | ||
2322 | rtw_write32(rtwdev, REG_NCTL0, dpk_cmd); | ||
2323 | rtw_write32(rtwdev, REG_NCTL0, dpk_cmd + 1); | ||
2324 | msleep(10); | ||
2325 | if (!check_hw_ready(rtwdev, 0x2d9c, 0xff, 0x55)) { | ||
2326 | result = 1; | ||
2327 | rtw_dbg(rtwdev, RTW_DBG_RFK, "[DPK] one-shot over 20ms\n"); | ||
2328 | } | ||
2329 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, | ||
2330 | 0x8 | (path << 1)); | ||
2331 | rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_IQ_SWITCH, 0x0); | ||
2332 | } | ||
2333 | |||
2334 | rtw8822c_dpk_set_gnt_wl(rtwdev, false); | ||
2335 | |||
2336 | rtw_write8(rtwdev, 0x1b10, 0x0); | ||
2337 | |||
2338 | return result; | ||
2339 | } | ||
2340 | |||
2341 | static u16 rtw8822c_dpk_dgain_read(struct rtw_dev *rtwdev, u8 path) | ||
2342 | { | ||
2343 | u16 dgain; | ||
2344 | |||
2345 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); | ||
2346 | rtw_write32_mask(rtwdev, REG_RXSRAM_CTL, 0x00ff0000, 0x0); | ||
2347 | |||
2348 | dgain = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, GENMASK(27, 16)); | ||
2349 | |||
2350 | return dgain; | ||
2351 | } | ||
2352 | |||
2353 | static u8 rtw8822c_dpk_thermal_read(struct rtw_dev *rtwdev, u8 path) | ||
2354 | { | ||
2355 | rtw_write_rf(rtwdev, path, RF_T_METER, BIT(19), 0x1); | ||
2356 | rtw_write_rf(rtwdev, path, RF_T_METER, BIT(19), 0x0); | ||
2357 | rtw_write_rf(rtwdev, path, RF_T_METER, BIT(19), 0x1); | ||
2358 | udelay(15); | ||
2359 | |||
2360 | return (u8)rtw_read_rf(rtwdev, path, RF_T_METER, 0x0007e); | ||
2361 | } | ||
2362 | |||
2363 | static u32 rtw8822c_dpk_pas_read(struct rtw_dev *rtwdev, u8 path) | ||
2364 | { | ||
2365 | u32 i_val, q_val; | ||
2366 | |||
2367 | rtw_write32(rtwdev, REG_NCTL0, 0x8 | (path << 1)); | ||
2368 | rtw_write32_mask(rtwdev, 0x1b48, BIT(14), 0x0); | ||
2369 | rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x00060001); | ||
2370 | rtw_write32(rtwdev, 0x1b4c, 0x00000000); | ||
2371 | rtw_write32(rtwdev, 0x1b4c, 0x00080000); | ||
2372 | |||
2373 | q_val = rtw_read32_mask(rtwdev, REG_STAT_RPT, MASKHWORD); | ||
2374 | i_val = rtw_read32_mask(rtwdev, REG_STAT_RPT, MASKLWORD); | ||
2375 | |||
2376 | if (i_val & BIT(15)) | ||
2377 | i_val = 0x10000 - i_val; | ||
2378 | if (q_val & BIT(15)) | ||
2379 | q_val = 0x10000 - q_val; | ||
2380 | |||
2381 | rtw_write32(rtwdev, 0x1b4c, 0x00000000); | ||
2382 | |||
2383 | return i_val * i_val + q_val * q_val; | ||
2384 | } | ||
2385 | |||
2386 | static u32 rtw8822c_psd_log2base(u32 val) | ||
2387 | { | ||
2388 | u32 tmp, val_integerd_b, tindex; | ||
2389 | u32 result, val_fractiond_b; | ||
2390 | u32 table_fraction[21] = {0, 432, 332, 274, 232, 200, 174, | ||
2391 | 151, 132, 115, 100, 86, 74, 62, 51, | ||
2392 | 42, 32, 23, 15, 7, 0}; | ||
2393 | |||
2394 | if (val == 0) | ||
2395 | return 0; | ||
2396 | |||
2397 | val_integerd_b = __fls(val) + 1; | ||
2398 | |||
2399 | tmp = (val * 100) / (1 << val_integerd_b); | ||
2400 | tindex = tmp / 5; | ||
2401 | |||
2402 | if (tindex >= ARRAY_SIZE(table_fraction)) | ||
2403 | tindex = ARRAY_SIZE(table_fraction) - 1; | ||
2404 | |||
2405 | val_fractiond_b = table_fraction[tindex]; | ||
2406 | |||
2407 | result = val_integerd_b * 100 - val_fractiond_b; | ||
2408 | |||
2409 | return result; | ||
2410 | } | ||
2411 | |||
2412 | static u8 rtw8822c_dpk_gainloss_result(struct rtw_dev *rtwdev, u8 path) | ||
2413 | { | ||
2414 | u8 result; | ||
2415 | |||
2416 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); | ||
2417 | rtw_write32_mask(rtwdev, 0x1b48, BIT(14), 0x1); | ||
2418 | rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x00060000); | ||
2419 | |||
2420 | result = (u8)rtw_read32_mask(rtwdev, REG_STAT_RPT, 0x000000f0); | ||
2421 | |||
2422 | rtw_write32_mask(rtwdev, 0x1b48, BIT(14), 0x0); | ||
2423 | |||
2424 | return result; | ||
2425 | } | ||
2426 | |||
2427 | static u8 rtw8822c_dpk_agc_gain_chk(struct rtw_dev *rtwdev, u8 path, | ||
2428 | u8 limited_pga) | ||
2429 | { | ||
2430 | u8 result = 0; | ||
2431 | u16 dgain; | ||
2432 | |||
2433 | rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DAGC); | ||
2434 | dgain = rtw8822c_dpk_dgain_read(rtwdev, path); | ||
2435 | |||
2436 | if (dgain > 1535 && !limited_pga) | ||
2437 | return RTW_DPK_GAIN_LESS; | ||
2438 | else if (dgain < 768 && !limited_pga) | ||
2439 | return RTW_DPK_GAIN_LARGE; | ||
2440 | else | ||
2441 | return result; | ||
2442 | } | ||
2443 | |||
2444 | static u8 rtw8822c_dpk_agc_loss_chk(struct rtw_dev *rtwdev, u8 path) | ||
2445 | { | ||
2446 | u32 loss, loss_db; | ||
2447 | |||
2448 | loss = rtw8822c_dpk_pas_read(rtwdev, path); | ||
2449 | if (loss < 0x4000000) | ||
2450 | return RTW_DPK_GL_LESS; | ||
2451 | loss_db = 3 * rtw8822c_psd_log2base(loss >> 13) - 3870; | ||
2452 | |||
2453 | if (loss_db > 1000) | ||
2454 | return RTW_DPK_GL_LARGE; | ||
2455 | else if (loss_db < 250) | ||
2456 | return RTW_DPK_GL_LESS; | ||
2457 | else | ||
2458 | return RTW_DPK_AGC_OUT; | ||
2459 | } | ||
2460 | |||
2461 | struct rtw8822c_dpk_data { | ||
2462 | u8 txbb; | ||
2463 | u8 pga; | ||
2464 | u8 limited_pga; | ||
2465 | u8 agc_cnt; | ||
2466 | bool loss_only; | ||
2467 | bool gain_only; | ||
2468 | u8 path; | ||
2469 | }; | ||
2470 | |||
2471 | static u8 rtw8822c_gain_check_state(struct rtw_dev *rtwdev, | ||
2472 | struct rtw8822c_dpk_data *data) | ||
2473 | { | ||
2474 | u8 state; | ||
2475 | |||
2476 | data->txbb = (u8)rtw_read_rf(rtwdev, data->path, RF_TX_GAIN, | ||
2477 | BIT_GAIN_TXBB); | ||
2478 | data->pga = (u8)rtw_read_rf(rtwdev, data->path, RF_MODE_TRXAGC, | ||
2479 | BIT_RXAGC); | ||
2480 | |||
2481 | if (data->loss_only) { | ||
2482 | state = RTW_DPK_LOSS_CHECK; | ||
2483 | goto check_end; | ||
2484 | } | ||
2485 | |||
2486 | state = rtw8822c_dpk_agc_gain_chk(rtwdev, data->path, | ||
2487 | data->limited_pga); | ||
2488 | if (state == RTW_DPK_GAIN_CHECK && data->gain_only) | ||
2489 | state = RTW_DPK_AGC_OUT; | ||
2490 | else if (state == RTW_DPK_GAIN_CHECK) | ||
2491 | state = RTW_DPK_LOSS_CHECK; | ||
2492 | |||
2493 | check_end: | ||
2494 | data->agc_cnt++; | ||
2495 | if (data->agc_cnt >= 6) | ||
2496 | state = RTW_DPK_AGC_OUT; | ||
2497 | |||
2498 | return state; | ||
2499 | } | ||
2500 | |||
2501 | static u8 rtw8822c_gain_large_state(struct rtw_dev *rtwdev, | ||
2502 | struct rtw8822c_dpk_data *data) | ||
2503 | { | ||
2504 | u8 pga = data->pga; | ||
2505 | |||
2506 | if (pga > 0xe) | ||
2507 | rtw_write_rf(rtwdev, data->path, RF_MODE_TRXAGC, BIT_RXAGC, 0xc); | ||
2508 | else if (pga > 0xb && pga < 0xf) | ||
2509 | rtw_write_rf(rtwdev, data->path, RF_MODE_TRXAGC, BIT_RXAGC, 0x0); | ||
2510 | else if (pga < 0xc) | ||
2511 | data->limited_pga = 1; | ||
2512 | |||
2513 | return RTW_DPK_GAIN_CHECK; | ||
2514 | } | ||
2515 | |||
2516 | static u8 rtw8822c_gain_less_state(struct rtw_dev *rtwdev, | ||
2517 | struct rtw8822c_dpk_data *data) | ||
2518 | { | ||
2519 | u8 pga = data->pga; | ||
2520 | |||
2521 | if (pga < 0xc) | ||
2522 | rtw_write_rf(rtwdev, data->path, RF_MODE_TRXAGC, BIT_RXAGC, 0xc); | ||
2523 | else if (pga > 0xb && pga < 0xf) | ||
2524 | rtw_write_rf(rtwdev, data->path, RF_MODE_TRXAGC, BIT_RXAGC, 0xf); | ||
2525 | else if (pga > 0xe) | ||
2526 | data->limited_pga = 1; | ||
2527 | |||
2528 | return RTW_DPK_GAIN_CHECK; | ||
2529 | } | ||
2530 | |||
2531 | static u8 rtw8822c_gl_state(struct rtw_dev *rtwdev, | ||
2532 | struct rtw8822c_dpk_data *data, u8 is_large) | ||
2533 | { | ||
2534 | u8 txbb_bound[] = {0x1f, 0}; | ||
2535 | |||
2536 | if (data->txbb == txbb_bound[is_large]) | ||
2537 | return RTW_DPK_AGC_OUT; | ||
2538 | |||
2539 | if (is_large == 1) | ||
2540 | data->txbb -= 2; | ||
2541 | else | ||
2542 | data->txbb += 3; | ||
2543 | |||
2544 | rtw_write_rf(rtwdev, data->path, RF_TX_GAIN, BIT_GAIN_TXBB, data->txbb); | ||
2545 | data->limited_pga = 0; | ||
2546 | |||
2547 | return RTW_DPK_GAIN_CHECK; | ||
2548 | } | ||
2549 | |||
2550 | static u8 rtw8822c_gl_large_state(struct rtw_dev *rtwdev, | ||
2551 | struct rtw8822c_dpk_data *data) | ||
2552 | { | ||
2553 | return rtw8822c_gl_state(rtwdev, data, 1); | ||
2554 | } | ||
2555 | |||
2556 | static u8 rtw8822c_gl_less_state(struct rtw_dev *rtwdev, | ||
2557 | struct rtw8822c_dpk_data *data) | ||
2558 | { | ||
2559 | return rtw8822c_gl_state(rtwdev, data, 0); | ||
2560 | } | ||
2561 | |||
2562 | static u8 rtw8822c_loss_check_state(struct rtw_dev *rtwdev, | ||
2563 | struct rtw8822c_dpk_data *data) | ||
2564 | { | ||
2565 | u8 path = data->path; | ||
2566 | u8 state; | ||
2567 | |||
2568 | rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_GAIN_LOSS); | ||
2569 | state = rtw8822c_dpk_agc_loss_chk(rtwdev, path); | ||
2570 | |||
2571 | return state; | ||
2572 | } | ||
2573 | |||
2574 | static u8 (*dpk_state[])(struct rtw_dev *rtwdev, | ||
2575 | struct rtw8822c_dpk_data *data) = { | ||
2576 | rtw8822c_gain_check_state, rtw8822c_gain_large_state, | ||
2577 | rtw8822c_gain_less_state, rtw8822c_gl_large_state, | ||
2578 | rtw8822c_gl_less_state, rtw8822c_loss_check_state }; | ||
2579 | |||
2580 | static u8 rtw8822c_dpk_pas_agc(struct rtw_dev *rtwdev, u8 path, | ||
2581 | bool gain_only, bool loss_only) | ||
2582 | { | ||
2583 | struct rtw8822c_dpk_data data = {0}; | ||
2584 | u8 (*func)(struct rtw_dev *rtwdev, struct rtw8822c_dpk_data *data); | ||
2585 | u8 state = RTW_DPK_GAIN_CHECK; | ||
2586 | |||
2587 | data.loss_only = loss_only; | ||
2588 | data.gain_only = gain_only; | ||
2589 | data.path = path; | ||
2590 | |||
2591 | for (;;) { | ||
2592 | func = dpk_state[state]; | ||
2593 | state = func(rtwdev, &data); | ||
2594 | if (state == RTW_DPK_AGC_OUT) | ||
2595 | break; | ||
2596 | } | ||
2597 | |||
2598 | return data.txbb; | ||
2599 | } | ||
2600 | |||
2601 | static bool rtw8822c_dpk_coef_iq_check(struct rtw_dev *rtwdev, | ||
2602 | u16 coef_i, u16 coef_q) | ||
2603 | { | ||
2604 | if (coef_i == 0x1000 || coef_i == 0x0fff || | ||
2605 | coef_q == 0x1000 || coef_q == 0x0fff) | ||
2606 | return 1; | ||
2607 | else | ||
2608 | return 0; | ||
2609 | } | ||
2610 | |||
2611 | static u32 rtw8822c_dpk_coef_transfer(struct rtw_dev *rtwdev) | ||
2612 | { | ||
2613 | u32 reg = 0; | ||
2614 | u16 coef_i = 0, coef_q = 0; | ||
2615 | |||
2616 | reg = rtw_read32(rtwdev, REG_STAT_RPT); | ||
2617 | |||
2618 | coef_i = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, MASKHWORD) & 0x1fff; | ||
2619 | coef_q = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, MASKLWORD) & 0x1fff; | ||
2620 | |||
2621 | coef_q = ((0x2000 - coef_q) & 0x1fff) - 1; | ||
2622 | |||
2623 | reg = (coef_i << 16) | coef_q; | ||
2624 | |||
2625 | return reg; | ||
2626 | } | ||
2627 | |||
2628 | static const u32 rtw8822c_dpk_get_coef_tbl[] = { | ||
2629 | 0x000400f0, 0x040400f0, 0x080400f0, 0x010400f0, 0x050400f0, | ||
2630 | 0x090400f0, 0x020400f0, 0x060400f0, 0x0a0400f0, 0x030400f0, | ||
2631 | 0x070400f0, 0x0b0400f0, 0x0c0400f0, 0x100400f0, 0x0d0400f0, | ||
2632 | 0x110400f0, 0x0e0400f0, 0x120400f0, 0x0f0400f0, 0x130400f0, | ||
2633 | }; | ||
2634 | |||
2635 | static void rtw8822c_dpk_coef_tbl_apply(struct rtw_dev *rtwdev, u8 path) | ||
2636 | { | ||
2637 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2638 | int i; | ||
2639 | |||
2640 | for (i = 0; i < 20; i++) { | ||
2641 | rtw_write32(rtwdev, REG_RXSRAM_CTL, | ||
2642 | rtw8822c_dpk_get_coef_tbl[i]); | ||
2643 | dpk_info->coef[path][i] = rtw8822c_dpk_coef_transfer(rtwdev); | ||
2644 | } | ||
2645 | } | ||
2646 | |||
2647 | static void rtw8822c_dpk_get_coef(struct rtw_dev *rtwdev, u8 path) | ||
2648 | { | ||
2649 | rtw_write32(rtwdev, REG_NCTL0, 0x0000000c); | ||
2650 | |||
2651 | if (path == RF_PATH_A) { | ||
2652 | rtw_write32_mask(rtwdev, REG_DPD_CTL0, BIT(24), 0x0); | ||
2653 | rtw_write32(rtwdev, REG_DPD_CTL0_S0, 0x30000080); | ||
2654 | } else if (path == RF_PATH_B) { | ||
2655 | rtw_write32_mask(rtwdev, REG_DPD_CTL0, BIT(24), 0x1); | ||
2656 | rtw_write32(rtwdev, REG_DPD_CTL0_S1, 0x30000080); | ||
2657 | } | ||
2658 | |||
2659 | rtw8822c_dpk_coef_tbl_apply(rtwdev, path); | ||
2660 | } | ||
2661 | |||
2662 | static u8 rtw8822c_dpk_coef_read(struct rtw_dev *rtwdev, u8 path) | ||
2663 | { | ||
2664 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2665 | u8 addr, result = 1; | ||
2666 | u16 coef_i, coef_q; | ||
2667 | |||
2668 | for (addr = 0; addr < 20; addr++) { | ||
2669 | coef_i = FIELD_GET(0x1fff0000, dpk_info->coef[path][addr]); | ||
2670 | coef_q = FIELD_GET(0x1fff, dpk_info->coef[path][addr]); | ||
2671 | |||
2672 | if (rtw8822c_dpk_coef_iq_check(rtwdev, coef_i, coef_q)) { | ||
2673 | result = 0; | ||
2674 | break; | ||
2675 | } | ||
2676 | } | ||
2677 | return result; | ||
2678 | } | ||
2679 | |||
2680 | static void rtw8822c_dpk_coef_write(struct rtw_dev *rtwdev, u8 path, u8 result) | ||
2681 | { | ||
2682 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2683 | u16 reg[DPK_RF_PATH_NUM] = {0x1b0c, 0x1b64}; | ||
2684 | u32 coef; | ||
2685 | u8 addr; | ||
2686 | |||
2687 | rtw_write32(rtwdev, REG_NCTL0, 0x0000000c); | ||
2688 | rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x000000f0); | ||
2689 | |||
2690 | for (addr = 0; addr < 20; addr++) { | ||
2691 | if (result == 0) { | ||
2692 | if (addr == 3) | ||
2693 | coef = 0x04001fff; | ||
2694 | else | ||
2695 | coef = 0x00001fff; | ||
2696 | } else { | ||
2697 | coef = dpk_info->coef[path][addr]; | ||
2698 | } | ||
2699 | rtw_write32(rtwdev, reg[path] + addr * 4, coef); | ||
2700 | } | ||
2701 | } | ||
2702 | |||
2703 | static void rtw8822c_dpk_fill_result(struct rtw_dev *rtwdev, u32 dpk_txagc, | ||
2704 | u8 path, u8 result) | ||
2705 | { | ||
2706 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2707 | |||
2708 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); | ||
2709 | |||
2710 | if (result) | ||
2711 | rtw_write8(rtwdev, REG_DPD_AGC, (u8)(dpk_txagc - 6)); | ||
2712 | else | ||
2713 | rtw_write8(rtwdev, REG_DPD_AGC, 0x00); | ||
2714 | |||
2715 | dpk_info->result[path] = result; | ||
2716 | dpk_info->dpk_txagc[path] = rtw_read8(rtwdev, REG_DPD_AGC); | ||
2717 | |||
2718 | rtw8822c_dpk_coef_write(rtwdev, path, result); | ||
2719 | } | ||
2720 | |||
2721 | static u32 rtw8822c_dpk_gainloss(struct rtw_dev *rtwdev, u8 path) | ||
2722 | { | ||
2723 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2724 | u8 tx_agc, tx_bb, ori_txbb, ori_txagc, tx_agc_search, t1, t2; | ||
2725 | |||
2726 | ori_txbb = rtw8822c_dpk_rf_setting(rtwdev, path); | ||
2727 | ori_txagc = (u8)rtw_read_rf(rtwdev, path, RF_MODE_TRXAGC, BIT_TXAGC); | ||
2728 | |||
2729 | rtw8822c_dpk_rxbb_dc_cal(rtwdev, path); | ||
2730 | rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DAGC); | ||
2731 | rtw8822c_dpk_dgain_read(rtwdev, path); | ||
2732 | |||
2733 | if (rtw8822c_dpk_dc_corr_check(rtwdev, path)) { | ||
2734 | rtw8822c_dpk_rxbb_dc_cal(rtwdev, path); | ||
2735 | rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DAGC); | ||
2736 | rtw8822c_dpk_dc_corr_check(rtwdev, path); | ||
2737 | } | ||
2738 | |||
2739 | t1 = rtw8822c_dpk_thermal_read(rtwdev, path); | ||
2740 | tx_bb = rtw8822c_dpk_pas_agc(rtwdev, path, false, true); | ||
2741 | tx_agc_search = rtw8822c_dpk_gainloss_result(rtwdev, path); | ||
2742 | |||
2743 | if (tx_bb < tx_agc_search) | ||
2744 | tx_bb = 0; | ||
2745 | else | ||
2746 | tx_bb = tx_bb - tx_agc_search; | ||
2747 | |||
2748 | rtw_write_rf(rtwdev, path, RF_TX_GAIN, BIT_GAIN_TXBB, tx_bb); | ||
2749 | |||
2750 | tx_agc = ori_txagc - (ori_txbb - tx_bb); | ||
2751 | |||
2752 | t2 = rtw8822c_dpk_thermal_read(rtwdev, path); | ||
2753 | |||
2754 | dpk_info->thermal_dpk_delta[path] = abs(t2 - t1); | ||
2755 | |||
2756 | return tx_agc; | ||
2757 | } | ||
2758 | |||
2759 | static u8 rtw8822c_dpk_by_path(struct rtw_dev *rtwdev, u32 tx_agc, u8 path) | ||
2760 | { | ||
2761 | u8 result; | ||
2762 | |||
2763 | result = rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DO_DPK); | ||
2764 | |||
2765 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); | ||
2766 | |||
2767 | result = result | (u8)rtw_read32_mask(rtwdev, REG_DPD_CTL1_S0, BIT(26)); | ||
2768 | |||
2769 | rtw_write_rf(rtwdev, path, RF_MODE_TRXAGC, RFREG_MASK, 0x33e14); | ||
2770 | |||
2771 | rtw8822c_dpk_get_coef(rtwdev, path); | ||
2772 | |||
2773 | return result; | ||
2774 | } | ||
2775 | |||
2776 | static void rtw8822c_dpk_cal_gs(struct rtw_dev *rtwdev, u8 path) | ||
2777 | { | ||
2778 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2779 | u32 tmp_gs = 0; | ||
2780 | |||
2781 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); | ||
2782 | rtw_write32_mask(rtwdev, REG_IQK_CTL1, BIT_BYPASS_DPD, 0x0); | ||
2783 | rtw_write32_mask(rtwdev, REG_IQK_CTL1, BIT_TX_CFIR, 0x0); | ||
2784 | rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_IQ_SWITCH, 0x9); | ||
2785 | rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_INNER_LB, 0x1); | ||
2786 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); | ||
2787 | rtw_write32_mask(rtwdev, REG_RXSRAM_CTL, BIT_DPD_CLK, 0xf); | ||
2788 | |||
2789 | if (path == RF_PATH_A) { | ||
2790 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0, BIT_GS_PWSF, | ||
2791 | 0x1066680); | ||
2792 | rtw_write32_mask(rtwdev, REG_DPD_CTL1_S0, BIT_DPD_EN, 0x1); | ||
2793 | } else { | ||
2794 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S1, BIT_GS_PWSF, | ||
2795 | 0x1066680); | ||
2796 | rtw_write32_mask(rtwdev, REG_DPD_CTL1_S1, BIT_DPD_EN, 0x1); | ||
2797 | } | ||
2798 | |||
2799 | if (dpk_info->dpk_bw == DPK_CHANNEL_WIDTH_80) { | ||
2800 | rtw_write32(rtwdev, REG_DPD_CTL16, 0x80001310); | ||
2801 | rtw_write32(rtwdev, REG_DPD_CTL16, 0x00001310); | ||
2802 | rtw_write32(rtwdev, REG_DPD_CTL16, 0x810000db); | ||
2803 | rtw_write32(rtwdev, REG_DPD_CTL16, 0x010000db); | ||
2804 | rtw_write32(rtwdev, REG_DPD_CTL16, 0x0000b428); | ||
2805 | rtw_write32(rtwdev, REG_DPD_CTL15, | ||
2806 | 0x05020000 | (BIT(path) << 28)); | ||
2807 | } else { | ||
2808 | rtw_write32(rtwdev, REG_DPD_CTL16, 0x8200190c); | ||
2809 | rtw_write32(rtwdev, REG_DPD_CTL16, 0x0200190c); | ||
2810 | rtw_write32(rtwdev, REG_DPD_CTL16, 0x8301ee14); | ||
2811 | rtw_write32(rtwdev, REG_DPD_CTL16, 0x0301ee14); | ||
2812 | rtw_write32(rtwdev, REG_DPD_CTL16, 0x0000b428); | ||
2813 | rtw_write32(rtwdev, REG_DPD_CTL15, | ||
2814 | 0x05020008 | (BIT(path) << 28)); | ||
2815 | } | ||
2816 | |||
2817 | rtw_write32_mask(rtwdev, REG_DPD_CTL0, MASKBYTE3, 0x8 | path); | ||
2818 | |||
2819 | rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_CAL_PWR); | ||
2820 | |||
2821 | rtw_write32_mask(rtwdev, REG_DPD_CTL15, MASKBYTE3, 0x0); | ||
2822 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); | ||
2823 | rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_IQ_SWITCH, 0x0); | ||
2824 | rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_INNER_LB, 0x0); | ||
2825 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); | ||
2826 | |||
2827 | if (path == RF_PATH_A) | ||
2828 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0, BIT_GS_PWSF, 0x5b); | ||
2829 | else | ||
2830 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S1, BIT_GS_PWSF, 0x5b); | ||
2831 | |||
2832 | rtw_write32_mask(rtwdev, REG_RXSRAM_CTL, BIT_RPT_SEL, 0x0); | ||
2833 | |||
2834 | tmp_gs = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, BIT_RPT_DGAIN); | ||
2835 | tmp_gs = (tmp_gs * 910) >> 10; | ||
2836 | tmp_gs = DIV_ROUND_CLOSEST(tmp_gs, 10); | ||
2837 | |||
2838 | if (path == RF_PATH_A) | ||
2839 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0, BIT_GS_PWSF, tmp_gs); | ||
2840 | else | ||
2841 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S1, BIT_GS_PWSF, tmp_gs); | ||
2842 | |||
2843 | dpk_info->dpk_gs[path] = tmp_gs; | ||
2844 | } | ||
2845 | |||
2846 | void rtw8822c_dpk_cal_coef1(struct rtw_dev *rtwdev) | ||
2847 | { | ||
2848 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2849 | u32 offset[DPK_RF_PATH_NUM] = {0, 0x58}; | ||
2850 | u32 i_scaling; | ||
2851 | u8 path; | ||
2852 | |||
2853 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x0000000c); | ||
2854 | rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x000000f0); | ||
2855 | rtw_write32(rtwdev, REG_NCTL0, 0x00001148); | ||
2856 | rtw_write32(rtwdev, REG_NCTL0, 0x00001149); | ||
2857 | |||
2858 | check_hw_ready(rtwdev, 0x2d9c, MASKBYTE0, 0x55); | ||
2859 | |||
2860 | rtw_write8(rtwdev, 0x1b10, 0x0); | ||
2861 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x0000000c); | ||
2862 | |||
2863 | for (path = 0; path < rtwdev->hal.rf_path_num; path++) { | ||
2864 | i_scaling = 0x16c00 / dpk_info->dpk_gs[path]; | ||
2865 | |||
2866 | rtw_write32_mask(rtwdev, 0x1b18 + offset[path], MASKHWORD, | ||
2867 | i_scaling); | ||
2868 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0 + offset[path], | ||
2869 | GENMASK(31, 28), 0x9); | ||
2870 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0 + offset[path], | ||
2871 | GENMASK(31, 28), 0x1); | ||
2872 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0 + offset[path], | ||
2873 | GENMASK(31, 28), 0x0); | ||
2874 | rtw_write32_mask(rtwdev, REG_DPD_CTL1_S0 + offset[path], | ||
2875 | BIT(14), 0x0); | ||
2876 | } | ||
2877 | } | ||
2878 | |||
2879 | static void rtw8822c_dpk_on(struct rtw_dev *rtwdev, u8 path) | ||
2880 | { | ||
2881 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2882 | |||
2883 | rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DPK_ON); | ||
2884 | |||
2885 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); | ||
2886 | rtw_write32_mask(rtwdev, REG_IQK_CTL1, BIT_TX_CFIR, 0x0); | ||
2887 | |||
2888 | if (test_bit(path, dpk_info->dpk_path_ok)) | ||
2889 | rtw8822c_dpk_cal_gs(rtwdev, path); | ||
2890 | } | ||
2891 | |||
2892 | static bool rtw8822c_dpk_check_pass(struct rtw_dev *rtwdev, bool is_fail, | ||
2893 | u32 dpk_txagc, u8 path) | ||
2894 | { | ||
2895 | bool result; | ||
2896 | |||
2897 | if (!is_fail) { | ||
2898 | if (rtw8822c_dpk_coef_read(rtwdev, path)) | ||
2899 | result = true; | ||
2900 | else | ||
2901 | result = false; | ||
2902 | } else { | ||
2903 | result = false; | ||
2904 | } | ||
2905 | |||
2906 | rtw8822c_dpk_fill_result(rtwdev, dpk_txagc, path, result); | ||
2907 | |||
2908 | return result; | ||
2909 | } | ||
2910 | |||
2911 | static void rtw8822c_dpk_result_reset(struct rtw_dev *rtwdev) | ||
2912 | { | ||
2913 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2914 | u8 path; | ||
2915 | |||
2916 | for (path = 0; path < rtwdev->hal.rf_path_num; path++) { | ||
2917 | clear_bit(path, dpk_info->dpk_path_ok); | ||
2918 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, | ||
2919 | 0x8 | (path << 1)); | ||
2920 | rtw_write32_mask(rtwdev, 0x1b58, 0x0000007f, 0x0); | ||
2921 | |||
2922 | dpk_info->dpk_txagc[path] = 0; | ||
2923 | dpk_info->result[path] = 0; | ||
2924 | dpk_info->dpk_gs[path] = 0x5b; | ||
2925 | dpk_info->pre_pwsf[path] = 0; | ||
2926 | dpk_info->thermal_dpk[path] = rtw8822c_dpk_thermal_read(rtwdev, | ||
2927 | path); | ||
2928 | } | ||
2929 | } | ||
2930 | |||
2931 | static void rtw8822c_dpk_calibrate(struct rtw_dev *rtwdev, u8 path) | ||
2932 | { | ||
2933 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2934 | u32 dpk_txagc; | ||
2935 | u8 dpk_fail; | ||
2936 | |||
2937 | rtw_dbg(rtwdev, RTW_DBG_RFK, "[DPK] s%d dpk start\n", path); | ||
2938 | |||
2939 | dpk_txagc = rtw8822c_dpk_gainloss(rtwdev, path); | ||
2940 | |||
2941 | dpk_fail = rtw8822c_dpk_by_path(rtwdev, dpk_txagc, path); | ||
2942 | |||
2943 | if (!rtw8822c_dpk_check_pass(rtwdev, dpk_fail, dpk_txagc, path)) | ||
2944 | rtw_err(rtwdev, "failed to do dpk calibration\n"); | ||
2945 | |||
2946 | rtw_dbg(rtwdev, RTW_DBG_RFK, "[DPK] s%d dpk finish\n", path); | ||
2947 | |||
2948 | if (dpk_info->result[path]) | ||
2949 | set_bit(path, dpk_info->dpk_path_ok); | ||
2950 | } | ||
2951 | |||
2952 | static void rtw8822c_dpk_path_select(struct rtw_dev *rtwdev) | ||
2953 | { | ||
2954 | rtw8822c_dpk_calibrate(rtwdev, RF_PATH_A); | ||
2955 | rtw8822c_dpk_calibrate(rtwdev, RF_PATH_B); | ||
2956 | rtw8822c_dpk_on(rtwdev, RF_PATH_A); | ||
2957 | rtw8822c_dpk_on(rtwdev, RF_PATH_B); | ||
2958 | rtw8822c_dpk_cal_coef1(rtwdev); | ||
2959 | } | ||
2960 | |||
2961 | static void rtw8822c_dpk_enable_disable(struct rtw_dev *rtwdev) | ||
2962 | { | ||
2963 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2964 | u32 mask = BIT(15) | BIT(14); | ||
2965 | |||
2966 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); | ||
2967 | |||
2968 | rtw_write32_mask(rtwdev, REG_DPD_CTL1_S0, BIT_DPD_EN, | ||
2969 | dpk_info->is_dpk_pwr_on); | ||
2970 | rtw_write32_mask(rtwdev, REG_DPD_CTL1_S1, BIT_DPD_EN, | ||
2971 | dpk_info->is_dpk_pwr_on); | ||
2972 | |||
2973 | if (test_bit(RF_PATH_A, dpk_info->dpk_path_ok)) { | ||
2974 | rtw_write32_mask(rtwdev, REG_DPD_CTL1_S0, mask, 0x0); | ||
2975 | rtw_write8(rtwdev, REG_DPD_CTL0_S0, dpk_info->dpk_gs[RF_PATH_A]); | ||
2976 | } | ||
2977 | if (test_bit(RF_PATH_B, dpk_info->dpk_path_ok)) { | ||
2978 | rtw_write32_mask(rtwdev, REG_DPD_CTL1_S1, mask, 0x0); | ||
2979 | rtw_write8(rtwdev, REG_DPD_CTL0_S1, dpk_info->dpk_gs[RF_PATH_B]); | ||
2980 | } | ||
2981 | } | ||
2982 | |||
2983 | static void rtw8822c_dpk_reload_data(struct rtw_dev *rtwdev) | ||
2984 | { | ||
2985 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
2986 | u8 path; | ||
2987 | |||
2988 | if (!test_bit(RF_PATH_A, dpk_info->dpk_path_ok) && | ||
2989 | !test_bit(RF_PATH_B, dpk_info->dpk_path_ok) && | ||
2990 | dpk_info->dpk_ch == 0) | ||
2991 | return; | ||
2992 | |||
2993 | for (path = 0; path < rtwdev->hal.rf_path_num; path++) { | ||
2994 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, | ||
2995 | 0x8 | (path << 1)); | ||
2996 | if (dpk_info->dpk_band == RTW_BAND_2G) | ||
2997 | rtw_write32(rtwdev, REG_DPD_LUT3, 0x1f100000); | ||
2998 | else | ||
2999 | rtw_write32(rtwdev, REG_DPD_LUT3, 0x1f0d0000); | ||
3000 | |||
3001 | rtw_write8(rtwdev, REG_DPD_AGC, dpk_info->dpk_txagc[path]); | ||
3002 | |||
3003 | rtw8822c_dpk_coef_write(rtwdev, path, | ||
3004 | test_bit(path, dpk_info->dpk_path_ok)); | ||
3005 | |||
3006 | rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DPK_ON); | ||
3007 | |||
3008 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); | ||
3009 | |||
3010 | if (path == RF_PATH_A) | ||
3011 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0, BIT_GS_PWSF, | ||
3012 | dpk_info->dpk_gs[path]); | ||
3013 | else | ||
3014 | rtw_write32_mask(rtwdev, REG_DPD_CTL0_S1, BIT_GS_PWSF, | ||
3015 | dpk_info->dpk_gs[path]); | ||
3016 | } | ||
3017 | rtw8822c_dpk_cal_coef1(rtwdev); | ||
3018 | } | ||
3019 | |||
3020 | static bool rtw8822c_dpk_reload(struct rtw_dev *rtwdev) | ||
3021 | { | ||
3022 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
3023 | u8 channel; | ||
3024 | |||
3025 | dpk_info->is_reload = false; | ||
3026 | |||
3027 | channel = (u8)(rtw_read_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK) & 0xff); | ||
3028 | |||
3029 | if (channel == dpk_info->dpk_ch) { | ||
3030 | rtw_dbg(rtwdev, RTW_DBG_RFK, | ||
3031 | "[DPK] DPK reload for CH%d!!\n", dpk_info->dpk_ch); | ||
3032 | rtw8822c_dpk_reload_data(rtwdev); | ||
3033 | dpk_info->is_reload = true; | ||
3034 | } | ||
3035 | |||
3036 | return dpk_info->is_reload; | ||
3037 | } | ||
3038 | |||
3039 | static void rtw8822c_do_dpk(struct rtw_dev *rtwdev) | ||
3040 | { | ||
3041 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
3042 | struct rtw_backup_info bckp[DPK_BB_REG_NUM]; | ||
3043 | u32 rf_reg_backup[DPK_RF_REG_NUM][DPK_RF_PATH_NUM]; | ||
3044 | u32 bb_reg[DPK_BB_REG_NUM] = { | ||
3045 | 0x520, 0x820, 0x824, 0x1c3c, 0x1d58, 0x1864, | ||
3046 | 0x4164, 0x180c, 0x410c, 0x186c, 0x416c, | ||
3047 | 0x1a14, 0x1e70, 0x80c, 0x1d70, 0x1e7c, 0x18a4, 0x41a4}; | ||
3048 | u32 rf_reg[DPK_RF_REG_NUM] = { | ||
3049 | 0x0, 0x1a, 0x55, 0x63, 0x87, 0x8f, 0xde}; | ||
3050 | u8 path; | ||
3051 | |||
3052 | if (!dpk_info->is_dpk_pwr_on) { | ||
3053 | rtw_dbg(rtwdev, RTW_DBG_RFK, "[DPK] Skip DPK due to DPD PWR off\n"); | ||
3054 | return; | ||
3055 | } else if (rtw8822c_dpk_reload(rtwdev)) { | ||
3056 | return; | ||
3057 | } | ||
3058 | |||
3059 | for (path = RF_PATH_A; path < DPK_RF_PATH_NUM; path++) | ||
3060 | ewma_thermal_init(&dpk_info->avg_thermal[path]); | ||
3061 | |||
3062 | rtw8822c_dpk_information(rtwdev); | ||
3063 | |||
3064 | rtw8822c_dpk_backup_registers(rtwdev, bb_reg, DPK_BB_REG_NUM, bckp); | ||
3065 | rtw8822c_dpk_backup_rf_registers(rtwdev, rf_reg, rf_reg_backup); | ||
3066 | |||
3067 | rtw8822c_dpk_mac_bb_setting(rtwdev); | ||
3068 | rtw8822c_dpk_afe_setting(rtwdev, true); | ||
3069 | rtw8822c_dpk_pre_setting(rtwdev); | ||
3070 | rtw8822c_dpk_result_reset(rtwdev); | ||
3071 | rtw8822c_dpk_path_select(rtwdev); | ||
3072 | rtw8822c_dpk_afe_setting(rtwdev, false); | ||
3073 | rtw8822c_dpk_enable_disable(rtwdev); | ||
3074 | |||
3075 | rtw8822c_dpk_reload_rf_registers(rtwdev, rf_reg, rf_reg_backup); | ||
3076 | for (path = 0; path < rtwdev->hal.rf_path_num; path++) | ||
3077 | rtw8822c_dpk_rxbb_dc_cal(rtwdev, path); | ||
3078 | rtw8822c_dpk_restore_registers(rtwdev, DPK_BB_REG_NUM, bckp); | ||
3079 | } | ||
3080 | |||
3081 | static void rtw8822c_phy_calibration(struct rtw_dev *rtwdev) | ||
3082 | { | ||
3083 | rtw8822c_do_iqk(rtwdev); | ||
3084 | rtw8822c_do_dpk(rtwdev); | ||
3085 | } | ||
3086 | |||
3087 | void rtw8822c_dpk_track(struct rtw_dev *rtwdev) | ||
3088 | { | ||
3089 | struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; | ||
3090 | u8 path; | ||
3091 | u8 thermal_value[DPK_RF_PATH_NUM] = {0}; | ||
3092 | s8 offset[DPK_RF_PATH_NUM], delta_dpk[DPK_RF_PATH_NUM]; | ||
3093 | |||
3094 | if (dpk_info->thermal_dpk[0] == 0 && dpk_info->thermal_dpk[1] == 0) | ||
3095 | return; | ||
3096 | |||
3097 | for (path = 0; path < DPK_RF_PATH_NUM; path++) { | ||
3098 | thermal_value[path] = rtw8822c_dpk_thermal_read(rtwdev, path); | ||
3099 | ewma_thermal_add(&dpk_info->avg_thermal[path], | ||
3100 | thermal_value[path]); | ||
3101 | thermal_value[path] = | ||
3102 | ewma_thermal_read(&dpk_info->avg_thermal[path]); | ||
3103 | delta_dpk[path] = dpk_info->thermal_dpk[path] - | ||
3104 | thermal_value[path]; | ||
3105 | offset[path] = delta_dpk[path] - | ||
3106 | dpk_info->thermal_dpk_delta[path]; | ||
3107 | offset[path] &= 0x7f; | ||
3108 | |||
3109 | if (offset[path] != dpk_info->pre_pwsf[path]) { | ||
3110 | rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, | ||
3111 | 0x8 | (path << 1)); | ||
3112 | rtw_write32_mask(rtwdev, 0x1b58, GENMASK(6, 0), | ||
3113 | offset[path]); | ||
3114 | dpk_info->pre_pwsf[path] = offset[path]; | ||
3115 | } | ||
3116 | } | ||
3117 | } | ||
3118 | |||
3119 | static const struct rtw_phy_cck_pd_reg | ||
3120 | rtw8822c_cck_pd_reg[RTW_CHANNEL_WIDTH_40 + 1][RTW_RF_PATH_MAX] = { | ||
3121 | { | ||
3122 | {0x1ac8, 0x00ff, 0x1ad0, 0x01f}, | ||
3123 | {0x1ac8, 0xff00, 0x1ad0, 0x3e0} | ||
3124 | }, | ||
3125 | { | ||
3126 | {0x1acc, 0x00ff, 0x1ad0, 0x01F00000}, | ||
3127 | {0x1acc, 0xff00, 0x1ad0, 0x3E000000} | ||
3128 | }, | ||
3129 | }; | ||
3130 | |||
3131 | #define RTW_CCK_PD_MAX 255 | ||
3132 | #define RTW_CCK_CS_MAX 31 | ||
3133 | #define RTW_CCK_CS_ERR1 27 | ||
3134 | #define RTW_CCK_CS_ERR2 29 | ||
3135 | static void | ||
3136 | rtw8822c_phy_cck_pd_set_reg(struct rtw_dev *rtwdev, | ||
3137 | s8 pd_diff, s8 cs_diff, u8 bw, u8 nrx) | ||
3138 | { | ||
3139 | u32 pd, cs; | ||
3140 | |||
3141 | if (WARN_ON(bw > RTW_CHANNEL_WIDTH_40 || nrx >= RTW_RF_PATH_MAX)) | ||
3142 | return; | ||
3143 | |||
3144 | pd = rtw_read32_mask(rtwdev, | ||
3145 | rtw8822c_cck_pd_reg[bw][nrx].reg_pd, | ||
3146 | rtw8822c_cck_pd_reg[bw][nrx].mask_pd); | ||
3147 | cs = rtw_read32_mask(rtwdev, | ||
3148 | rtw8822c_cck_pd_reg[bw][nrx].reg_cs, | ||
3149 | rtw8822c_cck_pd_reg[bw][nrx].mask_cs); | ||
3150 | pd += pd_diff; | ||
3151 | cs += cs_diff; | ||
3152 | if (pd > RTW_CCK_PD_MAX) | ||
3153 | pd = RTW_CCK_PD_MAX; | ||
3154 | if (cs == RTW_CCK_CS_ERR1 || cs == RTW_CCK_CS_ERR2) | ||
3155 | cs++; | ||
3156 | else if (cs > RTW_CCK_CS_MAX) | ||
3157 | cs = RTW_CCK_CS_MAX; | ||
3158 | rtw_write32_mask(rtwdev, | ||
3159 | rtw8822c_cck_pd_reg[bw][nrx].reg_pd, | ||
3160 | rtw8822c_cck_pd_reg[bw][nrx].mask_pd, | ||
3161 | pd); | ||
3162 | rtw_write32_mask(rtwdev, | ||
3163 | rtw8822c_cck_pd_reg[bw][nrx].reg_cs, | ||
3164 | rtw8822c_cck_pd_reg[bw][nrx].mask_cs, | ||
3165 | cs); | ||
3166 | } | ||
3167 | |||
3168 | static void rtw8822c_phy_cck_pd_set(struct rtw_dev *rtwdev, u8 new_lvl) | ||
3169 | { | ||
3170 | struct rtw_dm_info *dm_info = &rtwdev->dm_info; | ||
3171 | s8 pd_lvl[4] = {2, 4, 6, 8}; | ||
3172 | s8 cs_lvl[4] = {2, 2, 2, 4}; | ||
3173 | u8 cur_lvl; | ||
3174 | u8 nrx, bw; | ||
3175 | |||
3176 | nrx = (u8)rtw_read32_mask(rtwdev, 0x1a2c, 0x60000); | ||
3177 | bw = (u8)rtw_read32_mask(rtwdev, 0x9b0, 0xc); | ||
3178 | |||
3179 | if (dm_info->cck_pd_lv[bw][nrx] == new_lvl) | ||
3180 | return; | ||
3181 | |||
3182 | cur_lvl = dm_info->cck_pd_lv[bw][nrx]; | ||
3183 | |||
3184 | /* update cck pd info */ | ||
3185 | dm_info->cck_fa_avg = CCK_FA_AVG_RESET; | ||
3186 | |||
3187 | rtw8822c_phy_cck_pd_set_reg(rtwdev, | ||
3188 | pd_lvl[new_lvl] - pd_lvl[cur_lvl], | ||
3189 | cs_lvl[new_lvl] - cs_lvl[cur_lvl], | ||
3190 | bw, nrx); | ||
3191 | dm_info->cck_pd_lv[bw][nrx] = new_lvl; | ||
3192 | } | ||
3193 | |||
2032 | static struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8822c[] = { | 3194 | static struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8822c[] = { |
2033 | {0x0086, | 3195 | {0x0086, |
2034 | RTW_PWR_CUT_ALL_MSK, | 3196 | RTW_PWR_CUT_ALL_MSK, |
@@ -2275,6 +3437,16 @@ static struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8822c[] = { | |||
2275 | RTW_PWR_INTF_ALL_MSK, | 3437 | RTW_PWR_INTF_ALL_MSK, |
2276 | RTW_PWR_ADDR_MAC, | 3438 | RTW_PWR_ADDR_MAC, |
2277 | RTW_PWR_CMD_WRITE, BIT(1), 0}, | 3439 | RTW_PWR_CMD_WRITE, BIT(1), 0}, |
3440 | {0x0092, | ||
3441 | RTW_PWR_CUT_ALL_MSK, | ||
3442 | RTW_PWR_INTF_PCI_MSK, | ||
3443 | RTW_PWR_ADDR_MAC, | ||
3444 | RTW_PWR_CMD_WRITE, 0xFF, 0x20}, | ||
3445 | {0x0093, | ||
3446 | RTW_PWR_CUT_ALL_MSK, | ||
3447 | RTW_PWR_INTF_PCI_MSK, | ||
3448 | RTW_PWR_ADDR_MAC, | ||
3449 | RTW_PWR_CMD_WRITE, 0xFF, 0x04}, | ||
2278 | {0x0005, | 3450 | {0x0005, |
2279 | RTW_PWR_CUT_ALL_MSK, | 3451 | RTW_PWR_CUT_ALL_MSK, |
2280 | RTW_PWR_INTF_USB_MSK | RTW_PWR_INTF_SDIO_MSK, | 3452 | RTW_PWR_INTF_USB_MSK | RTW_PWR_INTF_SDIO_MSK, |
@@ -2396,7 +3568,9 @@ static struct rtw_chip_ops rtw8822c_ops = { | |||
2396 | .set_tx_power_index = rtw8822c_set_tx_power_index, | 3568 | .set_tx_power_index = rtw8822c_set_tx_power_index, |
2397 | .cfg_ldo25 = rtw8822c_cfg_ldo25, | 3569 | .cfg_ldo25 = rtw8822c_cfg_ldo25, |
2398 | .false_alarm_statistics = rtw8822c_false_alarm_statistics, | 3570 | .false_alarm_statistics = rtw8822c_false_alarm_statistics, |
2399 | .do_iqk = rtw8822c_do_iqk, | 3571 | .dpk_track = rtw8822c_dpk_track, |
3572 | .phy_calibration = rtw8822c_phy_calibration, | ||
3573 | .cck_pd_set = rtw8822c_phy_cck_pd_set, | ||
2400 | 3574 | ||
2401 | .coex_set_init = rtw8822c_coex_cfg_init, | 3575 | .coex_set_init = rtw8822c_coex_cfg_init, |
2402 | .coex_set_ant_switch = NULL, | 3576 | .coex_set_ant_switch = NULL, |
@@ -2589,6 +3763,8 @@ struct rtw_chip_info rtw8822c_hw_spec = { | |||
2589 | .rf_tbl = {&rtw8822c_rf_a_tbl, &rtw8822c_rf_b_tbl}, | 3763 | .rf_tbl = {&rtw8822c_rf_a_tbl, &rtw8822c_rf_b_tbl}, |
2590 | .rfe_defs = rtw8822c_rfe_defs, | 3764 | .rfe_defs = rtw8822c_rfe_defs, |
2591 | .rfe_defs_size = ARRAY_SIZE(rtw8822c_rfe_defs), | 3765 | .rfe_defs_size = ARRAY_SIZE(rtw8822c_rfe_defs), |
3766 | .en_dis_dpd = true, | ||
3767 | .dpd_ratemask = DIS_DPD_RATEALL, | ||
2592 | 3768 | ||
2593 | .coex_para_ver = 0x19062706, | 3769 | .coex_para_ver = 0x19062706, |
2594 | .bt_desired_ver = 0x6, | 3770 | .bt_desired_ver = 0x6, |
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.h b/drivers/net/wireless/realtek/rtw88/rtw8822c.h index 5ee1de41504d..438db74d8e7a 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.h +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.h | |||
@@ -96,6 +96,35 @@ struct rtw8822c_efuse { | |||
96 | }; | 96 | }; |
97 | }; | 97 | }; |
98 | 98 | ||
99 | enum rtw8822c_dpk_agc_phase { | ||
100 | RTW_DPK_GAIN_CHECK, | ||
101 | RTW_DPK_GAIN_LARGE, | ||
102 | RTW_DPK_GAIN_LESS, | ||
103 | RTW_DPK_GL_LARGE, | ||
104 | RTW_DPK_GL_LESS, | ||
105 | RTW_DPK_LOSS_CHECK, | ||
106 | RTW_DPK_AGC_OUT, | ||
107 | }; | ||
108 | |||
109 | enum rtw8822c_dpk_one_shot_action { | ||
110 | RTW_DPK_CAL_PWR, | ||
111 | RTW_DPK_GAIN_LOSS, | ||
112 | RTW_DPK_DO_DPK, | ||
113 | RTW_DPK_DPK_ON, | ||
114 | RTW_DPK_DAGC, | ||
115 | RTW_DPK_ACTION_MAX | ||
116 | }; | ||
117 | |||
118 | void rtw8822c_parse_tbl_dpk(struct rtw_dev *rtwdev, | ||
119 | const struct rtw_table *tbl); | ||
120 | |||
121 | #define RTW_DECL_TABLE_DPK(name) \ | ||
122 | const struct rtw_table name ## _tbl = { \ | ||
123 | .data = name, \ | ||
124 | .size = ARRAY_SIZE(name), \ | ||
125 | .parse = rtw8822c_parse_tbl_dpk, \ | ||
126 | } | ||
127 | |||
99 | #define DACK_PATH_8822C 2 | 128 | #define DACK_PATH_8822C 2 |
100 | #define DACK_REG_8822C 16 | 129 | #define DACK_REG_8822C 16 |
101 | #define DACK_RF_8822C 1 | 130 | #define DACK_RF_8822C 1 |
@@ -176,6 +205,7 @@ struct rtw8822c_efuse { | |||
176 | #define REG_TXF7 0x1ab0 | 205 | #define REG_TXF7 0x1ab0 |
177 | #define REG_CCK_SOURCE 0x1abc | 206 | #define REG_CCK_SOURCE 0x1abc |
178 | #define BIT_NBI_EN BIT(30) | 207 | #define BIT_NBI_EN BIT(30) |
208 | #define REG_IQKSTAT 0x1b10 | ||
179 | #define REG_TXANT 0x1c28 | 209 | #define REG_TXANT 0x1c28 |
180 | #define REG_ENCCK 0x1c3c | 210 | #define REG_ENCCK 0x1c3c |
181 | #define BIT_CCK_BLK_EN BIT(1) | 211 | #define BIT_CCK_BLK_EN BIT(1) |
@@ -197,6 +227,7 @@ struct rtw8822c_efuse { | |||
197 | #define REG_OFDM_FACNT3 0x2d0c | 227 | #define REG_OFDM_FACNT3 0x2d0c |
198 | #define REG_OFDM_FACNT4 0x2d10 | 228 | #define REG_OFDM_FACNT4 0x2d10 |
199 | #define REG_OFDM_FACNT5 0x2d20 | 229 | #define REG_OFDM_FACNT5 0x2d20 |
230 | #define REG_RPT_CIP 0x2d9c | ||
200 | #define REG_OFDM_TXCNT 0x2de0 | 231 | #define REG_OFDM_TXCNT 0x2de0 |
201 | #define REG_ORITXCODE2 0x4100 | 232 | #define REG_ORITXCODE2 0x4100 |
202 | #define REG_3WIRE2 0x410c | 233 | #define REG_3WIRE2 0x410c |
@@ -206,4 +237,59 @@ struct rtw8822c_efuse { | |||
206 | #define REG_DCKB_Q_0 0x41d8 | 237 | #define REG_DCKB_Q_0 0x41d8 |
207 | #define REG_DCKB_Q_1 0x41dc | 238 | #define REG_DCKB_Q_1 0x41dc |
208 | 239 | ||
240 | #define RF_MODE_TRXAGC 0x00 | ||
241 | #define RF_RXAGC_OFFSET 0x19 | ||
242 | #define RF_BW_TRXBB 0x1a | ||
243 | #define RF_TX_GAIN_OFFSET 0x55 | ||
244 | #define RF_TX_GAIN 0x56 | ||
245 | #define RF_TXA_LB_SW 0x63 | ||
246 | #define RF_RXG_GAIN 0x87 | ||
247 | #define RF_RXA_MIX_GAIN 0x8a | ||
248 | #define RF_EXT_TIA_BW 0x8f | ||
249 | #define RF_DEBUG 0xde | ||
250 | |||
251 | #define REG_NCTL0 0x1b00 | ||
252 | #define REG_DPD_CTL0_S0 0x1b04 | ||
253 | #define REG_DPD_CTL1_S0 0x1b08 | ||
254 | #define REG_IQK_CTL1 0x1b20 | ||
255 | #define REG_DPD_LUT0 0x1b44 | ||
256 | #define REG_DPD_CTL0_S1 0x1b5c | ||
257 | #define REG_DPD_LUT3 0x1b60 | ||
258 | #define REG_DPD_CTL1_S1 0x1b60 | ||
259 | #define REG_DPD_AGC 0x1b67 | ||
260 | #define REG_DPD_CTL0 0x1bb4 | ||
261 | #define REG_R_CONFIG 0x1bcc | ||
262 | #define REG_RXSRAM_CTL 0x1bd4 | ||
263 | #define REG_DPD_CTL11 0x1be4 | ||
264 | #define REG_DPD_CTL12 0x1be8 | ||
265 | #define REG_DPD_CTL15 0x1bf4 | ||
266 | #define REG_DPD_CTL16 0x1bf8 | ||
267 | #define REG_STAT_RPT 0x1bfc | ||
268 | |||
269 | #define BIT_EXT_TIA_BW BIT(1) | ||
270 | #define BIT_DE_TRXBW BIT(2) | ||
271 | #define BIT_DE_TX_GAIN BIT(16) | ||
272 | #define BIT_RXG_GAIN BIT(18) | ||
273 | #define BIT_DE_PWR_TRIM BIT(19) | ||
274 | #define BIT_INNER_LB BIT(21) | ||
275 | #define BIT_BYPASS_DPD BIT(25) | ||
276 | #define BIT_DPD_EN BIT(31) | ||
277 | #define BIT_SUBPAGE GENMASK(3, 0) | ||
278 | #define BIT_TXAGC GENMASK(4, 0) | ||
279 | #define BIT_GAIN_TXBB GENMASK(4, 0) | ||
280 | #define BIT_LB_ATT GENMASK(4, 2) | ||
281 | #define BIT_RXA_MIX_GAIN GENMASK(4, 3) | ||
282 | #define BIT_IQ_SWITCH GENMASK(5, 0) | ||
283 | #define BIT_DPD_CLK GENMASK(7, 4) | ||
284 | #define BIT_RXAGC GENMASK(9, 5) | ||
285 | #define BIT_BW_RXBB GENMASK(11, 10) | ||
286 | #define BIT_LB_SW GENMASK(13, 12) | ||
287 | #define BIT_BW_TXBB GENMASK(14, 12) | ||
288 | #define BIT_GLOSS_DB GENMASK(14, 12) | ||
289 | #define BIT_TXA_LB_ATT GENMASK(15, 14) | ||
290 | #define BIT_TX_OFFSET_VAL GENMASK(18, 14) | ||
291 | #define BIT_RPT_SEL GENMASK(20, 16) | ||
292 | #define BIT_GS_PWSF GENMASK(27, 0) | ||
293 | #define BIT_RPT_DGAIN GENMASK(27, 16) | ||
294 | #define BIT_TX_CFIR GENMASK(31, 30) | ||
209 | #endif | 295 | #endif |
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c_table.c b/drivers/net/wireless/realtek/rtw88/rtw8822c_table.c index 6c7eaa75b98b..e2dd4c766077 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c_table.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c_table.c | |||
@@ -4,6 +4,7 @@ | |||
4 | 4 | ||
5 | #include "main.h" | 5 | #include "main.h" |
6 | #include "phy.h" | 6 | #include "phy.h" |
7 | #include "rtw8822c.h" | ||
7 | #include "rtw8822c_table.h" | 8 | #include "rtw8822c_table.h" |
8 | 9 | ||
9 | static const u32 rtw8822c_mac[] = { | 10 | static const u32 rtw8822c_mac[] = { |
@@ -13,69 +14,69 @@ RTW_DECL_TABLE_PHY_COND(rtw8822c_mac, rtw_phy_cfg_mac); | |||
13 | 14 | ||
14 | static const u32 rtw8822c_agc[] = { | 15 | static const u32 rtw8822c_agc[] = { |
15 | 0x1D90, 0x300001FF, | 16 | 0x1D90, 0x300001FF, |
16 | 0x1D90, 0x300101FF, | 17 | 0x1D90, 0x300101FE, |
17 | 0x1D90, 0x300201FE, | 18 | 0x1D90, 0x300201FD, |
18 | 0x1D90, 0x300301FD, | 19 | 0x1D90, 0x300301FC, |
19 | 0x1D90, 0x300401FC, | 20 | 0x1D90, 0x300401FB, |
20 | 0x1D90, 0x300501FB, | 21 | 0x1D90, 0x300501FA, |
21 | 0x1D90, 0x300601FA, | 22 | 0x1D90, 0x300601F9, |
22 | 0x1D90, 0x300701F9, | 23 | 0x1D90, 0x300701F8, |
23 | 0x1D90, 0x300801F8, | 24 | 0x1D90, 0x300801F7, |
24 | 0x1D90, 0x300901F7, | 25 | 0x1D90, 0x300901F6, |
25 | 0x1D90, 0x300A01F6, | 26 | 0x1D90, 0x300A01F5, |
26 | 0x1D90, 0x300B01F5, | 27 | 0x1D90, 0x300B01F4, |
27 | 0x1D90, 0x300C01F4, | 28 | 0x1D90, 0x300C01F3, |
28 | 0x1D90, 0x300D01F3, | 29 | 0x1D90, 0x300D01F2, |
29 | 0x1D90, 0x300E01F2, | 30 | 0x1D90, 0x300E01F1, |
30 | 0x1D90, 0x300F01F1, | 31 | 0x1D90, 0x300F01F0, |
31 | 0x1D90, 0x301001F0, | 32 | 0x1D90, 0x301001EF, |
32 | 0x1D90, 0x301101EF, | 33 | 0x1D90, 0x301101EE, |
33 | 0x1D90, 0x301201EE, | 34 | 0x1D90, 0x301201ED, |
34 | 0x1D90, 0x301301ED, | 35 | 0x1D90, 0x301301EC, |
35 | 0x1D90, 0x301401EC, | 36 | 0x1D90, 0x301401EB, |
36 | 0x1D90, 0x301501EB, | 37 | 0x1D90, 0x301501EA, |
37 | 0x1D90, 0x30160192, | 38 | 0x1D90, 0x301601E9, |
38 | 0x1D90, 0x30170191, | 39 | 0x1D90, 0x301701E8, |
39 | 0x1D90, 0x30180190, | 40 | 0x1D90, 0x301801E7, |
40 | 0x1D90, 0x3019018F, | 41 | 0x1D90, 0x301901E5, |
41 | 0x1D90, 0x301A018E, | 42 | 0x1D90, 0x301A01E4, |
42 | 0x1D90, 0x301B018D, | 43 | 0x1D90, 0x301B01C5, |
43 | 0x1D90, 0x301C018C, | 44 | 0x1D90, 0x301C01C4, |
44 | 0x1D90, 0x301D018B, | 45 | 0x1D90, 0x301D01C3, |
45 | 0x1D90, 0x301E018A, | 46 | 0x1D90, 0x301E01C2, |
46 | 0x1D90, 0x301F0189, | 47 | 0x1D90, 0x301F0188, |
47 | 0x1D90, 0x30200188, | 48 | 0x1D90, 0x30200187, |
48 | 0x1D90, 0x30210187, | 49 | 0x1D90, 0x30210186, |
49 | 0x1D90, 0x30220186, | 50 | 0x1D90, 0x30220184, |
50 | 0x1D90, 0x30230185, | 51 | 0x1D90, 0x30230183, |
51 | 0x1D90, 0x3024014B, | 52 | 0x1D90, 0x30240182, |
52 | 0x1D90, 0x3025014A, | 53 | 0x1D90, 0x30250181, |
53 | 0x1D90, 0x30260149, | 54 | 0x1D90, 0x30260148, |
54 | 0x1D90, 0x30270148, | 55 | 0x1D90, 0x30270147, |
55 | 0x1D90, 0x30280147, | 56 | 0x1D90, 0x30280146, |
56 | 0x1D90, 0x30290146, | 57 | 0x1D90, 0x30290144, |
57 | 0x1D90, 0x302A0145, | 58 | 0x1D90, 0x302A0143, |
58 | 0x1D90, 0x302B0144, | 59 | 0x1D90, 0x302B0142, |
59 | 0x1D90, 0x302C0143, | 60 | 0x1D90, 0x302C0141, |
60 | 0x1D90, 0x302D0142, | 61 | 0x1D90, 0x302D00C8, |
61 | 0x1D90, 0x302E00C8, | 62 | 0x1D90, 0x302E00C7, |
62 | 0x1D90, 0x302F00C7, | 63 | 0x1D90, 0x302F00C6, |
63 | 0x1D90, 0x303000C6, | 64 | 0x1D90, 0x303000C5, |
64 | 0x1D90, 0x303100C5, | 65 | 0x1D90, 0x303100C4, |
65 | 0x1D90, 0x303200C4, | 66 | 0x1D90, 0x303200C3, |
66 | 0x1D90, 0x30330088, | 67 | 0x1D90, 0x30330048, |
67 | 0x1D90, 0x30340087, | 68 | 0x1D90, 0x30340047, |
68 | 0x1D90, 0x30350086, | 69 | 0x1D90, 0x30350046, |
69 | 0x1D90, 0x30360045, | 70 | 0x1D90, 0x30360045, |
70 | 0x1D90, 0x30370044, | 71 | 0x1D90, 0x30370025, |
71 | 0x1D90, 0x30380043, | 72 | 0x1D90, 0x30380024, |
72 | 0x1D90, 0x30390023, | 73 | 0x1D90, 0x30390023, |
73 | 0x1D90, 0x303A0022, | 74 | 0x1D90, 0x303A0022, |
74 | 0x1D90, 0x303B0021, | 75 | 0x1D90, 0x303B0021, |
75 | 0x1D90, 0x303C0020, | 76 | 0x1D90, 0x303C0020, |
76 | 0x1D90, 0x303D0002, | 77 | 0x1D90, 0x303D0003, |
77 | 0x1D90, 0x303E0001, | 78 | 0x1D90, 0x303E0002, |
78 | 0x1D90, 0x303F0000, | 79 | 0x1D90, 0x303F0001, |
79 | 0x1D90, 0x304000FF, | 80 | 0x1D90, 0x304000FF, |
80 | 0x1D90, 0x304100FF, | 81 | 0x1D90, 0x304100FF, |
81 | 0x1D90, 0x304200FF, | 82 | 0x1D90, 0x304200FF, |
@@ -418,48 +419,48 @@ static const u32 rtw8822c_agc[] = { | |||
418 | 0x1D90, 0x319301EB, | 419 | 0x1D90, 0x319301EB, |
419 | 0x1D90, 0x319401EA, | 420 | 0x1D90, 0x319401EA, |
420 | 0x1D90, 0x319501E9, | 421 | 0x1D90, 0x319501E9, |
421 | 0x1D90, 0x3196018F, | 422 | 0x1D90, 0x319601E7, |
422 | 0x1D90, 0x3197018E, | 423 | 0x1D90, 0x319701E6, |
423 | 0x1D90, 0x3198018D, | 424 | 0x1D90, 0x319801E5, |
424 | 0x1D90, 0x3199018C, | 425 | 0x1D90, 0x319901E4, |
425 | 0x1D90, 0x319A018B, | 426 | 0x1D90, 0x319A01A8, |
426 | 0x1D90, 0x319B018A, | 427 | 0x1D90, 0x319B01A7, |
427 | 0x1D90, 0x319C0189, | 428 | 0x1D90, 0x319C01A6, |
428 | 0x1D90, 0x319D0188, | 429 | 0x1D90, 0x319D01A5, |
429 | 0x1D90, 0x319E0187, | 430 | 0x1D90, 0x319E0185, |
430 | 0x1D90, 0x319F0186, | 431 | 0x1D90, 0x319F0184, |
431 | 0x1D90, 0x31A00185, | 432 | 0x1D90, 0x31A00183, |
432 | 0x1D90, 0x31A10184, | 433 | 0x1D90, 0x31A10182, |
433 | 0x1D90, 0x31A20183, | 434 | 0x1D90, 0x31A20149, |
434 | 0x1D90, 0x31A30182, | 435 | 0x1D90, 0x31A30148, |
435 | 0x1D90, 0x31A40149, | 436 | 0x1D90, 0x31A40147, |
436 | 0x1D90, 0x31A50148, | 437 | 0x1D90, 0x31A50145, |
437 | 0x1D90, 0x31A60147, | 438 | 0x1D90, 0x31A60144, |
438 | 0x1D90, 0x31A70146, | 439 | 0x1D90, 0x31A70143, |
439 | 0x1D90, 0x31A80145, | 440 | 0x1D90, 0x31A80142, |
440 | 0x1D90, 0x31A90144, | 441 | 0x1D90, 0x31A900E6, |
441 | 0x1D90, 0x31AA0143, | 442 | 0x1D90, 0x31AA00E5, |
442 | 0x1D90, 0x31AB0142, | 443 | 0x1D90, 0x31AB00C9, |
443 | 0x1D90, 0x31AC0141, | 444 | 0x1D90, 0x31AC00C8, |
444 | 0x1D90, 0x31AD0140, | 445 | 0x1D90, 0x31AD00C7, |
445 | 0x1D90, 0x31AE00C7, | 446 | 0x1D90, 0x31AE00C6, |
446 | 0x1D90, 0x31AF00C6, | 447 | 0x1D90, 0x31AF00C5, |
447 | 0x1D90, 0x31B000C5, | 448 | 0x1D90, 0x31B000C4, |
448 | 0x1D90, 0x31B100C4, | 449 | 0x1D90, 0x31B100C3, |
449 | 0x1D90, 0x31B200C3, | 450 | 0x1D90, 0x31B20088, |
450 | 0x1D90, 0x31B30088, | 451 | 0x1D90, 0x31B30087, |
451 | 0x1D90, 0x31B40087, | 452 | 0x1D90, 0x31B40086, |
452 | 0x1D90, 0x31B50086, | 453 | 0x1D90, 0x31B50085, |
453 | 0x1D90, 0x31B60045, | 454 | 0x1D90, 0x31B60026, |
454 | 0x1D90, 0x31B70044, | 455 | 0x1D90, 0x31B70025, |
455 | 0x1D90, 0x31B80043, | 456 | 0x1D90, 0x31B80024, |
456 | 0x1D90, 0x31B90023, | 457 | 0x1D90, 0x31B90023, |
457 | 0x1D90, 0x31BA0022, | 458 | 0x1D90, 0x31BA0022, |
458 | 0x1D90, 0x31BB0021, | 459 | 0x1D90, 0x31BB0021, |
459 | 0x1D90, 0x31BC0020, | 460 | 0x1D90, 0x31BC0020, |
460 | 0x1D90, 0x31BD0002, | 461 | 0x1D90, 0x31BD0003, |
461 | 0x1D90, 0x31BE0001, | 462 | 0x1D90, 0x31BE0002, |
462 | 0x1D90, 0x31BF0000, | 463 | 0x1D90, 0x31BF0001, |
463 | 0x1D70, 0x22222222, | 464 | 0x1D70, 0x22222222, |
464 | 0x1D70, 0x20202020, | 465 | 0x1D70, 0x20202020, |
465 | }; | 466 | }; |
@@ -478,7 +479,7 @@ static const u32 rtw8822c_bb[] = { | |||
478 | 0x814, 0x00904080, | 479 | 0x814, 0x00904080, |
479 | 0x818, 0xC30056F1, | 480 | 0x818, 0xC30056F1, |
480 | 0x81C, 0x00050000, | 481 | 0x81C, 0x00050000, |
481 | 0x820, 0x11111133, | 482 | 0x820, 0x11111111, |
482 | 0x824, 0xC3C3CCC4, | 483 | 0x824, 0xC3C3CCC4, |
483 | 0x828, 0x30FB186C, | 484 | 0x828, 0x30FB186C, |
484 | 0x82C, 0x185D6556, | 485 | 0x82C, 0x185D6556, |
@@ -604,7 +605,7 @@ static const u32 rtw8822c_bb[] = { | |||
604 | 0xA14, 0x00000000, | 605 | 0xA14, 0x00000000, |
605 | 0xA18, 0x00000000, | 606 | 0xA18, 0x00000000, |
606 | 0xA1C, 0x00000000, | 607 | 0xA1C, 0x00000000, |
607 | 0xA20, 0xEB31B333, | 608 | 0xA20, 0xCB31B333, |
608 | 0xA24, 0x00275485, | 609 | 0xA24, 0x00275485, |
609 | 0xA28, 0x00166366, | 610 | 0xA28, 0x00166366, |
610 | 0xA2C, 0x00275485, | 611 | 0xA2C, 0x00275485, |
@@ -722,7 +723,7 @@ static const u32 rtw8822c_bb[] = { | |||
722 | 0xBF0, 0x00000000, | 723 | 0xBF0, 0x00000000, |
723 | 0xBF4, 0x00000000, | 724 | 0xBF4, 0x00000000, |
724 | 0xBF8, 0x00000000, | 725 | 0xBF8, 0x00000000, |
725 | 0xC00, 0x1C8BA0D6, | 726 | 0xC00, 0x0C8BA0D6, |
726 | 0xC04, 0x00000001, | 727 | 0xC04, 0x00000001, |
727 | 0xC08, 0x00000000, | 728 | 0xC08, 0x00000000, |
728 | 0xC0C, 0x02F1D8B7, | 729 | 0xC0C, 0x02F1D8B7, |
@@ -774,8 +775,8 @@ static const u32 rtw8822c_bb[] = { | |||
774 | 0xCC4, 0x00200400, | 775 | 0xCC4, 0x00200400, |
775 | 0xCC8, 0x0B200400, | 776 | 0xCC8, 0x0B200400, |
776 | 0xCCC, 0x00600400, | 777 | 0xCCC, 0x00600400, |
777 | 0xCD0, 0x00000092, | 778 | 0xCD0, 0x22220092, |
778 | 0xCD4, 0x22220000, | 779 | 0xCD4, 0x22220707, |
779 | 0xCD8, 0x22222222, | 780 | 0xCD8, 0x22222222, |
780 | 0xCDC, 0x22222222, | 781 | 0xCDC, 0x22222222, |
781 | 0xCE0, 0x22222222, | 782 | 0xCE0, 0x22222222, |
@@ -990,7 +991,7 @@ static const u32 rtw8822c_bb[] = { | |||
990 | 0x1C34, 0xE4E42000, | 991 | 0x1C34, 0xE4E42000, |
991 | 0x1C38, 0xFFA1005E, | 992 | 0x1C38, 0xFFA1005E, |
992 | 0x1C40, 0x8F588837, | 993 | 0x1C40, 0x8F588837, |
993 | 0x1C44, 0x04400300, | 994 | 0x1C44, 0x04400700, |
994 | 0x1C48, 0x00000000, | 995 | 0x1C48, 0x00000000, |
995 | 0x1C4C, 0x00000200, | 996 | 0x1C4C, 0x00000200, |
996 | 0x1C50, 0x8E588837, | 997 | 0x1C50, 0x8E588837, |
@@ -1108,7 +1109,7 @@ static const u32 rtw8822c_bb[] = { | |||
1108 | 0x1E20, 0x00000000, | 1109 | 0x1E20, 0x00000000, |
1109 | 0x1E24, 0x80003000, | 1110 | 0x1E24, 0x80003000, |
1110 | 0x1E28, 0x000CC0C3, | 1111 | 0x1E28, 0x000CC0C3, |
1111 | 0x1E2C, 0xE4E40404, | 1112 | 0x1E2C, 0xE4E40000, |
1112 | 0x1E30, 0xE4E4E4E4, | 1113 | 0x1E30, 0xE4E4E4E4, |
1113 | 0x1E34, 0xF3001234, | 1114 | 0x1E34, 0xF3001234, |
1114 | 0x1E38, 0x00000000, | 1115 | 0x1E38, 0x00000000, |
@@ -1124,7 +1125,7 @@ static const u32 rtw8822c_bb[] = { | |||
1124 | 0x1E60, 0x00000000, | 1125 | 0x1E60, 0x00000000, |
1125 | 0x1E64, 0xF3A00001, | 1126 | 0x1E64, 0xF3A00001, |
1126 | 0x1E68, 0x0028846E, | 1127 | 0x1E68, 0x0028846E, |
1127 | 0x1E6C, 0x40274906, | 1128 | 0x1E6C, 0x40374906, |
1128 | 0x1E70, 0x00001000, | 1129 | 0x1E70, 0x00001000, |
1129 | 0x1E74, 0x00000000, | 1130 | 0x1E74, 0x00000000, |
1130 | 0x1E78, 0x00000000, | 1131 | 0x1E78, 0x00000000, |
@@ -1485,11 +1486,11 @@ static const u32 rtw8822c_bb[] = { | |||
1485 | 0x1AD0, 0xA33529AD, | 1486 | 0x1AD0, 0xA33529AD, |
1486 | 0x1AD4, 0x0D8D8452, | 1487 | 0x1AD4, 0x0D8D8452, |
1487 | 0x1AD8, 0x08024024, | 1488 | 0x1AD8, 0x08024024, |
1488 | 0x1ADC, 0x000DB001, | 1489 | 0x1ADC, 0x000D0001, |
1489 | 0x1AE0, 0x00600391, | 1490 | 0x1AE0, 0x00600391, |
1490 | 0x1AE4, 0x08000080, | 1491 | 0x1AE4, 0x08000080, |
1491 | 0x1AE8, 0x00000002, | 1492 | 0x1AE8, 0xC2100002, |
1492 | 0x1AEC, 0x00000000, | 1493 | 0x1AEC, 0x000000F6, |
1493 | 0x1AF0, 0x00000000, | 1494 | 0x1AF0, 0x00000000, |
1494 | 0x1AF4, 0x00000000, | 1495 | 0x1AF4, 0x00000000, |
1495 | 0x1AF8, 0x00000000, | 1496 | 0x1AF8, 0x00000000, |
@@ -1756,6 +1757,7 @@ static const u32 rtw8822c_bb[] = { | |||
1756 | 0x1D94, 0x40FF0000, | 1757 | 0x1D94, 0x40FF0000, |
1757 | 0xC0C, 0x02F1D8B7, | 1758 | 0xC0C, 0x02F1D8B7, |
1758 | 0x1EE8, 0x00000000, | 1759 | 0x1EE8, 0x00000000, |
1760 | |||
1759 | }; | 1761 | }; |
1760 | 1762 | ||
1761 | RTW_DECL_TABLE_PHY_COND(rtw8822c_bb, rtw_phy_cfg_bb); | 1763 | RTW_DECL_TABLE_PHY_COND(rtw8822c_bb, rtw_phy_cfg_bb); |
@@ -1828,6 +1830,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
1828 | 0x08E, 0x000A5540, | 1830 | 0x08E, 0x000A5540, |
1829 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 1831 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
1830 | 0x08E, 0x000A5540, | 1832 | 0x08E, 0x000A5540, |
1833 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
1834 | 0x08E, 0x000A5540, | ||
1835 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
1836 | 0x08E, 0x000A5540, | ||
1831 | 0xA0000000, 0x00000000, | 1837 | 0xA0000000, 0x00000000, |
1832 | 0x08E, 0x000A5540, | 1838 | 0x08E, 0x000A5540, |
1833 | 0xB0000000, 0x00000000, | 1839 | 0xB0000000, 0x00000000, |
@@ -1846,6 +1852,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
1846 | 0x085, 0x0006A06C, | 1852 | 0x085, 0x0006A06C, |
1847 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 1853 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
1848 | 0x085, 0x0006A06C, | 1854 | 0x085, 0x0006A06C, |
1855 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
1856 | 0x085, 0x0006A06C, | ||
1857 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
1858 | 0x085, 0x0006A06C, | ||
1849 | 0xA0000000, 0x00000000, | 1859 | 0xA0000000, 0x00000000, |
1850 | 0x085, 0x0006A06C, | 1860 | 0x085, 0x0006A06C, |
1851 | 0xB0000000, 0x00000000, | 1861 | 0xB0000000, 0x00000000, |
@@ -1903,6 +1913,24 @@ static const u32 rtw8822c_rf_a[] = { | |||
1903 | 0x033, 0x00000002, | 1913 | 0x033, 0x00000002, |
1904 | 0x03F, 0x0000002A, | 1914 | 0x03F, 0x0000002A, |
1905 | 0x0EE, 0x00000000, | 1915 | 0x0EE, 0x00000000, |
1916 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
1917 | 0x0EE, 0x00000010, | ||
1918 | 0x033, 0x00000001, | ||
1919 | 0x03F, 0x0000002A, | ||
1920 | 0x033, 0x00000001, | ||
1921 | 0x03F, 0x0000002A, | ||
1922 | 0x033, 0x00000002, | ||
1923 | 0x03F, 0x0000002A, | ||
1924 | 0x0EE, 0x00000000, | ||
1925 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
1926 | 0x0EE, 0x00000010, | ||
1927 | 0x033, 0x00000001, | ||
1928 | 0x03F, 0x0000002A, | ||
1929 | 0x033, 0x00000001, | ||
1930 | 0x03F, 0x0000002A, | ||
1931 | 0x033, 0x00000002, | ||
1932 | 0x03F, 0x0000002A, | ||
1933 | 0x0EE, 0x00000000, | ||
1906 | 0xA0000000, 0x00000000, | 1934 | 0xA0000000, 0x00000000, |
1907 | 0x0EE, 0x00000010, | 1935 | 0x0EE, 0x00000010, |
1908 | 0x033, 0x00000001, | 1936 | 0x033, 0x00000001, |
@@ -2069,6 +2097,58 @@ static const u32 rtw8822c_rf_a[] = { | |||
2069 | 0x03F, 0x00000180, | 2097 | 0x03F, 0x00000180, |
2070 | 0x033, 0x00000004, | 2098 | 0x033, 0x00000004, |
2071 | 0x03F, 0x00000040, | 2099 | 0x03F, 0x00000040, |
2100 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
2101 | 0x0EF, 0x00010000, | ||
2102 | 0x033, 0x0000000F, | ||
2103 | 0x03F, 0x000773C0, | ||
2104 | 0x033, 0x0000000E, | ||
2105 | 0x03F, 0x000FF3C0, | ||
2106 | 0x033, 0x0000000D, | ||
2107 | 0x03F, 0x000773E8, | ||
2108 | 0x033, 0x0000000C, | ||
2109 | 0x03F, 0x000FF3E8, | ||
2110 | 0x033, 0x0000000B, | ||
2111 | 0x03F, 0x00000287, | ||
2112 | 0x033, 0x0000000A, | ||
2113 | 0x03F, 0x000002A8, | ||
2114 | 0x033, 0x00000009, | ||
2115 | 0x03F, 0x00000207, | ||
2116 | 0x033, 0x00000008, | ||
2117 | 0x03F, 0x000FF280, | ||
2118 | 0x033, 0x00000007, | ||
2119 | 0x03F, 0x00000200, | ||
2120 | 0x033, 0x00000006, | ||
2121 | 0x03F, 0x000001C0, | ||
2122 | 0x033, 0x00000005, | ||
2123 | 0x03F, 0x00000180, | ||
2124 | 0x033, 0x00000004, | ||
2125 | 0x03F, 0x00000040, | ||
2126 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
2127 | 0x0EF, 0x00010000, | ||
2128 | 0x033, 0x0000000F, | ||
2129 | 0x03F, 0x000773C0, | ||
2130 | 0x033, 0x0000000E, | ||
2131 | 0x03F, 0x000FF3C0, | ||
2132 | 0x033, 0x0000000D, | ||
2133 | 0x03F, 0x000773E8, | ||
2134 | 0x033, 0x0000000C, | ||
2135 | 0x03F, 0x000FF3E8, | ||
2136 | 0x033, 0x0000000B, | ||
2137 | 0x03F, 0x00000287, | ||
2138 | 0x033, 0x0000000A, | ||
2139 | 0x03F, 0x000002A8, | ||
2140 | 0x033, 0x00000009, | ||
2141 | 0x03F, 0x00000207, | ||
2142 | 0x033, 0x00000008, | ||
2143 | 0x03F, 0x000FF280, | ||
2144 | 0x033, 0x00000007, | ||
2145 | 0x03F, 0x00000200, | ||
2146 | 0x033, 0x00000006, | ||
2147 | 0x03F, 0x000001C0, | ||
2148 | 0x033, 0x00000005, | ||
2149 | 0x03F, 0x00000180, | ||
2150 | 0x033, 0x00000004, | ||
2151 | 0x03F, 0x00000040, | ||
2072 | 0xA0000000, 0x00000000, | 2152 | 0xA0000000, 0x00000000, |
2073 | 0x0EF, 0x00010000, | 2153 | 0x0EF, 0x00010000, |
2074 | 0x033, 0x0000000F, | 2154 | 0x033, 0x0000000F, |
@@ -2248,6 +2328,56 @@ static const u32 rtw8822c_rf_a[] = { | |||
2248 | 0x03F, 0x00000180, | 2328 | 0x03F, 0x00000180, |
2249 | 0x033, 0x00000014, | 2329 | 0x033, 0x00000014, |
2250 | 0x03F, 0x00000040, | 2330 | 0x03F, 0x00000040, |
2331 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
2332 | 0x033, 0x0000001F, | ||
2333 | 0x03F, 0x000773C0, | ||
2334 | 0x033, 0x0000001E, | ||
2335 | 0x03F, 0x000FF3C0, | ||
2336 | 0x033, 0x0000001D, | ||
2337 | 0x03F, 0x000773E8, | ||
2338 | 0x033, 0x0000001C, | ||
2339 | 0x03F, 0x000FF3E8, | ||
2340 | 0x033, 0x0000001B, | ||
2341 | 0x03F, 0x00000287, | ||
2342 | 0x033, 0x0000001A, | ||
2343 | 0x03F, 0x000002A8, | ||
2344 | 0x033, 0x00000019, | ||
2345 | 0x03F, 0x00000207, | ||
2346 | 0x033, 0x00000018, | ||
2347 | 0x03F, 0x000FF280, | ||
2348 | 0x033, 0x00000017, | ||
2349 | 0x03F, 0x00000200, | ||
2350 | 0x033, 0x00000016, | ||
2351 | 0x03F, 0x000001C0, | ||
2352 | 0x033, 0x00000015, | ||
2353 | 0x03F, 0x00000180, | ||
2354 | 0x033, 0x00000014, | ||
2355 | 0x03F, 0x00000040, | ||
2356 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
2357 | 0x033, 0x0000001F, | ||
2358 | 0x03F, 0x000773C0, | ||
2359 | 0x033, 0x0000001E, | ||
2360 | 0x03F, 0x000FF3C0, | ||
2361 | 0x033, 0x0000001D, | ||
2362 | 0x03F, 0x000773E8, | ||
2363 | 0x033, 0x0000001C, | ||
2364 | 0x03F, 0x000FF3E8, | ||
2365 | 0x033, 0x0000001B, | ||
2366 | 0x03F, 0x00000287, | ||
2367 | 0x033, 0x0000001A, | ||
2368 | 0x03F, 0x000002A8, | ||
2369 | 0x033, 0x00000019, | ||
2370 | 0x03F, 0x00000207, | ||
2371 | 0x033, 0x00000018, | ||
2372 | 0x03F, 0x000FF280, | ||
2373 | 0x033, 0x00000017, | ||
2374 | 0x03F, 0x00000200, | ||
2375 | 0x033, 0x00000016, | ||
2376 | 0x03F, 0x000001C0, | ||
2377 | 0x033, 0x00000015, | ||
2378 | 0x03F, 0x00000180, | ||
2379 | 0x033, 0x00000014, | ||
2380 | 0x03F, 0x00000040, | ||
2251 | 0xA0000000, 0x00000000, | 2381 | 0xA0000000, 0x00000000, |
2252 | 0x033, 0x0000001F, | 2382 | 0x033, 0x0000001F, |
2253 | 0x03F, 0x000773E8, | 2383 | 0x03F, 0x000773E8, |
@@ -2426,6 +2556,56 @@ static const u32 rtw8822c_rf_a[] = { | |||
2426 | 0x03F, 0x00000180, | 2556 | 0x03F, 0x00000180, |
2427 | 0x033, 0x00000024, | 2557 | 0x033, 0x00000024, |
2428 | 0x03F, 0x00000040, | 2558 | 0x03F, 0x00000040, |
2559 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
2560 | 0x033, 0x0000002F, | ||
2561 | 0x03F, 0x000773C0, | ||
2562 | 0x033, 0x0000002E, | ||
2563 | 0x03F, 0x000FF3C0, | ||
2564 | 0x033, 0x0000002D, | ||
2565 | 0x03F, 0x000773E8, | ||
2566 | 0x033, 0x0000002C, | ||
2567 | 0x03F, 0x000FF3E8, | ||
2568 | 0x033, 0x0000002B, | ||
2569 | 0x03F, 0x00000287, | ||
2570 | 0x033, 0x0000002A, | ||
2571 | 0x03F, 0x000002A8, | ||
2572 | 0x033, 0x00000029, | ||
2573 | 0x03F, 0x00000207, | ||
2574 | 0x033, 0x00000028, | ||
2575 | 0x03F, 0x000FF280, | ||
2576 | 0x033, 0x00000027, | ||
2577 | 0x03F, 0x00000200, | ||
2578 | 0x033, 0x00000026, | ||
2579 | 0x03F, 0x000001C0, | ||
2580 | 0x033, 0x00000025, | ||
2581 | 0x03F, 0x00000180, | ||
2582 | 0x033, 0x00000024, | ||
2583 | 0x03F, 0x00000040, | ||
2584 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
2585 | 0x033, 0x0000002F, | ||
2586 | 0x03F, 0x000773C0, | ||
2587 | 0x033, 0x0000002E, | ||
2588 | 0x03F, 0x000FF3C0, | ||
2589 | 0x033, 0x0000002D, | ||
2590 | 0x03F, 0x000773E8, | ||
2591 | 0x033, 0x0000002C, | ||
2592 | 0x03F, 0x000FF3E8, | ||
2593 | 0x033, 0x0000002B, | ||
2594 | 0x03F, 0x00000287, | ||
2595 | 0x033, 0x0000002A, | ||
2596 | 0x03F, 0x000002A8, | ||
2597 | 0x033, 0x00000029, | ||
2598 | 0x03F, 0x00000207, | ||
2599 | 0x033, 0x00000028, | ||
2600 | 0x03F, 0x000FF280, | ||
2601 | 0x033, 0x00000027, | ||
2602 | 0x03F, 0x00000200, | ||
2603 | 0x033, 0x00000026, | ||
2604 | 0x03F, 0x000001C0, | ||
2605 | 0x033, 0x00000025, | ||
2606 | 0x03F, 0x00000180, | ||
2607 | 0x033, 0x00000024, | ||
2608 | 0x03F, 0x00000040, | ||
2429 | 0xA0000000, 0x00000000, | 2609 | 0xA0000000, 0x00000000, |
2430 | 0x033, 0x0000002F, | 2610 | 0x033, 0x0000002F, |
2431 | 0x03F, 0x000773E8, | 2611 | 0x03F, 0x000773E8, |
@@ -2604,6 +2784,56 @@ static const u32 rtw8822c_rf_a[] = { | |||
2604 | 0x03F, 0x00000180, | 2784 | 0x03F, 0x00000180, |
2605 | 0x033, 0x00000034, | 2785 | 0x033, 0x00000034, |
2606 | 0x03F, 0x00000040, | 2786 | 0x03F, 0x00000040, |
2787 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
2788 | 0x033, 0x0000003F, | ||
2789 | 0x03F, 0x000773C0, | ||
2790 | 0x033, 0x0000003E, | ||
2791 | 0x03F, 0x000FF3C0, | ||
2792 | 0x033, 0x0000003D, | ||
2793 | 0x03F, 0x000773E8, | ||
2794 | 0x033, 0x0000003C, | ||
2795 | 0x03F, 0x000FF3E8, | ||
2796 | 0x033, 0x0000003B, | ||
2797 | 0x03F, 0x00000287, | ||
2798 | 0x033, 0x0000003A, | ||
2799 | 0x03F, 0x000002A8, | ||
2800 | 0x033, 0x00000039, | ||
2801 | 0x03F, 0x00000207, | ||
2802 | 0x033, 0x00000038, | ||
2803 | 0x03F, 0x000FF280, | ||
2804 | 0x033, 0x00000037, | ||
2805 | 0x03F, 0x00000200, | ||
2806 | 0x033, 0x00000036, | ||
2807 | 0x03F, 0x000001C0, | ||
2808 | 0x033, 0x00000035, | ||
2809 | 0x03F, 0x00000180, | ||
2810 | 0x033, 0x00000034, | ||
2811 | 0x03F, 0x00000040, | ||
2812 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
2813 | 0x033, 0x0000003F, | ||
2814 | 0x03F, 0x000773C0, | ||
2815 | 0x033, 0x0000003E, | ||
2816 | 0x03F, 0x000FF3C0, | ||
2817 | 0x033, 0x0000003D, | ||
2818 | 0x03F, 0x000773E8, | ||
2819 | 0x033, 0x0000003C, | ||
2820 | 0x03F, 0x000FF3E8, | ||
2821 | 0x033, 0x0000003B, | ||
2822 | 0x03F, 0x00000287, | ||
2823 | 0x033, 0x0000003A, | ||
2824 | 0x03F, 0x000002A8, | ||
2825 | 0x033, 0x00000039, | ||
2826 | 0x03F, 0x00000207, | ||
2827 | 0x033, 0x00000038, | ||
2828 | 0x03F, 0x000FF280, | ||
2829 | 0x033, 0x00000037, | ||
2830 | 0x03F, 0x00000200, | ||
2831 | 0x033, 0x00000036, | ||
2832 | 0x03F, 0x000001C0, | ||
2833 | 0x033, 0x00000035, | ||
2834 | 0x03F, 0x00000180, | ||
2835 | 0x033, 0x00000034, | ||
2836 | 0x03F, 0x00000040, | ||
2607 | 0xA0000000, 0x00000000, | 2837 | 0xA0000000, 0x00000000, |
2608 | 0x033, 0x0000003F, | 2838 | 0x033, 0x0000003F, |
2609 | 0x03F, 0x000773E8, | 2839 | 0x03F, 0x000773E8, |
@@ -2782,6 +3012,56 @@ static const u32 rtw8822c_rf_a[] = { | |||
2782 | 0x03F, 0x00000180, | 3012 | 0x03F, 0x00000180, |
2783 | 0x033, 0x00000044, | 3013 | 0x033, 0x00000044, |
2784 | 0x03F, 0x00000040, | 3014 | 0x03F, 0x00000040, |
3015 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
3016 | 0x033, 0x0000004F, | ||
3017 | 0x03F, 0x000773C0, | ||
3018 | 0x033, 0x0000004E, | ||
3019 | 0x03F, 0x000FF3C0, | ||
3020 | 0x033, 0x0000004D, | ||
3021 | 0x03F, 0x000773E8, | ||
3022 | 0x033, 0x0000004C, | ||
3023 | 0x03F, 0x000FF3E8, | ||
3024 | 0x033, 0x0000004B, | ||
3025 | 0x03F, 0x00000287, | ||
3026 | 0x033, 0x0000004A, | ||
3027 | 0x03F, 0x000002A8, | ||
3028 | 0x033, 0x00000049, | ||
3029 | 0x03F, 0x00000207, | ||
3030 | 0x033, 0x00000048, | ||
3031 | 0x03F, 0x000FF280, | ||
3032 | 0x033, 0x00000047, | ||
3033 | 0x03F, 0x00000200, | ||
3034 | 0x033, 0x00000046, | ||
3035 | 0x03F, 0x000001C0, | ||
3036 | 0x033, 0x00000045, | ||
3037 | 0x03F, 0x00000180, | ||
3038 | 0x033, 0x00000044, | ||
3039 | 0x03F, 0x00000040, | ||
3040 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
3041 | 0x033, 0x0000004F, | ||
3042 | 0x03F, 0x000773C0, | ||
3043 | 0x033, 0x0000004E, | ||
3044 | 0x03F, 0x000FF3C0, | ||
3045 | 0x033, 0x0000004D, | ||
3046 | 0x03F, 0x000773E8, | ||
3047 | 0x033, 0x0000004C, | ||
3048 | 0x03F, 0x000FF3E8, | ||
3049 | 0x033, 0x0000004B, | ||
3050 | 0x03F, 0x00000287, | ||
3051 | 0x033, 0x0000004A, | ||
3052 | 0x03F, 0x000002A8, | ||
3053 | 0x033, 0x00000049, | ||
3054 | 0x03F, 0x00000207, | ||
3055 | 0x033, 0x00000048, | ||
3056 | 0x03F, 0x000FF280, | ||
3057 | 0x033, 0x00000047, | ||
3058 | 0x03F, 0x00000200, | ||
3059 | 0x033, 0x00000046, | ||
3060 | 0x03F, 0x000001C0, | ||
3061 | 0x033, 0x00000045, | ||
3062 | 0x03F, 0x00000180, | ||
3063 | 0x033, 0x00000044, | ||
3064 | 0x03F, 0x00000040, | ||
2785 | 0xA0000000, 0x00000000, | 3065 | 0xA0000000, 0x00000000, |
2786 | 0x033, 0x0000004F, | 3066 | 0x033, 0x0000004F, |
2787 | 0x03F, 0x000773E8, | 3067 | 0x03F, 0x000773E8, |
@@ -2960,6 +3240,56 @@ static const u32 rtw8822c_rf_a[] = { | |||
2960 | 0x03F, 0x00000180, | 3240 | 0x03F, 0x00000180, |
2961 | 0x033, 0x00000054, | 3241 | 0x033, 0x00000054, |
2962 | 0x03F, 0x00000040, | 3242 | 0x03F, 0x00000040, |
3243 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
3244 | 0x033, 0x0000005F, | ||
3245 | 0x03F, 0x000773C0, | ||
3246 | 0x033, 0x0000005E, | ||
3247 | 0x03F, 0x000FF3C0, | ||
3248 | 0x033, 0x0000005D, | ||
3249 | 0x03F, 0x000773E8, | ||
3250 | 0x033, 0x0000005C, | ||
3251 | 0x03F, 0x000FF3E8, | ||
3252 | 0x033, 0x0000005B, | ||
3253 | 0x03F, 0x00000287, | ||
3254 | 0x033, 0x0000005A, | ||
3255 | 0x03F, 0x000002A8, | ||
3256 | 0x033, 0x00000059, | ||
3257 | 0x03F, 0x00000207, | ||
3258 | 0x033, 0x00000058, | ||
3259 | 0x03F, 0x000FF280, | ||
3260 | 0x033, 0x00000057, | ||
3261 | 0x03F, 0x00000200, | ||
3262 | 0x033, 0x00000056, | ||
3263 | 0x03F, 0x000001C0, | ||
3264 | 0x033, 0x00000055, | ||
3265 | 0x03F, 0x00000180, | ||
3266 | 0x033, 0x00000054, | ||
3267 | 0x03F, 0x00000040, | ||
3268 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
3269 | 0x033, 0x0000005F, | ||
3270 | 0x03F, 0x000773C0, | ||
3271 | 0x033, 0x0000005E, | ||
3272 | 0x03F, 0x000FF3C0, | ||
3273 | 0x033, 0x0000005D, | ||
3274 | 0x03F, 0x000773E8, | ||
3275 | 0x033, 0x0000005C, | ||
3276 | 0x03F, 0x000FF3E8, | ||
3277 | 0x033, 0x0000005B, | ||
3278 | 0x03F, 0x00000287, | ||
3279 | 0x033, 0x0000005A, | ||
3280 | 0x03F, 0x000002A8, | ||
3281 | 0x033, 0x00000059, | ||
3282 | 0x03F, 0x00000207, | ||
3283 | 0x033, 0x00000058, | ||
3284 | 0x03F, 0x000FF280, | ||
3285 | 0x033, 0x00000057, | ||
3286 | 0x03F, 0x00000200, | ||
3287 | 0x033, 0x00000056, | ||
3288 | 0x03F, 0x000001C0, | ||
3289 | 0x033, 0x00000055, | ||
3290 | 0x03F, 0x00000180, | ||
3291 | 0x033, 0x00000054, | ||
3292 | 0x03F, 0x00000040, | ||
2963 | 0xA0000000, 0x00000000, | 3293 | 0xA0000000, 0x00000000, |
2964 | 0x033, 0x0000005F, | 3294 | 0x033, 0x0000005F, |
2965 | 0x03F, 0x000773E8, | 3295 | 0x03F, 0x000773E8, |
@@ -3000,6 +3330,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
3000 | 0x0EF, 0x00000000, | 3330 | 0x0EF, 0x00000000, |
3001 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 3331 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
3002 | 0x0EF, 0x00000000, | 3332 | 0x0EF, 0x00000000, |
3333 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
3334 | 0x0EF, 0x00000000, | ||
3335 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
3336 | 0x0EF, 0x00000000, | ||
3003 | 0xA0000000, 0x00000000, | 3337 | 0xA0000000, 0x00000000, |
3004 | 0x0EF, 0x00000000, | 3338 | 0x0EF, 0x00000000, |
3005 | 0xB0000000, 0x00000000, | 3339 | 0xB0000000, 0x00000000, |
@@ -3899,6 +4233,300 @@ static const u32 rtw8822c_rf_a[] = { | |||
3899 | 0x03E, 0x00000000, | 4233 | 0x03E, 0x00000000, |
3900 | 0x03F, 0x0002C010, | 4234 | 0x03F, 0x0002C010, |
3901 | 0x0EF, 0x00000000, | 4235 | 0x0EF, 0x00000000, |
4236 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
4237 | 0x0EF, 0x00020000, | ||
4238 | 0x033, 0x00000000, | ||
4239 | 0x03E, 0x00001C86, | ||
4240 | 0x03F, 0x00020000, | ||
4241 | 0x033, 0x00000001, | ||
4242 | 0x03E, 0x00001C02, | ||
4243 | 0x03F, 0x00020000, | ||
4244 | 0x033, 0x00000002, | ||
4245 | 0x03E, 0x00000F02, | ||
4246 | 0x03F, 0x00020000, | ||
4247 | 0x033, 0x00000003, | ||
4248 | 0x03E, 0x00000F00, | ||
4249 | 0x03F, 0x00020000, | ||
4250 | 0x033, 0x00000004, | ||
4251 | 0x03E, 0x00000086, | ||
4252 | 0x03F, 0x00020000, | ||
4253 | 0x033, 0x00000005, | ||
4254 | 0x03E, 0x00000002, | ||
4255 | 0x03F, 0x00020000, | ||
4256 | 0x033, 0x00000006, | ||
4257 | 0x03E, 0x00000000, | ||
4258 | 0x03F, 0x00020000, | ||
4259 | 0x033, 0x00000007, | ||
4260 | 0x03E, 0x00000000, | ||
4261 | 0x03F, 0x0002F81C, | ||
4262 | 0x033, 0x00000008, | ||
4263 | 0x03E, 0x00001C86, | ||
4264 | 0x03F, 0x00020000, | ||
4265 | 0x033, 0x00000009, | ||
4266 | 0x03E, 0x00001C02, | ||
4267 | 0x03F, 0x00020000, | ||
4268 | 0x033, 0x0000000A, | ||
4269 | 0x03E, 0x00000F02, | ||
4270 | 0x03F, 0x00020000, | ||
4271 | 0x033, 0x0000000B, | ||
4272 | 0x03E, 0x00000F00, | ||
4273 | 0x03F, 0x00020000, | ||
4274 | 0x033, 0x0000000C, | ||
4275 | 0x03E, 0x00000086, | ||
4276 | 0x03F, 0x00020000, | ||
4277 | 0x033, 0x0000000D, | ||
4278 | 0x03E, 0x00000002, | ||
4279 | 0x03F, 0x00020000, | ||
4280 | 0x033, 0x0000000E, | ||
4281 | 0x03E, 0x00000000, | ||
4282 | 0x03F, 0x00020000, | ||
4283 | 0x033, 0x0000000F, | ||
4284 | 0x03E, 0x00000000, | ||
4285 | 0x03F, 0x0002F81C, | ||
4286 | 0x033, 0x00000010, | ||
4287 | 0x03E, 0x00001C86, | ||
4288 | 0x03F, 0x00020000, | ||
4289 | 0x033, 0x00000011, | ||
4290 | 0x03E, 0x00001C02, | ||
4291 | 0x03F, 0x00020000, | ||
4292 | 0x033, 0x00000012, | ||
4293 | 0x03E, 0x00000F02, | ||
4294 | 0x03F, 0x00020000, | ||
4295 | 0x033, 0x00000013, | ||
4296 | 0x03E, 0x00000F00, | ||
4297 | 0x03F, 0x00020000, | ||
4298 | 0x033, 0x00000014, | ||
4299 | 0x03E, 0x00000086, | ||
4300 | 0x03F, 0x00020000, | ||
4301 | 0x033, 0x00000015, | ||
4302 | 0x03E, 0x00000002, | ||
4303 | 0x03F, 0x00020000, | ||
4304 | 0x033, 0x00000016, | ||
4305 | 0x03E, 0x00000000, | ||
4306 | 0x03F, 0x00020000, | ||
4307 | 0x033, 0x00000017, | ||
4308 | 0x03E, 0x00000000, | ||
4309 | 0x03F, 0x0002C010, | ||
4310 | 0x033, 0x00000018, | ||
4311 | 0x03E, 0x00001C86, | ||
4312 | 0x03F, 0x00020000, | ||
4313 | 0x033, 0x00000019, | ||
4314 | 0x03E, 0x00001C02, | ||
4315 | 0x03F, 0x00020000, | ||
4316 | 0x033, 0x0000001A, | ||
4317 | 0x03E, 0x00000F02, | ||
4318 | 0x03F, 0x00020000, | ||
4319 | 0x033, 0x0000001B, | ||
4320 | 0x03E, 0x00000F00, | ||
4321 | 0x03F, 0x00020000, | ||
4322 | 0x033, 0x0000001C, | ||
4323 | 0x03E, 0x00000086, | ||
4324 | 0x03F, 0x00020000, | ||
4325 | 0x033, 0x0000001D, | ||
4326 | 0x03E, 0x00000002, | ||
4327 | 0x03F, 0x00020000, | ||
4328 | 0x033, 0x0000001E, | ||
4329 | 0x03E, 0x00000000, | ||
4330 | 0x03F, 0x00020000, | ||
4331 | 0x033, 0x0000001F, | ||
4332 | 0x03E, 0x00000000, | ||
4333 | 0x03F, 0x0002C010, | ||
4334 | 0x033, 0x00000020, | ||
4335 | 0x03E, 0x00001C86, | ||
4336 | 0x03F, 0x00020000, | ||
4337 | 0x033, 0x00000021, | ||
4338 | 0x03E, 0x00001C02, | ||
4339 | 0x03F, 0x00020000, | ||
4340 | 0x033, 0x00000022, | ||
4341 | 0x03E, 0x00000F02, | ||
4342 | 0x03F, 0x00020000, | ||
4343 | 0x033, 0x00000023, | ||
4344 | 0x03E, 0x00000F00, | ||
4345 | 0x03F, 0x00020000, | ||
4346 | 0x033, 0x00000024, | ||
4347 | 0x03E, 0x00000086, | ||
4348 | 0x03F, 0x00020000, | ||
4349 | 0x033, 0x00000025, | ||
4350 | 0x03E, 0x00000002, | ||
4351 | 0x03F, 0x00020000, | ||
4352 | 0x033, 0x00000026, | ||
4353 | 0x03E, 0x00000000, | ||
4354 | 0x03F, 0x00020000, | ||
4355 | 0x033, 0x00000027, | ||
4356 | 0x03E, 0x00000000, | ||
4357 | 0x03F, 0x0002C010, | ||
4358 | 0x033, 0x00000028, | ||
4359 | 0x03E, 0x00001C86, | ||
4360 | 0x03F, 0x00020000, | ||
4361 | 0x033, 0x00000029, | ||
4362 | 0x03E, 0x00001C02, | ||
4363 | 0x03F, 0x00020000, | ||
4364 | 0x033, 0x0000002A, | ||
4365 | 0x03E, 0x00000F02, | ||
4366 | 0x03F, 0x00020000, | ||
4367 | 0x033, 0x0000002B, | ||
4368 | 0x03E, 0x00000F00, | ||
4369 | 0x03F, 0x00020000, | ||
4370 | 0x033, 0x0000002C, | ||
4371 | 0x03E, 0x00000086, | ||
4372 | 0x03F, 0x00020000, | ||
4373 | 0x033, 0x0000002D, | ||
4374 | 0x03E, 0x00000002, | ||
4375 | 0x03F, 0x00020000, | ||
4376 | 0x033, 0x0000002E, | ||
4377 | 0x03E, 0x00000000, | ||
4378 | 0x03F, 0x00020000, | ||
4379 | 0x033, 0x0000002F, | ||
4380 | 0x03E, 0x00000000, | ||
4381 | 0x03F, 0x0002C010, | ||
4382 | 0x0EF, 0x00000000, | ||
4383 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
4384 | 0x0EF, 0x00020000, | ||
4385 | 0x033, 0x00000000, | ||
4386 | 0x03E, 0x00001C86, | ||
4387 | 0x03F, 0x00020000, | ||
4388 | 0x033, 0x00000001, | ||
4389 | 0x03E, 0x00001C02, | ||
4390 | 0x03F, 0x00020000, | ||
4391 | 0x033, 0x00000002, | ||
4392 | 0x03E, 0x00000F02, | ||
4393 | 0x03F, 0x00020000, | ||
4394 | 0x033, 0x00000003, | ||
4395 | 0x03E, 0x00000F00, | ||
4396 | 0x03F, 0x00020000, | ||
4397 | 0x033, 0x00000004, | ||
4398 | 0x03E, 0x00000086, | ||
4399 | 0x03F, 0x00020000, | ||
4400 | 0x033, 0x00000005, | ||
4401 | 0x03E, 0x00000002, | ||
4402 | 0x03F, 0x00020000, | ||
4403 | 0x033, 0x00000006, | ||
4404 | 0x03E, 0x00000000, | ||
4405 | 0x03F, 0x00020000, | ||
4406 | 0x033, 0x00000007, | ||
4407 | 0x03E, 0x00000000, | ||
4408 | 0x03F, 0x0002F81C, | ||
4409 | 0x033, 0x00000008, | ||
4410 | 0x03E, 0x00001C86, | ||
4411 | 0x03F, 0x00020000, | ||
4412 | 0x033, 0x00000009, | ||
4413 | 0x03E, 0x00001C02, | ||
4414 | 0x03F, 0x00020000, | ||
4415 | 0x033, 0x0000000A, | ||
4416 | 0x03E, 0x00000F02, | ||
4417 | 0x03F, 0x00020000, | ||
4418 | 0x033, 0x0000000B, | ||
4419 | 0x03E, 0x00000F00, | ||
4420 | 0x03F, 0x00020000, | ||
4421 | 0x033, 0x0000000C, | ||
4422 | 0x03E, 0x00000086, | ||
4423 | 0x03F, 0x00020000, | ||
4424 | 0x033, 0x0000000D, | ||
4425 | 0x03E, 0x00000002, | ||
4426 | 0x03F, 0x00020000, | ||
4427 | 0x033, 0x0000000E, | ||
4428 | 0x03E, 0x00000000, | ||
4429 | 0x03F, 0x00020000, | ||
4430 | 0x033, 0x0000000F, | ||
4431 | 0x03E, 0x00000000, | ||
4432 | 0x03F, 0x0002F81C, | ||
4433 | 0x033, 0x00000010, | ||
4434 | 0x03E, 0x00001C86, | ||
4435 | 0x03F, 0x00020000, | ||
4436 | 0x033, 0x00000011, | ||
4437 | 0x03E, 0x00001C02, | ||
4438 | 0x03F, 0x00020000, | ||
4439 | 0x033, 0x00000012, | ||
4440 | 0x03E, 0x00000F02, | ||
4441 | 0x03F, 0x00020000, | ||
4442 | 0x033, 0x00000013, | ||
4443 | 0x03E, 0x00000F00, | ||
4444 | 0x03F, 0x00020000, | ||
4445 | 0x033, 0x00000014, | ||
4446 | 0x03E, 0x00000086, | ||
4447 | 0x03F, 0x00020000, | ||
4448 | 0x033, 0x00000015, | ||
4449 | 0x03E, 0x00000002, | ||
4450 | 0x03F, 0x00020000, | ||
4451 | 0x033, 0x00000016, | ||
4452 | 0x03E, 0x00000000, | ||
4453 | 0x03F, 0x00020000, | ||
4454 | 0x033, 0x00000017, | ||
4455 | 0x03E, 0x00000000, | ||
4456 | 0x03F, 0x0002C010, | ||
4457 | 0x033, 0x00000018, | ||
4458 | 0x03E, 0x00001C86, | ||
4459 | 0x03F, 0x00020000, | ||
4460 | 0x033, 0x00000019, | ||
4461 | 0x03E, 0x00001C02, | ||
4462 | 0x03F, 0x00020000, | ||
4463 | 0x033, 0x0000001A, | ||
4464 | 0x03E, 0x00000F02, | ||
4465 | 0x03F, 0x00020000, | ||
4466 | 0x033, 0x0000001B, | ||
4467 | 0x03E, 0x00000F00, | ||
4468 | 0x03F, 0x00020000, | ||
4469 | 0x033, 0x0000001C, | ||
4470 | 0x03E, 0x00000086, | ||
4471 | 0x03F, 0x00020000, | ||
4472 | 0x033, 0x0000001D, | ||
4473 | 0x03E, 0x00000002, | ||
4474 | 0x03F, 0x00020000, | ||
4475 | 0x033, 0x0000001E, | ||
4476 | 0x03E, 0x00000000, | ||
4477 | 0x03F, 0x00020000, | ||
4478 | 0x033, 0x0000001F, | ||
4479 | 0x03E, 0x00000000, | ||
4480 | 0x03F, 0x0002C010, | ||
4481 | 0x033, 0x00000020, | ||
4482 | 0x03E, 0x00001C86, | ||
4483 | 0x03F, 0x00020000, | ||
4484 | 0x033, 0x00000021, | ||
4485 | 0x03E, 0x00001C02, | ||
4486 | 0x03F, 0x00020000, | ||
4487 | 0x033, 0x00000022, | ||
4488 | 0x03E, 0x00000F02, | ||
4489 | 0x03F, 0x00020000, | ||
4490 | 0x033, 0x00000023, | ||
4491 | 0x03E, 0x00000F00, | ||
4492 | 0x03F, 0x00020000, | ||
4493 | 0x033, 0x00000024, | ||
4494 | 0x03E, 0x00000086, | ||
4495 | 0x03F, 0x00020000, | ||
4496 | 0x033, 0x00000025, | ||
4497 | 0x03E, 0x00000002, | ||
4498 | 0x03F, 0x00020000, | ||
4499 | 0x033, 0x00000026, | ||
4500 | 0x03E, 0x00000000, | ||
4501 | 0x03F, 0x00020000, | ||
4502 | 0x033, 0x00000027, | ||
4503 | 0x03E, 0x00000000, | ||
4504 | 0x03F, 0x0002C010, | ||
4505 | 0x033, 0x00000028, | ||
4506 | 0x03E, 0x00001C86, | ||
4507 | 0x03F, 0x00020000, | ||
4508 | 0x033, 0x00000029, | ||
4509 | 0x03E, 0x00001C02, | ||
4510 | 0x03F, 0x00020000, | ||
4511 | 0x033, 0x0000002A, | ||
4512 | 0x03E, 0x00000F02, | ||
4513 | 0x03F, 0x00020000, | ||
4514 | 0x033, 0x0000002B, | ||
4515 | 0x03E, 0x00000F00, | ||
4516 | 0x03F, 0x00020000, | ||
4517 | 0x033, 0x0000002C, | ||
4518 | 0x03E, 0x00000086, | ||
4519 | 0x03F, 0x00020000, | ||
4520 | 0x033, 0x0000002D, | ||
4521 | 0x03E, 0x00000002, | ||
4522 | 0x03F, 0x00020000, | ||
4523 | 0x033, 0x0000002E, | ||
4524 | 0x03E, 0x00000000, | ||
4525 | 0x03F, 0x00020000, | ||
4526 | 0x033, 0x0000002F, | ||
4527 | 0x03E, 0x00000000, | ||
4528 | 0x03F, 0x0002C010, | ||
4529 | 0x0EF, 0x00000000, | ||
3902 | 0xA0000000, 0x00000000, | 4530 | 0xA0000000, 0x00000000, |
3903 | 0x0EF, 0x00020000, | 4531 | 0x0EF, 0x00020000, |
3904 | 0x033, 0x00000000, | 4532 | 0x033, 0x00000000, |
@@ -4063,6 +4691,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4063 | 0x063, 0x00000002, | 4691 | 0x063, 0x00000002, |
4064 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 4692 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4065 | 0x063, 0x00000002, | 4693 | 0x063, 0x00000002, |
4694 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
4695 | 0x063, 0x00000002, | ||
4696 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
4697 | 0x063, 0x00000002, | ||
4066 | 0xA0000000, 0x00000000, | 4698 | 0xA0000000, 0x00000000, |
4067 | 0x063, 0x00000C02, | 4699 | 0x063, 0x00000C02, |
4068 | 0xB0000000, 0x00000000, | 4700 | 0xB0000000, 0x00000000, |
@@ -4176,59 +4808,113 @@ static const u32 rtw8822c_rf_a[] = { | |||
4176 | 0x030, 0x00018207, | 4808 | 0x030, 0x00018207, |
4177 | 0x030, 0x00019237, | 4809 | 0x030, 0x00019237, |
4178 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 4810 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4179 | 0x030, 0x00000237, | 4811 | 0x030, 0x00000238, |
4180 | 0x030, 0x00001237, | 4812 | 0x030, 0x00001238, |
4181 | 0x030, 0x00002237, | 4813 | 0x030, 0x00002238, |
4182 | 0x030, 0x00003237, | 4814 | 0x030, 0x00003238, |
4183 | 0x030, 0x00004207, | 4815 | 0x030, 0x00004228, |
4184 | 0x030, 0x00005237, | 4816 | 0x030, 0x00005238, |
4185 | 0x030, 0x00006237, | 4817 | 0x030, 0x00006238, |
4186 | 0x030, 0x00007237, | 4818 | 0x030, 0x00007238, |
4187 | 0x030, 0x00008207, | 4819 | 0x030, 0x00008228, |
4188 | 0x030, 0x00009237, | 4820 | 0x030, 0x00009238, |
4189 | 0x030, 0x0000A237, | 4821 | 0x030, 0x0000A238, |
4190 | 0x030, 0x0000B237, | 4822 | 0x030, 0x0000B238, |
4191 | 0x030, 0x0000C237, | 4823 | 0x030, 0x0000C238, |
4192 | 0x030, 0x0000D237, | 4824 | 0x030, 0x0000D238, |
4193 | 0x030, 0x0000E207, | 4825 | 0x030, 0x0000E228, |
4194 | 0x030, 0x0000F237, | 4826 | 0x030, 0x0000F238, |
4195 | 0x030, 0x00010237, | 4827 | 0x030, 0x00010238, |
4196 | 0x030, 0x00011237, | 4828 | 0x030, 0x00011238, |
4197 | 0x030, 0x00012207, | 4829 | 0x030, 0x00012228, |
4198 | 0x030, 0x00013237, | 4830 | 0x030, 0x00013238, |
4199 | 0x030, 0x00014237, | 4831 | 0x030, 0x00014238, |
4200 | 0x030, 0x00015237, | 4832 | 0x030, 0x00015238, |
4201 | 0x030, 0x00016207, | 4833 | 0x030, 0x00016228, |
4202 | 0x030, 0x00017237, | 4834 | 0x030, 0x00017238, |
4203 | 0x030, 0x00018207, | 4835 | 0x030, 0x00018228, |
4204 | 0x030, 0x00019237, | 4836 | 0x030, 0x00019238, |
4205 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 4837 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4206 | 0x030, 0x00000237, | 4838 | 0x030, 0x00000238, |
4207 | 0x030, 0x00001237, | 4839 | 0x030, 0x00001238, |
4208 | 0x030, 0x00002237, | 4840 | 0x030, 0x00002238, |
4209 | 0x030, 0x00003237, | 4841 | 0x030, 0x00003238, |
4210 | 0x030, 0x00004207, | 4842 | 0x030, 0x00004228, |
4211 | 0x030, 0x00005237, | 4843 | 0x030, 0x00005238, |
4212 | 0x030, 0x00006237, | 4844 | 0x030, 0x00006238, |
4213 | 0x030, 0x00007237, | 4845 | 0x030, 0x00007238, |
4214 | 0x030, 0x00008207, | 4846 | 0x030, 0x00008228, |
4215 | 0x030, 0x00009237, | 4847 | 0x030, 0x00009238, |
4216 | 0x030, 0x0000A237, | 4848 | 0x030, 0x0000A238, |
4217 | 0x030, 0x0000B237, | 4849 | 0x030, 0x0000B238, |
4218 | 0x030, 0x0000C237, | 4850 | 0x030, 0x0000C238, |
4219 | 0x030, 0x0000D237, | 4851 | 0x030, 0x0000D238, |
4220 | 0x030, 0x0000E207, | 4852 | 0x030, 0x0000E228, |
4221 | 0x030, 0x0000F237, | 4853 | 0x030, 0x0000F238, |
4222 | 0x030, 0x00010237, | 4854 | 0x030, 0x00010238, |
4223 | 0x030, 0x00011237, | 4855 | 0x030, 0x00011238, |
4224 | 0x030, 0x00012207, | 4856 | 0x030, 0x00012228, |
4225 | 0x030, 0x00013237, | 4857 | 0x030, 0x00013238, |
4226 | 0x030, 0x00014237, | 4858 | 0x030, 0x00014238, |
4227 | 0x030, 0x00015237, | 4859 | 0x030, 0x00015238, |
4228 | 0x030, 0x00016207, | 4860 | 0x030, 0x00016228, |
4229 | 0x030, 0x00017237, | 4861 | 0x030, 0x00017238, |
4230 | 0x030, 0x00018207, | 4862 | 0x030, 0x00018228, |
4231 | 0x030, 0x00019237, | 4863 | 0x030, 0x00019238, |
4864 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
4865 | 0x030, 0x00000239, | ||
4866 | 0x030, 0x00001239, | ||
4867 | 0x030, 0x00002239, | ||
4868 | 0x030, 0x00003239, | ||
4869 | 0x030, 0x00004239, | ||
4870 | 0x030, 0x00005239, | ||
4871 | 0x030, 0x00006239, | ||
4872 | 0x030, 0x00007239, | ||
4873 | 0x030, 0x00008239, | ||
4874 | 0x030, 0x00009239, | ||
4875 | 0x030, 0x0000A239, | ||
4876 | 0x030, 0x0000B239, | ||
4877 | 0x030, 0x0000C239, | ||
4878 | 0x030, 0x0000D239, | ||
4879 | 0x030, 0x0000E209, | ||
4880 | 0x030, 0x0000F239, | ||
4881 | 0x030, 0x00010239, | ||
4882 | 0x030, 0x00011239, | ||
4883 | 0x030, 0x00012209, | ||
4884 | 0x030, 0x00013239, | ||
4885 | 0x030, 0x00014239, | ||
4886 | 0x030, 0x00015239, | ||
4887 | 0x030, 0x00016209, | ||
4888 | 0x030, 0x00017239, | ||
4889 | 0x030, 0x00018209, | ||
4890 | 0x030, 0x00019239, | ||
4891 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
4892 | 0x030, 0x00000239, | ||
4893 | 0x030, 0x00001239, | ||
4894 | 0x030, 0x00002239, | ||
4895 | 0x030, 0x00003239, | ||
4896 | 0x030, 0x00004239, | ||
4897 | 0x030, 0x00005239, | ||
4898 | 0x030, 0x00006239, | ||
4899 | 0x030, 0x00007239, | ||
4900 | 0x030, 0x00008239, | ||
4901 | 0x030, 0x00009239, | ||
4902 | 0x030, 0x0000A239, | ||
4903 | 0x030, 0x0000B239, | ||
4904 | 0x030, 0x0000C239, | ||
4905 | 0x030, 0x0000D239, | ||
4906 | 0x030, 0x0000E209, | ||
4907 | 0x030, 0x0000F239, | ||
4908 | 0x030, 0x00010239, | ||
4909 | 0x030, 0x00011239, | ||
4910 | 0x030, 0x00012209, | ||
4911 | 0x030, 0x00013239, | ||
4912 | 0x030, 0x00014239, | ||
4913 | 0x030, 0x00015239, | ||
4914 | 0x030, 0x00016209, | ||
4915 | 0x030, 0x00017239, | ||
4916 | 0x030, 0x00018209, | ||
4917 | 0x030, 0x00019239, | ||
4232 | 0xA0000000, 0x00000000, | 4918 | 0xA0000000, 0x00000000, |
4233 | 0x030, 0x00000233, | 4919 | 0x030, 0x00000233, |
4234 | 0x030, 0x00001233, | 4920 | 0x030, 0x00001233, |
@@ -4337,6 +5023,32 @@ static const u32 rtw8822c_rf_a[] = { | |||
4337 | 0x030, 0x00009334, | 5023 | 0x030, 0x00009334, |
4338 | 0x030, 0x0000A334, | 5024 | 0x030, 0x0000A334, |
4339 | 0x030, 0x0000B334, | 5025 | 0x030, 0x0000B334, |
5026 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5027 | 0x030, 0x00000334, | ||
5028 | 0x030, 0x00001334, | ||
5029 | 0x030, 0x00002334, | ||
5030 | 0x030, 0x00003334, | ||
5031 | 0x030, 0x00004334, | ||
5032 | 0x030, 0x00005334, | ||
5033 | 0x030, 0x00006334, | ||
5034 | 0x030, 0x00007334, | ||
5035 | 0x030, 0x00008334, | ||
5036 | 0x030, 0x00009334, | ||
5037 | 0x030, 0x0000A334, | ||
5038 | 0x030, 0x0000B334, | ||
5039 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5040 | 0x030, 0x00000334, | ||
5041 | 0x030, 0x00001334, | ||
5042 | 0x030, 0x00002334, | ||
5043 | 0x030, 0x00003334, | ||
5044 | 0x030, 0x00004334, | ||
5045 | 0x030, 0x00005334, | ||
5046 | 0x030, 0x00006334, | ||
5047 | 0x030, 0x00007334, | ||
5048 | 0x030, 0x00008334, | ||
5049 | 0x030, 0x00009334, | ||
5050 | 0x030, 0x0000A334, | ||
5051 | 0x030, 0x0000B334, | ||
4340 | 0xA0000000, 0x00000000, | 5052 | 0xA0000000, 0x00000000, |
4341 | 0x030, 0x00000232, | 5053 | 0x030, 0x00000232, |
4342 | 0x030, 0x00001232, | 5054 | 0x030, 0x00001232, |
@@ -4444,6 +5156,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4444 | 0x052, 0x000902CA, | 5156 | 0x052, 0x000902CA, |
4445 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5157 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4446 | 0x052, 0x000902CA, | 5158 | 0x052, 0x000902CA, |
5159 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5160 | 0x052, 0x000902CA, | ||
5161 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5162 | 0x052, 0x000902CA, | ||
4447 | 0xA0000000, 0x00000000, | 5163 | 0xA0000000, 0x00000000, |
4448 | 0x052, 0x000942CA, | 5164 | 0x052, 0x000942CA, |
4449 | 0xB0000000, 0x00000000, | 5165 | 0xB0000000, 0x00000000, |
@@ -4462,9 +5178,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4462 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5178 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4463 | 0x03F, 0x00010E46, | 5179 | 0x03F, 0x00010E46, |
4464 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5180 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4465 | 0x03F, 0x00024246, | 5181 | 0x03F, 0x00028246, |
4466 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5182 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4467 | 0x03F, 0x00024246, | 5183 | 0x03F, 0x00028246, |
5184 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5185 | 0x03F, 0x00028246, | ||
5186 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5187 | 0x03F, 0x00028246, | ||
4468 | 0xA0000000, 0x00000000, | 5188 | 0xA0000000, 0x00000000, |
4469 | 0x03F, 0x00002A46, | 5189 | 0x03F, 0x00002A46, |
4470 | 0xB0000000, 0x00000000, | 5190 | 0xB0000000, 0x00000000, |
@@ -4479,9 +5199,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4479 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5199 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4480 | 0x03F, 0x00010E46, | 5200 | 0x03F, 0x00010E46, |
4481 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5201 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4482 | 0x03F, 0x00024246, | 5202 | 0x03F, 0x00028246, |
4483 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5203 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4484 | 0x03F, 0x00024246, | 5204 | 0x03F, 0x00028246, |
5205 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5206 | 0x03F, 0x00028246, | ||
5207 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5208 | 0x03F, 0x00028246, | ||
4485 | 0xA0000000, 0x00000000, | 5209 | 0xA0000000, 0x00000000, |
4486 | 0x03F, 0x00002A46, | 5210 | 0x03F, 0x00002A46, |
4487 | 0xB0000000, 0x00000000, | 5211 | 0xB0000000, 0x00000000, |
@@ -4499,6 +5223,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4499 | 0x03F, 0x00030246, | 5223 | 0x03F, 0x00030246, |
4500 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5224 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4501 | 0x03F, 0x00030246, | 5225 | 0x03F, 0x00030246, |
5226 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5227 | 0x03F, 0x00030246, | ||
5228 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5229 | 0x03F, 0x00030246, | ||
4502 | 0xA0000000, 0x00000000, | 5230 | 0xA0000000, 0x00000000, |
4503 | 0x03F, 0x00002A46, | 5231 | 0x03F, 0x00002A46, |
4504 | 0xB0000000, 0x00000000, | 5232 | 0xB0000000, 0x00000000, |
@@ -4513,9 +5241,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4513 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5241 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4514 | 0x03F, 0x00010E46, | 5242 | 0x03F, 0x00010E46, |
4515 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5243 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4516 | 0x03F, 0x00024246, | 5244 | 0x03F, 0x00028246, |
4517 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5245 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4518 | 0x03F, 0x00024246, | 5246 | 0x03F, 0x00028246, |
5247 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5248 | 0x03F, 0x00028246, | ||
5249 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5250 | 0x03F, 0x00028246, | ||
4519 | 0xA0000000, 0x00000000, | 5251 | 0xA0000000, 0x00000000, |
4520 | 0x03F, 0x00002A46, | 5252 | 0x03F, 0x00002A46, |
4521 | 0xB0000000, 0x00000000, | 5253 | 0xB0000000, 0x00000000, |
@@ -4530,9 +5262,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4530 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5262 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4531 | 0x03F, 0x00010E46, | 5263 | 0x03F, 0x00010E46, |
4532 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5264 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4533 | 0x03F, 0x00024246, | 5265 | 0x03F, 0x00028246, |
4534 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5266 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4535 | 0x03F, 0x00024246, | 5267 | 0x03F, 0x00028246, |
5268 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5269 | 0x03F, 0x00028246, | ||
5270 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5271 | 0x03F, 0x00028246, | ||
4536 | 0xA0000000, 0x00000000, | 5272 | 0xA0000000, 0x00000000, |
4537 | 0x03F, 0x00002A46, | 5273 | 0x03F, 0x00002A46, |
4538 | 0xB0000000, 0x00000000, | 5274 | 0xB0000000, 0x00000000, |
@@ -4550,6 +5286,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4550 | 0x03F, 0x00030246, | 5286 | 0x03F, 0x00030246, |
4551 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5287 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4552 | 0x03F, 0x00030246, | 5288 | 0x03F, 0x00030246, |
5289 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5290 | 0x03F, 0x00030246, | ||
5291 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5292 | 0x03F, 0x00030246, | ||
4553 | 0xA0000000, 0x00000000, | 5293 | 0xA0000000, 0x00000000, |
4554 | 0x03F, 0x00002A46, | 5294 | 0x03F, 0x00002A46, |
4555 | 0xB0000000, 0x00000000, | 5295 | 0xB0000000, 0x00000000, |
@@ -4564,9 +5304,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4564 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5304 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4565 | 0x03F, 0x00010E46, | 5305 | 0x03F, 0x00010E46, |
4566 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5306 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4567 | 0x03F, 0x00024246, | 5307 | 0x03F, 0x00028246, |
4568 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5308 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4569 | 0x03F, 0x00024246, | 5309 | 0x03F, 0x00028246, |
5310 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5311 | 0x03F, 0x00028246, | ||
5312 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5313 | 0x03F, 0x00028246, | ||
4570 | 0xA0000000, 0x00000000, | 5314 | 0xA0000000, 0x00000000, |
4571 | 0x03F, 0x00002A46, | 5315 | 0x03F, 0x00002A46, |
4572 | 0xB0000000, 0x00000000, | 5316 | 0xB0000000, 0x00000000, |
@@ -4581,9 +5325,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4581 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5325 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4582 | 0x03F, 0x00010E46, | 5326 | 0x03F, 0x00010E46, |
4583 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5327 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4584 | 0x03F, 0x00024246, | 5328 | 0x03F, 0x00028246, |
4585 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5329 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4586 | 0x03F, 0x00024246, | 5330 | 0x03F, 0x00028246, |
5331 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5332 | 0x03F, 0x00028246, | ||
5333 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5334 | 0x03F, 0x00028246, | ||
4587 | 0xA0000000, 0x00000000, | 5335 | 0xA0000000, 0x00000000, |
4588 | 0x03F, 0x00002A46, | 5336 | 0x03F, 0x00002A46, |
4589 | 0xB0000000, 0x00000000, | 5337 | 0xB0000000, 0x00000000, |
@@ -4601,6 +5349,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4601 | 0x03F, 0x00030246, | 5349 | 0x03F, 0x00030246, |
4602 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5350 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4603 | 0x03F, 0x00030246, | 5351 | 0x03F, 0x00030246, |
5352 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5353 | 0x03F, 0x00030246, | ||
5354 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5355 | 0x03F, 0x00030246, | ||
4604 | 0xA0000000, 0x00000000, | 5356 | 0xA0000000, 0x00000000, |
4605 | 0x03F, 0x00002A46, | 5357 | 0x03F, 0x00002A46, |
4606 | 0xB0000000, 0x00000000, | 5358 | 0xB0000000, 0x00000000, |
@@ -4615,9 +5367,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4615 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5367 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4616 | 0x03F, 0x00010E46, | 5368 | 0x03F, 0x00010E46, |
4617 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5369 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4618 | 0x03F, 0x00024246, | 5370 | 0x03F, 0x00028246, |
4619 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5371 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4620 | 0x03F, 0x00024246, | 5372 | 0x03F, 0x00028246, |
5373 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5374 | 0x03F, 0x00028246, | ||
5375 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5376 | 0x03F, 0x00028246, | ||
4621 | 0xA0000000, 0x00000000, | 5377 | 0xA0000000, 0x00000000, |
4622 | 0x03F, 0x00002A46, | 5378 | 0x03F, 0x00002A46, |
4623 | 0xB0000000, 0x00000000, | 5379 | 0xB0000000, 0x00000000, |
@@ -4632,9 +5388,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4632 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5388 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4633 | 0x03F, 0x00010E46, | 5389 | 0x03F, 0x00010E46, |
4634 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5390 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4635 | 0x03F, 0x00024246, | 5391 | 0x03F, 0x00028246, |
4636 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5392 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4637 | 0x03F, 0x00024246, | 5393 | 0x03F, 0x00028246, |
5394 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5395 | 0x03F, 0x00028246, | ||
5396 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5397 | 0x03F, 0x00028246, | ||
4638 | 0xA0000000, 0x00000000, | 5398 | 0xA0000000, 0x00000000, |
4639 | 0x03F, 0x00002A46, | 5399 | 0x03F, 0x00002A46, |
4640 | 0xB0000000, 0x00000000, | 5400 | 0xB0000000, 0x00000000, |
@@ -4652,6 +5412,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4652 | 0x03F, 0x00030246, | 5412 | 0x03F, 0x00030246, |
4653 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5413 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4654 | 0x03F, 0x00030246, | 5414 | 0x03F, 0x00030246, |
5415 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5416 | 0x03F, 0x00030246, | ||
5417 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5418 | 0x03F, 0x00030246, | ||
4655 | 0xA0000000, 0x00000000, | 5419 | 0xA0000000, 0x00000000, |
4656 | 0x03F, 0x00002A46, | 5420 | 0x03F, 0x00002A46, |
4657 | 0xB0000000, 0x00000000, | 5421 | 0xB0000000, 0x00000000, |
@@ -4666,9 +5430,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4666 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5430 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4667 | 0x03F, 0x00010E46, | 5431 | 0x03F, 0x00010E46, |
4668 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5432 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4669 | 0x03F, 0x00024246, | 5433 | 0x03F, 0x00028246, |
4670 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5434 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4671 | 0x03F, 0x00024246, | 5435 | 0x03F, 0x00028246, |
5436 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5437 | 0x03F, 0x00028246, | ||
5438 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5439 | 0x03F, 0x00028246, | ||
4672 | 0xA0000000, 0x00000000, | 5440 | 0xA0000000, 0x00000000, |
4673 | 0x03F, 0x00002A46, | 5441 | 0x03F, 0x00002A46, |
4674 | 0xB0000000, 0x00000000, | 5442 | 0xB0000000, 0x00000000, |
@@ -4683,9 +5451,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4683 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5451 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4684 | 0x03F, 0x00010E46, | 5452 | 0x03F, 0x00010E46, |
4685 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5453 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4686 | 0x03F, 0x00024246, | 5454 | 0x03F, 0x00028246, |
4687 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5455 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4688 | 0x03F, 0x00024246, | 5456 | 0x03F, 0x00028246, |
5457 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5458 | 0x03F, 0x00028246, | ||
5459 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5460 | 0x03F, 0x00028246, | ||
4689 | 0xA0000000, 0x00000000, | 5461 | 0xA0000000, 0x00000000, |
4690 | 0x03F, 0x00002A46, | 5462 | 0x03F, 0x00002A46, |
4691 | 0xB0000000, 0x00000000, | 5463 | 0xB0000000, 0x00000000, |
@@ -4703,6 +5475,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4703 | 0x03F, 0x00030246, | 5475 | 0x03F, 0x00030246, |
4704 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5476 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4705 | 0x03F, 0x00030246, | 5477 | 0x03F, 0x00030246, |
5478 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5479 | 0x03F, 0x00030246, | ||
5480 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5481 | 0x03F, 0x00030246, | ||
4706 | 0xA0000000, 0x00000000, | 5482 | 0xA0000000, 0x00000000, |
4707 | 0x03F, 0x00002A46, | 5483 | 0x03F, 0x00002A46, |
4708 | 0xB0000000, 0x00000000, | 5484 | 0xB0000000, 0x00000000, |
@@ -4717,9 +5493,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4717 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5493 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4718 | 0x03F, 0x0000EA46, | 5494 | 0x03F, 0x0000EA46, |
4719 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5495 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4720 | 0x03F, 0x00024246, | 5496 | 0x03F, 0x00028246, |
4721 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5497 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4722 | 0x03F, 0x00024246, | 5498 | 0x03F, 0x00028246, |
5499 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5500 | 0x03F, 0x00028246, | ||
5501 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5502 | 0x03F, 0x00028246, | ||
4723 | 0xA0000000, 0x00000000, | 5503 | 0xA0000000, 0x00000000, |
4724 | 0x03F, 0x00002A46, | 5504 | 0x03F, 0x00002A46, |
4725 | 0xB0000000, 0x00000000, | 5505 | 0xB0000000, 0x00000000, |
@@ -4734,9 +5514,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4734 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5514 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4735 | 0x03F, 0x0000EA46, | 5515 | 0x03F, 0x0000EA46, |
4736 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5516 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4737 | 0x03F, 0x00024246, | 5517 | 0x03F, 0x00028246, |
4738 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5518 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4739 | 0x03F, 0x00024246, | 5519 | 0x03F, 0x00028246, |
5520 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5521 | 0x03F, 0x00028246, | ||
5522 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5523 | 0x03F, 0x00028246, | ||
4740 | 0xA0000000, 0x00000000, | 5524 | 0xA0000000, 0x00000000, |
4741 | 0x03F, 0x00002A46, | 5525 | 0x03F, 0x00002A46, |
4742 | 0xB0000000, 0x00000000, | 5526 | 0xB0000000, 0x00000000, |
@@ -4754,6 +5538,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4754 | 0x03F, 0x00030246, | 5538 | 0x03F, 0x00030246, |
4755 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5539 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4756 | 0x03F, 0x00030246, | 5540 | 0x03F, 0x00030246, |
5541 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5542 | 0x03F, 0x00030246, | ||
5543 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5544 | 0x03F, 0x00030246, | ||
4757 | 0xA0000000, 0x00000000, | 5545 | 0xA0000000, 0x00000000, |
4758 | 0x03F, 0x00002A46, | 5546 | 0x03F, 0x00002A46, |
4759 | 0xB0000000, 0x00000000, | 5547 | 0xB0000000, 0x00000000, |
@@ -4768,9 +5556,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4768 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5556 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4769 | 0x03F, 0x0000EA46, | 5557 | 0x03F, 0x0000EA46, |
4770 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5558 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4771 | 0x03F, 0x00021E46, | 5559 | 0x03F, 0x00025E46, |
4772 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5560 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4773 | 0x03F, 0x00021E46, | 5561 | 0x03F, 0x00025E46, |
5562 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5563 | 0x03F, 0x00025E46, | ||
5564 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5565 | 0x03F, 0x00025E46, | ||
4774 | 0xA0000000, 0x00000000, | 5566 | 0xA0000000, 0x00000000, |
4775 | 0x03F, 0x00002A46, | 5567 | 0x03F, 0x00002A46, |
4776 | 0xB0000000, 0x00000000, | 5568 | 0xB0000000, 0x00000000, |
@@ -4785,9 +5577,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4785 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5577 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4786 | 0x03F, 0x0000EA46, | 5578 | 0x03F, 0x0000EA46, |
4787 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5579 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4788 | 0x03F, 0x00021E46, | 5580 | 0x03F, 0x00025E46, |
4789 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5581 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4790 | 0x03F, 0x00021E46, | 5582 | 0x03F, 0x00025E46, |
5583 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5584 | 0x03F, 0x00025E46, | ||
5585 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5586 | 0x03F, 0x00025E46, | ||
4791 | 0xA0000000, 0x00000000, | 5587 | 0xA0000000, 0x00000000, |
4792 | 0x03F, 0x00002A46, | 5588 | 0x03F, 0x00002A46, |
4793 | 0xB0000000, 0x00000000, | 5589 | 0xB0000000, 0x00000000, |
@@ -4805,6 +5601,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4805 | 0x03F, 0x00031E46, | 5601 | 0x03F, 0x00031E46, |
4806 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5602 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4807 | 0x03F, 0x00031E46, | 5603 | 0x03F, 0x00031E46, |
5604 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5605 | 0x03F, 0x00031E46, | ||
5606 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5607 | 0x03F, 0x00031E46, | ||
4808 | 0xA0000000, 0x00000000, | 5608 | 0xA0000000, 0x00000000, |
4809 | 0x03F, 0x00002A46, | 5609 | 0x03F, 0x00002A46, |
4810 | 0xB0000000, 0x00000000, | 5610 | 0xB0000000, 0x00000000, |
@@ -4819,9 +5619,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4819 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5619 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4820 | 0x03F, 0x0000EA46, | 5620 | 0x03F, 0x0000EA46, |
4821 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5621 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4822 | 0x03F, 0x00021E46, | 5622 | 0x03F, 0x00025E46, |
4823 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5623 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4824 | 0x03F, 0x00021E46, | 5624 | 0x03F, 0x00025E46, |
5625 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5626 | 0x03F, 0x00025E46, | ||
5627 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5628 | 0x03F, 0x00025E46, | ||
4825 | 0xA0000000, 0x00000000, | 5629 | 0xA0000000, 0x00000000, |
4826 | 0x03F, 0x00002A46, | 5630 | 0x03F, 0x00002A46, |
4827 | 0xB0000000, 0x00000000, | 5631 | 0xB0000000, 0x00000000, |
@@ -4836,9 +5640,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4836 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5640 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4837 | 0x03F, 0x0000EA46, | 5641 | 0x03F, 0x0000EA46, |
4838 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5642 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4839 | 0x03F, 0x00021E46, | 5643 | 0x03F, 0x00025E46, |
4840 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5644 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4841 | 0x03F, 0x00021E46, | 5645 | 0x03F, 0x00025E46, |
5646 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5647 | 0x03F, 0x00025E46, | ||
5648 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5649 | 0x03F, 0x00025E46, | ||
4842 | 0xA0000000, 0x00000000, | 5650 | 0xA0000000, 0x00000000, |
4843 | 0x03F, 0x00002A46, | 5651 | 0x03F, 0x00002A46, |
4844 | 0xB0000000, 0x00000000, | 5652 | 0xB0000000, 0x00000000, |
@@ -4856,6 +5664,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4856 | 0x03F, 0x00031E46, | 5664 | 0x03F, 0x00031E46, |
4857 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5665 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4858 | 0x03F, 0x00031E46, | 5666 | 0x03F, 0x00031E46, |
5667 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5668 | 0x03F, 0x00031E46, | ||
5669 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5670 | 0x03F, 0x00031E46, | ||
4859 | 0xA0000000, 0x00000000, | 5671 | 0xA0000000, 0x00000000, |
4860 | 0x03F, 0x00002A46, | 5672 | 0x03F, 0x00002A46, |
4861 | 0xB0000000, 0x00000000, | 5673 | 0xB0000000, 0x00000000, |
@@ -4870,9 +5682,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4870 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5682 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4871 | 0x03F, 0x0000EA46, | 5683 | 0x03F, 0x0000EA46, |
4872 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5684 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4873 | 0x03F, 0x00021E46, | 5685 | 0x03F, 0x00025E46, |
4874 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5686 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4875 | 0x03F, 0x00021E46, | 5687 | 0x03F, 0x00025E46, |
5688 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5689 | 0x03F, 0x00025E46, | ||
5690 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5691 | 0x03F, 0x00025E46, | ||
4876 | 0xA0000000, 0x00000000, | 5692 | 0xA0000000, 0x00000000, |
4877 | 0x03F, 0x00002A46, | 5693 | 0x03F, 0x00002A46, |
4878 | 0xB0000000, 0x00000000, | 5694 | 0xB0000000, 0x00000000, |
@@ -4887,9 +5703,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4887 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5703 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4888 | 0x03F, 0x0000EA46, | 5704 | 0x03F, 0x0000EA46, |
4889 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5705 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4890 | 0x03F, 0x00021E46, | 5706 | 0x03F, 0x00025E46, |
4891 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5707 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4892 | 0x03F, 0x00021E46, | 5708 | 0x03F, 0x00025E46, |
5709 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5710 | 0x03F, 0x00025E46, | ||
5711 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5712 | 0x03F, 0x00025E46, | ||
4893 | 0xA0000000, 0x00000000, | 5713 | 0xA0000000, 0x00000000, |
4894 | 0x03F, 0x00002A46, | 5714 | 0x03F, 0x00002A46, |
4895 | 0xB0000000, 0x00000000, | 5715 | 0xB0000000, 0x00000000, |
@@ -4907,6 +5727,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4907 | 0x03F, 0x00031E46, | 5727 | 0x03F, 0x00031E46, |
4908 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5728 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4909 | 0x03F, 0x00031E46, | 5729 | 0x03F, 0x00031E46, |
5730 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5731 | 0x03F, 0x00031E46, | ||
5732 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5733 | 0x03F, 0x00031E46, | ||
4910 | 0xA0000000, 0x00000000, | 5734 | 0xA0000000, 0x00000000, |
4911 | 0x03F, 0x00002A46, | 5735 | 0x03F, 0x00002A46, |
4912 | 0xB0000000, 0x00000000, | 5736 | 0xB0000000, 0x00000000, |
@@ -4921,9 +5745,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4921 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5745 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4922 | 0x03F, 0x0000EA46, | 5746 | 0x03F, 0x0000EA46, |
4923 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5747 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4924 | 0x03F, 0x00021E46, | 5748 | 0x03F, 0x00025E46, |
4925 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5749 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4926 | 0x03F, 0x00021E46, | 5750 | 0x03F, 0x00025E46, |
5751 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5752 | 0x03F, 0x00025E46, | ||
5753 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5754 | 0x03F, 0x00025E46, | ||
4927 | 0xA0000000, 0x00000000, | 5755 | 0xA0000000, 0x00000000, |
4928 | 0x03F, 0x00002A46, | 5756 | 0x03F, 0x00002A46, |
4929 | 0xB0000000, 0x00000000, | 5757 | 0xB0000000, 0x00000000, |
@@ -4938,9 +5766,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4938 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5766 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4939 | 0x03F, 0x0000EA46, | 5767 | 0x03F, 0x0000EA46, |
4940 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5768 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4941 | 0x03F, 0x00021E46, | 5769 | 0x03F, 0x00025E46, |
4942 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5770 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4943 | 0x03F, 0x00021E46, | 5771 | 0x03F, 0x00025E46, |
5772 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5773 | 0x03F, 0x00025E46, | ||
5774 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5775 | 0x03F, 0x00025E46, | ||
4944 | 0xA0000000, 0x00000000, | 5776 | 0xA0000000, 0x00000000, |
4945 | 0x03F, 0x00002A46, | 5777 | 0x03F, 0x00002A46, |
4946 | 0xB0000000, 0x00000000, | 5778 | 0xB0000000, 0x00000000, |
@@ -4958,6 +5790,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
4958 | 0x03F, 0x00031E46, | 5790 | 0x03F, 0x00031E46, |
4959 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5791 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4960 | 0x03F, 0x00031E46, | 5792 | 0x03F, 0x00031E46, |
5793 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5794 | 0x03F, 0x00031E46, | ||
5795 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5796 | 0x03F, 0x00031E46, | ||
4961 | 0xA0000000, 0x00000000, | 5797 | 0xA0000000, 0x00000000, |
4962 | 0x03F, 0x00002A46, | 5798 | 0x03F, 0x00002A46, |
4963 | 0xB0000000, 0x00000000, | 5799 | 0xB0000000, 0x00000000, |
@@ -4972,9 +5808,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4972 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5808 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4973 | 0x03F, 0x0000EA46, | 5809 | 0x03F, 0x0000EA46, |
4974 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5810 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4975 | 0x03F, 0x00021E46, | 5811 | 0x03F, 0x00025E46, |
4976 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5812 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4977 | 0x03F, 0x00021E46, | 5813 | 0x03F, 0x00025E46, |
5814 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5815 | 0x03F, 0x00025E46, | ||
5816 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5817 | 0x03F, 0x00025E46, | ||
4978 | 0xA0000000, 0x00000000, | 5818 | 0xA0000000, 0x00000000, |
4979 | 0x03F, 0x00002A46, | 5819 | 0x03F, 0x00002A46, |
4980 | 0xB0000000, 0x00000000, | 5820 | 0xB0000000, 0x00000000, |
@@ -4989,9 +5829,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
4989 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5829 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
4990 | 0x03F, 0x0000EA46, | 5830 | 0x03F, 0x0000EA46, |
4991 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5831 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
4992 | 0x03F, 0x00021E46, | 5832 | 0x03F, 0x00025E46, |
4993 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5833 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
4994 | 0x03F, 0x00021E46, | 5834 | 0x03F, 0x00025E46, |
5835 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5836 | 0x03F, 0x00025E46, | ||
5837 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5838 | 0x03F, 0x00025E46, | ||
4995 | 0xA0000000, 0x00000000, | 5839 | 0xA0000000, 0x00000000, |
4996 | 0x03F, 0x00002A46, | 5840 | 0x03F, 0x00002A46, |
4997 | 0xB0000000, 0x00000000, | 5841 | 0xB0000000, 0x00000000, |
@@ -5009,6 +5853,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
5009 | 0x03F, 0x00031E46, | 5853 | 0x03F, 0x00031E46, |
5010 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5854 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5011 | 0x03F, 0x00031E46, | 5855 | 0x03F, 0x00031E46, |
5856 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5857 | 0x03F, 0x00031E46, | ||
5858 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5859 | 0x03F, 0x00031E46, | ||
5012 | 0xA0000000, 0x00000000, | 5860 | 0xA0000000, 0x00000000, |
5013 | 0x03F, 0x00002A46, | 5861 | 0x03F, 0x00002A46, |
5014 | 0xB0000000, 0x00000000, | 5862 | 0xB0000000, 0x00000000, |
@@ -5023,9 +5871,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
5023 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5871 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
5024 | 0x03F, 0x0000EA46, | 5872 | 0x03F, 0x0000EA46, |
5025 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5873 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5026 | 0x03F, 0x00021E46, | 5874 | 0x03F, 0x00025E46, |
5027 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5875 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5028 | 0x03F, 0x00021E46, | 5876 | 0x03F, 0x00025E46, |
5877 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5878 | 0x03F, 0x00025E46, | ||
5879 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5880 | 0x03F, 0x00025E46, | ||
5029 | 0xA0000000, 0x00000000, | 5881 | 0xA0000000, 0x00000000, |
5030 | 0x03F, 0x00002A46, | 5882 | 0x03F, 0x00002A46, |
5031 | 0xB0000000, 0x00000000, | 5883 | 0xB0000000, 0x00000000, |
@@ -5040,9 +5892,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
5040 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5892 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
5041 | 0x03F, 0x0000EA46, | 5893 | 0x03F, 0x0000EA46, |
5042 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5894 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5043 | 0x03F, 0x00021E46, | 5895 | 0x03F, 0x00025E46, |
5044 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5896 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5045 | 0x03F, 0x00021E46, | 5897 | 0x03F, 0x00025E46, |
5898 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5899 | 0x03F, 0x00025E46, | ||
5900 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5901 | 0x03F, 0x00025E46, | ||
5046 | 0xA0000000, 0x00000000, | 5902 | 0xA0000000, 0x00000000, |
5047 | 0x03F, 0x00002A46, | 5903 | 0x03F, 0x00002A46, |
5048 | 0xB0000000, 0x00000000, | 5904 | 0xB0000000, 0x00000000, |
@@ -5060,6 +5916,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
5060 | 0x03F, 0x00031E46, | 5916 | 0x03F, 0x00031E46, |
5061 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5917 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5062 | 0x03F, 0x00031E46, | 5918 | 0x03F, 0x00031E46, |
5919 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5920 | 0x03F, 0x00031E46, | ||
5921 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5922 | 0x03F, 0x00031E46, | ||
5063 | 0xA0000000, 0x00000000, | 5923 | 0xA0000000, 0x00000000, |
5064 | 0x03F, 0x00002A46, | 5924 | 0x03F, 0x00002A46, |
5065 | 0xB0000000, 0x00000000, | 5925 | 0xB0000000, 0x00000000, |
@@ -5074,9 +5934,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
5074 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5934 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
5075 | 0x03F, 0x0000EA46, | 5935 | 0x03F, 0x0000EA46, |
5076 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5936 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5077 | 0x03F, 0x00021E46, | 5937 | 0x03F, 0x00025E46, |
5078 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5938 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5079 | 0x03F, 0x00021E46, | 5939 | 0x03F, 0x00025E46, |
5940 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5941 | 0x03F, 0x00025E46, | ||
5942 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5943 | 0x03F, 0x00025E46, | ||
5080 | 0xA0000000, 0x00000000, | 5944 | 0xA0000000, 0x00000000, |
5081 | 0x03F, 0x00002A46, | 5945 | 0x03F, 0x00002A46, |
5082 | 0xB0000000, 0x00000000, | 5946 | 0xB0000000, 0x00000000, |
@@ -5091,9 +5955,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
5091 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5955 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
5092 | 0x03F, 0x0000EA46, | 5956 | 0x03F, 0x0000EA46, |
5093 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5957 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5094 | 0x03F, 0x00021E46, | 5958 | 0x03F, 0x00025E46, |
5095 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5959 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5096 | 0x03F, 0x00021E46, | 5960 | 0x03F, 0x00025E46, |
5961 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5962 | 0x03F, 0x00025E46, | ||
5963 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5964 | 0x03F, 0x00025E46, | ||
5097 | 0xA0000000, 0x00000000, | 5965 | 0xA0000000, 0x00000000, |
5098 | 0x03F, 0x00002A46, | 5966 | 0x03F, 0x00002A46, |
5099 | 0xB0000000, 0x00000000, | 5967 | 0xB0000000, 0x00000000, |
@@ -5111,6 +5979,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
5111 | 0x03F, 0x00031E46, | 5979 | 0x03F, 0x00031E46, |
5112 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 5980 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5113 | 0x03F, 0x00031E46, | 5981 | 0x03F, 0x00031E46, |
5982 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
5983 | 0x03F, 0x00031E46, | ||
5984 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
5985 | 0x03F, 0x00031E46, | ||
5114 | 0xA0000000, 0x00000000, | 5986 | 0xA0000000, 0x00000000, |
5115 | 0x03F, 0x00002A46, | 5987 | 0x03F, 0x00002A46, |
5116 | 0xB0000000, 0x00000000, | 5988 | 0xB0000000, 0x00000000, |
@@ -5125,9 +5997,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
5125 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 5997 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
5126 | 0x03F, 0x0000EA46, | 5998 | 0x03F, 0x0000EA46, |
5127 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 5999 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5128 | 0x03F, 0x00021E46, | 6000 | 0x03F, 0x00025E46, |
5129 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 6001 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5130 | 0x03F, 0x00021E46, | 6002 | 0x03F, 0x00025E46, |
6003 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6004 | 0x03F, 0x00025E46, | ||
6005 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6006 | 0x03F, 0x00025E46, | ||
5131 | 0xA0000000, 0x00000000, | 6007 | 0xA0000000, 0x00000000, |
5132 | 0x03F, 0x00002A46, | 6008 | 0x03F, 0x00002A46, |
5133 | 0xB0000000, 0x00000000, | 6009 | 0xB0000000, 0x00000000, |
@@ -5142,9 +6018,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
5142 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 6018 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
5143 | 0x03F, 0x0000EA46, | 6019 | 0x03F, 0x0000EA46, |
5144 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 6020 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5145 | 0x03F, 0x00021E46, | 6021 | 0x03F, 0x00025E46, |
5146 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 6022 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5147 | 0x03F, 0x00021E46, | 6023 | 0x03F, 0x00025E46, |
6024 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6025 | 0x03F, 0x00025E46, | ||
6026 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6027 | 0x03F, 0x00025E46, | ||
5148 | 0xA0000000, 0x00000000, | 6028 | 0xA0000000, 0x00000000, |
5149 | 0x03F, 0x00002A46, | 6029 | 0x03F, 0x00002A46, |
5150 | 0xB0000000, 0x00000000, | 6030 | 0xB0000000, 0x00000000, |
@@ -5162,6 +6042,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
5162 | 0x03F, 0x00031E46, | 6042 | 0x03F, 0x00031E46, |
5163 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 6043 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5164 | 0x03F, 0x00031E46, | 6044 | 0x03F, 0x00031E46, |
6045 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6046 | 0x03F, 0x00031E46, | ||
6047 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6048 | 0x03F, 0x00031E46, | ||
5165 | 0xA0000000, 0x00000000, | 6049 | 0xA0000000, 0x00000000, |
5166 | 0x03F, 0x00002A46, | 6050 | 0x03F, 0x00002A46, |
5167 | 0xB0000000, 0x00000000, | 6051 | 0xB0000000, 0x00000000, |
@@ -5179,6 +6063,10 @@ static const u32 rtw8822c_rf_a[] = { | |||
5179 | 0x03F, 0x00021E46, | 6063 | 0x03F, 0x00021E46, |
5180 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 6064 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5181 | 0x03F, 0x00021E46, | 6065 | 0x03F, 0x00021E46, |
6066 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6067 | 0x03F, 0x00021E46, | ||
6068 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6069 | 0x03F, 0x00021E46, | ||
5182 | 0xA0000000, 0x00000000, | 6070 | 0xA0000000, 0x00000000, |
5183 | 0x03F, 0x00002A46, | 6071 | 0x03F, 0x00002A46, |
5184 | 0xB0000000, 0x00000000, | 6072 | 0xB0000000, 0x00000000, |
@@ -5278,17 +6166,17 @@ static const u32 rtw8822c_rf_a[] = { | |||
5278 | 0x03F, 0x00000DF7, | 6166 | 0x03F, 0x00000DF7, |
5279 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 6167 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5280 | 0x033, 0x00000060, | 6168 | 0x033, 0x00000060, |
5281 | 0x03F, 0x00000468, | 6169 | 0x03F, 0x00000467, |
5282 | 0x033, 0x00000061, | 6170 | 0x033, 0x00000061, |
5283 | 0x03F, 0x00000868, | 6171 | 0x03F, 0x00000867, |
5284 | 0x033, 0x00000062, | 6172 | 0x033, 0x00000062, |
5285 | 0x03F, 0x00000909, | 6173 | 0x03F, 0x00000908, |
5286 | 0x033, 0x00000063, | 6174 | 0x033, 0x00000063, |
5287 | 0x03F, 0x00000D0A, | 6175 | 0x03F, 0x00000D09, |
5288 | 0x033, 0x00000064, | 6176 | 0x033, 0x00000064, |
5289 | 0x03F, 0x00000D4A, | 6177 | 0x03F, 0x00000D49, |
5290 | 0x033, 0x00000065, | 6178 | 0x033, 0x00000065, |
5291 | 0x03F, 0x00000D8B, | 6179 | 0x03F, 0x00000D8A, |
5292 | 0x033, 0x00000066, | 6180 | 0x033, 0x00000066, |
5293 | 0x03F, 0x00000DEB, | 6181 | 0x03F, 0x00000DEB, |
5294 | 0x033, 0x00000067, | 6182 | 0x033, 0x00000067, |
@@ -5301,17 +6189,63 @@ static const u32 rtw8822c_rf_a[] = { | |||
5301 | 0x03F, 0x00000DF7, | 6189 | 0x03F, 0x00000DF7, |
5302 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 6190 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5303 | 0x033, 0x00000060, | 6191 | 0x033, 0x00000060, |
5304 | 0x03F, 0x00000468, | 6192 | 0x03F, 0x00000467, |
5305 | 0x033, 0x00000061, | 6193 | 0x033, 0x00000061, |
5306 | 0x03F, 0x00000868, | 6194 | 0x03F, 0x00000867, |
5307 | 0x033, 0x00000062, | 6195 | 0x033, 0x00000062, |
5308 | 0x03F, 0x00000909, | 6196 | 0x03F, 0x00000908, |
5309 | 0x033, 0x00000063, | 6197 | 0x033, 0x00000063, |
5310 | 0x03F, 0x00000D0A, | 6198 | 0x03F, 0x00000D09, |
5311 | 0x033, 0x00000064, | 6199 | 0x033, 0x00000064, |
5312 | 0x03F, 0x00000D4A, | 6200 | 0x03F, 0x00000D49, |
5313 | 0x033, 0x00000065, | 6201 | 0x033, 0x00000065, |
5314 | 0x03F, 0x00000D8B, | 6202 | 0x03F, 0x00000D8A, |
6203 | 0x033, 0x00000066, | ||
6204 | 0x03F, 0x00000DEB, | ||
6205 | 0x033, 0x00000067, | ||
6206 | 0x03F, 0x00000DEE, | ||
6207 | 0x033, 0x00000068, | ||
6208 | 0x03F, 0x00000DF1, | ||
6209 | 0x033, 0x00000069, | ||
6210 | 0x03F, 0x00000DF4, | ||
6211 | 0x033, 0x0000006A, | ||
6212 | 0x03F, 0x00000DF7, | ||
6213 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6214 | 0x033, 0x00000060, | ||
6215 | 0x03F, 0x00000467, | ||
6216 | 0x033, 0x00000061, | ||
6217 | 0x03F, 0x00000867, | ||
6218 | 0x033, 0x00000062, | ||
6219 | 0x03F, 0x00000908, | ||
6220 | 0x033, 0x00000063, | ||
6221 | 0x03F, 0x00000D09, | ||
6222 | 0x033, 0x00000064, | ||
6223 | 0x03F, 0x00000D49, | ||
6224 | 0x033, 0x00000065, | ||
6225 | 0x03F, 0x00000D8A, | ||
6226 | 0x033, 0x00000066, | ||
6227 | 0x03F, 0x00000DEB, | ||
6228 | 0x033, 0x00000067, | ||
6229 | 0x03F, 0x00000DEE, | ||
6230 | 0x033, 0x00000068, | ||
6231 | 0x03F, 0x00000DF1, | ||
6232 | 0x033, 0x00000069, | ||
6233 | 0x03F, 0x00000DF4, | ||
6234 | 0x033, 0x0000006A, | ||
6235 | 0x03F, 0x00000DF7, | ||
6236 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6237 | 0x033, 0x00000060, | ||
6238 | 0x03F, 0x00000467, | ||
6239 | 0x033, 0x00000061, | ||
6240 | 0x03F, 0x00000867, | ||
6241 | 0x033, 0x00000062, | ||
6242 | 0x03F, 0x00000908, | ||
6243 | 0x033, 0x00000063, | ||
6244 | 0x03F, 0x00000D09, | ||
6245 | 0x033, 0x00000064, | ||
6246 | 0x03F, 0x00000D49, | ||
6247 | 0x033, 0x00000065, | ||
6248 | 0x03F, 0x00000D8A, | ||
5315 | 0x033, 0x00000066, | 6249 | 0x033, 0x00000066, |
5316 | 0x03F, 0x00000DEB, | 6250 | 0x03F, 0x00000DEB, |
5317 | 0x033, 0x00000067, | 6251 | 0x033, 0x00000067, |
@@ -5440,17 +6374,17 @@ static const u32 rtw8822c_rf_a[] = { | |||
5440 | 0x03F, 0x00000DF7, | 6374 | 0x03F, 0x00000DF7, |
5441 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 6375 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5442 | 0x033, 0x00000020, | 6376 | 0x033, 0x00000020, |
5443 | 0x03F, 0x00000468, | 6377 | 0x03F, 0x00000467, |
5444 | 0x033, 0x00000021, | 6378 | 0x033, 0x00000021, |
5445 | 0x03F, 0x00000868, | 6379 | 0x03F, 0x00000867, |
5446 | 0x033, 0x00000022, | 6380 | 0x033, 0x00000022, |
5447 | 0x03F, 0x00000909, | 6381 | 0x03F, 0x00000908, |
5448 | 0x033, 0x00000023, | 6382 | 0x033, 0x00000023, |
5449 | 0x03F, 0x00000D0A, | 6383 | 0x03F, 0x00000D09, |
5450 | 0x033, 0x00000024, | 6384 | 0x033, 0x00000024, |
5451 | 0x03F, 0x00000D4A, | 6385 | 0x03F, 0x00000D49, |
5452 | 0x033, 0x00000025, | 6386 | 0x033, 0x00000025, |
5453 | 0x03F, 0x00000D8B, | 6387 | 0x03F, 0x00000D8A, |
5454 | 0x033, 0x00000026, | 6388 | 0x033, 0x00000026, |
5455 | 0x03F, 0x00000DEB, | 6389 | 0x03F, 0x00000DEB, |
5456 | 0x033, 0x00000027, | 6390 | 0x033, 0x00000027, |
@@ -5463,17 +6397,63 @@ static const u32 rtw8822c_rf_a[] = { | |||
5463 | 0x03F, 0x00000DF7, | 6397 | 0x03F, 0x00000DF7, |
5464 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 6398 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5465 | 0x033, 0x00000020, | 6399 | 0x033, 0x00000020, |
5466 | 0x03F, 0x00000468, | 6400 | 0x03F, 0x00000467, |
5467 | 0x033, 0x00000021, | 6401 | 0x033, 0x00000021, |
5468 | 0x03F, 0x00000868, | 6402 | 0x03F, 0x00000867, |
5469 | 0x033, 0x00000022, | 6403 | 0x033, 0x00000022, |
5470 | 0x03F, 0x00000909, | 6404 | 0x03F, 0x00000908, |
5471 | 0x033, 0x00000023, | 6405 | 0x033, 0x00000023, |
5472 | 0x03F, 0x00000D0A, | 6406 | 0x03F, 0x00000D09, |
5473 | 0x033, 0x00000024, | 6407 | 0x033, 0x00000024, |
5474 | 0x03F, 0x00000D4A, | 6408 | 0x03F, 0x00000D49, |
5475 | 0x033, 0x00000025, | 6409 | 0x033, 0x00000025, |
5476 | 0x03F, 0x00000D8B, | 6410 | 0x03F, 0x00000D8A, |
6411 | 0x033, 0x00000026, | ||
6412 | 0x03F, 0x00000DEB, | ||
6413 | 0x033, 0x00000027, | ||
6414 | 0x03F, 0x00000DEE, | ||
6415 | 0x033, 0x00000028, | ||
6416 | 0x03F, 0x00000DF1, | ||
6417 | 0x033, 0x00000029, | ||
6418 | 0x03F, 0x00000DF4, | ||
6419 | 0x033, 0x0000002A, | ||
6420 | 0x03F, 0x00000DF7, | ||
6421 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6422 | 0x033, 0x00000020, | ||
6423 | 0x03F, 0x00000467, | ||
6424 | 0x033, 0x00000021, | ||
6425 | 0x03F, 0x00000867, | ||
6426 | 0x033, 0x00000022, | ||
6427 | 0x03F, 0x00000908, | ||
6428 | 0x033, 0x00000023, | ||
6429 | 0x03F, 0x00000D09, | ||
6430 | 0x033, 0x00000024, | ||
6431 | 0x03F, 0x00000D49, | ||
6432 | 0x033, 0x00000025, | ||
6433 | 0x03F, 0x00000D8A, | ||
6434 | 0x033, 0x00000026, | ||
6435 | 0x03F, 0x00000DEB, | ||
6436 | 0x033, 0x00000027, | ||
6437 | 0x03F, 0x00000DEE, | ||
6438 | 0x033, 0x00000028, | ||
6439 | 0x03F, 0x00000DF1, | ||
6440 | 0x033, 0x00000029, | ||
6441 | 0x03F, 0x00000DF4, | ||
6442 | 0x033, 0x0000002A, | ||
6443 | 0x03F, 0x00000DF7, | ||
6444 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6445 | 0x033, 0x00000020, | ||
6446 | 0x03F, 0x00000467, | ||
6447 | 0x033, 0x00000021, | ||
6448 | 0x03F, 0x00000867, | ||
6449 | 0x033, 0x00000022, | ||
6450 | 0x03F, 0x00000908, | ||
6451 | 0x033, 0x00000023, | ||
6452 | 0x03F, 0x00000D09, | ||
6453 | 0x033, 0x00000024, | ||
6454 | 0x03F, 0x00000D49, | ||
6455 | 0x033, 0x00000025, | ||
6456 | 0x03F, 0x00000D8A, | ||
5477 | 0x033, 0x00000026, | 6457 | 0x033, 0x00000026, |
5478 | 0x03F, 0x00000DEB, | 6458 | 0x03F, 0x00000DEB, |
5479 | 0x033, 0x00000027, | 6459 | 0x033, 0x00000027, |
@@ -5526,15 +6506,25 @@ static const u32 rtw8822c_rf_a[] = { | |||
5526 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 6506 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
5527 | 0x0B3, 0x0007C760, | 6507 | 0x0B3, 0x0007C760, |
5528 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 6508 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5529 | 0x0B3, 0x0007C760, | 6509 | 0x0B3, 0x000FC760, |
5530 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 6510 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5531 | 0x0B3, 0x0007C760, | 6511 | 0x0B3, 0x000FC760, |
6512 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6513 | 0x0B3, 0x000FC760, | ||
6514 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6515 | 0x0B3, 0x000FC760, | ||
5532 | 0xA0000000, 0x00000000, | 6516 | 0xA0000000, 0x00000000, |
5533 | 0x0B3, 0x0007C760, | 6517 | 0x0B3, 0x0007C760, |
5534 | 0xB0000000, 0x00000000, | 6518 | 0xB0000000, 0x00000000, |
5535 | 0x0B4, 0x00099D40, | 6519 | 0x0B4, 0x00099D40, |
5536 | 0x0B5, 0x0004103F, | 6520 | 0x0B5, 0x0004103F, |
6521 | 0x83000003, 0x00000000, 0x40000000, 0x00000000, | ||
6522 | 0x0B6, 0x000387F8, | ||
6523 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6524 | 0x0B6, 0x000387F8, | ||
6525 | 0xA0000000, 0x00000000, | ||
5537 | 0x0B6, 0x000187F8, | 6526 | 0x0B6, 0x000187F8, |
6527 | 0xB0000000, 0x00000000, | ||
5538 | 0x0B7, 0x00030018, | 6528 | 0x0B7, 0x00030018, |
5539 | 0x0BC, 0x00000008, | 6529 | 0x0BC, 0x00000008, |
5540 | 0x0D3, 0x00000542, | 6530 | 0x0D3, 0x00000542, |
@@ -5555,9 +6545,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
5555 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 6545 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
5556 | 0x0B3, 0x0007C700, | 6546 | 0x0B3, 0x0007C700, |
5557 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 6547 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5558 | 0x0B3, 0x0007C700, | 6548 | 0x0B3, 0x000FC760, |
5559 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 6549 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5560 | 0x0B3, 0x0007C700, | 6550 | 0x0B3, 0x000FC760, |
6551 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6552 | 0x0B3, 0x000FC760, | ||
6553 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6554 | 0x0B3, 0x000FC760, | ||
5561 | 0xA0000000, 0x00000000, | 6555 | 0xA0000000, 0x00000000, |
5562 | 0x0B3, 0x0007C700, | 6556 | 0x0B3, 0x0007C700, |
5563 | 0xB0000000, 0x00000000, | 6557 | 0xB0000000, 0x00000000, |
@@ -5573,9 +6567,13 @@ static const u32 rtw8822c_rf_a[] = { | |||
5573 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 6567 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
5574 | 0x0B3, 0x0007C760, | 6568 | 0x0B3, 0x0007C760, |
5575 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 6569 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
5576 | 0x0B3, 0x0007C760, | 6570 | 0x0B3, 0x000FC760, |
5577 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 6571 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5578 | 0x0B3, 0x0007C760, | 6572 | 0x0B3, 0x000FC760, |
6573 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6574 | 0x0B3, 0x000FC760, | ||
6575 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6576 | 0x0B3, 0x000FC760, | ||
5579 | 0xA0000000, 0x00000000, | 6577 | 0xA0000000, 0x00000000, |
5580 | 0x0B3, 0x0007C760, | 6578 | 0x0B3, 0x0007C760, |
5581 | 0xB0000000, 0x00000000, | 6579 | 0xB0000000, 0x00000000, |
@@ -5584,10 +6582,14 @@ static const u32 rtw8822c_rf_a[] = { | |||
5584 | 0x0CD, 0x00089600, | 6582 | 0x0CD, 0x00089600, |
5585 | 0x018, 0x00013108, | 6583 | 0x018, 0x00013108, |
5586 | 0x0FE, 0x00000000, | 6584 | 0x0FE, 0x00000000, |
6585 | 0x0FE, 0x00000000, | ||
5587 | 0x0B8, 0x000C0440, | 6586 | 0x0B8, 0x000C0440, |
5588 | 0x0BA, 0x000E840D, | 6587 | 0x0BA, 0x000E840D, |
5589 | 0x0FE, 0x00000000, | 6588 | 0x0FE, 0x00000000, |
6589 | 0x0FE, 0x00000000, | ||
5590 | 0x018, 0x00013124, | 6590 | 0x018, 0x00013124, |
6591 | 0x0FE, 0x00000000, | ||
6592 | 0x0FE, 0x00000000, | ||
5591 | 0x059, 0x000A0000, | 6593 | 0x059, 0x000A0000, |
5592 | 0x05A, 0x00060000, | 6594 | 0x05A, 0x00060000, |
5593 | 0x05B, 0x00014000, | 6595 | 0x05B, 0x00014000, |
@@ -5595,6 +6597,18 @@ static const u32 rtw8822c_rf_a[] = { | |||
5595 | 0x033, 0x00000001, | 6597 | 0x033, 0x00000001, |
5596 | 0x03F, 0x0000000F, | 6598 | 0x03F, 0x0000000F, |
5597 | 0x0ED, 0x00000000, | 6599 | 0x0ED, 0x00000000, |
6600 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
6601 | 0x0DD, 0x00000540, | ||
6602 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
6603 | 0x0DD, 0x00000540, | ||
6604 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6605 | 0x0DD, 0x00000540, | ||
6606 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6607 | 0x0DD, 0x00000540, | ||
6608 | 0xA0000000, 0x00000000, | ||
6609 | 0x0DD, 0x00000500, | ||
6610 | 0xB0000000, 0x00000000, | ||
6611 | 0x0BC, 0x00000004, | ||
5598 | 0x0EE, 0x00000002, | 6612 | 0x0EE, 0x00000002, |
5599 | 0x033, 0x00000017, | 6613 | 0x033, 0x00000017, |
5600 | 0x03F, 0x0000003F, | 6614 | 0x03F, 0x0000003F, |
@@ -5672,9 +6686,24 @@ static const u32 rtw8822c_rf_a[] = { | |||
5672 | 0x0FE, 0x00000000, | 6686 | 0x0FE, 0x00000000, |
5673 | 0x0FE, 0x00000000, | 6687 | 0x0FE, 0x00000000, |
5674 | 0x092, 0x00084800, | 6688 | 0x092, 0x00084800, |
5675 | 0x08F, 0x0000182C, | 6689 | 0x08F, 0x00001B4C, |
5676 | 0x088, 0x0004326B, | 6690 | 0x088, 0x0004326B, |
5677 | 0x019, 0x00000005, | 6691 | 0x019, 0x00000005, |
6692 | 0x0EF, 0x00080000, | ||
6693 | 0x033, 0x00000004, | ||
6694 | 0x03E, 0x00000003, | ||
6695 | 0x03F, 0x000F60FF, | ||
6696 | 0x0EF, 0x00000000, | ||
6697 | 0x0EF, 0x00080000, | ||
6698 | 0x033, 0x00000006, | ||
6699 | 0x03E, 0x00000003, | ||
6700 | 0x03F, 0x000760FF, | ||
6701 | 0x0EF, 0x00000000, | ||
6702 | 0x0EF, 0x00080000, | ||
6703 | 0x033, 0x00000007, | ||
6704 | 0x03E, 0x00000003, | ||
6705 | 0x03F, 0x0007DEFF, | ||
6706 | 0x0EF, 0x00000000, | ||
5678 | }; | 6707 | }; |
5679 | 6708 | ||
5680 | RTW_DECL_TABLE_RF_RADIO(rtw8822c_rf_a, A); | 6709 | RTW_DECL_TABLE_RF_RADIO(rtw8822c_rf_a, A); |
@@ -5685,7 +6714,7 @@ static const u32 rtw8822c_rf_b[] = { | |||
5685 | 0x093, 0x0008483F, | 6714 | 0x093, 0x0008483F, |
5686 | 0x0EF, 0x00080000, | 6715 | 0x0EF, 0x00080000, |
5687 | 0x033, 0x00000001, | 6716 | 0x033, 0x00000001, |
5688 | 0x03F, 0x00091020, | 6717 | 0x03F, 0x00091230, |
5689 | 0x0EF, 0x00000000, | 6718 | 0x0EF, 0x00000000, |
5690 | 0x0DE, 0x00000020, | 6719 | 0x0DE, 0x00000020, |
5691 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 6720 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
@@ -5700,6 +6729,10 @@ static const u32 rtw8822c_rf_b[] = { | |||
5700 | 0x08E, 0x000A5540, | 6729 | 0x08E, 0x000A5540, |
5701 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 6730 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
5702 | 0x08E, 0x000A5540, | 6731 | 0x08E, 0x000A5540, |
6732 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6733 | 0x08E, 0x000A5540, | ||
6734 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6735 | 0x08E, 0x000A5540, | ||
5703 | 0xA0000000, 0x00000000, | 6736 | 0xA0000000, 0x00000000, |
5704 | 0x08E, 0x000A5540, | 6737 | 0x08E, 0x000A5540, |
5705 | 0xB0000000, 0x00000000, | 6738 | 0xB0000000, 0x00000000, |
@@ -5761,6 +6794,24 @@ static const u32 rtw8822c_rf_b[] = { | |||
5761 | 0x033, 0x00000002, | 6794 | 0x033, 0x00000002, |
5762 | 0x03F, 0x0000002A, | 6795 | 0x03F, 0x0000002A, |
5763 | 0x0EE, 0x00000000, | 6796 | 0x0EE, 0x00000000, |
6797 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6798 | 0x0EE, 0x00000010, | ||
6799 | 0x033, 0x00000001, | ||
6800 | 0x03F, 0x0000002A, | ||
6801 | 0x033, 0x00000001, | ||
6802 | 0x03F, 0x0000002A, | ||
6803 | 0x033, 0x00000002, | ||
6804 | 0x03F, 0x0000002A, | ||
6805 | 0x0EE, 0x00000000, | ||
6806 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
6807 | 0x0EE, 0x00000010, | ||
6808 | 0x033, 0x00000001, | ||
6809 | 0x03F, 0x0000002A, | ||
6810 | 0x033, 0x00000001, | ||
6811 | 0x03F, 0x0000002A, | ||
6812 | 0x033, 0x00000002, | ||
6813 | 0x03F, 0x0000002A, | ||
6814 | 0x0EE, 0x00000000, | ||
5764 | 0xA0000000, 0x00000000, | 6815 | 0xA0000000, 0x00000000, |
5765 | 0x0EE, 0x00000010, | 6816 | 0x0EE, 0x00000010, |
5766 | 0x033, 0x00000001, | 6817 | 0x033, 0x00000001, |
@@ -5927,6 +6978,58 @@ static const u32 rtw8822c_rf_b[] = { | |||
5927 | 0x03F, 0x00000180, | 6978 | 0x03F, 0x00000180, |
5928 | 0x033, 0x00000004, | 6979 | 0x033, 0x00000004, |
5929 | 0x03F, 0x00000040, | 6980 | 0x03F, 0x00000040, |
6981 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
6982 | 0x0EF, 0x00010000, | ||
6983 | 0x033, 0x0000000F, | ||
6984 | 0x03F, 0x000773C0, | ||
6985 | 0x033, 0x0000000E, | ||
6986 | 0x03F, 0x000FF3C0, | ||
6987 | 0x033, 0x0000000D, | ||
6988 | 0x03F, 0x000773E8, | ||
6989 | 0x033, 0x0000000C, | ||
6990 | 0x03F, 0x000FF3E8, | ||
6991 | 0x033, 0x0000000B, | ||
6992 | 0x03F, 0x00000287, | ||
6993 | 0x033, 0x0000000A, | ||
6994 | 0x03F, 0x000002A8, | ||
6995 | 0x033, 0x00000009, | ||
6996 | 0x03F, 0x00000207, | ||
6997 | 0x033, 0x00000008, | ||
6998 | 0x03F, 0x000FF280, | ||
6999 | 0x033, 0x00000007, | ||
7000 | 0x03F, 0x00000200, | ||
7001 | 0x033, 0x00000006, | ||
7002 | 0x03F, 0x000001C0, | ||
7003 | 0x033, 0x00000005, | ||
7004 | 0x03F, 0x00000180, | ||
7005 | 0x033, 0x00000004, | ||
7006 | 0x03F, 0x00000040, | ||
7007 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
7008 | 0x0EF, 0x00010000, | ||
7009 | 0x033, 0x0000000F, | ||
7010 | 0x03F, 0x000773C0, | ||
7011 | 0x033, 0x0000000E, | ||
7012 | 0x03F, 0x000FF3C0, | ||
7013 | 0x033, 0x0000000D, | ||
7014 | 0x03F, 0x000773E8, | ||
7015 | 0x033, 0x0000000C, | ||
7016 | 0x03F, 0x000FF3E8, | ||
7017 | 0x033, 0x0000000B, | ||
7018 | 0x03F, 0x00000287, | ||
7019 | 0x033, 0x0000000A, | ||
7020 | 0x03F, 0x000002A8, | ||
7021 | 0x033, 0x00000009, | ||
7022 | 0x03F, 0x00000207, | ||
7023 | 0x033, 0x00000008, | ||
7024 | 0x03F, 0x000FF280, | ||
7025 | 0x033, 0x00000007, | ||
7026 | 0x03F, 0x00000200, | ||
7027 | 0x033, 0x00000006, | ||
7028 | 0x03F, 0x000001C0, | ||
7029 | 0x033, 0x00000005, | ||
7030 | 0x03F, 0x00000180, | ||
7031 | 0x033, 0x00000004, | ||
7032 | 0x03F, 0x00000040, | ||
5930 | 0xA0000000, 0x00000000, | 7033 | 0xA0000000, 0x00000000, |
5931 | 0x0EF, 0x00010000, | 7034 | 0x0EF, 0x00010000, |
5932 | 0x033, 0x0000000F, | 7035 | 0x033, 0x0000000F, |
@@ -6106,6 +7209,56 @@ static const u32 rtw8822c_rf_b[] = { | |||
6106 | 0x03F, 0x00000180, | 7209 | 0x03F, 0x00000180, |
6107 | 0x033, 0x00000014, | 7210 | 0x033, 0x00000014, |
6108 | 0x03F, 0x00000040, | 7211 | 0x03F, 0x00000040, |
7212 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
7213 | 0x033, 0x0000001F, | ||
7214 | 0x03F, 0x000773C0, | ||
7215 | 0x033, 0x0000001E, | ||
7216 | 0x03F, 0x000FF3C0, | ||
7217 | 0x033, 0x0000001D, | ||
7218 | 0x03F, 0x000773E8, | ||
7219 | 0x033, 0x0000001C, | ||
7220 | 0x03F, 0x000FF3E8, | ||
7221 | 0x033, 0x0000001B, | ||
7222 | 0x03F, 0x00000287, | ||
7223 | 0x033, 0x0000001A, | ||
7224 | 0x03F, 0x000002A8, | ||
7225 | 0x033, 0x00000019, | ||
7226 | 0x03F, 0x00000207, | ||
7227 | 0x033, 0x00000018, | ||
7228 | 0x03F, 0x000FF280, | ||
7229 | 0x033, 0x00000017, | ||
7230 | 0x03F, 0x00000200, | ||
7231 | 0x033, 0x00000016, | ||
7232 | 0x03F, 0x000001C0, | ||
7233 | 0x033, 0x00000015, | ||
7234 | 0x03F, 0x00000180, | ||
7235 | 0x033, 0x00000014, | ||
7236 | 0x03F, 0x00000040, | ||
7237 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
7238 | 0x033, 0x0000001F, | ||
7239 | 0x03F, 0x000773C0, | ||
7240 | 0x033, 0x0000001E, | ||
7241 | 0x03F, 0x000FF3C0, | ||
7242 | 0x033, 0x0000001D, | ||
7243 | 0x03F, 0x000773E8, | ||
7244 | 0x033, 0x0000001C, | ||
7245 | 0x03F, 0x000FF3E8, | ||
7246 | 0x033, 0x0000001B, | ||
7247 | 0x03F, 0x00000287, | ||
7248 | 0x033, 0x0000001A, | ||
7249 | 0x03F, 0x000002A8, | ||
7250 | 0x033, 0x00000019, | ||
7251 | 0x03F, 0x00000207, | ||
7252 | 0x033, 0x00000018, | ||
7253 | 0x03F, 0x000FF280, | ||
7254 | 0x033, 0x00000017, | ||
7255 | 0x03F, 0x00000200, | ||
7256 | 0x033, 0x00000016, | ||
7257 | 0x03F, 0x000001C0, | ||
7258 | 0x033, 0x00000015, | ||
7259 | 0x03F, 0x00000180, | ||
7260 | 0x033, 0x00000014, | ||
7261 | 0x03F, 0x00000040, | ||
6109 | 0xA0000000, 0x00000000, | 7262 | 0xA0000000, 0x00000000, |
6110 | 0x033, 0x0000001F, | 7263 | 0x033, 0x0000001F, |
6111 | 0x03F, 0x000773E8, | 7264 | 0x03F, 0x000773E8, |
@@ -6284,6 +7437,56 @@ static const u32 rtw8822c_rf_b[] = { | |||
6284 | 0x03F, 0x00000180, | 7437 | 0x03F, 0x00000180, |
6285 | 0x033, 0x00000024, | 7438 | 0x033, 0x00000024, |
6286 | 0x03F, 0x00000040, | 7439 | 0x03F, 0x00000040, |
7440 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
7441 | 0x033, 0x0000002F, | ||
7442 | 0x03F, 0x000773C0, | ||
7443 | 0x033, 0x0000002E, | ||
7444 | 0x03F, 0x000FF3C0, | ||
7445 | 0x033, 0x0000002D, | ||
7446 | 0x03F, 0x000773E8, | ||
7447 | 0x033, 0x0000002C, | ||
7448 | 0x03F, 0x000FF3E8, | ||
7449 | 0x033, 0x0000002B, | ||
7450 | 0x03F, 0x00000287, | ||
7451 | 0x033, 0x0000002A, | ||
7452 | 0x03F, 0x000002A8, | ||
7453 | 0x033, 0x00000029, | ||
7454 | 0x03F, 0x00000207, | ||
7455 | 0x033, 0x00000028, | ||
7456 | 0x03F, 0x000FF280, | ||
7457 | 0x033, 0x00000027, | ||
7458 | 0x03F, 0x00000200, | ||
7459 | 0x033, 0x00000026, | ||
7460 | 0x03F, 0x000001C0, | ||
7461 | 0x033, 0x00000025, | ||
7462 | 0x03F, 0x00000180, | ||
7463 | 0x033, 0x00000024, | ||
7464 | 0x03F, 0x00000040, | ||
7465 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
7466 | 0x033, 0x0000002F, | ||
7467 | 0x03F, 0x000773C0, | ||
7468 | 0x033, 0x0000002E, | ||
7469 | 0x03F, 0x000FF3C0, | ||
7470 | 0x033, 0x0000002D, | ||
7471 | 0x03F, 0x000773E8, | ||
7472 | 0x033, 0x0000002C, | ||
7473 | 0x03F, 0x000FF3E8, | ||
7474 | 0x033, 0x0000002B, | ||
7475 | 0x03F, 0x00000287, | ||
7476 | 0x033, 0x0000002A, | ||
7477 | 0x03F, 0x000002A8, | ||
7478 | 0x033, 0x00000029, | ||
7479 | 0x03F, 0x00000207, | ||
7480 | 0x033, 0x00000028, | ||
7481 | 0x03F, 0x000FF280, | ||
7482 | 0x033, 0x00000027, | ||
7483 | 0x03F, 0x00000200, | ||
7484 | 0x033, 0x00000026, | ||
7485 | 0x03F, 0x000001C0, | ||
7486 | 0x033, 0x00000025, | ||
7487 | 0x03F, 0x00000180, | ||
7488 | 0x033, 0x00000024, | ||
7489 | 0x03F, 0x00000040, | ||
6287 | 0xA0000000, 0x00000000, | 7490 | 0xA0000000, 0x00000000, |
6288 | 0x033, 0x0000002F, | 7491 | 0x033, 0x0000002F, |
6289 | 0x03F, 0x000773E8, | 7492 | 0x03F, 0x000773E8, |
@@ -6462,6 +7665,56 @@ static const u32 rtw8822c_rf_b[] = { | |||
6462 | 0x03F, 0x00000180, | 7665 | 0x03F, 0x00000180, |
6463 | 0x033, 0x00000034, | 7666 | 0x033, 0x00000034, |
6464 | 0x03F, 0x00000040, | 7667 | 0x03F, 0x00000040, |
7668 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
7669 | 0x033, 0x0000003F, | ||
7670 | 0x03F, 0x000773C0, | ||
7671 | 0x033, 0x0000003E, | ||
7672 | 0x03F, 0x000FF3C0, | ||
7673 | 0x033, 0x0000003D, | ||
7674 | 0x03F, 0x000773E8, | ||
7675 | 0x033, 0x0000003C, | ||
7676 | 0x03F, 0x000FF3E8, | ||
7677 | 0x033, 0x0000003B, | ||
7678 | 0x03F, 0x00000287, | ||
7679 | 0x033, 0x0000003A, | ||
7680 | 0x03F, 0x000002A8, | ||
7681 | 0x033, 0x00000039, | ||
7682 | 0x03F, 0x00000207, | ||
7683 | 0x033, 0x00000038, | ||
7684 | 0x03F, 0x000FF280, | ||
7685 | 0x033, 0x00000037, | ||
7686 | 0x03F, 0x00000200, | ||
7687 | 0x033, 0x00000036, | ||
7688 | 0x03F, 0x000001C0, | ||
7689 | 0x033, 0x00000035, | ||
7690 | 0x03F, 0x00000180, | ||
7691 | 0x033, 0x00000034, | ||
7692 | 0x03F, 0x00000040, | ||
7693 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
7694 | 0x033, 0x0000003F, | ||
7695 | 0x03F, 0x000773C0, | ||
7696 | 0x033, 0x0000003E, | ||
7697 | 0x03F, 0x000FF3C0, | ||
7698 | 0x033, 0x0000003D, | ||
7699 | 0x03F, 0x000773E8, | ||
7700 | 0x033, 0x0000003C, | ||
7701 | 0x03F, 0x000FF3E8, | ||
7702 | 0x033, 0x0000003B, | ||
7703 | 0x03F, 0x00000287, | ||
7704 | 0x033, 0x0000003A, | ||
7705 | 0x03F, 0x000002A8, | ||
7706 | 0x033, 0x00000039, | ||
7707 | 0x03F, 0x00000207, | ||
7708 | 0x033, 0x00000038, | ||
7709 | 0x03F, 0x000FF280, | ||
7710 | 0x033, 0x00000037, | ||
7711 | 0x03F, 0x00000200, | ||
7712 | 0x033, 0x00000036, | ||
7713 | 0x03F, 0x000001C0, | ||
7714 | 0x033, 0x00000035, | ||
7715 | 0x03F, 0x00000180, | ||
7716 | 0x033, 0x00000034, | ||
7717 | 0x03F, 0x00000040, | ||
6465 | 0xA0000000, 0x00000000, | 7718 | 0xA0000000, 0x00000000, |
6466 | 0x033, 0x0000003F, | 7719 | 0x033, 0x0000003F, |
6467 | 0x03F, 0x000773E8, | 7720 | 0x03F, 0x000773E8, |
@@ -6640,6 +7893,56 @@ static const u32 rtw8822c_rf_b[] = { | |||
6640 | 0x03F, 0x00000180, | 7893 | 0x03F, 0x00000180, |
6641 | 0x033, 0x00000044, | 7894 | 0x033, 0x00000044, |
6642 | 0x03F, 0x00000040, | 7895 | 0x03F, 0x00000040, |
7896 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
7897 | 0x033, 0x0000004F, | ||
7898 | 0x03F, 0x000773C0, | ||
7899 | 0x033, 0x0000004E, | ||
7900 | 0x03F, 0x000FF3C0, | ||
7901 | 0x033, 0x0000004D, | ||
7902 | 0x03F, 0x000773E8, | ||
7903 | 0x033, 0x0000004C, | ||
7904 | 0x03F, 0x000FF3E8, | ||
7905 | 0x033, 0x0000004B, | ||
7906 | 0x03F, 0x00000287, | ||
7907 | 0x033, 0x0000004A, | ||
7908 | 0x03F, 0x000002A8, | ||
7909 | 0x033, 0x00000049, | ||
7910 | 0x03F, 0x00000207, | ||
7911 | 0x033, 0x00000048, | ||
7912 | 0x03F, 0x000FF280, | ||
7913 | 0x033, 0x00000047, | ||
7914 | 0x03F, 0x00000200, | ||
7915 | 0x033, 0x00000046, | ||
7916 | 0x03F, 0x000001C0, | ||
7917 | 0x033, 0x00000045, | ||
7918 | 0x03F, 0x00000180, | ||
7919 | 0x033, 0x00000044, | ||
7920 | 0x03F, 0x00000040, | ||
7921 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
7922 | 0x033, 0x0000004F, | ||
7923 | 0x03F, 0x000773C0, | ||
7924 | 0x033, 0x0000004E, | ||
7925 | 0x03F, 0x000FF3C0, | ||
7926 | 0x033, 0x0000004D, | ||
7927 | 0x03F, 0x000773E8, | ||
7928 | 0x033, 0x0000004C, | ||
7929 | 0x03F, 0x000FF3E8, | ||
7930 | 0x033, 0x0000004B, | ||
7931 | 0x03F, 0x00000287, | ||
7932 | 0x033, 0x0000004A, | ||
7933 | 0x03F, 0x000002A8, | ||
7934 | 0x033, 0x00000049, | ||
7935 | 0x03F, 0x00000207, | ||
7936 | 0x033, 0x00000048, | ||
7937 | 0x03F, 0x000FF280, | ||
7938 | 0x033, 0x00000047, | ||
7939 | 0x03F, 0x00000200, | ||
7940 | 0x033, 0x00000046, | ||
7941 | 0x03F, 0x000001C0, | ||
7942 | 0x033, 0x00000045, | ||
7943 | 0x03F, 0x00000180, | ||
7944 | 0x033, 0x00000044, | ||
7945 | 0x03F, 0x00000040, | ||
6643 | 0xA0000000, 0x00000000, | 7946 | 0xA0000000, 0x00000000, |
6644 | 0x033, 0x0000004F, | 7947 | 0x033, 0x0000004F, |
6645 | 0x03F, 0x000773E8, | 7948 | 0x03F, 0x000773E8, |
@@ -6818,6 +8121,56 @@ static const u32 rtw8822c_rf_b[] = { | |||
6818 | 0x03F, 0x00000180, | 8121 | 0x03F, 0x00000180, |
6819 | 0x033, 0x00000054, | 8122 | 0x033, 0x00000054, |
6820 | 0x03F, 0x00000040, | 8123 | 0x03F, 0x00000040, |
8124 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
8125 | 0x033, 0x0000005F, | ||
8126 | 0x03F, 0x000773C0, | ||
8127 | 0x033, 0x0000005E, | ||
8128 | 0x03F, 0x000FF3C0, | ||
8129 | 0x033, 0x0000005D, | ||
8130 | 0x03F, 0x000773E8, | ||
8131 | 0x033, 0x0000005C, | ||
8132 | 0x03F, 0x000FF3E8, | ||
8133 | 0x033, 0x0000005B, | ||
8134 | 0x03F, 0x00000287, | ||
8135 | 0x033, 0x0000005A, | ||
8136 | 0x03F, 0x000002A8, | ||
8137 | 0x033, 0x00000059, | ||
8138 | 0x03F, 0x00000207, | ||
8139 | 0x033, 0x00000058, | ||
8140 | 0x03F, 0x000FF280, | ||
8141 | 0x033, 0x00000057, | ||
8142 | 0x03F, 0x00000200, | ||
8143 | 0x033, 0x00000056, | ||
8144 | 0x03F, 0x000001C0, | ||
8145 | 0x033, 0x00000055, | ||
8146 | 0x03F, 0x00000180, | ||
8147 | 0x033, 0x00000054, | ||
8148 | 0x03F, 0x00000040, | ||
8149 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
8150 | 0x033, 0x0000005F, | ||
8151 | 0x03F, 0x000773C0, | ||
8152 | 0x033, 0x0000005E, | ||
8153 | 0x03F, 0x000FF3C0, | ||
8154 | 0x033, 0x0000005D, | ||
8155 | 0x03F, 0x000773E8, | ||
8156 | 0x033, 0x0000005C, | ||
8157 | 0x03F, 0x000FF3E8, | ||
8158 | 0x033, 0x0000005B, | ||
8159 | 0x03F, 0x00000287, | ||
8160 | 0x033, 0x0000005A, | ||
8161 | 0x03F, 0x000002A8, | ||
8162 | 0x033, 0x00000059, | ||
8163 | 0x03F, 0x00000207, | ||
8164 | 0x033, 0x00000058, | ||
8165 | 0x03F, 0x000FF280, | ||
8166 | 0x033, 0x00000057, | ||
8167 | 0x03F, 0x00000200, | ||
8168 | 0x033, 0x00000056, | ||
8169 | 0x03F, 0x000001C0, | ||
8170 | 0x033, 0x00000055, | ||
8171 | 0x03F, 0x00000180, | ||
8172 | 0x033, 0x00000054, | ||
8173 | 0x03F, 0x00000040, | ||
6821 | 0xA0000000, 0x00000000, | 8174 | 0xA0000000, 0x00000000, |
6822 | 0x033, 0x0000005F, | 8175 | 0x033, 0x0000005F, |
6823 | 0x03F, 0x000773E8, | 8176 | 0x03F, 0x000773E8, |
@@ -6858,6 +8211,10 @@ static const u32 rtw8822c_rf_b[] = { | |||
6858 | 0x0EF, 0x00000000, | 8211 | 0x0EF, 0x00000000, |
6859 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 8212 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
6860 | 0x0EF, 0x00000000, | 8213 | 0x0EF, 0x00000000, |
8214 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
8215 | 0x0EF, 0x00000000, | ||
8216 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
8217 | 0x0EF, 0x00000000, | ||
6861 | 0xA0000000, 0x00000000, | 8218 | 0xA0000000, 0x00000000, |
6862 | 0x0EF, 0x00000000, | 8219 | 0x0EF, 0x00000000, |
6863 | 0xB0000000, 0x00000000, | 8220 | 0xB0000000, 0x00000000, |
@@ -7757,6 +9114,300 @@ static const u32 rtw8822c_rf_b[] = { | |||
7757 | 0x03E, 0x00000000, | 9114 | 0x03E, 0x00000000, |
7758 | 0x03F, 0x0002C010, | 9115 | 0x03F, 0x0002C010, |
7759 | 0x0EF, 0x00000000, | 9116 | 0x0EF, 0x00000000, |
9117 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
9118 | 0x0EF, 0x00020000, | ||
9119 | 0x033, 0x00000000, | ||
9120 | 0x03E, 0x00001C86, | ||
9121 | 0x03F, 0x00020000, | ||
9122 | 0x033, 0x00000001, | ||
9123 | 0x03E, 0x00001C02, | ||
9124 | 0x03F, 0x00020000, | ||
9125 | 0x033, 0x00000002, | ||
9126 | 0x03E, 0x00000F02, | ||
9127 | 0x03F, 0x00020000, | ||
9128 | 0x033, 0x00000003, | ||
9129 | 0x03E, 0x00000F00, | ||
9130 | 0x03F, 0x00020000, | ||
9131 | 0x033, 0x00000004, | ||
9132 | 0x03E, 0x00000086, | ||
9133 | 0x03F, 0x00020000, | ||
9134 | 0x033, 0x00000005, | ||
9135 | 0x03E, 0x00000002, | ||
9136 | 0x03F, 0x00020000, | ||
9137 | 0x033, 0x00000006, | ||
9138 | 0x03E, 0x00000000, | ||
9139 | 0x03F, 0x00020000, | ||
9140 | 0x033, 0x00000007, | ||
9141 | 0x03E, 0x00000000, | ||
9142 | 0x03F, 0x0002F81C, | ||
9143 | 0x033, 0x00000008, | ||
9144 | 0x03E, 0x00001C86, | ||
9145 | 0x03F, 0x00020000, | ||
9146 | 0x033, 0x00000009, | ||
9147 | 0x03E, 0x00001C02, | ||
9148 | 0x03F, 0x00020000, | ||
9149 | 0x033, 0x0000000A, | ||
9150 | 0x03E, 0x00000F02, | ||
9151 | 0x03F, 0x00020000, | ||
9152 | 0x033, 0x0000000B, | ||
9153 | 0x03E, 0x00000F00, | ||
9154 | 0x03F, 0x00020000, | ||
9155 | 0x033, 0x0000000C, | ||
9156 | 0x03E, 0x00000086, | ||
9157 | 0x03F, 0x00020000, | ||
9158 | 0x033, 0x0000000D, | ||
9159 | 0x03E, 0x00000002, | ||
9160 | 0x03F, 0x00020000, | ||
9161 | 0x033, 0x0000000E, | ||
9162 | 0x03E, 0x00000000, | ||
9163 | 0x03F, 0x00020000, | ||
9164 | 0x033, 0x0000000F, | ||
9165 | 0x03E, 0x00000000, | ||
9166 | 0x03F, 0x0002F81C, | ||
9167 | 0x033, 0x00000010, | ||
9168 | 0x03E, 0x00001C86, | ||
9169 | 0x03F, 0x00020000, | ||
9170 | 0x033, 0x00000011, | ||
9171 | 0x03E, 0x00001C02, | ||
9172 | 0x03F, 0x00020000, | ||
9173 | 0x033, 0x00000012, | ||
9174 | 0x03E, 0x00000F02, | ||
9175 | 0x03F, 0x00020000, | ||
9176 | 0x033, 0x00000013, | ||
9177 | 0x03E, 0x00000F00, | ||
9178 | 0x03F, 0x00020000, | ||
9179 | 0x033, 0x00000014, | ||
9180 | 0x03E, 0x00000086, | ||
9181 | 0x03F, 0x00020000, | ||
9182 | 0x033, 0x00000015, | ||
9183 | 0x03E, 0x00000002, | ||
9184 | 0x03F, 0x00020000, | ||
9185 | 0x033, 0x00000016, | ||
9186 | 0x03E, 0x00000000, | ||
9187 | 0x03F, 0x00020000, | ||
9188 | 0x033, 0x00000017, | ||
9189 | 0x03E, 0x00000000, | ||
9190 | 0x03F, 0x0002C010, | ||
9191 | 0x033, 0x00000018, | ||
9192 | 0x03E, 0x00001C86, | ||
9193 | 0x03F, 0x00020000, | ||
9194 | 0x033, 0x00000019, | ||
9195 | 0x03E, 0x00001C02, | ||
9196 | 0x03F, 0x00020000, | ||
9197 | 0x033, 0x0000001A, | ||
9198 | 0x03E, 0x00000F02, | ||
9199 | 0x03F, 0x00020000, | ||
9200 | 0x033, 0x0000001B, | ||
9201 | 0x03E, 0x00000F00, | ||
9202 | 0x03F, 0x00020000, | ||
9203 | 0x033, 0x0000001C, | ||
9204 | 0x03E, 0x00000086, | ||
9205 | 0x03F, 0x00020000, | ||
9206 | 0x033, 0x0000001D, | ||
9207 | 0x03E, 0x00000002, | ||
9208 | 0x03F, 0x00020000, | ||
9209 | 0x033, 0x0000001E, | ||
9210 | 0x03E, 0x00000000, | ||
9211 | 0x03F, 0x00020000, | ||
9212 | 0x033, 0x0000001F, | ||
9213 | 0x03E, 0x00000000, | ||
9214 | 0x03F, 0x0002C010, | ||
9215 | 0x033, 0x00000020, | ||
9216 | 0x03E, 0x00001C86, | ||
9217 | 0x03F, 0x00020000, | ||
9218 | 0x033, 0x00000021, | ||
9219 | 0x03E, 0x00001C02, | ||
9220 | 0x03F, 0x00020000, | ||
9221 | 0x033, 0x00000022, | ||
9222 | 0x03E, 0x00000F02, | ||
9223 | 0x03F, 0x00020000, | ||
9224 | 0x033, 0x00000023, | ||
9225 | 0x03E, 0x00000F00, | ||
9226 | 0x03F, 0x00020000, | ||
9227 | 0x033, 0x00000024, | ||
9228 | 0x03E, 0x00000086, | ||
9229 | 0x03F, 0x00020000, | ||
9230 | 0x033, 0x00000025, | ||
9231 | 0x03E, 0x00000002, | ||
9232 | 0x03F, 0x00020000, | ||
9233 | 0x033, 0x00000026, | ||
9234 | 0x03E, 0x00000000, | ||
9235 | 0x03F, 0x00020000, | ||
9236 | 0x033, 0x00000027, | ||
9237 | 0x03E, 0x00000000, | ||
9238 | 0x03F, 0x0002C010, | ||
9239 | 0x033, 0x00000028, | ||
9240 | 0x03E, 0x00001C86, | ||
9241 | 0x03F, 0x00020000, | ||
9242 | 0x033, 0x00000029, | ||
9243 | 0x03E, 0x00001C02, | ||
9244 | 0x03F, 0x00020000, | ||
9245 | 0x033, 0x0000002A, | ||
9246 | 0x03E, 0x00000F02, | ||
9247 | 0x03F, 0x00020000, | ||
9248 | 0x033, 0x0000002B, | ||
9249 | 0x03E, 0x00000F00, | ||
9250 | 0x03F, 0x00020000, | ||
9251 | 0x033, 0x0000002C, | ||
9252 | 0x03E, 0x00000086, | ||
9253 | 0x03F, 0x00020000, | ||
9254 | 0x033, 0x0000002D, | ||
9255 | 0x03E, 0x00000002, | ||
9256 | 0x03F, 0x00020000, | ||
9257 | 0x033, 0x0000002E, | ||
9258 | 0x03E, 0x00000000, | ||
9259 | 0x03F, 0x00020000, | ||
9260 | 0x033, 0x0000002F, | ||
9261 | 0x03E, 0x00000000, | ||
9262 | 0x03F, 0x0002C010, | ||
9263 | 0x0EF, 0x00000000, | ||
9264 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
9265 | 0x0EF, 0x00020000, | ||
9266 | 0x033, 0x00000000, | ||
9267 | 0x03E, 0x00001C86, | ||
9268 | 0x03F, 0x00020000, | ||
9269 | 0x033, 0x00000001, | ||
9270 | 0x03E, 0x00001C02, | ||
9271 | 0x03F, 0x00020000, | ||
9272 | 0x033, 0x00000002, | ||
9273 | 0x03E, 0x00000F02, | ||
9274 | 0x03F, 0x00020000, | ||
9275 | 0x033, 0x00000003, | ||
9276 | 0x03E, 0x00000F00, | ||
9277 | 0x03F, 0x00020000, | ||
9278 | 0x033, 0x00000004, | ||
9279 | 0x03E, 0x00000086, | ||
9280 | 0x03F, 0x00020000, | ||
9281 | 0x033, 0x00000005, | ||
9282 | 0x03E, 0x00000002, | ||
9283 | 0x03F, 0x00020000, | ||
9284 | 0x033, 0x00000006, | ||
9285 | 0x03E, 0x00000000, | ||
9286 | 0x03F, 0x00020000, | ||
9287 | 0x033, 0x00000007, | ||
9288 | 0x03E, 0x00000000, | ||
9289 | 0x03F, 0x0002F81C, | ||
9290 | 0x033, 0x00000008, | ||
9291 | 0x03E, 0x00001C86, | ||
9292 | 0x03F, 0x00020000, | ||
9293 | 0x033, 0x00000009, | ||
9294 | 0x03E, 0x00001C02, | ||
9295 | 0x03F, 0x00020000, | ||
9296 | 0x033, 0x0000000A, | ||
9297 | 0x03E, 0x00000F02, | ||
9298 | 0x03F, 0x00020000, | ||
9299 | 0x033, 0x0000000B, | ||
9300 | 0x03E, 0x00000F00, | ||
9301 | 0x03F, 0x00020000, | ||
9302 | 0x033, 0x0000000C, | ||
9303 | 0x03E, 0x00000086, | ||
9304 | 0x03F, 0x00020000, | ||
9305 | 0x033, 0x0000000D, | ||
9306 | 0x03E, 0x00000002, | ||
9307 | 0x03F, 0x00020000, | ||
9308 | 0x033, 0x0000000E, | ||
9309 | 0x03E, 0x00000000, | ||
9310 | 0x03F, 0x00020000, | ||
9311 | 0x033, 0x0000000F, | ||
9312 | 0x03E, 0x00000000, | ||
9313 | 0x03F, 0x0002F81C, | ||
9314 | 0x033, 0x00000010, | ||
9315 | 0x03E, 0x00001C86, | ||
9316 | 0x03F, 0x00020000, | ||
9317 | 0x033, 0x00000011, | ||
9318 | 0x03E, 0x00001C02, | ||
9319 | 0x03F, 0x00020000, | ||
9320 | 0x033, 0x00000012, | ||
9321 | 0x03E, 0x00000F02, | ||
9322 | 0x03F, 0x00020000, | ||
9323 | 0x033, 0x00000013, | ||
9324 | 0x03E, 0x00000F00, | ||
9325 | 0x03F, 0x00020000, | ||
9326 | 0x033, 0x00000014, | ||
9327 | 0x03E, 0x00000086, | ||
9328 | 0x03F, 0x00020000, | ||
9329 | 0x033, 0x00000015, | ||
9330 | 0x03E, 0x00000002, | ||
9331 | 0x03F, 0x00020000, | ||
9332 | 0x033, 0x00000016, | ||
9333 | 0x03E, 0x00000000, | ||
9334 | 0x03F, 0x00020000, | ||
9335 | 0x033, 0x00000017, | ||
9336 | 0x03E, 0x00000000, | ||
9337 | 0x03F, 0x0002C010, | ||
9338 | 0x033, 0x00000018, | ||
9339 | 0x03E, 0x00001C86, | ||
9340 | 0x03F, 0x00020000, | ||
9341 | 0x033, 0x00000019, | ||
9342 | 0x03E, 0x00001C02, | ||
9343 | 0x03F, 0x00020000, | ||
9344 | 0x033, 0x0000001A, | ||
9345 | 0x03E, 0x00000F02, | ||
9346 | 0x03F, 0x00020000, | ||
9347 | 0x033, 0x0000001B, | ||
9348 | 0x03E, 0x00000F00, | ||
9349 | 0x03F, 0x00020000, | ||
9350 | 0x033, 0x0000001C, | ||
9351 | 0x03E, 0x00000086, | ||
9352 | 0x03F, 0x00020000, | ||
9353 | 0x033, 0x0000001D, | ||
9354 | 0x03E, 0x00000002, | ||
9355 | 0x03F, 0x00020000, | ||
9356 | 0x033, 0x0000001E, | ||
9357 | 0x03E, 0x00000000, | ||
9358 | 0x03F, 0x00020000, | ||
9359 | 0x033, 0x0000001F, | ||
9360 | 0x03E, 0x00000000, | ||
9361 | 0x03F, 0x0002C010, | ||
9362 | 0x033, 0x00000020, | ||
9363 | 0x03E, 0x00001C86, | ||
9364 | 0x03F, 0x00020000, | ||
9365 | 0x033, 0x00000021, | ||
9366 | 0x03E, 0x00001C02, | ||
9367 | 0x03F, 0x00020000, | ||
9368 | 0x033, 0x00000022, | ||
9369 | 0x03E, 0x00000F02, | ||
9370 | 0x03F, 0x00020000, | ||
9371 | 0x033, 0x00000023, | ||
9372 | 0x03E, 0x00000F00, | ||
9373 | 0x03F, 0x00020000, | ||
9374 | 0x033, 0x00000024, | ||
9375 | 0x03E, 0x00000086, | ||
9376 | 0x03F, 0x00020000, | ||
9377 | 0x033, 0x00000025, | ||
9378 | 0x03E, 0x00000002, | ||
9379 | 0x03F, 0x00020000, | ||
9380 | 0x033, 0x00000026, | ||
9381 | 0x03E, 0x00000000, | ||
9382 | 0x03F, 0x00020000, | ||
9383 | 0x033, 0x00000027, | ||
9384 | 0x03E, 0x00000000, | ||
9385 | 0x03F, 0x0002C010, | ||
9386 | 0x033, 0x00000028, | ||
9387 | 0x03E, 0x00001C86, | ||
9388 | 0x03F, 0x00020000, | ||
9389 | 0x033, 0x00000029, | ||
9390 | 0x03E, 0x00001C02, | ||
9391 | 0x03F, 0x00020000, | ||
9392 | 0x033, 0x0000002A, | ||
9393 | 0x03E, 0x00000F02, | ||
9394 | 0x03F, 0x00020000, | ||
9395 | 0x033, 0x0000002B, | ||
9396 | 0x03E, 0x00000F00, | ||
9397 | 0x03F, 0x00020000, | ||
9398 | 0x033, 0x0000002C, | ||
9399 | 0x03E, 0x00000086, | ||
9400 | 0x03F, 0x00020000, | ||
9401 | 0x033, 0x0000002D, | ||
9402 | 0x03E, 0x00000002, | ||
9403 | 0x03F, 0x00020000, | ||
9404 | 0x033, 0x0000002E, | ||
9405 | 0x03E, 0x00000000, | ||
9406 | 0x03F, 0x00020000, | ||
9407 | 0x033, 0x0000002F, | ||
9408 | 0x03E, 0x00000000, | ||
9409 | 0x03F, 0x0002C010, | ||
9410 | 0x0EF, 0x00000000, | ||
7760 | 0xA0000000, 0x00000000, | 9411 | 0xA0000000, 0x00000000, |
7761 | 0x0EF, 0x00020000, | 9412 | 0x0EF, 0x00020000, |
7762 | 0x033, 0x00000000, | 9413 | 0x033, 0x00000000, |
@@ -7921,6 +9572,10 @@ static const u32 rtw8822c_rf_b[] = { | |||
7921 | 0x063, 0x00000002, | 9572 | 0x063, 0x00000002, |
7922 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 9573 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
7923 | 0x063, 0x00000002, | 9574 | 0x063, 0x00000002, |
9575 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
9576 | 0x063, 0x00000002, | ||
9577 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
9578 | 0x063, 0x00000002, | ||
7924 | 0xA0000000, 0x00000000, | 9579 | 0xA0000000, 0x00000000, |
7925 | 0x063, 0x00000C02, | 9580 | 0x063, 0x00000C02, |
7926 | 0xB0000000, 0x00000000, | 9581 | 0xB0000000, 0x00000000, |
@@ -8034,59 +9689,113 @@ static const u32 rtw8822c_rf_b[] = { | |||
8034 | 0x030, 0x00018207, | 9689 | 0x030, 0x00018207, |
8035 | 0x030, 0x00019237, | 9690 | 0x030, 0x00019237, |
8036 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 9691 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8037 | 0x030, 0x00000237, | 9692 | 0x030, 0x00000238, |
8038 | 0x030, 0x00001237, | 9693 | 0x030, 0x00001238, |
8039 | 0x030, 0x00002237, | 9694 | 0x030, 0x00002238, |
8040 | 0x030, 0x00003237, | 9695 | 0x030, 0x00003238, |
8041 | 0x030, 0x00004207, | 9696 | 0x030, 0x00004228, |
8042 | 0x030, 0x00005237, | 9697 | 0x030, 0x00005238, |
8043 | 0x030, 0x00006237, | 9698 | 0x030, 0x00006238, |
8044 | 0x030, 0x00007237, | 9699 | 0x030, 0x00007238, |
8045 | 0x030, 0x00008207, | 9700 | 0x030, 0x00008228, |
8046 | 0x030, 0x00009237, | 9701 | 0x030, 0x00009238, |
8047 | 0x030, 0x0000A237, | 9702 | 0x030, 0x0000A238, |
8048 | 0x030, 0x0000B237, | 9703 | 0x030, 0x0000B238, |
8049 | 0x030, 0x0000C237, | 9704 | 0x030, 0x0000C238, |
8050 | 0x030, 0x0000D237, | 9705 | 0x030, 0x0000D238, |
8051 | 0x030, 0x0000E207, | 9706 | 0x030, 0x0000E228, |
8052 | 0x030, 0x0000F237, | 9707 | 0x030, 0x0000F238, |
8053 | 0x030, 0x00010237, | 9708 | 0x030, 0x00010238, |
8054 | 0x030, 0x00011237, | 9709 | 0x030, 0x00011238, |
8055 | 0x030, 0x00012207, | 9710 | 0x030, 0x00012228, |
8056 | 0x030, 0x00013237, | 9711 | 0x030, 0x00013238, |
8057 | 0x030, 0x00014237, | 9712 | 0x030, 0x00014238, |
8058 | 0x030, 0x00015237, | 9713 | 0x030, 0x00015238, |
8059 | 0x030, 0x00016207, | 9714 | 0x030, 0x00016228, |
8060 | 0x030, 0x00017237, | 9715 | 0x030, 0x00017238, |
8061 | 0x030, 0x00018207, | 9716 | 0x030, 0x00018228, |
8062 | 0x030, 0x00019237, | 9717 | 0x030, 0x00019238, |
8063 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 9718 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8064 | 0x030, 0x00000237, | 9719 | 0x030, 0x00000238, |
8065 | 0x030, 0x00001237, | 9720 | 0x030, 0x00001238, |
8066 | 0x030, 0x00002237, | 9721 | 0x030, 0x00002238, |
8067 | 0x030, 0x00003237, | 9722 | 0x030, 0x00003238, |
8068 | 0x030, 0x00004207, | 9723 | 0x030, 0x00004228, |
8069 | 0x030, 0x00005237, | 9724 | 0x030, 0x00005238, |
8070 | 0x030, 0x00006237, | 9725 | 0x030, 0x00006238, |
8071 | 0x030, 0x00007237, | 9726 | 0x030, 0x00007238, |
8072 | 0x030, 0x00008207, | 9727 | 0x030, 0x00008228, |
8073 | 0x030, 0x00009237, | 9728 | 0x030, 0x00009238, |
8074 | 0x030, 0x0000A237, | 9729 | 0x030, 0x0000A238, |
8075 | 0x030, 0x0000B237, | 9730 | 0x030, 0x0000B238, |
8076 | 0x030, 0x0000C237, | 9731 | 0x030, 0x0000C238, |
8077 | 0x030, 0x0000D237, | 9732 | 0x030, 0x0000D238, |
8078 | 0x030, 0x0000E207, | 9733 | 0x030, 0x0000E228, |
8079 | 0x030, 0x0000F237, | 9734 | 0x030, 0x0000F238, |
8080 | 0x030, 0x00010237, | 9735 | 0x030, 0x00010238, |
8081 | 0x030, 0x00011237, | 9736 | 0x030, 0x00011238, |
8082 | 0x030, 0x00012207, | 9737 | 0x030, 0x00012228, |
8083 | 0x030, 0x00013237, | 9738 | 0x030, 0x00013238, |
8084 | 0x030, 0x00014237, | 9739 | 0x030, 0x00014238, |
8085 | 0x030, 0x00015237, | 9740 | 0x030, 0x00015238, |
8086 | 0x030, 0x00016207, | 9741 | 0x030, 0x00016228, |
8087 | 0x030, 0x00017237, | 9742 | 0x030, 0x00017238, |
8088 | 0x030, 0x00018207, | 9743 | 0x030, 0x00018228, |
8089 | 0x030, 0x00019237, | 9744 | 0x030, 0x00019238, |
9745 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
9746 | 0x030, 0x00000239, | ||
9747 | 0x030, 0x00001239, | ||
9748 | 0x030, 0x00002239, | ||
9749 | 0x030, 0x00003239, | ||
9750 | 0x030, 0x00004239, | ||
9751 | 0x030, 0x00005239, | ||
9752 | 0x030, 0x00006239, | ||
9753 | 0x030, 0x00007239, | ||
9754 | 0x030, 0x00008239, | ||
9755 | 0x030, 0x00009239, | ||
9756 | 0x030, 0x0000A239, | ||
9757 | 0x030, 0x0000B239, | ||
9758 | 0x030, 0x0000C239, | ||
9759 | 0x030, 0x0000D239, | ||
9760 | 0x030, 0x0000E209, | ||
9761 | 0x030, 0x0000F239, | ||
9762 | 0x030, 0x00010239, | ||
9763 | 0x030, 0x00011239, | ||
9764 | 0x030, 0x00012209, | ||
9765 | 0x030, 0x00013239, | ||
9766 | 0x030, 0x00014239, | ||
9767 | 0x030, 0x00015239, | ||
9768 | 0x030, 0x00016209, | ||
9769 | 0x030, 0x00017239, | ||
9770 | 0x030, 0x00018209, | ||
9771 | 0x030, 0x00019239, | ||
9772 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
9773 | 0x030, 0x00000239, | ||
9774 | 0x030, 0x00001239, | ||
9775 | 0x030, 0x00002239, | ||
9776 | 0x030, 0x00003239, | ||
9777 | 0x030, 0x00004239, | ||
9778 | 0x030, 0x00005239, | ||
9779 | 0x030, 0x00006239, | ||
9780 | 0x030, 0x00007239, | ||
9781 | 0x030, 0x00008239, | ||
9782 | 0x030, 0x00009239, | ||
9783 | 0x030, 0x0000A239, | ||
9784 | 0x030, 0x0000B239, | ||
9785 | 0x030, 0x0000C239, | ||
9786 | 0x030, 0x0000D239, | ||
9787 | 0x030, 0x0000E209, | ||
9788 | 0x030, 0x0000F239, | ||
9789 | 0x030, 0x00010239, | ||
9790 | 0x030, 0x00011239, | ||
9791 | 0x030, 0x00012209, | ||
9792 | 0x030, 0x00013239, | ||
9793 | 0x030, 0x00014239, | ||
9794 | 0x030, 0x00015239, | ||
9795 | 0x030, 0x00016209, | ||
9796 | 0x030, 0x00017239, | ||
9797 | 0x030, 0x00018209, | ||
9798 | 0x030, 0x00019239, | ||
8090 | 0xA0000000, 0x00000000, | 9799 | 0xA0000000, 0x00000000, |
8091 | 0x030, 0x00000233, | 9800 | 0x030, 0x00000233, |
8092 | 0x030, 0x00001233, | 9801 | 0x030, 0x00001233, |
@@ -8195,6 +9904,32 @@ static const u32 rtw8822c_rf_b[] = { | |||
8195 | 0x030, 0x00009334, | 9904 | 0x030, 0x00009334, |
8196 | 0x030, 0x0000A334, | 9905 | 0x030, 0x0000A334, |
8197 | 0x030, 0x0000B334, | 9906 | 0x030, 0x0000B334, |
9907 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
9908 | 0x030, 0x00000334, | ||
9909 | 0x030, 0x00001334, | ||
9910 | 0x030, 0x00002334, | ||
9911 | 0x030, 0x00003334, | ||
9912 | 0x030, 0x00004334, | ||
9913 | 0x030, 0x00005334, | ||
9914 | 0x030, 0x00006334, | ||
9915 | 0x030, 0x00007334, | ||
9916 | 0x030, 0x00008334, | ||
9917 | 0x030, 0x00009334, | ||
9918 | 0x030, 0x0000A334, | ||
9919 | 0x030, 0x0000B334, | ||
9920 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
9921 | 0x030, 0x00000334, | ||
9922 | 0x030, 0x00001334, | ||
9923 | 0x030, 0x00002334, | ||
9924 | 0x030, 0x00003334, | ||
9925 | 0x030, 0x00004334, | ||
9926 | 0x030, 0x00005334, | ||
9927 | 0x030, 0x00006334, | ||
9928 | 0x030, 0x00007334, | ||
9929 | 0x030, 0x00008334, | ||
9930 | 0x030, 0x00009334, | ||
9931 | 0x030, 0x0000A334, | ||
9932 | 0x030, 0x0000B334, | ||
8198 | 0xA0000000, 0x00000000, | 9933 | 0xA0000000, 0x00000000, |
8199 | 0x030, 0x00000232, | 9934 | 0x030, 0x00000232, |
8200 | 0x030, 0x00001232, | 9935 | 0x030, 0x00001232, |
@@ -8302,6 +10037,10 @@ static const u32 rtw8822c_rf_b[] = { | |||
8302 | 0x052, 0x000902CA, | 10037 | 0x052, 0x000902CA, |
8303 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10038 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8304 | 0x052, 0x000902CA, | 10039 | 0x052, 0x000902CA, |
10040 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10041 | 0x052, 0x000902CA, | ||
10042 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10043 | 0x052, 0x000902CA, | ||
8305 | 0xA0000000, 0x00000000, | 10044 | 0xA0000000, 0x00000000, |
8306 | 0x052, 0x000942C0, | 10045 | 0x052, 0x000942C0, |
8307 | 0xB0000000, 0x00000000, | 10046 | 0xB0000000, 0x00000000, |
@@ -8310,7 +10049,17 @@ static const u32 rtw8822c_rf_b[] = { | |||
8310 | 0x057, 0x0004C80A, | 10049 | 0x057, 0x0004C80A, |
8311 | 0x0EF, 0x00000020, | 10050 | 0x0EF, 0x00000020, |
8312 | 0x033, 0x00000000, | 10051 | 0x033, 0x00000000, |
10052 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10053 | 0x03E, 0x00000030, | ||
10054 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10055 | 0x03E, 0x00000030, | ||
10056 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10057 | 0x03E, 0x00000030, | ||
10058 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10059 | 0x03E, 0x00000030, | ||
10060 | 0xA0000000, 0x00000000, | ||
8313 | 0x03E, 0x00000020, | 10061 | 0x03E, 0x00000020, |
10062 | 0xB0000000, 0x00000000, | ||
8314 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10063 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8315 | 0x03F, 0x00024246, | 10064 | 0x03F, 0x00024246, |
8316 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10065 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8320,14 +10069,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8320 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10069 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8321 | 0x03F, 0x00024246, | 10070 | 0x03F, 0x00024246, |
8322 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10071 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8323 | 0x03F, 0x00024246, | 10072 | 0x03F, 0x000241C6, |
8324 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10073 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8325 | 0x03F, 0x00024246, | 10074 | 0x03F, 0x000241C6, |
10075 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10076 | 0x03F, 0x000241C6, | ||
10077 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10078 | 0x03F, 0x000241C6, | ||
8326 | 0xA0000000, 0x00000000, | 10079 | 0xA0000000, 0x00000000, |
8327 | 0x03F, 0x0000C246, | 10080 | 0x03F, 0x0000C246, |
8328 | 0xB0000000, 0x00000000, | 10081 | 0xB0000000, 0x00000000, |
8329 | 0x033, 0x00000001, | 10082 | 0x033, 0x00000001, |
10083 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10084 | 0x03E, 0x00000030, | ||
10085 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10086 | 0x03E, 0x00000030, | ||
10087 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10088 | 0x03E, 0x00000030, | ||
10089 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10090 | 0x03E, 0x00000030, | ||
10091 | 0xA0000000, 0x00000000, | ||
8330 | 0x03E, 0x00000020, | 10092 | 0x03E, 0x00000020, |
10093 | 0xB0000000, 0x00000000, | ||
8331 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10094 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8332 | 0x03F, 0x00024246, | 10095 | 0x03F, 0x00024246, |
8333 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10096 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8337,9 +10100,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8337 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10100 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8338 | 0x03F, 0x00024246, | 10101 | 0x03F, 0x00024246, |
8339 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10102 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8340 | 0x03F, 0x00024246, | 10103 | 0x03F, 0x000241C6, |
8341 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10104 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8342 | 0x03F, 0x00024246, | 10105 | 0x03F, 0x000241C6, |
10106 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10107 | 0x03F, 0x000241C6, | ||
10108 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10109 | 0x03F, 0x000241C6, | ||
8343 | 0xA0000000, 0x00000000, | 10110 | 0xA0000000, 0x00000000, |
8344 | 0x03F, 0x0000C246, | 10111 | 0x03F, 0x0000C246, |
8345 | 0xB0000000, 0x00000000, | 10112 | 0xB0000000, 0x00000000, |
@@ -8357,11 +10124,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8357 | 0x03F, 0x0002C246, | 10124 | 0x03F, 0x0002C246, |
8358 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10125 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8359 | 0x03F, 0x0002C246, | 10126 | 0x03F, 0x0002C246, |
10127 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10128 | 0x03F, 0x0002C246, | ||
10129 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10130 | 0x03F, 0x0002C246, | ||
8360 | 0xA0000000, 0x00000000, | 10131 | 0xA0000000, 0x00000000, |
8361 | 0x03F, 0x0000C246, | 10132 | 0x03F, 0x0000C246, |
8362 | 0xB0000000, 0x00000000, | 10133 | 0xB0000000, 0x00000000, |
8363 | 0x033, 0x00000003, | 10134 | 0x033, 0x00000003, |
10135 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10136 | 0x03E, 0x00000030, | ||
10137 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10138 | 0x03E, 0x00000030, | ||
10139 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10140 | 0x03E, 0x00000030, | ||
10141 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10142 | 0x03E, 0x00000030, | ||
10143 | 0xA0000000, 0x00000000, | ||
8364 | 0x03E, 0x00000020, | 10144 | 0x03E, 0x00000020, |
10145 | 0xB0000000, 0x00000000, | ||
8365 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10146 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8366 | 0x03F, 0x00024246, | 10147 | 0x03F, 0x00024246, |
8367 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10148 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8371,14 +10152,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8371 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10152 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8372 | 0x03F, 0x00024246, | 10153 | 0x03F, 0x00024246, |
8373 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10154 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8374 | 0x03F, 0x00024246, | 10155 | 0x03F, 0x000241C6, |
8375 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10156 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8376 | 0x03F, 0x00024246, | 10157 | 0x03F, 0x000241C6, |
10158 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10159 | 0x03F, 0x000241C6, | ||
10160 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10161 | 0x03F, 0x000241C6, | ||
8377 | 0xA0000000, 0x00000000, | 10162 | 0xA0000000, 0x00000000, |
8378 | 0x03F, 0x0000C246, | 10163 | 0x03F, 0x0000C246, |
8379 | 0xB0000000, 0x00000000, | 10164 | 0xB0000000, 0x00000000, |
8380 | 0x033, 0x00000004, | 10165 | 0x033, 0x00000004, |
10166 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10167 | 0x03E, 0x00000030, | ||
10168 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10169 | 0x03E, 0x00000030, | ||
10170 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10171 | 0x03E, 0x00000030, | ||
10172 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10173 | 0x03E, 0x00000030, | ||
10174 | 0xA0000000, 0x00000000, | ||
8381 | 0x03E, 0x00000020, | 10175 | 0x03E, 0x00000020, |
10176 | 0xB0000000, 0x00000000, | ||
8382 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10177 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8383 | 0x03F, 0x00024246, | 10178 | 0x03F, 0x00024246, |
8384 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10179 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8388,9 +10183,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8388 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10183 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8389 | 0x03F, 0x00024246, | 10184 | 0x03F, 0x00024246, |
8390 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10185 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8391 | 0x03F, 0x00024246, | 10186 | 0x03F, 0x000241C6, |
8392 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10187 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8393 | 0x03F, 0x00024246, | 10188 | 0x03F, 0x000241C6, |
10189 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10190 | 0x03F, 0x000241C6, | ||
10191 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10192 | 0x03F, 0x000241C6, | ||
8394 | 0xA0000000, 0x00000000, | 10193 | 0xA0000000, 0x00000000, |
8395 | 0x03F, 0x0000C246, | 10194 | 0x03F, 0x0000C246, |
8396 | 0xB0000000, 0x00000000, | 10195 | 0xB0000000, 0x00000000, |
@@ -8408,11 +10207,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8408 | 0x03F, 0x0002C246, | 10207 | 0x03F, 0x0002C246, |
8409 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10208 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8410 | 0x03F, 0x0002C246, | 10209 | 0x03F, 0x0002C246, |
10210 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10211 | 0x03F, 0x0002C246, | ||
10212 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10213 | 0x03F, 0x0002C246, | ||
8411 | 0xA0000000, 0x00000000, | 10214 | 0xA0000000, 0x00000000, |
8412 | 0x03F, 0x0000C246, | 10215 | 0x03F, 0x0000C246, |
8413 | 0xB0000000, 0x00000000, | 10216 | 0xB0000000, 0x00000000, |
8414 | 0x033, 0x00000006, | 10217 | 0x033, 0x00000006, |
10218 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10219 | 0x03E, 0x00000030, | ||
10220 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10221 | 0x03E, 0x00000030, | ||
10222 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10223 | 0x03E, 0x00000030, | ||
10224 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10225 | 0x03E, 0x00000030, | ||
10226 | 0xA0000000, 0x00000000, | ||
8415 | 0x03E, 0x00000020, | 10227 | 0x03E, 0x00000020, |
10228 | 0xB0000000, 0x00000000, | ||
8416 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10229 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8417 | 0x03F, 0x00024246, | 10230 | 0x03F, 0x00024246, |
8418 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10231 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8422,14 +10235,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8422 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10235 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8423 | 0x03F, 0x00024246, | 10236 | 0x03F, 0x00024246, |
8424 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10237 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8425 | 0x03F, 0x00024246, | 10238 | 0x03F, 0x000241C6, |
8426 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10239 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8427 | 0x03F, 0x00024246, | 10240 | 0x03F, 0x000241C6, |
10241 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10242 | 0x03F, 0x000241C6, | ||
10243 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10244 | 0x03F, 0x000241C6, | ||
8428 | 0xA0000000, 0x00000000, | 10245 | 0xA0000000, 0x00000000, |
8429 | 0x03F, 0x0000C246, | 10246 | 0x03F, 0x0000C246, |
8430 | 0xB0000000, 0x00000000, | 10247 | 0xB0000000, 0x00000000, |
8431 | 0x033, 0x00000007, | 10248 | 0x033, 0x00000007, |
10249 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10250 | 0x03E, 0x00000030, | ||
10251 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10252 | 0x03E, 0x00000030, | ||
10253 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10254 | 0x03E, 0x00000030, | ||
10255 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10256 | 0x03E, 0x00000030, | ||
10257 | 0xA0000000, 0x00000000, | ||
8432 | 0x03E, 0x00000020, | 10258 | 0x03E, 0x00000020, |
10259 | 0xB0000000, 0x00000000, | ||
8433 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10260 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8434 | 0x03F, 0x00024246, | 10261 | 0x03F, 0x00024246, |
8435 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10262 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8439,9 +10266,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8439 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10266 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8440 | 0x03F, 0x00024246, | 10267 | 0x03F, 0x00024246, |
8441 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10268 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8442 | 0x03F, 0x00024246, | 10269 | 0x03F, 0x000241C6, |
8443 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10270 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8444 | 0x03F, 0x00024246, | 10271 | 0x03F, 0x000241C6, |
10272 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10273 | 0x03F, 0x000241C6, | ||
10274 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10275 | 0x03F, 0x000241C6, | ||
8445 | 0xA0000000, 0x00000000, | 10276 | 0xA0000000, 0x00000000, |
8446 | 0x03F, 0x0000C246, | 10277 | 0x03F, 0x0000C246, |
8447 | 0xB0000000, 0x00000000, | 10278 | 0xB0000000, 0x00000000, |
@@ -8459,11 +10290,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8459 | 0x03F, 0x0002C246, | 10290 | 0x03F, 0x0002C246, |
8460 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10291 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8461 | 0x03F, 0x0002C246, | 10292 | 0x03F, 0x0002C246, |
10293 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10294 | 0x03F, 0x0002C246, | ||
10295 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10296 | 0x03F, 0x0002C246, | ||
8462 | 0xA0000000, 0x00000000, | 10297 | 0xA0000000, 0x00000000, |
8463 | 0x03F, 0x0000C246, | 10298 | 0x03F, 0x0000C246, |
8464 | 0xB0000000, 0x00000000, | 10299 | 0xB0000000, 0x00000000, |
8465 | 0x033, 0x00000009, | 10300 | 0x033, 0x00000009, |
10301 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10302 | 0x03E, 0x00000030, | ||
10303 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10304 | 0x03E, 0x00000030, | ||
10305 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10306 | 0x03E, 0x00000030, | ||
10307 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10308 | 0x03E, 0x00000030, | ||
10309 | 0xA0000000, 0x00000000, | ||
8466 | 0x03E, 0x00000020, | 10310 | 0x03E, 0x00000020, |
10311 | 0xB0000000, 0x00000000, | ||
8467 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10312 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8468 | 0x03F, 0x00024246, | 10313 | 0x03F, 0x00024246, |
8469 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10314 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8473,14 +10318,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8473 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10318 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8474 | 0x03F, 0x00024246, | 10319 | 0x03F, 0x00024246, |
8475 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10320 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8476 | 0x03F, 0x00024246, | 10321 | 0x03F, 0x000241C6, |
8477 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10322 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8478 | 0x03F, 0x00024246, | 10323 | 0x03F, 0x000241C6, |
10324 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10325 | 0x03F, 0x000241C6, | ||
10326 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10327 | 0x03F, 0x000241C6, | ||
8479 | 0xA0000000, 0x00000000, | 10328 | 0xA0000000, 0x00000000, |
8480 | 0x03F, 0x00008E46, | 10329 | 0x03F, 0x00008E46, |
8481 | 0xB0000000, 0x00000000, | 10330 | 0xB0000000, 0x00000000, |
8482 | 0x033, 0x0000000A, | 10331 | 0x033, 0x0000000A, |
10332 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10333 | 0x03E, 0x00000030, | ||
10334 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10335 | 0x03E, 0x00000030, | ||
10336 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10337 | 0x03E, 0x00000030, | ||
10338 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10339 | 0x03E, 0x00000030, | ||
10340 | 0xA0000000, 0x00000000, | ||
8483 | 0x03E, 0x00000020, | 10341 | 0x03E, 0x00000020, |
10342 | 0xB0000000, 0x00000000, | ||
8484 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10343 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8485 | 0x03F, 0x00024246, | 10344 | 0x03F, 0x00024246, |
8486 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10345 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8490,9 +10349,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8490 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10349 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8491 | 0x03F, 0x00024246, | 10350 | 0x03F, 0x00024246, |
8492 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10351 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8493 | 0x03F, 0x00024246, | 10352 | 0x03F, 0x000241C6, |
8494 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10353 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8495 | 0x03F, 0x00024246, | 10354 | 0x03F, 0x000241C6, |
10355 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10356 | 0x03F, 0x000241C6, | ||
10357 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10358 | 0x03F, 0x000241C6, | ||
8496 | 0xA0000000, 0x00000000, | 10359 | 0xA0000000, 0x00000000, |
8497 | 0x03F, 0x00008E46, | 10360 | 0x03F, 0x00008E46, |
8498 | 0xB0000000, 0x00000000, | 10361 | 0xB0000000, 0x00000000, |
@@ -8510,11 +10373,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8510 | 0x03F, 0x0002C246, | 10373 | 0x03F, 0x0002C246, |
8511 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10374 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8512 | 0x03F, 0x0002C246, | 10375 | 0x03F, 0x0002C246, |
10376 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10377 | 0x03F, 0x0002C246, | ||
10378 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10379 | 0x03F, 0x0002C246, | ||
8513 | 0xA0000000, 0x00000000, | 10380 | 0xA0000000, 0x00000000, |
8514 | 0x03F, 0x00008E46, | 10381 | 0x03F, 0x00008E46, |
8515 | 0xB0000000, 0x00000000, | 10382 | 0xB0000000, 0x00000000, |
8516 | 0x033, 0x0000000C, | 10383 | 0x033, 0x0000000C, |
10384 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10385 | 0x03E, 0x00000030, | ||
10386 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10387 | 0x03E, 0x00000030, | ||
10388 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10389 | 0x03E, 0x00000030, | ||
10390 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10391 | 0x03E, 0x00000030, | ||
10392 | 0xA0000000, 0x00000000, | ||
8517 | 0x03E, 0x00000020, | 10393 | 0x03E, 0x00000020, |
10394 | 0xB0000000, 0x00000000, | ||
8518 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10395 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8519 | 0x03F, 0x00024246, | 10396 | 0x03F, 0x00024246, |
8520 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10397 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8524,14 +10401,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8524 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10401 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8525 | 0x03F, 0x00024246, | 10402 | 0x03F, 0x00024246, |
8526 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10403 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8527 | 0x03F, 0x00024246, | 10404 | 0x03F, 0x000241C6, |
8528 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10405 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8529 | 0x03F, 0x00024246, | 10406 | 0x03F, 0x000241C6, |
10407 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10408 | 0x03F, 0x000241C6, | ||
10409 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10410 | 0x03F, 0x000241C6, | ||
8530 | 0xA0000000, 0x00000000, | 10411 | 0xA0000000, 0x00000000, |
8531 | 0x03F, 0x00008E46, | 10412 | 0x03F, 0x00008E46, |
8532 | 0xB0000000, 0x00000000, | 10413 | 0xB0000000, 0x00000000, |
8533 | 0x033, 0x0000000D, | 10414 | 0x033, 0x0000000D, |
10415 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10416 | 0x03E, 0x00000030, | ||
10417 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10418 | 0x03E, 0x00000030, | ||
10419 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10420 | 0x03E, 0x00000030, | ||
10421 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10422 | 0x03E, 0x00000030, | ||
10423 | 0xA0000000, 0x00000000, | ||
8534 | 0x03E, 0x00000020, | 10424 | 0x03E, 0x00000020, |
10425 | 0xB0000000, 0x00000000, | ||
8535 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10426 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8536 | 0x03F, 0x00024246, | 10427 | 0x03F, 0x00024246, |
8537 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10428 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8541,9 +10432,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8541 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10432 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8542 | 0x03F, 0x00024246, | 10433 | 0x03F, 0x00024246, |
8543 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10434 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8544 | 0x03F, 0x00024246, | 10435 | 0x03F, 0x000241C6, |
8545 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10436 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8546 | 0x03F, 0x00024246, | 10437 | 0x03F, 0x000241C6, |
10438 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10439 | 0x03F, 0x000241C6, | ||
10440 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10441 | 0x03F, 0x000241C6, | ||
8547 | 0xA0000000, 0x00000000, | 10442 | 0xA0000000, 0x00000000, |
8548 | 0x03F, 0x00008E46, | 10443 | 0x03F, 0x00008E46, |
8549 | 0xB0000000, 0x00000000, | 10444 | 0xB0000000, 0x00000000, |
@@ -8561,11 +10456,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8561 | 0x03F, 0x0002C246, | 10456 | 0x03F, 0x0002C246, |
8562 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10457 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8563 | 0x03F, 0x0002C246, | 10458 | 0x03F, 0x0002C246, |
10459 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10460 | 0x03F, 0x0002C246, | ||
10461 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10462 | 0x03F, 0x0002C246, | ||
8564 | 0xA0000000, 0x00000000, | 10463 | 0xA0000000, 0x00000000, |
8565 | 0x03F, 0x00008E46, | 10464 | 0x03F, 0x00008E46, |
8566 | 0xB0000000, 0x00000000, | 10465 | 0xB0000000, 0x00000000, |
8567 | 0x033, 0x0000000F, | 10466 | 0x033, 0x0000000F, |
10467 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10468 | 0x03E, 0x00000030, | ||
10469 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10470 | 0x03E, 0x00000030, | ||
10471 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10472 | 0x03E, 0x00000030, | ||
10473 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10474 | 0x03E, 0x00000030, | ||
10475 | 0xA0000000, 0x00000000, | ||
8568 | 0x03E, 0x00000020, | 10476 | 0x03E, 0x00000020, |
10477 | 0xB0000000, 0x00000000, | ||
8569 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10478 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8570 | 0x03F, 0x00024246, | 10479 | 0x03F, 0x00024246, |
8571 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10480 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8575,14 +10484,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8575 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10484 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8576 | 0x03F, 0x00024246, | 10485 | 0x03F, 0x00024246, |
8577 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10486 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8578 | 0x03F, 0x00024246, | 10487 | 0x03F, 0x000241C6, |
8579 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10488 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8580 | 0x03F, 0x00024246, | 10489 | 0x03F, 0x000241C6, |
10490 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10491 | 0x03F, 0x000241C6, | ||
10492 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10493 | 0x03F, 0x000241C6, | ||
8581 | 0xA0000000, 0x00000000, | 10494 | 0xA0000000, 0x00000000, |
8582 | 0x03F, 0x00008E46, | 10495 | 0x03F, 0x00008E46, |
8583 | 0xB0000000, 0x00000000, | 10496 | 0xB0000000, 0x00000000, |
8584 | 0x033, 0x00000010, | 10497 | 0x033, 0x00000010, |
10498 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10499 | 0x03E, 0x00000030, | ||
10500 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10501 | 0x03E, 0x00000030, | ||
10502 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10503 | 0x03E, 0x00000030, | ||
10504 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10505 | 0x03E, 0x00000030, | ||
10506 | 0xA0000000, 0x00000000, | ||
8585 | 0x03E, 0x00000020, | 10507 | 0x03E, 0x00000020, |
10508 | 0xB0000000, 0x00000000, | ||
8586 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10509 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8587 | 0x03F, 0x00024246, | 10510 | 0x03F, 0x00024246, |
8588 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10511 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8592,9 +10515,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8592 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10515 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8593 | 0x03F, 0x00024246, | 10516 | 0x03F, 0x00024246, |
8594 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10517 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8595 | 0x03F, 0x00024246, | 10518 | 0x03F, 0x000241C6, |
8596 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10519 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8597 | 0x03F, 0x00024246, | 10520 | 0x03F, 0x000241C6, |
10521 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10522 | 0x03F, 0x000241C6, | ||
10523 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10524 | 0x03F, 0x000241C6, | ||
8598 | 0xA0000000, 0x00000000, | 10525 | 0xA0000000, 0x00000000, |
8599 | 0x03F, 0x00008E46, | 10526 | 0x03F, 0x00008E46, |
8600 | 0xB0000000, 0x00000000, | 10527 | 0xB0000000, 0x00000000, |
@@ -8612,11 +10539,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8612 | 0x03F, 0x0002C246, | 10539 | 0x03F, 0x0002C246, |
8613 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10540 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8614 | 0x03F, 0x0002C246, | 10541 | 0x03F, 0x0002C246, |
10542 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10543 | 0x03F, 0x0002C246, | ||
10544 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10545 | 0x03F, 0x0002C246, | ||
8615 | 0xA0000000, 0x00000000, | 10546 | 0xA0000000, 0x00000000, |
8616 | 0x03F, 0x00008E46, | 10547 | 0x03F, 0x00008E46, |
8617 | 0xB0000000, 0x00000000, | 10548 | 0xB0000000, 0x00000000, |
8618 | 0x033, 0x00000012, | 10549 | 0x033, 0x00000012, |
10550 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10551 | 0x03E, 0x00000030, | ||
10552 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10553 | 0x03E, 0x00000030, | ||
10554 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10555 | 0x03E, 0x00000030, | ||
10556 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10557 | 0x03E, 0x00000030, | ||
10558 | 0xA0000000, 0x00000000, | ||
8619 | 0x03E, 0x00000020, | 10559 | 0x03E, 0x00000020, |
10560 | 0xB0000000, 0x00000000, | ||
8620 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10561 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8621 | 0x03F, 0x0001CA46, | 10562 | 0x03F, 0x0001CA46, |
8622 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10563 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8626,14 +10567,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8626 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10567 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8627 | 0x03F, 0x0001CA46, | 10568 | 0x03F, 0x0001CA46, |
8628 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10569 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8629 | 0x03F, 0x0001CA46, | 10570 | 0x03F, 0x000209C6, |
8630 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10571 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8631 | 0x03F, 0x0001CA46, | 10572 | 0x03F, 0x000209C6, |
10573 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10574 | 0x03F, 0x000209C6, | ||
10575 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10576 | 0x03F, 0x000209C6, | ||
8632 | 0xA0000000, 0x00000000, | 10577 | 0xA0000000, 0x00000000, |
8633 | 0x03F, 0x00008E46, | 10578 | 0x03F, 0x00008E46, |
8634 | 0xB0000000, 0x00000000, | 10579 | 0xB0000000, 0x00000000, |
8635 | 0x033, 0x00000013, | 10580 | 0x033, 0x00000013, |
10581 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10582 | 0x03E, 0x00000030, | ||
10583 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10584 | 0x03E, 0x00000030, | ||
10585 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10586 | 0x03E, 0x00000030, | ||
10587 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10588 | 0x03E, 0x00000030, | ||
10589 | 0xA0000000, 0x00000000, | ||
8636 | 0x03E, 0x00000020, | 10590 | 0x03E, 0x00000020, |
10591 | 0xB0000000, 0x00000000, | ||
8637 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10592 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8638 | 0x03F, 0x0001CA46, | 10593 | 0x03F, 0x0001CA46, |
8639 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10594 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8643,9 +10598,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8643 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10598 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8644 | 0x03F, 0x0001CA46, | 10599 | 0x03F, 0x0001CA46, |
8645 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10600 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8646 | 0x03F, 0x0001CA46, | 10601 | 0x03F, 0x000209C6, |
8647 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10602 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8648 | 0x03F, 0x0001CA46, | 10603 | 0x03F, 0x000209C6, |
10604 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10605 | 0x03F, 0x000209C6, | ||
10606 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10607 | 0x03F, 0x000209C6, | ||
8649 | 0xA0000000, 0x00000000, | 10608 | 0xA0000000, 0x00000000, |
8650 | 0x03F, 0x00008E46, | 10609 | 0x03F, 0x00008E46, |
8651 | 0xB0000000, 0x00000000, | 10610 | 0xB0000000, 0x00000000, |
@@ -8663,11 +10622,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8663 | 0x03F, 0x0002CA46, | 10622 | 0x03F, 0x0002CA46, |
8664 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10623 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8665 | 0x03F, 0x0002CA46, | 10624 | 0x03F, 0x0002CA46, |
10625 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10626 | 0x03F, 0x0002CA46, | ||
10627 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10628 | 0x03F, 0x0002CA46, | ||
8666 | 0xA0000000, 0x00000000, | 10629 | 0xA0000000, 0x00000000, |
8667 | 0x03F, 0x00008E46, | 10630 | 0x03F, 0x00008E46, |
8668 | 0xB0000000, 0x00000000, | 10631 | 0xB0000000, 0x00000000, |
8669 | 0x033, 0x00000015, | 10632 | 0x033, 0x00000015, |
10633 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10634 | 0x03E, 0x00000030, | ||
10635 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10636 | 0x03E, 0x00000030, | ||
10637 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10638 | 0x03E, 0x00000030, | ||
10639 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10640 | 0x03E, 0x00000030, | ||
10641 | 0xA0000000, 0x00000000, | ||
8670 | 0x03E, 0x00000020, | 10642 | 0x03E, 0x00000020, |
10643 | 0xB0000000, 0x00000000, | ||
8671 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10644 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8672 | 0x03F, 0x0001CA46, | 10645 | 0x03F, 0x0001CA46, |
8673 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10646 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8677,14 +10650,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8677 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10650 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8678 | 0x03F, 0x0001CA46, | 10651 | 0x03F, 0x0001CA46, |
8679 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10652 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8680 | 0x03F, 0x0001CA46, | 10653 | 0x03F, 0x000209C6, |
8681 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10654 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8682 | 0x03F, 0x0001CA46, | 10655 | 0x03F, 0x000209C6, |
10656 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10657 | 0x03F, 0x000209C6, | ||
10658 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10659 | 0x03F, 0x000209C6, | ||
8683 | 0xA0000000, 0x00000000, | 10660 | 0xA0000000, 0x00000000, |
8684 | 0x03F, 0x00008E46, | 10661 | 0x03F, 0x00008E46, |
8685 | 0xB0000000, 0x00000000, | 10662 | 0xB0000000, 0x00000000, |
8686 | 0x033, 0x00000016, | 10663 | 0x033, 0x00000016, |
10664 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10665 | 0x03E, 0x00000030, | ||
10666 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10667 | 0x03E, 0x00000030, | ||
10668 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10669 | 0x03E, 0x00000030, | ||
10670 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10671 | 0x03E, 0x00000030, | ||
10672 | 0xA0000000, 0x00000000, | ||
8687 | 0x03E, 0x00000020, | 10673 | 0x03E, 0x00000020, |
10674 | 0xB0000000, 0x00000000, | ||
8688 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10675 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8689 | 0x03F, 0x0001CA46, | 10676 | 0x03F, 0x0001CA46, |
8690 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10677 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8694,9 +10681,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8694 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10681 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8695 | 0x03F, 0x0001CA46, | 10682 | 0x03F, 0x0001CA46, |
8696 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10683 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8697 | 0x03F, 0x0001CA46, | 10684 | 0x03F, 0x000209C6, |
8698 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10685 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8699 | 0x03F, 0x0001CA46, | 10686 | 0x03F, 0x000209C6, |
10687 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10688 | 0x03F, 0x000209C6, | ||
10689 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10690 | 0x03F, 0x000209C6, | ||
8700 | 0xA0000000, 0x00000000, | 10691 | 0xA0000000, 0x00000000, |
8701 | 0x03F, 0x00008E46, | 10692 | 0x03F, 0x00008E46, |
8702 | 0xB0000000, 0x00000000, | 10693 | 0xB0000000, 0x00000000, |
@@ -8714,11 +10705,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8714 | 0x03F, 0x0002CA46, | 10705 | 0x03F, 0x0002CA46, |
8715 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10706 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8716 | 0x03F, 0x0002CA46, | 10707 | 0x03F, 0x0002CA46, |
10708 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10709 | 0x03F, 0x0002CA46, | ||
10710 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10711 | 0x03F, 0x0002CA46, | ||
8717 | 0xA0000000, 0x00000000, | 10712 | 0xA0000000, 0x00000000, |
8718 | 0x03F, 0x00008E46, | 10713 | 0x03F, 0x00008E46, |
8719 | 0xB0000000, 0x00000000, | 10714 | 0xB0000000, 0x00000000, |
8720 | 0x033, 0x00000018, | 10715 | 0x033, 0x00000018, |
10716 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10717 | 0x03E, 0x00000030, | ||
10718 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10719 | 0x03E, 0x00000030, | ||
10720 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10721 | 0x03E, 0x00000030, | ||
10722 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10723 | 0x03E, 0x00000030, | ||
10724 | 0xA0000000, 0x00000000, | ||
8721 | 0x03E, 0x00000020, | 10725 | 0x03E, 0x00000020, |
10726 | 0xB0000000, 0x00000000, | ||
8722 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10727 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8723 | 0x03F, 0x0001CA46, | 10728 | 0x03F, 0x0001CA46, |
8724 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10729 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8728,14 +10733,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8728 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10733 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8729 | 0x03F, 0x0001CA46, | 10734 | 0x03F, 0x0001CA46, |
8730 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10735 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8731 | 0x03F, 0x0001CA46, | 10736 | 0x03F, 0x000209C6, |
8732 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10737 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8733 | 0x03F, 0x0001CA46, | 10738 | 0x03F, 0x000209C6, |
10739 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10740 | 0x03F, 0x000209C6, | ||
10741 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10742 | 0x03F, 0x000209C6, | ||
8734 | 0xA0000000, 0x00000000, | 10743 | 0xA0000000, 0x00000000, |
8735 | 0x03F, 0x00008E46, | 10744 | 0x03F, 0x00008E46, |
8736 | 0xB0000000, 0x00000000, | 10745 | 0xB0000000, 0x00000000, |
8737 | 0x033, 0x00000019, | 10746 | 0x033, 0x00000019, |
10747 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10748 | 0x03E, 0x00000030, | ||
10749 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10750 | 0x03E, 0x00000030, | ||
10751 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10752 | 0x03E, 0x00000030, | ||
10753 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10754 | 0x03E, 0x00000030, | ||
10755 | 0xA0000000, 0x00000000, | ||
8738 | 0x03E, 0x00000020, | 10756 | 0x03E, 0x00000020, |
10757 | 0xB0000000, 0x00000000, | ||
8739 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10758 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8740 | 0x03F, 0x0001CA46, | 10759 | 0x03F, 0x0001CA46, |
8741 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10760 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8745,9 +10764,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8745 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10764 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8746 | 0x03F, 0x0001CA46, | 10765 | 0x03F, 0x0001CA46, |
8747 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10766 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8748 | 0x03F, 0x0001CA46, | 10767 | 0x03F, 0x000209C6, |
8749 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10768 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8750 | 0x03F, 0x0001CA46, | 10769 | 0x03F, 0x000209C6, |
10770 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10771 | 0x03F, 0x000209C6, | ||
10772 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10773 | 0x03F, 0x000209C6, | ||
8751 | 0xA0000000, 0x00000000, | 10774 | 0xA0000000, 0x00000000, |
8752 | 0x03F, 0x00008E46, | 10775 | 0x03F, 0x00008E46, |
8753 | 0xB0000000, 0x00000000, | 10776 | 0xB0000000, 0x00000000, |
@@ -8765,11 +10788,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8765 | 0x03F, 0x0002CA46, | 10788 | 0x03F, 0x0002CA46, |
8766 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10789 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8767 | 0x03F, 0x0002CA46, | 10790 | 0x03F, 0x0002CA46, |
10791 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10792 | 0x03F, 0x0002CA46, | ||
10793 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10794 | 0x03F, 0x0002CA46, | ||
8768 | 0xA0000000, 0x00000000, | 10795 | 0xA0000000, 0x00000000, |
8769 | 0x03F, 0x00008E46, | 10796 | 0x03F, 0x00008E46, |
8770 | 0xB0000000, 0x00000000, | 10797 | 0xB0000000, 0x00000000, |
8771 | 0x033, 0x0000001B, | 10798 | 0x033, 0x0000001B, |
10799 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10800 | 0x03E, 0x00000030, | ||
10801 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10802 | 0x03E, 0x00000030, | ||
10803 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10804 | 0x03E, 0x00000030, | ||
10805 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10806 | 0x03E, 0x00000030, | ||
10807 | 0xA0000000, 0x00000000, | ||
8772 | 0x03E, 0x00000020, | 10808 | 0x03E, 0x00000020, |
10809 | 0xB0000000, 0x00000000, | ||
8773 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10810 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8774 | 0x03F, 0x0001CA46, | 10811 | 0x03F, 0x0001CA46, |
8775 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10812 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8779,14 +10816,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8779 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10816 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8780 | 0x03F, 0x0001CA46, | 10817 | 0x03F, 0x0001CA46, |
8781 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10818 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8782 | 0x03F, 0x0001CA46, | 10819 | 0x03F, 0x000209C6, |
8783 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10820 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8784 | 0x03F, 0x0001CA46, | 10821 | 0x03F, 0x000209C6, |
10822 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10823 | 0x03F, 0x000209C6, | ||
10824 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10825 | 0x03F, 0x000209C6, | ||
8785 | 0xA0000000, 0x00000000, | 10826 | 0xA0000000, 0x00000000, |
8786 | 0x03F, 0x00008E46, | 10827 | 0x03F, 0x00008E46, |
8787 | 0xB0000000, 0x00000000, | 10828 | 0xB0000000, 0x00000000, |
8788 | 0x033, 0x0000001C, | 10829 | 0x033, 0x0000001C, |
10830 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10831 | 0x03E, 0x00000030, | ||
10832 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10833 | 0x03E, 0x00000030, | ||
10834 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10835 | 0x03E, 0x00000030, | ||
10836 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10837 | 0x03E, 0x00000030, | ||
10838 | 0xA0000000, 0x00000000, | ||
8789 | 0x03E, 0x00000020, | 10839 | 0x03E, 0x00000020, |
10840 | 0xB0000000, 0x00000000, | ||
8790 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10841 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8791 | 0x03F, 0x0001CA46, | 10842 | 0x03F, 0x0001CA46, |
8792 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10843 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8796,9 +10847,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8796 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10847 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8797 | 0x03F, 0x0001CA46, | 10848 | 0x03F, 0x0001CA46, |
8798 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10849 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8799 | 0x03F, 0x0001CA46, | 10850 | 0x03F, 0x000209C6, |
8800 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10851 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8801 | 0x03F, 0x0001CA46, | 10852 | 0x03F, 0x000209C6, |
10853 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10854 | 0x03F, 0x000209C6, | ||
10855 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10856 | 0x03F, 0x000209C6, | ||
8802 | 0xA0000000, 0x00000000, | 10857 | 0xA0000000, 0x00000000, |
8803 | 0x03F, 0x00008E46, | 10858 | 0x03F, 0x00008E46, |
8804 | 0xB0000000, 0x00000000, | 10859 | 0xB0000000, 0x00000000, |
@@ -8816,11 +10871,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8816 | 0x03F, 0x0002CA46, | 10871 | 0x03F, 0x0002CA46, |
8817 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10872 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8818 | 0x03F, 0x0002CA46, | 10873 | 0x03F, 0x0002CA46, |
10874 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10875 | 0x03F, 0x0002CA46, | ||
10876 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10877 | 0x03F, 0x0002CA46, | ||
8819 | 0xA0000000, 0x00000000, | 10878 | 0xA0000000, 0x00000000, |
8820 | 0x03F, 0x00008E46, | 10879 | 0x03F, 0x00008E46, |
8821 | 0xB0000000, 0x00000000, | 10880 | 0xB0000000, 0x00000000, |
8822 | 0x033, 0x0000001E, | 10881 | 0x033, 0x0000001E, |
10882 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10883 | 0x03E, 0x00000030, | ||
10884 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10885 | 0x03E, 0x00000030, | ||
10886 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10887 | 0x03E, 0x00000030, | ||
10888 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10889 | 0x03E, 0x00000030, | ||
10890 | 0xA0000000, 0x00000000, | ||
8823 | 0x03E, 0x00000020, | 10891 | 0x03E, 0x00000020, |
10892 | 0xB0000000, 0x00000000, | ||
8824 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10893 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8825 | 0x03F, 0x0001CA46, | 10894 | 0x03F, 0x0001CA46, |
8826 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10895 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8830,14 +10899,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8830 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10899 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8831 | 0x03F, 0x0001CA46, | 10900 | 0x03F, 0x0001CA46, |
8832 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10901 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8833 | 0x03F, 0x0001CA46, | 10902 | 0x03F, 0x000209C6, |
8834 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10903 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8835 | 0x03F, 0x0001CA46, | 10904 | 0x03F, 0x000209C6, |
10905 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10906 | 0x03F, 0x000209C6, | ||
10907 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10908 | 0x03F, 0x000209C6, | ||
8836 | 0xA0000000, 0x00000000, | 10909 | 0xA0000000, 0x00000000, |
8837 | 0x03F, 0x00008E46, | 10910 | 0x03F, 0x00008E46, |
8838 | 0xB0000000, 0x00000000, | 10911 | 0xB0000000, 0x00000000, |
8839 | 0x033, 0x0000001F, | 10912 | 0x033, 0x0000001F, |
10913 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10914 | 0x03E, 0x00000030, | ||
10915 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10916 | 0x03E, 0x00000030, | ||
10917 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10918 | 0x03E, 0x00000030, | ||
10919 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10920 | 0x03E, 0x00000030, | ||
10921 | 0xA0000000, 0x00000000, | ||
8840 | 0x03E, 0x00000020, | 10922 | 0x03E, 0x00000020, |
10923 | 0xB0000000, 0x00000000, | ||
8841 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10924 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8842 | 0x03F, 0x0001CA46, | 10925 | 0x03F, 0x0001CA46, |
8843 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10926 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8847,9 +10930,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8847 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10930 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8848 | 0x03F, 0x0001CA46, | 10931 | 0x03F, 0x0001CA46, |
8849 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10932 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8850 | 0x03F, 0x0001CA46, | 10933 | 0x03F, 0x000209C6, |
8851 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10934 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8852 | 0x03F, 0x0001CA46, | 10935 | 0x03F, 0x000209C6, |
10936 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10937 | 0x03F, 0x000209C6, | ||
10938 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10939 | 0x03F, 0x000209C6, | ||
8853 | 0xA0000000, 0x00000000, | 10940 | 0xA0000000, 0x00000000, |
8854 | 0x03F, 0x00008E46, | 10941 | 0x03F, 0x00008E46, |
8855 | 0xB0000000, 0x00000000, | 10942 | 0xB0000000, 0x00000000, |
@@ -8867,11 +10954,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8867 | 0x03F, 0x0002CA46, | 10954 | 0x03F, 0x0002CA46, |
8868 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10955 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8869 | 0x03F, 0x0002CA46, | 10956 | 0x03F, 0x0002CA46, |
10957 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10958 | 0x03F, 0x0002CA46, | ||
10959 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10960 | 0x03F, 0x0002CA46, | ||
8870 | 0xA0000000, 0x00000000, | 10961 | 0xA0000000, 0x00000000, |
8871 | 0x03F, 0x00008E46, | 10962 | 0x03F, 0x00008E46, |
8872 | 0xB0000000, 0x00000000, | 10963 | 0xB0000000, 0x00000000, |
8873 | 0x033, 0x00000021, | 10964 | 0x033, 0x00000021, |
10965 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10966 | 0x03E, 0x00000030, | ||
10967 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10968 | 0x03E, 0x00000030, | ||
10969 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10970 | 0x03E, 0x00000030, | ||
10971 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10972 | 0x03E, 0x00000030, | ||
10973 | 0xA0000000, 0x00000000, | ||
8874 | 0x03E, 0x00000020, | 10974 | 0x03E, 0x00000020, |
10975 | 0xB0000000, 0x00000000, | ||
8875 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 10976 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8876 | 0x03F, 0x0001CA46, | 10977 | 0x03F, 0x0001CA46, |
8877 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 10978 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8881,14 +10982,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8881 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 10982 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8882 | 0x03F, 0x0001CA46, | 10983 | 0x03F, 0x0001CA46, |
8883 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 10984 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8884 | 0x03F, 0x0001CA46, | 10985 | 0x03F, 0x000209C6, |
8885 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 10986 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8886 | 0x03F, 0x0001CA46, | 10987 | 0x03F, 0x000209C6, |
10988 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
10989 | 0x03F, 0x000209C6, | ||
10990 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
10991 | 0x03F, 0x000209C6, | ||
8887 | 0xA0000000, 0x00000000, | 10992 | 0xA0000000, 0x00000000, |
8888 | 0x03F, 0x00008E46, | 10993 | 0x03F, 0x00008E46, |
8889 | 0xB0000000, 0x00000000, | 10994 | 0xB0000000, 0x00000000, |
8890 | 0x033, 0x00000022, | 10995 | 0x033, 0x00000022, |
10996 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
10997 | 0x03E, 0x00000030, | ||
10998 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
10999 | 0x03E, 0x00000030, | ||
11000 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11001 | 0x03E, 0x00000030, | ||
11002 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11003 | 0x03E, 0x00000030, | ||
11004 | 0xA0000000, 0x00000000, | ||
8891 | 0x03E, 0x00000020, | 11005 | 0x03E, 0x00000020, |
11006 | 0xB0000000, 0x00000000, | ||
8892 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 11007 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8893 | 0x03F, 0x0001CA46, | 11008 | 0x03F, 0x0001CA46, |
8894 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 11009 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8898,14 +11013,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8898 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 11013 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8899 | 0x03F, 0x0001CA46, | 11014 | 0x03F, 0x0001CA46, |
8900 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 11015 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8901 | 0x03F, 0x0001CA46, | 11016 | 0x03F, 0x000209C6, |
8902 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11017 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8903 | 0x03F, 0x0001CA46, | 11018 | 0x03F, 0x000209C6, |
11019 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11020 | 0x03F, 0x000209C6, | ||
11021 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11022 | 0x03F, 0x000209C6, | ||
8904 | 0xA0000000, 0x00000000, | 11023 | 0xA0000000, 0x00000000, |
8905 | 0x03F, 0x00008E46, | 11024 | 0x03F, 0x00008E46, |
8906 | 0xB0000000, 0x00000000, | 11025 | 0xB0000000, 0x00000000, |
8907 | 0x033, 0x00000023, | 11026 | 0x033, 0x00000023, |
11027 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
11028 | 0x03E, 0x00000020, | ||
11029 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
11030 | 0x03E, 0x00000020, | ||
11031 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11032 | 0x03E, 0x00000020, | ||
11033 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
8908 | 0x03E, 0x00000020, | 11034 | 0x03E, 0x00000020, |
11035 | 0xA0000000, 0x00000000, | ||
11036 | 0x03E, 0x00000020, | ||
11037 | 0xB0000000, 0x00000000, | ||
8909 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 11038 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8910 | 0x03F, 0x0001CA46, | 11039 | 0x03F, 0x0001CA46, |
8911 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 11040 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8918,11 +11047,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8918 | 0x03F, 0x0002CA46, | 11047 | 0x03F, 0x0002CA46, |
8919 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11048 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8920 | 0x03F, 0x0002CA46, | 11049 | 0x03F, 0x0002CA46, |
11050 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11051 | 0x03F, 0x0002CA46, | ||
11052 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11053 | 0x03F, 0x0002CA46, | ||
8921 | 0xA0000000, 0x00000000, | 11054 | 0xA0000000, 0x00000000, |
8922 | 0x03F, 0x00008E46, | 11055 | 0x03F, 0x00008E46, |
8923 | 0xB0000000, 0x00000000, | 11056 | 0xB0000000, 0x00000000, |
8924 | 0x033, 0x00000024, | 11057 | 0x033, 0x00000024, |
11058 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
11059 | 0x03E, 0x00000030, | ||
11060 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
11061 | 0x03E, 0x00000030, | ||
11062 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11063 | 0x03E, 0x00000030, | ||
11064 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11065 | 0x03E, 0x00000030, | ||
11066 | 0xA0000000, 0x00000000, | ||
8925 | 0x03E, 0x00000020, | 11067 | 0x03E, 0x00000020, |
11068 | 0xB0000000, 0x00000000, | ||
8926 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 11069 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8927 | 0x03F, 0x0001CA46, | 11070 | 0x03F, 0x0001CA46, |
8928 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 11071 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8932,14 +11075,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8932 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 11075 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8933 | 0x03F, 0x0001CA46, | 11076 | 0x03F, 0x0001CA46, |
8934 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 11077 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8935 | 0x03F, 0x0001CA46, | 11078 | 0x03F, 0x000209C6, |
8936 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11079 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8937 | 0x03F, 0x0001CA46, | 11080 | 0x03F, 0x000209C6, |
11081 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11082 | 0x03F, 0x000209C6, | ||
11083 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11084 | 0x03F, 0x000209C6, | ||
8938 | 0xA0000000, 0x00000000, | 11085 | 0xA0000000, 0x00000000, |
8939 | 0x03F, 0x00008E46, | 11086 | 0x03F, 0x00008E46, |
8940 | 0xB0000000, 0x00000000, | 11087 | 0xB0000000, 0x00000000, |
8941 | 0x033, 0x00000025, | 11088 | 0x033, 0x00000025, |
11089 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
11090 | 0x03E, 0x00000030, | ||
11091 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
11092 | 0x03E, 0x00000030, | ||
11093 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11094 | 0x03E, 0x00000030, | ||
11095 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11096 | 0x03E, 0x00000030, | ||
11097 | 0xA0000000, 0x00000000, | ||
8942 | 0x03E, 0x00000020, | 11098 | 0x03E, 0x00000020, |
11099 | 0xB0000000, 0x00000000, | ||
8943 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 11100 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8944 | 0x03F, 0x0001CA46, | 11101 | 0x03F, 0x0001CA46, |
8945 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 11102 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8949,9 +11106,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
8949 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 11106 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8950 | 0x03F, 0x0001CA46, | 11107 | 0x03F, 0x0001CA46, |
8951 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 11108 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8952 | 0x03F, 0x0001CA46, | 11109 | 0x03F, 0x000209C6, |
8953 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11110 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8954 | 0x03F, 0x0001CA46, | 11111 | 0x03F, 0x000209C6, |
11112 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11113 | 0x03F, 0x000209C6, | ||
11114 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11115 | 0x03F, 0x000209C6, | ||
8955 | 0xA0000000, 0x00000000, | 11116 | 0xA0000000, 0x00000000, |
8956 | 0x03F, 0x00008E46, | 11117 | 0x03F, 0x00008E46, |
8957 | 0xB0000000, 0x00000000, | 11118 | 0xB0000000, 0x00000000, |
@@ -8969,11 +11130,25 @@ static const u32 rtw8822c_rf_b[] = { | |||
8969 | 0x03F, 0x0002CA46, | 11130 | 0x03F, 0x0002CA46, |
8970 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11131 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8971 | 0x03F, 0x0002CA46, | 11132 | 0x03F, 0x0002CA46, |
11133 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11134 | 0x03F, 0x0002CA46, | ||
11135 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11136 | 0x03F, 0x0002CA46, | ||
8972 | 0xA0000000, 0x00000000, | 11137 | 0xA0000000, 0x00000000, |
8973 | 0x03F, 0x00008E46, | 11138 | 0x03F, 0x00008E46, |
8974 | 0xB0000000, 0x00000000, | 11139 | 0xB0000000, 0x00000000, |
8975 | 0x033, 0x00000027, | 11140 | 0x033, 0x00000027, |
11141 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
11142 | 0x03E, 0x00000030, | ||
11143 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
11144 | 0x03E, 0x00000030, | ||
11145 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11146 | 0x03E, 0x00000030, | ||
11147 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11148 | 0x03E, 0x00000030, | ||
11149 | 0xA0000000, 0x00000000, | ||
8976 | 0x03E, 0x00000020, | 11150 | 0x03E, 0x00000020, |
11151 | 0xB0000000, 0x00000000, | ||
8977 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 11152 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8978 | 0x03F, 0x0001CA46, | 11153 | 0x03F, 0x0001CA46, |
8979 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 11154 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -8983,14 +11158,28 @@ static const u32 rtw8822c_rf_b[] = { | |||
8983 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 11158 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
8984 | 0x03F, 0x0001CA46, | 11159 | 0x03F, 0x0001CA46, |
8985 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 11160 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
8986 | 0x03F, 0x0001CA46, | 11161 | 0x03F, 0x000209C6, |
8987 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11162 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
8988 | 0x03F, 0x0001CA46, | 11163 | 0x03F, 0x000209C6, |
11164 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11165 | 0x03F, 0x000209C6, | ||
11166 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11167 | 0x03F, 0x000209C6, | ||
8989 | 0xA0000000, 0x00000000, | 11168 | 0xA0000000, 0x00000000, |
8990 | 0x03F, 0x00008E46, | 11169 | 0x03F, 0x00008E46, |
8991 | 0xB0000000, 0x00000000, | 11170 | 0xB0000000, 0x00000000, |
8992 | 0x033, 0x00000028, | 11171 | 0x033, 0x00000028, |
11172 | 0x83000001, 0x00000000, 0x40000000, 0x00000000, | ||
11173 | 0x03E, 0x00000030, | ||
11174 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | ||
11175 | 0x03E, 0x00000030, | ||
11176 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11177 | 0x03E, 0x00000030, | ||
11178 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11179 | 0x03E, 0x00000030, | ||
11180 | 0xA0000000, 0x00000000, | ||
8993 | 0x03E, 0x00000020, | 11181 | 0x03E, 0x00000020, |
11182 | 0xB0000000, 0x00000000, | ||
8994 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, | 11183 | 0x81000001, 0x00000000, 0x40000000, 0x00000000, |
8995 | 0x03F, 0x0001CA46, | 11184 | 0x03F, 0x0001CA46, |
8996 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, | 11185 | 0x91000002, 0x00000000, 0x40000000, 0x00000000, |
@@ -9000,9 +11189,13 @@ static const u32 rtw8822c_rf_b[] = { | |||
9000 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, | 11189 | 0x92000002, 0x00000000, 0x40000000, 0x00000000, |
9001 | 0x03F, 0x0001CA46, | 11190 | 0x03F, 0x0001CA46, |
9002 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 11191 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
9003 | 0x03F, 0x0001CA46, | 11192 | 0x03F, 0x000209C6, |
9004 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11193 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
9005 | 0x03F, 0x0001CA46, | 11194 | 0x03F, 0x000209C6, |
11195 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11196 | 0x03F, 0x000209C6, | ||
11197 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11198 | 0x03F, 0x000209C6, | ||
9006 | 0xA0000000, 0x00000000, | 11199 | 0xA0000000, 0x00000000, |
9007 | 0x03F, 0x00008E46, | 11200 | 0x03F, 0x00008E46, |
9008 | 0xB0000000, 0x00000000, | 11201 | 0xB0000000, 0x00000000, |
@@ -9020,6 +11213,10 @@ static const u32 rtw8822c_rf_b[] = { | |||
9020 | 0x03F, 0x0002CA46, | 11213 | 0x03F, 0x0002CA46, |
9021 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11214 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
9022 | 0x03F, 0x0002CA46, | 11215 | 0x03F, 0x0002CA46, |
11216 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11217 | 0x03F, 0x0002CA46, | ||
11218 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11219 | 0x03F, 0x0002CA46, | ||
9023 | 0xA0000000, 0x00000000, | 11220 | 0xA0000000, 0x00000000, |
9024 | 0x03F, 0x00008E46, | 11221 | 0x03F, 0x00008E46, |
9025 | 0xB0000000, 0x00000000, | 11222 | 0xB0000000, 0x00000000, |
@@ -9037,6 +11234,10 @@ static const u32 rtw8822c_rf_b[] = { | |||
9037 | 0x03F, 0x0001CA46, | 11234 | 0x03F, 0x0001CA46, |
9038 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11235 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
9039 | 0x03F, 0x0001CA46, | 11236 | 0x03F, 0x0001CA46, |
11237 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11238 | 0x03F, 0x0001CA46, | ||
11239 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11240 | 0x03F, 0x0001CA46, | ||
9040 | 0xA0000000, 0x00000000, | 11241 | 0xA0000000, 0x00000000, |
9041 | 0x03F, 0x00008E46, | 11242 | 0x03F, 0x00008E46, |
9042 | 0xB0000000, 0x00000000, | 11243 | 0xB0000000, 0x00000000, |
@@ -9136,17 +11337,17 @@ static const u32 rtw8822c_rf_b[] = { | |||
9136 | 0x03F, 0x00000DF7, | 11337 | 0x03F, 0x00000DF7, |
9137 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 11338 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
9138 | 0x033, 0x00000060, | 11339 | 0x033, 0x00000060, |
9139 | 0x03F, 0x00000468, | 11340 | 0x03F, 0x00000467, |
9140 | 0x033, 0x00000061, | 11341 | 0x033, 0x00000061, |
9141 | 0x03F, 0x00000868, | 11342 | 0x03F, 0x00000867, |
9142 | 0x033, 0x00000062, | 11343 | 0x033, 0x00000062, |
9143 | 0x03F, 0x00000909, | 11344 | 0x03F, 0x00000908, |
9144 | 0x033, 0x00000063, | 11345 | 0x033, 0x00000063, |
9145 | 0x03F, 0x00000D0A, | 11346 | 0x03F, 0x00000D09, |
9146 | 0x033, 0x00000064, | 11347 | 0x033, 0x00000064, |
9147 | 0x03F, 0x00000D4A, | 11348 | 0x03F, 0x00000D49, |
9148 | 0x033, 0x00000065, | 11349 | 0x033, 0x00000065, |
9149 | 0x03F, 0x00000D8B, | 11350 | 0x03F, 0x00000D8A, |
9150 | 0x033, 0x00000066, | 11351 | 0x033, 0x00000066, |
9151 | 0x03F, 0x00000DEB, | 11352 | 0x03F, 0x00000DEB, |
9152 | 0x033, 0x00000067, | 11353 | 0x033, 0x00000067, |
@@ -9159,17 +11360,63 @@ static const u32 rtw8822c_rf_b[] = { | |||
9159 | 0x03F, 0x00000DF7, | 11360 | 0x03F, 0x00000DF7, |
9160 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11361 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
9161 | 0x033, 0x00000060, | 11362 | 0x033, 0x00000060, |
9162 | 0x03F, 0x00000468, | 11363 | 0x03F, 0x00000467, |
9163 | 0x033, 0x00000061, | 11364 | 0x033, 0x00000061, |
9164 | 0x03F, 0x00000868, | 11365 | 0x03F, 0x00000867, |
9165 | 0x033, 0x00000062, | 11366 | 0x033, 0x00000062, |
9166 | 0x03F, 0x00000909, | 11367 | 0x03F, 0x00000908, |
9167 | 0x033, 0x00000063, | 11368 | 0x033, 0x00000063, |
9168 | 0x03F, 0x00000D0A, | 11369 | 0x03F, 0x00000D09, |
9169 | 0x033, 0x00000064, | 11370 | 0x033, 0x00000064, |
9170 | 0x03F, 0x00000D4A, | 11371 | 0x03F, 0x00000D49, |
9171 | 0x033, 0x00000065, | 11372 | 0x033, 0x00000065, |
9172 | 0x03F, 0x00000D8B, | 11373 | 0x03F, 0x00000D8A, |
11374 | 0x033, 0x00000066, | ||
11375 | 0x03F, 0x00000DEB, | ||
11376 | 0x033, 0x00000067, | ||
11377 | 0x03F, 0x00000DEE, | ||
11378 | 0x033, 0x00000068, | ||
11379 | 0x03F, 0x00000DF1, | ||
11380 | 0x033, 0x00000069, | ||
11381 | 0x03F, 0x00000DF4, | ||
11382 | 0x033, 0x0000006A, | ||
11383 | 0x03F, 0x00000DF7, | ||
11384 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11385 | 0x033, 0x00000060, | ||
11386 | 0x03F, 0x00000467, | ||
11387 | 0x033, 0x00000061, | ||
11388 | 0x03F, 0x00000867, | ||
11389 | 0x033, 0x00000062, | ||
11390 | 0x03F, 0x00000908, | ||
11391 | 0x033, 0x00000063, | ||
11392 | 0x03F, 0x00000D09, | ||
11393 | 0x033, 0x00000064, | ||
11394 | 0x03F, 0x00000D49, | ||
11395 | 0x033, 0x00000065, | ||
11396 | 0x03F, 0x00000D8A, | ||
11397 | 0x033, 0x00000066, | ||
11398 | 0x03F, 0x00000DEB, | ||
11399 | 0x033, 0x00000067, | ||
11400 | 0x03F, 0x00000DEE, | ||
11401 | 0x033, 0x00000068, | ||
11402 | 0x03F, 0x00000DF1, | ||
11403 | 0x033, 0x00000069, | ||
11404 | 0x03F, 0x00000DF4, | ||
11405 | 0x033, 0x0000006A, | ||
11406 | 0x03F, 0x00000DF7, | ||
11407 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11408 | 0x033, 0x00000060, | ||
11409 | 0x03F, 0x00000467, | ||
11410 | 0x033, 0x00000061, | ||
11411 | 0x03F, 0x00000867, | ||
11412 | 0x033, 0x00000062, | ||
11413 | 0x03F, 0x00000908, | ||
11414 | 0x033, 0x00000063, | ||
11415 | 0x03F, 0x00000D09, | ||
11416 | 0x033, 0x00000064, | ||
11417 | 0x03F, 0x00000D49, | ||
11418 | 0x033, 0x00000065, | ||
11419 | 0x03F, 0x00000D8A, | ||
9173 | 0x033, 0x00000066, | 11420 | 0x033, 0x00000066, |
9174 | 0x03F, 0x00000DEB, | 11421 | 0x03F, 0x00000DEB, |
9175 | 0x033, 0x00000067, | 11422 | 0x033, 0x00000067, |
@@ -9298,17 +11545,17 @@ static const u32 rtw8822c_rf_b[] = { | |||
9298 | 0x03F, 0x00000DF7, | 11545 | 0x03F, 0x00000DF7, |
9299 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, | 11546 | 0x93000001, 0x00000000, 0x40000000, 0x00000000, |
9300 | 0x033, 0x00000020, | 11547 | 0x033, 0x00000020, |
9301 | 0x03F, 0x00000468, | 11548 | 0x03F, 0x00000467, |
9302 | 0x033, 0x00000021, | 11549 | 0x033, 0x00000021, |
9303 | 0x03F, 0x00000868, | 11550 | 0x03F, 0x00000867, |
9304 | 0x033, 0x00000022, | 11551 | 0x033, 0x00000022, |
9305 | 0x03F, 0x00000909, | 11552 | 0x03F, 0x00000908, |
9306 | 0x033, 0x00000023, | 11553 | 0x033, 0x00000023, |
9307 | 0x03F, 0x00000D0A, | 11554 | 0x03F, 0x00000D09, |
9308 | 0x033, 0x00000024, | 11555 | 0x033, 0x00000024, |
9309 | 0x03F, 0x00000D4A, | 11556 | 0x03F, 0x00000D49, |
9310 | 0x033, 0x00000025, | 11557 | 0x033, 0x00000025, |
9311 | 0x03F, 0x00000D8B, | 11558 | 0x03F, 0x00000D8A, |
9312 | 0x033, 0x00000026, | 11559 | 0x033, 0x00000026, |
9313 | 0x03F, 0x00000DEB, | 11560 | 0x03F, 0x00000DEB, |
9314 | 0x033, 0x00000027, | 11561 | 0x033, 0x00000027, |
@@ -9321,17 +11568,63 @@ static const u32 rtw8822c_rf_b[] = { | |||
9321 | 0x03F, 0x00000DF7, | 11568 | 0x03F, 0x00000DF7, |
9322 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, | 11569 | 0x93000002, 0x00000000, 0x40000000, 0x00000000, |
9323 | 0x033, 0x00000020, | 11570 | 0x033, 0x00000020, |
9324 | 0x03F, 0x00000468, | 11571 | 0x03F, 0x00000467, |
9325 | 0x033, 0x00000021, | 11572 | 0x033, 0x00000021, |
9326 | 0x03F, 0x00000868, | 11573 | 0x03F, 0x00000867, |
9327 | 0x033, 0x00000022, | 11574 | 0x033, 0x00000022, |
9328 | 0x03F, 0x00000909, | 11575 | 0x03F, 0x00000908, |
9329 | 0x033, 0x00000023, | 11576 | 0x033, 0x00000023, |
9330 | 0x03F, 0x00000D0A, | 11577 | 0x03F, 0x00000D09, |
9331 | 0x033, 0x00000024, | 11578 | 0x033, 0x00000024, |
9332 | 0x03F, 0x00000D4A, | 11579 | 0x03F, 0x00000D49, |
9333 | 0x033, 0x00000025, | 11580 | 0x033, 0x00000025, |
9334 | 0x03F, 0x00000D8B, | 11581 | 0x03F, 0x00000D8A, |
11582 | 0x033, 0x00000026, | ||
11583 | 0x03F, 0x00000DEB, | ||
11584 | 0x033, 0x00000027, | ||
11585 | 0x03F, 0x00000DEE, | ||
11586 | 0x033, 0x00000028, | ||
11587 | 0x03F, 0x00000DF1, | ||
11588 | 0x033, 0x00000029, | ||
11589 | 0x03F, 0x00000DF4, | ||
11590 | 0x033, 0x0000002A, | ||
11591 | 0x03F, 0x00000DF7, | ||
11592 | 0x93000003, 0x00000000, 0x40000000, 0x00000000, | ||
11593 | 0x033, 0x00000020, | ||
11594 | 0x03F, 0x00000467, | ||
11595 | 0x033, 0x00000021, | ||
11596 | 0x03F, 0x00000867, | ||
11597 | 0x033, 0x00000022, | ||
11598 | 0x03F, 0x00000908, | ||
11599 | 0x033, 0x00000023, | ||
11600 | 0x03F, 0x00000D09, | ||
11601 | 0x033, 0x00000024, | ||
11602 | 0x03F, 0x00000D49, | ||
11603 | 0x033, 0x00000025, | ||
11604 | 0x03F, 0x00000D8A, | ||
11605 | 0x033, 0x00000026, | ||
11606 | 0x03F, 0x00000DEB, | ||
11607 | 0x033, 0x00000027, | ||
11608 | 0x03F, 0x00000DEE, | ||
11609 | 0x033, 0x00000028, | ||
11610 | 0x03F, 0x00000DF1, | ||
11611 | 0x033, 0x00000029, | ||
11612 | 0x03F, 0x00000DF4, | ||
11613 | 0x033, 0x0000002A, | ||
11614 | 0x03F, 0x00000DF7, | ||
11615 | 0x93000004, 0x00000000, 0x40000000, 0x00000000, | ||
11616 | 0x033, 0x00000020, | ||
11617 | 0x03F, 0x00000467, | ||
11618 | 0x033, 0x00000021, | ||
11619 | 0x03F, 0x00000867, | ||
11620 | 0x033, 0x00000022, | ||
11621 | 0x03F, 0x00000908, | ||
11622 | 0x033, 0x00000023, | ||
11623 | 0x03F, 0x00000D09, | ||
11624 | 0x033, 0x00000024, | ||
11625 | 0x03F, 0x00000D49, | ||
11626 | 0x033, 0x00000025, | ||
11627 | 0x03F, 0x00000D8A, | ||
9335 | 0x033, 0x00000026, | 11628 | 0x033, 0x00000026, |
9336 | 0x03F, 0x00000DEB, | 11629 | 0x03F, 0x00000DEB, |
9337 | 0x033, 0x00000027, | 11630 | 0x033, 0x00000027, |
@@ -9396,9 +11689,27 @@ static const u32 rtw8822c_rf_b[] = { | |||
9396 | 0x0FE, 0x00000000, | 11689 | 0x0FE, 0x00000000, |
9397 | 0x0FE, 0x00000000, | 11690 | 0x0FE, 0x00000000, |
9398 | 0x092, 0x00084800, | 11691 | 0x092, 0x00084800, |
9399 | 0x08F, 0x0000182C, | 11692 | 0x08F, 0x00001B4C, |
9400 | 0x088, 0x0004326B, | 11693 | 0x088, 0x0004326B, |
9401 | 0x019, 0x00000005, | 11694 | 0x019, 0x00000005, |
11695 | 0x0EF, 0x00080000, | ||
11696 | 0x033, 0x00000004, | ||
11697 | 0x03F, 0x000FD83F, | ||
11698 | 0x0EF, 0x00000000, | ||
11699 | 0x0EF, 0x00080000, | ||
11700 | 0x033, 0x00000006, | ||
11701 | 0x03F, 0x000DD83F, | ||
11702 | 0x0EF, 0x00000000, | ||
11703 | 0x0EF, 0x00080000, | ||
11704 | 0x033, 0x00000007, | ||
11705 | 0x03F, 0x000DF7BF, | ||
11706 | 0x0EF, 0x00000000, | ||
11707 | 0x0EF, 0x00040000, | ||
11708 | 0x033, 0x00000006, | ||
11709 | 0x03F, 0x00000002, | ||
11710 | 0x033, 0x00000007, | ||
11711 | 0x03F, 0x00000002, | ||
11712 | 0x0EF, 0x00000000, | ||
9402 | }; | 11713 | }; |
9403 | 11714 | ||
9404 | RTW_DECL_TABLE_RF_RADIO(rtw8822c_rf_b, B); | 11715 | RTW_DECL_TABLE_RF_RADIO(rtw8822c_rf_b, B); |
@@ -11163,6 +13474,109 @@ static const struct rtw_txpwr_lmt_cfg_pair rtw8822c_txpwr_lmt_type0[] = { | |||
11163 | 13474 | ||
11164 | RTW_DECL_TABLE_TXPWR_LMT(rtw8822c_txpwr_lmt_type0); | 13475 | RTW_DECL_TABLE_TXPWR_LMT(rtw8822c_txpwr_lmt_type0); |
11165 | 13476 | ||
13477 | static const u32 rtw8822c_dpk_afe_no_dpk[] = { | ||
13478 | 0x18a4, BIT(7), 0, | ||
13479 | 0x41a4, BIT(7), 0, | ||
13480 | 0x1c38, MASKDWORD, 0xffa1005e, | ||
13481 | 0x1830, MASKDWORD, 0x700b8041, | ||
13482 | 0x1830, MASKDWORD, 0x70144041, | ||
13483 | 0x1830, MASKDWORD, 0x70244041, | ||
13484 | 0x1830, MASKDWORD, 0x70344041, | ||
13485 | 0x1830, MASKDWORD, 0x70444041, | ||
13486 | 0x1830, MASKDWORD, 0x705b8041, | ||
13487 | 0x1830, MASKDWORD, 0x70644041, | ||
13488 | 0x4130, MASKDWORD, 0x700b8041, | ||
13489 | 0x4130, MASKDWORD, 0x70144041, | ||
13490 | 0x4130, MASKDWORD, 0x70244041, | ||
13491 | 0x4130, MASKDWORD, 0x70344041, | ||
13492 | 0x4130, MASKDWORD, 0x70444041, | ||
13493 | 0x4130, MASKDWORD, 0x705b8041, | ||
13494 | 0x4130, MASKDWORD, 0x70644041, | ||
13495 | 0x1830, MASKDWORD, 0x707b8041, | ||
13496 | 0x1830, MASKDWORD, 0x708b8041, | ||
13497 | 0x1830, MASKDWORD, 0x709b8041, | ||
13498 | 0x1830, MASKDWORD, 0x70ab8041, | ||
13499 | 0x1830, MASKDWORD, 0x70bb8041, | ||
13500 | 0x1830, MASKDWORD, 0x70cb8041, | ||
13501 | 0x1830, MASKDWORD, 0x70db8041, | ||
13502 | 0x1830, MASKDWORD, 0x70eb8041, | ||
13503 | 0x1830, MASKDWORD, 0x70fb8041, | ||
13504 | 0x4130, MASKDWORD, 0x707b8041, | ||
13505 | 0x4130, MASKDWORD, 0x708b8041, | ||
13506 | 0x4130, MASKDWORD, 0x709b8041, | ||
13507 | 0x4130, MASKDWORD, 0x70ab8041, | ||
13508 | 0x4130, MASKDWORD, 0x70bb8041, | ||
13509 | 0x4130, MASKDWORD, 0x70cb8041, | ||
13510 | 0x4130, MASKDWORD, 0x70db8041, | ||
13511 | 0x4130, MASKDWORD, 0x70eb8041, | ||
13512 | 0x4130, MASKDWORD, 0x70fb8041, | ||
13513 | }; | ||
13514 | |||
13515 | RTW_DECL_TABLE_DPK(rtw8822c_dpk_afe_no_dpk); | ||
13516 | |||
13517 | static const u32 rtw8822c_dpk_afe_is_dpk[] = { | ||
13518 | 0x1c38, MASKDWORD, 0xFFFFFFFF, | ||
13519 | 0x1830, MASKDWORD, 0x700f0001, | ||
13520 | 0x1830, MASKDWORD, 0x700f0001, | ||
13521 | 0x1830, MASKDWORD, 0x701f0001, | ||
13522 | 0x1830, MASKDWORD, 0x702f0001, | ||
13523 | 0x1830, MASKDWORD, 0x703f0001, | ||
13524 | 0x1830, MASKDWORD, 0x704f0001, | ||
13525 | 0x1830, MASKDWORD, 0x705f0001, | ||
13526 | 0x1830, MASKDWORD, 0x706f0001, | ||
13527 | 0x1830, MASKDWORD, 0x707f0001, | ||
13528 | 0x1830, MASKDWORD, 0x708f0001, | ||
13529 | 0x1830, MASKDWORD, 0x709f0001, | ||
13530 | 0x1830, MASKDWORD, 0x70af0001, | ||
13531 | 0x1830, MASKDWORD, 0x70bf0001, | ||
13532 | 0x1830, MASKDWORD, 0x70cf0001, | ||
13533 | 0x1830, MASKDWORD, 0x70df0001, | ||
13534 | 0x1830, MASKDWORD, 0x70ef0001, | ||
13535 | 0x1830, MASKDWORD, 0x70ff0001, | ||
13536 | 0x1830, MASKDWORD, 0x70ff0001, | ||
13537 | 0x4130, MASKDWORD, 0x700f0001, | ||
13538 | 0x4130, MASKDWORD, 0x700f0001, | ||
13539 | 0x4130, MASKDWORD, 0x701f0001, | ||
13540 | 0x4130, MASKDWORD, 0x702f0001, | ||
13541 | 0x4130, MASKDWORD, 0x703f0001, | ||
13542 | 0x4130, MASKDWORD, 0x704f0001, | ||
13543 | 0x4130, MASKDWORD, 0x705f0001, | ||
13544 | 0x4130, MASKDWORD, 0x706f0001, | ||
13545 | 0x4130, MASKDWORD, 0x707f0001, | ||
13546 | 0x4130, MASKDWORD, 0x708f0001, | ||
13547 | 0x4130, MASKDWORD, 0x709f0001, | ||
13548 | 0x4130, MASKDWORD, 0x70af0001, | ||
13549 | 0x4130, MASKDWORD, 0x70bf0001, | ||
13550 | 0x4130, MASKDWORD, 0x70cf0001, | ||
13551 | 0x4130, MASKDWORD, 0x70df0001, | ||
13552 | 0x4130, MASKDWORD, 0x70ef0001, | ||
13553 | 0x4130, MASKDWORD, 0x70ff0001, | ||
13554 | 0x4130, MASKDWORD, 0x70ff0001, | ||
13555 | 0x18a4, BIT(7), 1, | ||
13556 | 0x41a4, BIT(7), 1, | ||
13557 | }; | ||
13558 | |||
13559 | RTW_DECL_TABLE_DPK(rtw8822c_dpk_afe_is_dpk); | ||
13560 | |||
13561 | static const u32 rtw8822c_dpk_mac_bb[] = { | ||
13562 | 0x1e24, BIT(17), 0x1, | ||
13563 | 0x1d58, GENMASK(11, 3), 0x1ff, | ||
13564 | 0x1864, BIT(31), 0x1, | ||
13565 | 0x4164, BIT(31), 0x1, | ||
13566 | 0x180c, BIT(27), 0x1, | ||
13567 | 0x410c, BIT(27), 0x1, | ||
13568 | 0x186c, BIT(7), 0x1, | ||
13569 | 0x416c, BIT(7), 0x1, | ||
13570 | 0x180c, GENMASK(1, 0), 0x0, | ||
13571 | 0x410c, GENMASK(1, 0), 0x0, | ||
13572 | 0x1a14, GENMASK(9, 8), 0x3, | ||
13573 | 0x80c, GENMASK(3, 0), 0x8, | ||
13574 | 0x824, GENMASK(19, 16), 0x3, | ||
13575 | 0x824, GENMASK(27, 24), 0x3, | ||
13576 | }; | ||
13577 | |||
13578 | RTW_DECL_TABLE_DPK(rtw8822c_dpk_mac_bb); | ||
13579 | |||
11166 | static const u32 rtw8822c_array_mp_cal_init[] = { | 13580 | static const u32 rtw8822c_array_mp_cal_init[] = { |
11167 | 0x1b00, 0x00000008, | 13581 | 0x1b00, 0x00000008, |
11168 | 0x1b00, 0x00A70008, | 13582 | 0x1b00, 0x00A70008, |
@@ -11187,6 +13601,7 @@ static const u32 rtw8822c_array_mp_cal_init[] = { | |||
11187 | 0x1b9c, 0x00000000, | 13601 | 0x1b9c, 0x00000000, |
11188 | 0x1bc0, 0x01000000, | 13602 | 0x1bc0, 0x01000000, |
11189 | 0x1bcc, 0x00000000, | 13603 | 0x1bcc, 0x00000000, |
13604 | 0x1bd8, 0xe0000001, | ||
11190 | 0x1be4, 0x00000000, | 13605 | 0x1be4, 0x00000000, |
11191 | 0x1bec, 0x40000000, | 13606 | 0x1bec, 0x40000000, |
11192 | 0x1b40, 0x40000000, | 13607 | 0x1b40, 0x40000000, |
@@ -11450,6 +13865,7 @@ static const u32 rtw8822c_array_mp_cal_init[] = { | |||
11450 | 0x1b9c, 0x00000000, | 13865 | 0x1b9c, 0x00000000, |
11451 | 0x1bc0, 0x01000000, | 13866 | 0x1bc0, 0x01000000, |
11452 | 0x1bcc, 0x00000000, | 13867 | 0x1bcc, 0x00000000, |
13868 | 0x1bd8, 0xe0000001, | ||
11453 | 0x1be4, 0x00000000, | 13869 | 0x1be4, 0x00000000, |
11454 | 0x1bec, 0x40000000, | 13870 | 0x1bec, 0x40000000, |
11455 | 0x1b60, 0x1F100000, | 13871 | 0x1b60, 0x1F100000, |
@@ -11656,1656 +14072,1970 @@ static const u32 rtw8822c_array_mp_cal_init[] = { | |||
11656 | 0x1b80, 0x00020257, | 14072 | 0x1b80, 0x00020257, |
11657 | 0x1b80, 0x30000265, | 14073 | 0x1b80, 0x30000265, |
11658 | 0x1b80, 0x30000267, | 14074 | 0x1b80, 0x30000267, |
11659 | 0x1b80, 0xa5100275, | 14075 | 0x1b80, 0xa5110275, |
11660 | 0x1b80, 0xa5100277, | 14076 | 0x1b80, 0xa5110277, |
11661 | 0x1b80, 0xe3520285, | 14077 | 0x1b80, 0xe3ef0285, |
11662 | 0x1b80, 0xe3520287, | 14078 | 0x1b80, 0xe3ef0287, |
11663 | 0x1b80, 0xf01d0295, | 14079 | 0x1b80, 0xf01f0295, |
11664 | 0x1b80, 0xf01d0297, | 14080 | 0x1b80, 0xf01f0297, |
11665 | 0x1b80, 0xf11d02a5, | 14081 | 0x1b80, 0xf11f02a5, |
11666 | 0x1b80, 0xf11d02a7, | 14082 | 0x1b80, 0xf11f02a7, |
11667 | 0x1b80, 0xf21d02b5, | 14083 | 0x1b80, 0xf21f02b5, |
11668 | 0x1b80, 0xf21d02b7, | 14084 | 0x1b80, 0xf21f02b7, |
11669 | 0x1b80, 0xf31d02c5, | 14085 | 0x1b80, 0xf31f02c5, |
11670 | 0x1b80, 0xf31d02c7, | 14086 | 0x1b80, 0xf31f02c7, |
11671 | 0x1b80, 0xf41d02d5, | 14087 | 0x1b80, 0xf41f02d5, |
11672 | 0x1b80, 0xf41d02d7, | 14088 | 0x1b80, 0xf41f02d7, |
11673 | 0x1b80, 0xf51d02e5, | 14089 | 0x1b80, 0xf51f02e5, |
11674 | 0x1b80, 0xf51d02e7, | 14090 | 0x1b80, 0xf51f02e7, |
11675 | 0x1b80, 0xf61d02f5, | 14091 | 0x1b80, 0xf61f02f5, |
11676 | 0x1b80, 0xf61d02f7, | 14092 | 0x1b80, 0xf61f02f7, |
11677 | 0x1b80, 0xf71d0305, | 14093 | 0x1b80, 0xf71f0305, |
11678 | 0x1b80, 0xf71d0307, | 14094 | 0x1b80, 0xf71f0307, |
11679 | 0x1b80, 0xf81d0315, | 14095 | 0x1b80, 0xf81f0315, |
11680 | 0x1b80, 0xf81d0317, | 14096 | 0x1b80, 0xf81f0317, |
11681 | 0x1b80, 0xf91d0325, | 14097 | 0x1b80, 0xf91f0325, |
11682 | 0x1b80, 0xf91d0327, | 14098 | 0x1b80, 0xf91f0327, |
11683 | 0x1b80, 0xfa1d0335, | 14099 | 0x1b80, 0xfa1f0335, |
11684 | 0x1b80, 0xfa1d0337, | 14100 | 0x1b80, 0xfa1f0337, |
11685 | 0x1b80, 0xfb1d0345, | 14101 | 0x1b80, 0xfb1f0345, |
11686 | 0x1b80, 0xfb1d0347, | 14102 | 0x1b80, 0xfb1f0347, |
11687 | 0x1b80, 0xfc1d0355, | 14103 | 0x1b80, 0xfc1f0355, |
11688 | 0x1b80, 0xfc1d0357, | 14104 | 0x1b80, 0xfc1f0357, |
11689 | 0x1b80, 0xfd1d0365, | 14105 | 0x1b80, 0xfd1f0365, |
11690 | 0x1b80, 0xfd1d0367, | 14106 | 0x1b80, 0xfd1f0367, |
11691 | 0x1b80, 0xf21d0375, | 14107 | 0x1b80, 0xfe1f0375, |
11692 | 0x1b80, 0xf21d0377, | 14108 | 0x1b80, 0xfe1f0377, |
11693 | 0x1b80, 0xf31d0385, | 14109 | 0x1b80, 0xf11f0385, |
11694 | 0x1b80, 0xf31d0387, | 14110 | 0x1b80, 0xf11f0387, |
11695 | 0x1b80, 0xf41d0395, | 14111 | 0x1b80, 0xf21f0395, |
11696 | 0x1b80, 0xf41d0397, | 14112 | 0x1b80, 0xf21f0397, |
11697 | 0x1b80, 0xf51d03a5, | 14113 | 0x1b80, 0xf31f03a5, |
11698 | 0x1b80, 0xf51d03a7, | 14114 | 0x1b80, 0xf31f03a7, |
11699 | 0x1b80, 0xf61d03b5, | 14115 | 0x1b80, 0xf41f03b5, |
11700 | 0x1b80, 0xf61d03b7, | 14116 | 0x1b80, 0xf41f03b7, |
11701 | 0x1b80, 0xf71d03c5, | 14117 | 0x1b80, 0xf51f03c5, |
11702 | 0x1b80, 0xf71d03c7, | 14118 | 0x1b80, 0xf51f03c7, |
11703 | 0x1b80, 0xf81d03d5, | 14119 | 0x1b80, 0xf61f03d5, |
11704 | 0x1b80, 0xf81d03d7, | 14120 | 0x1b80, 0xf61f03d7, |
11705 | 0x1b80, 0xf91d03e5, | 14121 | 0x1b80, 0xf71f03e5, |
11706 | 0x1b80, 0xf91d03e7, | 14122 | 0x1b80, 0xf71f03e7, |
11707 | 0x1b80, 0xfa1d03f5, | 14123 | 0x1b80, 0xf81f03f5, |
11708 | 0x1b80, 0xfa1d03f7, | 14124 | 0x1b80, 0xf81f03f7, |
11709 | 0x1b80, 0xfb1d0405, | 14125 | 0x1b80, 0xf91f0405, |
11710 | 0x1b80, 0xfb1d0407, | 14126 | 0x1b80, 0xf91f0407, |
11711 | 0x1b80, 0xfc1d0415, | 14127 | 0x1b80, 0xfa1f0415, |
11712 | 0x1b80, 0xfc1d0417, | 14128 | 0x1b80, 0xfa1f0417, |
11713 | 0x1b80, 0xfd1d0425, | 14129 | 0x1b80, 0xfb1f0425, |
11714 | 0x1b80, 0xfd1d0427, | 14130 | 0x1b80, 0xfb1f0427, |
11715 | 0x1b80, 0xfe1d0435, | 14131 | 0x1b80, 0xfc1f0435, |
11716 | 0x1b80, 0xfe1d0437, | 14132 | 0x1b80, 0xfc1f0437, |
11717 | 0x1b80, 0xff1d0445, | 14133 | 0x1b80, 0xfd1f0445, |
11718 | 0x1b80, 0xff1d0447, | 14134 | 0x1b80, 0xfd1f0447, |
11719 | 0x1b80, 0x00010455, | 14135 | 0x1b80, 0xfe1f0455, |
11720 | 0x1b80, 0x00010457, | 14136 | 0x1b80, 0xfe1f0457, |
11721 | 0x1b80, 0x30620465, | 14137 | 0x1b80, 0xff1f0465, |
11722 | 0x1b80, 0x30620467, | 14138 | 0x1b80, 0xff1f0467, |
11723 | 0x1b80, 0x307a0475, | 14139 | 0x1b80, 0x00010475, |
11724 | 0x1b80, 0x307a0477, | 14140 | 0x1b80, 0x00010477, |
11725 | 0x1b80, 0x307c0485, | 14141 | 0x1b80, 0x30660485, |
11726 | 0x1b80, 0x307c0487, | 14142 | 0x1b80, 0x30660487, |
11727 | 0x1b80, 0x30eb0495, | 14143 | 0x1b80, 0x307e0495, |
11728 | 0x1b80, 0x30eb0497, | 14144 | 0x1b80, 0x307e0497, |
11729 | 0x1b80, 0x308004a5, | 14145 | 0x1b80, 0x308204a5, |
11730 | 0x1b80, 0x308004a7, | 14146 | 0x1b80, 0x308204a7, |
11731 | 0x1b80, 0x308c04b5, | 14147 | 0x1b80, 0x310c04b5, |
11732 | 0x1b80, 0x308c04b7, | 14148 | 0x1b80, 0x310c04b7, |
11733 | 0x1b80, 0x309804c5, | 14149 | 0x1b80, 0x308904c5, |
11734 | 0x1b80, 0x309804c7, | 14150 | 0x1b80, 0x308904c7, |
11735 | 0x1b80, 0x307f04d5, | 14151 | 0x1b80, 0x309804d5, |
11736 | 0x1b80, 0x307f04d7, | 14152 | 0x1b80, 0x309804d7, |
11737 | 0x1b80, 0x308b04e5, | 14153 | 0x1b80, 0x30a704e5, |
11738 | 0x1b80, 0x308b04e7, | 14154 | 0x1b80, 0x30a704e7, |
11739 | 0x1b80, 0x309704f5, | 14155 | 0x1b80, 0x308804f5, |
11740 | 0x1b80, 0x309704f7, | 14156 | 0x1b80, 0x308804f7, |
11741 | 0x1b80, 0x30ef0505, | 14157 | 0x1b80, 0x30970505, |
11742 | 0x1b80, 0x30ef0507, | 14158 | 0x1b80, 0x30970507, |
11743 | 0x1b80, 0x30fa0515, | 14159 | 0x1b80, 0x30a60515, |
11744 | 0x1b80, 0x30fa0517, | 14160 | 0x1b80, 0x30a60517, |
11745 | 0x1b80, 0x31050525, | 14161 | 0x1b80, 0x31100525, |
11746 | 0x1b80, 0x31050527, | 14162 | 0x1b80, 0x31100527, |
11747 | 0x1b80, 0x316a0535, | 14163 | 0x1b80, 0x311b0535, |
11748 | 0x1b80, 0x316a0537, | 14164 | 0x1b80, 0x311b0537, |
11749 | 0x1b80, 0x307a0545, | 14165 | 0x1b80, 0x31260545, |
11750 | 0x1b80, 0x307a0547, | 14166 | 0x1b80, 0x31260547, |
11751 | 0x1b80, 0x30e90555, | 14167 | 0x1b80, 0x31ae0555, |
11752 | 0x1b80, 0x30e90557, | 14168 | 0x1b80, 0x31ae0557, |
11753 | 0x1b80, 0x31870565, | 14169 | 0x1b80, 0x318b0565, |
11754 | 0x1b80, 0x31870567, | 14170 | 0x1b80, 0x318b0567, |
11755 | 0x1b80, 0x31a00575, | 14171 | 0x1b80, 0x31cb0575, |
11756 | 0x1b80, 0x31a00577, | 14172 | 0x1b80, 0x31cb0577, |
11757 | 0x1b80, 0x31ba0585, | 14173 | 0x1b80, 0x307e0585, |
11758 | 0x1b80, 0x31ba0587, | 14174 | 0x1b80, 0x307e0587, |
11759 | 0x1b80, 0x31c20595, | 14175 | 0x1b80, 0x310a0595, |
11760 | 0x1b80, 0x31c20597, | 14176 | 0x1b80, 0x310a0597, |
11761 | 0x1b80, 0x31ca05a5, | 14177 | 0x1b80, 0x31db05a5, |
11762 | 0x1b80, 0x31ca05a7, | 14178 | 0x1b80, 0x31db05a7, |
11763 | 0x1b80, 0x31d205b5, | 14179 | 0x1b80, 0x31f405b5, |
11764 | 0x1b80, 0x31d205b7, | 14180 | 0x1b80, 0x31f405b7, |
11765 | 0x1b80, 0x31da05c5, | 14181 | 0x1b80, 0x320e05c5, |
11766 | 0x1b80, 0x31da05c7, | 14182 | 0x1b80, 0x320e05c7, |
11767 | 0x1b80, 0x31e905d5, | 14183 | 0x1b80, 0x321605d5, |
11768 | 0x1b80, 0x31e905d7, | 14184 | 0x1b80, 0x321605d7, |
11769 | 0x1b80, 0x31f805e5, | 14185 | 0x1b80, 0x321e05e5, |
11770 | 0x1b80, 0x31f805e7, | 14186 | 0x1b80, 0x321e05e7, |
11771 | 0x1b80, 0x31fe05f5, | 14187 | 0x1b80, 0x322605f5, |
11772 | 0x1b80, 0x31fe05f7, | 14188 | 0x1b80, 0x322605f7, |
11773 | 0x1b80, 0x32040605, | 14189 | 0x1b80, 0x322e0605, |
11774 | 0x1b80, 0x32040607, | 14190 | 0x1b80, 0x322e0607, |
11775 | 0x1b80, 0x320a0615, | 14191 | 0x1b80, 0x323d0615, |
11776 | 0x1b80, 0x320a0617, | 14192 | 0x1b80, 0x323d0617, |
11777 | 0x1b80, 0xe2eb0625, | 14193 | 0x1b80, 0x324c0625, |
11778 | 0x1b80, 0xe2eb0627, | 14194 | 0x1b80, 0x324c0627, |
11779 | 0x1b80, 0x4d040635, | 14195 | 0x1b80, 0x32520635, |
11780 | 0x1b80, 0x4d040637, | 14196 | 0x1b80, 0x32520637, |
11781 | 0x1b80, 0x20800645, | 14197 | 0x1b80, 0x32580645, |
11782 | 0x1b80, 0x20800647, | 14198 | 0x1b80, 0x32580647, |
11783 | 0x1b80, 0x00000655, | 14199 | 0x1b80, 0x325e0655, |
11784 | 0x1b80, 0x00000657, | 14200 | 0x1b80, 0x325e0657, |
11785 | 0x1b80, 0x4d000665, | 14201 | 0x1b80, 0xe3880665, |
11786 | 0x1b80, 0x4d000667, | 14202 | 0x1b80, 0xe3880667, |
11787 | 0x1b80, 0x55070675, | 14203 | 0x1b80, 0x4d040675, |
11788 | 0x1b80, 0x55070677, | 14204 | 0x1b80, 0x4d040677, |
11789 | 0x1b80, 0xe2e30685, | 14205 | 0x1b80, 0x20800685, |
11790 | 0x1b80, 0xe2e30687, | 14206 | 0x1b80, 0x20800687, |
11791 | 0x1b80, 0xe2e30695, | 14207 | 0x1b80, 0x00000695, |
11792 | 0x1b80, 0xe2e30697, | 14208 | 0x1b80, 0x00000697, |
11793 | 0x1b80, 0x4d0406a5, | 14209 | 0x1b80, 0x4d0006a5, |
11794 | 0x1b80, 0x4d0406a7, | 14210 | 0x1b80, 0x4d0006a7, |
11795 | 0x1b80, 0x208806b5, | 14211 | 0x1b80, 0x550706b5, |
11796 | 0x1b80, 0x208806b7, | 14212 | 0x1b80, 0x550706b7, |
11797 | 0x1b80, 0x020006c5, | 14213 | 0x1b80, 0xe38006c5, |
11798 | 0x1b80, 0x020006c7, | 14214 | 0x1b80, 0xe38006c7, |
11799 | 0x1b80, 0x4d0006d5, | 14215 | 0x1b80, 0xe38006d5, |
11800 | 0x1b80, 0x4d0006d7, | 14216 | 0x1b80, 0xe38006d7, |
11801 | 0x1b80, 0x550f06e5, | 14217 | 0x1b80, 0x4d0406e5, |
11802 | 0x1b80, 0x550f06e7, | 14218 | 0x1b80, 0x4d0406e7, |
11803 | 0x1b80, 0xe2e306f5, | 14219 | 0x1b80, 0x208806f5, |
11804 | 0x1b80, 0xe2e306f7, | 14220 | 0x1b80, 0x208806f7, |
11805 | 0x1b80, 0x4f020705, | 14221 | 0x1b80, 0x02000705, |
11806 | 0x1b80, 0x4f020707, | 14222 | 0x1b80, 0x02000707, |
11807 | 0x1b80, 0x4e000715, | 14223 | 0x1b80, 0x4d000715, |
11808 | 0x1b80, 0x4e000717, | 14224 | 0x1b80, 0x4d000717, |
11809 | 0x1b80, 0x53020725, | 14225 | 0x1b80, 0x550f0725, |
11810 | 0x1b80, 0x53020727, | 14226 | 0x1b80, 0x550f0727, |
11811 | 0x1b80, 0x52010735, | 14227 | 0x1b80, 0xe3800735, |
11812 | 0x1b80, 0x52010737, | 14228 | 0x1b80, 0xe3800737, |
11813 | 0x1b80, 0xe2e70745, | 14229 | 0x1b80, 0x4f020745, |
11814 | 0x1b80, 0xe2e70747, | 14230 | 0x1b80, 0x4f020747, |
11815 | 0x1b80, 0x4d080755, | 14231 | 0x1b80, 0x4e000755, |
11816 | 0x1b80, 0x4d080757, | 14232 | 0x1b80, 0x4e000757, |
11817 | 0x1b80, 0x57100765, | 14233 | 0x1b80, 0x53020765, |
11818 | 0x1b80, 0x57100767, | 14234 | 0x1b80, 0x53020767, |
11819 | 0x1b80, 0x57000775, | 14235 | 0x1b80, 0x52010775, |
11820 | 0x1b80, 0x57000777, | 14236 | 0x1b80, 0x52010777, |
11821 | 0x1b80, 0x4d000785, | 14237 | 0x1b80, 0xe3840785, |
11822 | 0x1b80, 0x4d000787, | 14238 | 0x1b80, 0xe3840787, |
11823 | 0x1b80, 0x00010795, | 14239 | 0x1b80, 0x4d080795, |
11824 | 0x1b80, 0x00010797, | 14240 | 0x1b80, 0x4d080797, |
11825 | 0x1b80, 0xe2eb07a5, | 14241 | 0x1b80, 0x571007a5, |
11826 | 0x1b80, 0xe2eb07a7, | 14242 | 0x1b80, 0x571007a7, |
11827 | 0x1b80, 0x000107b5, | 14243 | 0x1b80, 0x570007b5, |
11828 | 0x1b80, 0x000107b7, | 14244 | 0x1b80, 0x570007b7, |
11829 | 0x1b80, 0x620607c5, | 14245 | 0x1b80, 0x4d0007c5, |
11830 | 0x1b80, 0x620607c7, | 14246 | 0x1b80, 0x4d0007c7, |
11831 | 0x1b80, 0xe2eb07d5, | 14247 | 0x1b80, 0x000107d5, |
11832 | 0x1b80, 0xe2eb07d7, | 14248 | 0x1b80, 0x000107d7, |
11833 | 0x1b80, 0x000107e5, | 14249 | 0x1b80, 0xe38807e5, |
11834 | 0x1b80, 0x000107e7, | 14250 | 0x1b80, 0xe38807e7, |
11835 | 0x1b80, 0x620607f5, | 14251 | 0x1b80, 0x0bbd07f5, |
11836 | 0x1b80, 0x620607f7, | 14252 | 0x1b80, 0x0bbd07f7, |
11837 | 0x1b80, 0x30ad0805, | 14253 | 0x1b80, 0xe3e20805, |
11838 | 0x1b80, 0x30ad0807, | 14254 | 0x1b80, 0xe3e20807, |
11839 | 0x1b80, 0x00260815, | 14255 | 0x1b80, 0x00010815, |
11840 | 0x1b80, 0x00260817, | 14256 | 0x1b80, 0x00010817, |
11841 | 0x1b80, 0xe3450825, | 14257 | 0x1b80, 0x62060825, |
11842 | 0x1b80, 0xe3450827, | 14258 | 0x1b80, 0x62060827, |
11843 | 0x1b80, 0x00020835, | 14259 | 0x1b80, 0xe3880835, |
11844 | 0x1b80, 0x00020837, | 14260 | 0x1b80, 0xe3880837, |
11845 | 0x1b80, 0x54ec0845, | 14261 | 0x1b80, 0x0bbd0845, |
11846 | 0x1b80, 0x54ec0847, | 14262 | 0x1b80, 0x0bbd0847, |
11847 | 0x1b80, 0x0ba60855, | 14263 | 0x1b80, 0xe3e20855, |
11848 | 0x1b80, 0x0ba60857, | 14264 | 0x1b80, 0xe3e20857, |
11849 | 0x1b80, 0x00260865, | 14265 | 0x1b80, 0x00010865, |
11850 | 0x1b80, 0x00260867, | 14266 | 0x1b80, 0x00010867, |
11851 | 0x1b80, 0xe3450875, | 14267 | 0x1b80, 0x00010875, |
11852 | 0x1b80, 0xe3450877, | 14268 | 0x1b80, 0x00010877, |
11853 | 0x1b80, 0x00020885, | 14269 | 0x1b80, 0x62060885, |
11854 | 0x1b80, 0x00020887, | 14270 | 0x1b80, 0x62060887, |
11855 | 0x1b80, 0x63c30895, | 14271 | 0x1b80, 0x30bc0895, |
11856 | 0x1b80, 0x63c30897, | 14272 | 0x1b80, 0x30bc0897, |
11857 | 0x1b80, 0x30d908a5, | 14273 | 0x1b80, 0x002608a5, |
11858 | 0x1b80, 0x30d908a7, | 14274 | 0x1b80, 0x002608a7, |
11859 | 0x1b80, 0x620608b5, | 14275 | 0x1b80, 0xe3e208b5, |
11860 | 0x1b80, 0x620608b7, | 14276 | 0x1b80, 0xe3e208b7, |
11861 | 0x1b80, 0x30a508c5, | 14277 | 0x1b80, 0x000208c5, |
11862 | 0x1b80, 0x30a508c7, | 14278 | 0x1b80, 0x000208c7, |
11863 | 0x1b80, 0x002408d5, | 14279 | 0x1b80, 0x54ec08d5, |
11864 | 0x1b80, 0x002408d7, | 14280 | 0x1b80, 0x54ec08d7, |
11865 | 0x1b80, 0xe34508e5, | 14281 | 0x1b80, 0x0ba608e5, |
11866 | 0x1b80, 0xe34508e7, | 14282 | 0x1b80, 0x0ba608e7, |
11867 | 0x1b80, 0x000208f5, | 14283 | 0x1b80, 0x002608f5, |
11868 | 0x1b80, 0x000208f7, | 14284 | 0x1b80, 0x002608f7, |
11869 | 0x1b80, 0x54ea0905, | 14285 | 0x1b80, 0xe3e20905, |
11870 | 0x1b80, 0x54ea0907, | 14286 | 0x1b80, 0xe3e20907, |
11871 | 0x1b80, 0x0ba60915, | 14287 | 0x1b80, 0x00020915, |
11872 | 0x1b80, 0x0ba60917, | 14288 | 0x1b80, 0x00020917, |
11873 | 0x1b80, 0x00240925, | 14289 | 0x1b80, 0xf7f50925, |
11874 | 0x1b80, 0x00240927, | 14290 | 0x1b80, 0xf7f50927, |
11875 | 0x1b80, 0xe3450935, | 14291 | 0x1b80, 0x00300935, |
11876 | 0x1b80, 0xe3450937, | 14292 | 0x1b80, 0x00300937, |
11877 | 0x1b80, 0x00020945, | 14293 | 0x1b80, 0x63c30945, |
11878 | 0x1b80, 0x00020947, | 14294 | 0x1b80, 0x63c30947, |
11879 | 0x1b80, 0x63c30955, | 14295 | 0x1b80, 0x00020955, |
11880 | 0x1b80, 0x63c30957, | 14296 | 0x1b80, 0x00020957, |
11881 | 0x1b80, 0x30d90965, | 14297 | 0x1b80, 0x318b0965, |
11882 | 0x1b80, 0x30d90967, | 14298 | 0x1b80, 0x318b0967, |
11883 | 0x1b80, 0x62060975, | 14299 | 0x1b80, 0x62060975, |
11884 | 0x1b80, 0x62060977, | 14300 | 0x1b80, 0x62060977, |
11885 | 0x1b80, 0x6c100985, | 14301 | 0x1b80, 0x30b40985, |
11886 | 0x1b80, 0x6c100987, | 14302 | 0x1b80, 0x30b40987, |
11887 | 0x1b80, 0x6d0f0995, | 14303 | 0x1b80, 0x00240995, |
11888 | 0x1b80, 0x6d0f0997, | 14304 | 0x1b80, 0x00240997, |
11889 | 0x1b80, 0xe2eb09a5, | 14305 | 0x1b80, 0xe3e209a5, |
11890 | 0x1b80, 0xe2eb09a7, | 14306 | 0x1b80, 0xe3e209a7, |
11891 | 0x1b80, 0xe34509b5, | 14307 | 0x1b80, 0x000209b5, |
11892 | 0x1b80, 0xe34509b7, | 14308 | 0x1b80, 0x000209b7, |
11893 | 0x1b80, 0x6c2409c5, | 14309 | 0x1b80, 0x54ea09c5, |
11894 | 0x1b80, 0x6c2409c7, | 14310 | 0x1b80, 0x54ea09c7, |
11895 | 0x1b80, 0xe2eb09d5, | 14311 | 0x1b80, 0x0ba609d5, |
11896 | 0x1b80, 0xe2eb09d7, | 14312 | 0x1b80, 0x0ba609d7, |
11897 | 0x1b80, 0xe34509e5, | 14313 | 0x1b80, 0x002409e5, |
11898 | 0x1b80, 0xe34509e7, | 14314 | 0x1b80, 0x002409e7, |
11899 | 0x1b80, 0x6c4409f5, | 14315 | 0x1b80, 0xe3e209f5, |
11900 | 0x1b80, 0x6c4409f7, | 14316 | 0x1b80, 0xe3e209f7, |
11901 | 0x1b80, 0xe2eb0a05, | 14317 | 0x1b80, 0x00020a05, |
11902 | 0x1b80, 0xe2eb0a07, | 14318 | 0x1b80, 0x00020a07, |
11903 | 0x1b80, 0xe3450a15, | 14319 | 0x1b80, 0xf8e60a15, |
11904 | 0x1b80, 0xe3450a17, | 14320 | 0x1b80, 0xf8e60a17, |
11905 | 0x1b80, 0x6c640a25, | 14321 | 0x1b80, 0x00300a25, |
11906 | 0x1b80, 0x6c640a27, | 14322 | 0x1b80, 0x00300a27, |
11907 | 0x1b80, 0xe2eb0a35, | 14323 | 0x1b80, 0x63c30a35, |
11908 | 0x1b80, 0xe2eb0a37, | 14324 | 0x1b80, 0x63c30a37, |
11909 | 0x1b80, 0xe3450a45, | 14325 | 0x1b80, 0x00020a45, |
11910 | 0x1b80, 0xe3450a47, | 14326 | 0x1b80, 0x00020a47, |
11911 | 0x1b80, 0x0baa0a55, | 14327 | 0x1b80, 0x318b0a55, |
11912 | 0x1b80, 0x0baa0a57, | 14328 | 0x1b80, 0x318b0a57, |
11913 | 0x1b80, 0x6c840a65, | 14329 | 0x1b80, 0x62060a65, |
11914 | 0x1b80, 0x6c840a67, | 14330 | 0x1b80, 0x62060a67, |
11915 | 0x1b80, 0x6d0f0a75, | 14331 | 0x1b80, 0x6c100a75, |
11916 | 0x1b80, 0x6d0f0a77, | 14332 | 0x1b80, 0x6c100a77, |
11917 | 0x1b80, 0xe2eb0a85, | 14333 | 0x1b80, 0x6d0f0a85, |
11918 | 0x1b80, 0xe2eb0a87, | 14334 | 0x1b80, 0x6d0f0a87, |
11919 | 0x1b80, 0xe3450a95, | 14335 | 0x1b80, 0xe3880a95, |
11920 | 0x1b80, 0xe3450a97, | 14336 | 0x1b80, 0xe3880a97, |
11921 | 0x1b80, 0x6ca40aa5, | 14337 | 0x1b80, 0xe3e20aa5, |
11922 | 0x1b80, 0x6ca40aa7, | 14338 | 0x1b80, 0xe3e20aa7, |
11923 | 0x1b80, 0xe2eb0ab5, | 14339 | 0x1b80, 0x6c240ab5, |
11924 | 0x1b80, 0xe2eb0ab7, | 14340 | 0x1b80, 0x6c240ab7, |
11925 | 0x1b80, 0xe3450ac5, | 14341 | 0x1b80, 0xe3880ac5, |
11926 | 0x1b80, 0xe3450ac7, | 14342 | 0x1b80, 0xe3880ac7, |
11927 | 0x1b80, 0x0bac0ad5, | 14343 | 0x1b80, 0xe3e20ad5, |
11928 | 0x1b80, 0x0bac0ad7, | 14344 | 0x1b80, 0xe3e20ad7, |
11929 | 0x1b80, 0x6cc40ae5, | 14345 | 0x1b80, 0x6c440ae5, |
11930 | 0x1b80, 0x6cc40ae7, | 14346 | 0x1b80, 0x6c440ae7, |
11931 | 0x1b80, 0x6d0f0af5, | 14347 | 0x1b80, 0xe3880af5, |
11932 | 0x1b80, 0x6d0f0af7, | 14348 | 0x1b80, 0xe3880af7, |
11933 | 0x1b80, 0xe2eb0b05, | 14349 | 0x1b80, 0xe3e20b05, |
11934 | 0x1b80, 0xe2eb0b07, | 14350 | 0x1b80, 0xe3e20b07, |
11935 | 0x1b80, 0xe3450b15, | 14351 | 0x1b80, 0x6c640b15, |
11936 | 0x1b80, 0xe3450b17, | 14352 | 0x1b80, 0x6c640b17, |
11937 | 0x1b80, 0x6ce40b25, | 14353 | 0x1b80, 0xe3880b25, |
11938 | 0x1b80, 0x6ce40b27, | 14354 | 0x1b80, 0xe3880b27, |
11939 | 0x1b80, 0xe2eb0b35, | 14355 | 0x1b80, 0xe3e20b35, |
11940 | 0x1b80, 0xe2eb0b37, | 14356 | 0x1b80, 0xe3e20b37, |
11941 | 0x1b80, 0xe3450b45, | 14357 | 0x1b80, 0x0baa0b45, |
11942 | 0x1b80, 0xe3450b47, | 14358 | 0x1b80, 0x0baa0b47, |
11943 | 0x1b80, 0x6cf40b55, | 14359 | 0x1b80, 0x6c840b55, |
11944 | 0x1b80, 0x6cf40b57, | 14360 | 0x1b80, 0x6c840b57, |
11945 | 0x1b80, 0xe2eb0b65, | 14361 | 0x1b80, 0x6d0f0b65, |
11946 | 0x1b80, 0xe2eb0b67, | 14362 | 0x1b80, 0x6d0f0b67, |
11947 | 0x1b80, 0xe3450b75, | 14363 | 0x1b80, 0xe3880b75, |
11948 | 0x1b80, 0xe3450b77, | 14364 | 0x1b80, 0xe3880b77, |
11949 | 0x1b80, 0x6c0c0b85, | 14365 | 0x1b80, 0xe3e20b85, |
11950 | 0x1b80, 0x6c0c0b87, | 14366 | 0x1b80, 0xe3e20b87, |
11951 | 0x1b80, 0x6d000b95, | 14367 | 0x1b80, 0x6ca40b95, |
11952 | 0x1b80, 0x6d000b97, | 14368 | 0x1b80, 0x6ca40b97, |
11953 | 0x1b80, 0xe2eb0ba5, | 14369 | 0x1b80, 0xe3880ba5, |
11954 | 0x1b80, 0xe2eb0ba7, | 14370 | 0x1b80, 0xe3880ba7, |
11955 | 0x1b80, 0xe3450bb5, | 14371 | 0x1b80, 0xe3e20bb5, |
11956 | 0x1b80, 0xe3450bb7, | 14372 | 0x1b80, 0xe3e20bb7, |
11957 | 0x1b80, 0x6c1c0bc5, | 14373 | 0x1b80, 0x0bac0bc5, |
11958 | 0x1b80, 0x6c1c0bc7, | 14374 | 0x1b80, 0x0bac0bc7, |
11959 | 0x1b80, 0xe2eb0bd5, | 14375 | 0x1b80, 0x6cc40bd5, |
11960 | 0x1b80, 0xe2eb0bd7, | 14376 | 0x1b80, 0x6cc40bd7, |
11961 | 0x1b80, 0xe3450be5, | 14377 | 0x1b80, 0x6d0f0be5, |
11962 | 0x1b80, 0xe3450be7, | 14378 | 0x1b80, 0x6d0f0be7, |
11963 | 0x1b80, 0x6c3c0bf5, | 14379 | 0x1b80, 0xe3880bf5, |
11964 | 0x1b80, 0x6c3c0bf7, | 14380 | 0x1b80, 0xe3880bf7, |
11965 | 0x1b80, 0xe2eb0c05, | 14381 | 0x1b80, 0xe3e20c05, |
11966 | 0x1b80, 0xe2eb0c07, | 14382 | 0x1b80, 0xe3e20c07, |
11967 | 0x1b80, 0xe3450c15, | 14383 | 0x1b80, 0x6ce40c15, |
11968 | 0x1b80, 0xe3450c17, | 14384 | 0x1b80, 0x6ce40c17, |
11969 | 0x1b80, 0xf4bf0c25, | 14385 | 0x1b80, 0xe3880c25, |
11970 | 0x1b80, 0xf4bf0c27, | 14386 | 0x1b80, 0xe3880c27, |
11971 | 0x1b80, 0xf7be0c35, | 14387 | 0x1b80, 0xe3e20c35, |
11972 | 0x1b80, 0xf7be0c37, | 14388 | 0x1b80, 0xe3e20c37, |
11973 | 0x1b80, 0x6c5c0c45, | 14389 | 0x1b80, 0x6cf40c45, |
11974 | 0x1b80, 0x6c5c0c47, | 14390 | 0x1b80, 0x6cf40c47, |
11975 | 0x1b80, 0xe2eb0c55, | 14391 | 0x1b80, 0xe3880c55, |
11976 | 0x1b80, 0xe2eb0c57, | 14392 | 0x1b80, 0xe3880c57, |
11977 | 0x1b80, 0xe3450c65, | 14393 | 0x1b80, 0xe3e20c65, |
11978 | 0x1b80, 0xe3450c67, | 14394 | 0x1b80, 0xe3e20c67, |
11979 | 0x1b80, 0x6c7c0c75, | 14395 | 0x1b80, 0x6c0c0c75, |
11980 | 0x1b80, 0x6c7c0c77, | 14396 | 0x1b80, 0x6c0c0c77, |
11981 | 0x1b80, 0xe2eb0c85, | 14397 | 0x1b80, 0x6d000c85, |
11982 | 0x1b80, 0xe2eb0c87, | 14398 | 0x1b80, 0x6d000c87, |
11983 | 0x1b80, 0xe3450c95, | 14399 | 0x1b80, 0xe3880c95, |
11984 | 0x1b80, 0xe3450c97, | 14400 | 0x1b80, 0xe3880c97, |
11985 | 0x1b80, 0xf5c30ca5, | 14401 | 0x1b80, 0xe3e20ca5, |
11986 | 0x1b80, 0xf5c30ca7, | 14402 | 0x1b80, 0xe3e20ca7, |
11987 | 0x1b80, 0xf8c20cb5, | 14403 | 0x1b80, 0x6c1c0cb5, |
11988 | 0x1b80, 0xf8c20cb7, | 14404 | 0x1b80, 0x6c1c0cb7, |
11989 | 0x1b80, 0x6c9c0cc5, | 14405 | 0x1b80, 0xe3880cc5, |
11990 | 0x1b80, 0x6c9c0cc7, | 14406 | 0x1b80, 0xe3880cc7, |
11991 | 0x1b80, 0xe2eb0cd5, | 14407 | 0x1b80, 0xe3e20cd5, |
11992 | 0x1b80, 0xe2eb0cd7, | 14408 | 0x1b80, 0xe3e20cd7, |
11993 | 0x1b80, 0xe3450ce5, | 14409 | 0x1b80, 0x6c3c0ce5, |
11994 | 0x1b80, 0xe3450ce7, | 14410 | 0x1b80, 0x6c3c0ce7, |
11995 | 0x1b80, 0x6cbc0cf5, | 14411 | 0x1b80, 0xe3880cf5, |
11996 | 0x1b80, 0x6cbc0cf7, | 14412 | 0x1b80, 0xe3880cf7, |
11997 | 0x1b80, 0xe2eb0d05, | 14413 | 0x1b80, 0xe3e20d05, |
11998 | 0x1b80, 0xe2eb0d07, | 14414 | 0x1b80, 0xe3e20d07, |
11999 | 0x1b80, 0xe3450d15, | 14415 | 0x1b80, 0xf4b90d15, |
12000 | 0x1b80, 0xe3450d17, | 14416 | 0x1b80, 0xf4b90d17, |
12001 | 0x1b80, 0x6cdc0d25, | 14417 | 0x1b80, 0xf7b80d25, |
12002 | 0x1b80, 0x6cdc0d27, | 14418 | 0x1b80, 0xf7b80d27, |
12003 | 0x1b80, 0xe2eb0d35, | 14419 | 0x1b80, 0x6c5c0d35, |
12004 | 0x1b80, 0xe2eb0d37, | 14420 | 0x1b80, 0x6c5c0d37, |
12005 | 0x1b80, 0xe3450d45, | 14421 | 0x1b80, 0xe3880d45, |
12006 | 0x1b80, 0xe3450d47, | 14422 | 0x1b80, 0xe3880d47, |
12007 | 0x1b80, 0x6cf00d55, | 14423 | 0x1b80, 0xe3e20d55, |
12008 | 0x1b80, 0x6cf00d57, | 14424 | 0x1b80, 0xe3e20d57, |
12009 | 0x1b80, 0xe2eb0d65, | 14425 | 0x1b80, 0x6c7c0d65, |
12010 | 0x1b80, 0xe2eb0d67, | 14426 | 0x1b80, 0x6c7c0d67, |
12011 | 0x1b80, 0xe3450d75, | 14427 | 0x1b80, 0xe3880d75, |
12012 | 0x1b80, 0xe3450d77, | 14428 | 0x1b80, 0xe3880d77, |
12013 | 0x1b80, 0x63c30d85, | 14429 | 0x1b80, 0xe3e20d85, |
12014 | 0x1b80, 0x63c30d87, | 14430 | 0x1b80, 0xe3e20d87, |
12015 | 0x1b80, 0x55010d95, | 14431 | 0x1b80, 0xf5c00d95, |
12016 | 0x1b80, 0x55010d97, | 14432 | 0x1b80, 0xf5c00d97, |
12017 | 0x1b80, 0x57040da5, | 14433 | 0x1b80, 0xf8bf0da5, |
12018 | 0x1b80, 0x57040da7, | 14434 | 0x1b80, 0xf8bf0da7, |
12019 | 0x1b80, 0x57000db5, | 14435 | 0x1b80, 0x6c9c0db5, |
12020 | 0x1b80, 0x57000db7, | 14436 | 0x1b80, 0x6c9c0db7, |
12021 | 0x1b80, 0x96000dc5, | 14437 | 0x1b80, 0xe3880dc5, |
12022 | 0x1b80, 0x96000dc7, | 14438 | 0x1b80, 0xe3880dc7, |
12023 | 0x1b80, 0x57080dd5, | 14439 | 0x1b80, 0xe3e20dd5, |
12024 | 0x1b80, 0x57080dd7, | 14440 | 0x1b80, 0xe3e20dd7, |
12025 | 0x1b80, 0x57000de5, | 14441 | 0x1b80, 0x6cbc0de5, |
12026 | 0x1b80, 0x57000de7, | 14442 | 0x1b80, 0x6cbc0de7, |
12027 | 0x1b80, 0x95000df5, | 14443 | 0x1b80, 0xe3880df5, |
12028 | 0x1b80, 0x95000df7, | 14444 | 0x1b80, 0xe3880df7, |
12029 | 0x1b80, 0x4d000e05, | 14445 | 0x1b80, 0xe3e20e05, |
12030 | 0x1b80, 0x4d000e07, | 14446 | 0x1b80, 0xe3e20e07, |
12031 | 0x1b80, 0x63050e15, | 14447 | 0x1b80, 0x6cdc0e15, |
12032 | 0x1b80, 0x63050e17, | 14448 | 0x1b80, 0x6cdc0e17, |
12033 | 0x1b80, 0x7b400e25, | 14449 | 0x1b80, 0xe3880e25, |
12034 | 0x1b80, 0x7b400e27, | 14450 | 0x1b80, 0xe3880e27, |
12035 | 0x1b80, 0x7a000e35, | 14451 | 0x1b80, 0xe3e20e35, |
12036 | 0x1b80, 0x7a000e37, | 14452 | 0x1b80, 0xe3e20e37, |
12037 | 0x1b80, 0x79000e45, | 14453 | 0x1b80, 0x6cf00e45, |
12038 | 0x1b80, 0x79000e47, | 14454 | 0x1b80, 0x6cf00e47, |
12039 | 0x1b80, 0x7f400e55, | 14455 | 0x1b80, 0xe3880e55, |
12040 | 0x1b80, 0x7f400e57, | 14456 | 0x1b80, 0xe3880e57, |
12041 | 0x1b80, 0x7e000e65, | 14457 | 0x1b80, 0xe3e20e65, |
12042 | 0x1b80, 0x7e000e67, | 14458 | 0x1b80, 0xe3e20e67, |
12043 | 0x1b80, 0x7d000e75, | 14459 | 0x1b80, 0xf9a00e75, |
12044 | 0x1b80, 0x7d000e77, | 14460 | 0x1b80, 0xf9a00e77, |
12045 | 0x1b80, 0x00010e85, | 14461 | 0x1b80, 0x00300e85, |
12046 | 0x1b80, 0x00010e87, | 14462 | 0x1b80, 0x00300e87, |
12047 | 0x1b80, 0xe3170e95, | 14463 | 0x1b80, 0x63c30e95, |
12048 | 0x1b80, 0xe3170e97, | 14464 | 0x1b80, 0x63c30e97, |
12049 | 0x1b80, 0x00010ea5, | 14465 | 0x1b80, 0x00020ea5, |
12050 | 0x1b80, 0x00010ea7, | 14466 | 0x1b80, 0x00020ea7, |
12051 | 0x1b80, 0x5c320eb5, | 14467 | 0x1b80, 0x318b0eb5, |
12052 | 0x1b80, 0x5c320eb7, | 14468 | 0x1b80, 0x318b0eb7, |
12053 | 0x1b80, 0xe3410ec5, | 14469 | 0x1b80, 0x00300ec5, |
12054 | 0x1b80, 0xe3410ec7, | 14470 | 0x1b80, 0x00300ec7, |
12055 | 0x1b80, 0xe3170ed5, | 14471 | 0x1b80, 0x00000ed5, |
12056 | 0x1b80, 0xe3170ed7, | 14472 | 0x1b80, 0x00000ed7, |
12057 | 0x1b80, 0x00010ee5, | 14473 | 0x1b80, 0x00020ee5, |
12058 | 0x1b80, 0x00010ee7, | 14474 | 0x1b80, 0x00020ee7, |
12059 | 0x1b80, 0x31260ef5, | 14475 | 0x1b80, 0x55010ef5, |
12060 | 0x1b80, 0x31260ef7, | 14476 | 0x1b80, 0x55010ef7, |
12061 | 0x1b80, 0x00260f05, | 14477 | 0x1b80, 0x57040f05, |
12062 | 0x1b80, 0x00260f07, | 14478 | 0x1b80, 0x57040f07, |
12063 | 0x1b80, 0xe34a0f15, | 14479 | 0x1b80, 0x57000f15, |
12064 | 0x1b80, 0xe34a0f17, | 14480 | 0x1b80, 0x57000f17, |
12065 | 0x1b80, 0x00020f25, | 14481 | 0x1b80, 0x96000f25, |
12066 | 0x1b80, 0x00020f27, | 14482 | 0x1b80, 0x96000f27, |
12067 | 0x1b80, 0x54ec0f35, | 14483 | 0x1b80, 0x00070f35, |
12068 | 0x1b80, 0x54ec0f37, | 14484 | 0x1b80, 0x00070f37, |
12069 | 0x1b80, 0x0ba60f45, | 14485 | 0x1b80, 0x5be00f45, |
12070 | 0x1b80, 0x0ba60f47, | 14486 | 0x1b80, 0x5be00f47, |
12071 | 0x1b80, 0x00260f55, | 14487 | 0x1b80, 0x5a000f55, |
12072 | 0x1b80, 0x00260f57, | 14488 | 0x1b80, 0x5a000f57, |
12073 | 0x1b80, 0xe34a0f65, | 14489 | 0x1b80, 0x59000f65, |
12074 | 0x1b80, 0xe34a0f67, | 14490 | 0x1b80, 0x59000f67, |
12075 | 0x1b80, 0x00020f75, | 14491 | 0x1b80, 0x58000f75, |
12076 | 0x1b80, 0x00020f77, | 14492 | 0x1b80, 0x58000f77, |
12077 | 0x1b80, 0x63830f85, | 14493 | 0x1b80, 0x00040f85, |
12078 | 0x1b80, 0x63830f87, | 14494 | 0x1b80, 0x00040f87, |
12079 | 0x1b80, 0x30d90f95, | 14495 | 0x1b80, 0x57080f95, |
12080 | 0x1b80, 0x30d90f97, | 14496 | 0x1b80, 0x57080f97, |
12081 | 0x1b80, 0x311a0fa5, | 14497 | 0x1b80, 0x57000fa5, |
12082 | 0x1b80, 0x311a0fa7, | 14498 | 0x1b80, 0x57000fa7, |
12083 | 0x1b80, 0x00240fb5, | 14499 | 0x1b80, 0x95000fb5, |
12084 | 0x1b80, 0x00240fb7, | 14500 | 0x1b80, 0x95000fb7, |
12085 | 0x1b80, 0xe34a0fc5, | 14501 | 0x1b80, 0x00070fc5, |
12086 | 0x1b80, 0xe34a0fc7, | 14502 | 0x1b80, 0x00070fc7, |
12087 | 0x1b80, 0x00020fd5, | 14503 | 0x1b80, 0x58010fd5, |
12088 | 0x1b80, 0x00020fd7, | 14504 | 0x1b80, 0x58010fd7, |
12089 | 0x1b80, 0x54ea0fe5, | 14505 | 0x1b80, 0x00040fe5, |
12090 | 0x1b80, 0x54ea0fe7, | 14506 | 0x1b80, 0x00040fe7, |
12091 | 0x1b80, 0x0ba60ff5, | 14507 | 0x1b80, 0x00300ff5, |
12092 | 0x1b80, 0x0ba60ff7, | 14508 | 0x1b80, 0x00300ff7, |
12093 | 0x1b80, 0x00241005, | 14509 | 0x1b80, 0x00001005, |
12094 | 0x1b80, 0x00241007, | 14510 | 0x1b80, 0x00001007, |
12095 | 0x1b80, 0xe34a1015, | 14511 | 0x1b80, 0x00021015, |
12096 | 0x1b80, 0xe34a1017, | 14512 | 0x1b80, 0x00021017, |
12097 | 0x1b80, 0x00021025, | 14513 | 0x1b80, 0x63051025, |
12098 | 0x1b80, 0x00021027, | 14514 | 0x1b80, 0x63051027, |
12099 | 0x1b80, 0x63831035, | 14515 | 0x1b80, 0x7b401035, |
12100 | 0x1b80, 0x63831037, | 14516 | 0x1b80, 0x7b401037, |
12101 | 0x1b80, 0x30d91045, | 14517 | 0x1b80, 0x7a001045, |
12102 | 0x1b80, 0x30d91047, | 14518 | 0x1b80, 0x7a001047, |
12103 | 0x1b80, 0x5c321055, | 14519 | 0x1b80, 0x79001055, |
12104 | 0x1b80, 0x5c321057, | 14520 | 0x1b80, 0x79001057, |
12105 | 0x1b80, 0x54e61065, | 14521 | 0x1b80, 0x7f401065, |
12106 | 0x1b80, 0x54e61067, | 14522 | 0x1b80, 0x7f401067, |
12107 | 0x1b80, 0x6e101075, | 14523 | 0x1b80, 0x7e001075, |
12108 | 0x1b80, 0x6e101077, | 14524 | 0x1b80, 0x7e001077, |
12109 | 0x1b80, 0x6f0f1085, | 14525 | 0x1b80, 0x7d001085, |
12110 | 0x1b80, 0x6f0f1087, | 14526 | 0x1b80, 0x7d001087, |
12111 | 0x1b80, 0xe3171095, | 14527 | 0x1b80, 0x00011095, |
12112 | 0x1b80, 0xe3171097, | 14528 | 0x1b80, 0x00011097, |
12113 | 0x1b80, 0xe34a10a5, | 14529 | 0x1b80, 0xe3b410a5, |
12114 | 0x1b80, 0xe34a10a7, | 14530 | 0x1b80, 0xe3b410a7, |
12115 | 0x1b80, 0x5c3210b5, | 14531 | 0x1b80, 0x000110b5, |
12116 | 0x1b80, 0x5c3210b7, | 14532 | 0x1b80, 0x000110b7, |
12117 | 0x1b80, 0x54e710c5, | 14533 | 0x1b80, 0x5c3210c5, |
12118 | 0x1b80, 0x54e710c7, | 14534 | 0x1b80, 0x5c3210c7, |
12119 | 0x1b80, 0x6e2410d5, | 14535 | 0x1b80, 0x54fd10d5, |
12120 | 0x1b80, 0x6e2410d7, | 14536 | 0x1b80, 0x54fd10d7, |
12121 | 0x1b80, 0xe31710e5, | 14537 | 0x1b80, 0xe3b410e5, |
12122 | 0x1b80, 0xe31710e7, | 14538 | 0x1b80, 0xe3b410e7, |
12123 | 0x1b80, 0xe34a10f5, | 14539 | 0x1b80, 0x000110f5, |
12124 | 0x1b80, 0xe34a10f7, | 14540 | 0x1b80, 0x000110f7, |
12125 | 0x1b80, 0x5c321105, | 14541 | 0x1b80, 0x31471105, |
12126 | 0x1b80, 0x5c321107, | 14542 | 0x1b80, 0x31471107, |
12127 | 0x1b80, 0x54e81115, | 14543 | 0x1b80, 0x00261115, |
12128 | 0x1b80, 0x54e81117, | 14544 | 0x1b80, 0x00261117, |
12129 | 0x1b80, 0x6e441125, | 14545 | 0x1b80, 0xe3e71125, |
12130 | 0x1b80, 0x6e441127, | 14546 | 0x1b80, 0xe3e71127, |
12131 | 0x1b80, 0xe3171135, | 14547 | 0x1b80, 0x00021135, |
12132 | 0x1b80, 0xe3171137, | 14548 | 0x1b80, 0x00021137, |
12133 | 0x1b80, 0xe34a1145, | 14549 | 0x1b80, 0x54ec1145, |
12134 | 0x1b80, 0xe34a1147, | 14550 | 0x1b80, 0x54ec1147, |
12135 | 0x1b80, 0x5c321155, | 14551 | 0x1b80, 0x0ba61155, |
12136 | 0x1b80, 0x5c321157, | 14552 | 0x1b80, 0x0ba61157, |
12137 | 0x1b80, 0x54e91165, | 14553 | 0x1b80, 0x00261165, |
12138 | 0x1b80, 0x54e91167, | 14554 | 0x1b80, 0x00261167, |
12139 | 0x1b80, 0x6e641175, | 14555 | 0x1b80, 0xe3e71175, |
12140 | 0x1b80, 0x6e641177, | 14556 | 0x1b80, 0xe3e71177, |
12141 | 0x1b80, 0xe3171185, | 14557 | 0x1b80, 0x00021185, |
12142 | 0x1b80, 0xe3171187, | 14558 | 0x1b80, 0x00021187, |
12143 | 0x1b80, 0xe34a1195, | 14559 | 0x1b80, 0x63431195, |
12144 | 0x1b80, 0xe34a1197, | 14560 | 0x1b80, 0x63431197, |
12145 | 0x1b80, 0x5c3211a5, | 14561 | 0x1b80, 0x30ec11a5, |
12146 | 0x1b80, 0x5c3211a7, | 14562 | 0x1b80, 0x30ec11a7, |
12147 | 0x1b80, 0x54ea11b5, | 14563 | 0x1b80, 0x313b11b5, |
12148 | 0x1b80, 0x54ea11b7, | 14564 | 0x1b80, 0x313b11b7, |
12149 | 0x1b80, 0x0baa11c5, | 14565 | 0x1b80, 0x002411c5, |
12150 | 0x1b80, 0x0baa11c7, | 14566 | 0x1b80, 0x002411c7, |
12151 | 0x1b80, 0x6e8411d5, | 14567 | 0x1b80, 0xe3e711d5, |
12152 | 0x1b80, 0x6e8411d7, | 14568 | 0x1b80, 0xe3e711d7, |
12153 | 0x1b80, 0x6f0f11e5, | 14569 | 0x1b80, 0x000211e5, |
12154 | 0x1b80, 0x6f0f11e7, | 14570 | 0x1b80, 0x000211e7, |
12155 | 0x1b80, 0xe31711f5, | 14571 | 0x1b80, 0x54ea11f5, |
12156 | 0x1b80, 0xe31711f7, | 14572 | 0x1b80, 0x54ea11f7, |
12157 | 0x1b80, 0xe34a1205, | 14573 | 0x1b80, 0x0ba61205, |
12158 | 0x1b80, 0xe34a1207, | 14574 | 0x1b80, 0x0ba61207, |
12159 | 0x1b80, 0x5c321215, | 14575 | 0x1b80, 0x00241215, |
12160 | 0x1b80, 0x5c321217, | 14576 | 0x1b80, 0x00241217, |
12161 | 0x1b80, 0x54eb1225, | 14577 | 0x1b80, 0xe3e71225, |
12162 | 0x1b80, 0x54eb1227, | 14578 | 0x1b80, 0xe3e71227, |
12163 | 0x1b80, 0x6ea41235, | 14579 | 0x1b80, 0x00021235, |
12164 | 0x1b80, 0x6ea41237, | 14580 | 0x1b80, 0x00021237, |
12165 | 0x1b80, 0xe3171245, | 14581 | 0x1b80, 0x63431245, |
12166 | 0x1b80, 0xe3171247, | 14582 | 0x1b80, 0x63431247, |
12167 | 0x1b80, 0xe34a1255, | 14583 | 0x1b80, 0x30ec1255, |
12168 | 0x1b80, 0xe34a1257, | 14584 | 0x1b80, 0x30ec1257, |
12169 | 0x1b80, 0x5c321265, | 14585 | 0x1b80, 0x5c321265, |
12170 | 0x1b80, 0x5c321267, | 14586 | 0x1b80, 0x5c321267, |
12171 | 0x1b80, 0x54ec1275, | 14587 | 0x1b80, 0x54e61275, |
12172 | 0x1b80, 0x54ec1277, | 14588 | 0x1b80, 0x54e61277, |
12173 | 0x1b80, 0x0bac1285, | 14589 | 0x1b80, 0x6e101285, |
12174 | 0x1b80, 0x0bac1287, | 14590 | 0x1b80, 0x6e101287, |
12175 | 0x1b80, 0x6ec41295, | 14591 | 0x1b80, 0x6f0f1295, |
12176 | 0x1b80, 0x6ec41297, | 14592 | 0x1b80, 0x6f0f1297, |
12177 | 0x1b80, 0x6f0f12a5, | 14593 | 0x1b80, 0xe3b412a5, |
12178 | 0x1b80, 0x6f0f12a7, | 14594 | 0x1b80, 0xe3b412a7, |
12179 | 0x1b80, 0xe31712b5, | 14595 | 0x1b80, 0xe3e712b5, |
12180 | 0x1b80, 0xe31712b7, | 14596 | 0x1b80, 0xe3e712b7, |
12181 | 0x1b80, 0xe34a12c5, | 14597 | 0x1b80, 0x5c3212c5, |
12182 | 0x1b80, 0xe34a12c7, | 14598 | 0x1b80, 0x5c3212c7, |
12183 | 0x1b80, 0x5c3212d5, | 14599 | 0x1b80, 0x54e712d5, |
12184 | 0x1b80, 0x5c3212d7, | 14600 | 0x1b80, 0x54e712d7, |
12185 | 0x1b80, 0x54ed12e5, | 14601 | 0x1b80, 0x6e2412e5, |
12186 | 0x1b80, 0x54ed12e7, | 14602 | 0x1b80, 0x6e2412e7, |
12187 | 0x1b80, 0x6ee412f5, | 14603 | 0x1b80, 0xe3b412f5, |
12188 | 0x1b80, 0x6ee412f7, | 14604 | 0x1b80, 0xe3b412f7, |
12189 | 0x1b80, 0xe3171305, | 14605 | 0x1b80, 0xe3e71305, |
12190 | 0x1b80, 0xe3171307, | 14606 | 0x1b80, 0xe3e71307, |
12191 | 0x1b80, 0xe34a1315, | 14607 | 0x1b80, 0x5c321315, |
12192 | 0x1b80, 0xe34a1317, | 14608 | 0x1b80, 0x5c321317, |
12193 | 0x1b80, 0x5c321325, | 14609 | 0x1b80, 0x54e81325, |
12194 | 0x1b80, 0x5c321327, | 14610 | 0x1b80, 0x54e81327, |
12195 | 0x1b80, 0x54ee1335, | 14611 | 0x1b80, 0x6e441335, |
12196 | 0x1b80, 0x54ee1337, | 14612 | 0x1b80, 0x6e441337, |
12197 | 0x1b80, 0x6ef41345, | 14613 | 0x1b80, 0xe3b41345, |
12198 | 0x1b80, 0x6ef41347, | 14614 | 0x1b80, 0xe3b41347, |
12199 | 0x1b80, 0xe3171355, | 14615 | 0x1b80, 0xe3e71355, |
12200 | 0x1b80, 0xe3171357, | 14616 | 0x1b80, 0xe3e71357, |
12201 | 0x1b80, 0xe34a1365, | 14617 | 0x1b80, 0x5c321365, |
12202 | 0x1b80, 0xe34a1367, | 14618 | 0x1b80, 0x5c321367, |
12203 | 0x1b80, 0x5c321375, | 14619 | 0x1b80, 0x54e91375, |
12204 | 0x1b80, 0x5c321377, | 14620 | 0x1b80, 0x54e91377, |
12205 | 0x1b80, 0x54ef1385, | 14621 | 0x1b80, 0x6e641385, |
12206 | 0x1b80, 0x54ef1387, | 14622 | 0x1b80, 0x6e641387, |
12207 | 0x1b80, 0x6e0c1395, | 14623 | 0x1b80, 0xe3b41395, |
12208 | 0x1b80, 0x6e0c1397, | 14624 | 0x1b80, 0xe3b41397, |
12209 | 0x1b80, 0x6f0013a5, | 14625 | 0x1b80, 0xe3e713a5, |
12210 | 0x1b80, 0x6f0013a7, | 14626 | 0x1b80, 0xe3e713a7, |
12211 | 0x1b80, 0xe31713b5, | 14627 | 0x1b80, 0x5c3213b5, |
12212 | 0x1b80, 0xe31713b7, | 14628 | 0x1b80, 0x5c3213b7, |
12213 | 0x1b80, 0xe34a13c5, | 14629 | 0x1b80, 0x54ea13c5, |
12214 | 0x1b80, 0xe34a13c7, | 14630 | 0x1b80, 0x54ea13c7, |
12215 | 0x1b80, 0x5c3213d5, | 14631 | 0x1b80, 0x0baa13d5, |
12216 | 0x1b80, 0x5c3213d7, | 14632 | 0x1b80, 0x0baa13d7, |
12217 | 0x1b80, 0x54f013e5, | 14633 | 0x1b80, 0x6e8413e5, |
12218 | 0x1b80, 0x54f013e7, | 14634 | 0x1b80, 0x6e8413e7, |
12219 | 0x1b80, 0x6e1c13f5, | 14635 | 0x1b80, 0x6f0f13f5, |
12220 | 0x1b80, 0x6e1c13f7, | 14636 | 0x1b80, 0x6f0f13f7, |
12221 | 0x1b80, 0xe3171405, | 14637 | 0x1b80, 0xe3b41405, |
12222 | 0x1b80, 0xe3171407, | 14638 | 0x1b80, 0xe3b41407, |
12223 | 0x1b80, 0xe34a1415, | 14639 | 0x1b80, 0xe3e71415, |
12224 | 0x1b80, 0xe34a1417, | 14640 | 0x1b80, 0xe3e71417, |
12225 | 0x1b80, 0x5c321425, | 14641 | 0x1b80, 0x5c321425, |
12226 | 0x1b80, 0x5c321427, | 14642 | 0x1b80, 0x5c321427, |
12227 | 0x1b80, 0x54f11435, | 14643 | 0x1b80, 0x54eb1435, |
12228 | 0x1b80, 0x54f11437, | 14644 | 0x1b80, 0x54eb1437, |
12229 | 0x1b80, 0x6e3c1445, | 14645 | 0x1b80, 0x6ea41445, |
12230 | 0x1b80, 0x6e3c1447, | 14646 | 0x1b80, 0x6ea41447, |
12231 | 0x1b80, 0xe3171455, | 14647 | 0x1b80, 0xe3b41455, |
12232 | 0x1b80, 0xe3171457, | 14648 | 0x1b80, 0xe3b41457, |
12233 | 0x1b80, 0xe34a1465, | 14649 | 0x1b80, 0xe3e71465, |
12234 | 0x1b80, 0xe34a1467, | 14650 | 0x1b80, 0xe3e71467, |
12235 | 0x1b80, 0xfaa91475, | 14651 | 0x1b80, 0x5c321475, |
12236 | 0x1b80, 0xfaa91477, | 14652 | 0x1b80, 0x5c321477, |
12237 | 0x1b80, 0x5c321485, | 14653 | 0x1b80, 0x54ec1485, |
12238 | 0x1b80, 0x5c321487, | 14654 | 0x1b80, 0x54ec1487, |
12239 | 0x1b80, 0x54f21495, | 14655 | 0x1b80, 0x0bac1495, |
12240 | 0x1b80, 0x54f21497, | 14656 | 0x1b80, 0x0bac1497, |
12241 | 0x1b80, 0x6e5c14a5, | 14657 | 0x1b80, 0x6ec414a5, |
12242 | 0x1b80, 0x6e5c14a7, | 14658 | 0x1b80, 0x6ec414a7, |
12243 | 0x1b80, 0xe31714b5, | 14659 | 0x1b80, 0x6f0f14b5, |
12244 | 0x1b80, 0xe31714b7, | 14660 | 0x1b80, 0x6f0f14b7, |
12245 | 0x1b80, 0xe34a14c5, | 14661 | 0x1b80, 0xe3b414c5, |
12246 | 0x1b80, 0xe34a14c7, | 14662 | 0x1b80, 0xe3b414c7, |
12247 | 0x1b80, 0x5c3214d5, | 14663 | 0x1b80, 0xe3e714d5, |
12248 | 0x1b80, 0x5c3214d7, | 14664 | 0x1b80, 0xe3e714d7, |
12249 | 0x1b80, 0x54f314e5, | 14665 | 0x1b80, 0x5c3214e5, |
12250 | 0x1b80, 0x54f314e7, | 14666 | 0x1b80, 0x5c3214e7, |
12251 | 0x1b80, 0x6e7c14f5, | 14667 | 0x1b80, 0x54ed14f5, |
12252 | 0x1b80, 0x6e7c14f7, | 14668 | 0x1b80, 0x54ed14f7, |
12253 | 0x1b80, 0xe3171505, | 14669 | 0x1b80, 0x6ee41505, |
12254 | 0x1b80, 0xe3171507, | 14670 | 0x1b80, 0x6ee41507, |
12255 | 0x1b80, 0xe34a1515, | 14671 | 0x1b80, 0xe3b41515, |
12256 | 0x1b80, 0xe34a1517, | 14672 | 0x1b80, 0xe3b41517, |
12257 | 0x1b80, 0xfba91525, | 14673 | 0x1b80, 0xe3e71525, |
12258 | 0x1b80, 0xfba91527, | 14674 | 0x1b80, 0xe3e71527, |
12259 | 0x1b80, 0x5c321535, | 14675 | 0x1b80, 0x5c321535, |
12260 | 0x1b80, 0x5c321537, | 14676 | 0x1b80, 0x5c321537, |
12261 | 0x1b80, 0x54f41545, | 14677 | 0x1b80, 0x54ee1545, |
12262 | 0x1b80, 0x54f41547, | 14678 | 0x1b80, 0x54ee1547, |
12263 | 0x1b80, 0x6e9c1555, | 14679 | 0x1b80, 0x6ef41555, |
12264 | 0x1b80, 0x6e9c1557, | 14680 | 0x1b80, 0x6ef41557, |
12265 | 0x1b80, 0xe3171565, | 14681 | 0x1b80, 0xe3b41565, |
12266 | 0x1b80, 0xe3171567, | 14682 | 0x1b80, 0xe3b41567, |
12267 | 0x1b80, 0xe34a1575, | 14683 | 0x1b80, 0xe3e71575, |
12268 | 0x1b80, 0xe34a1577, | 14684 | 0x1b80, 0xe3e71577, |
12269 | 0x1b80, 0x5c321585, | 14685 | 0x1b80, 0x5c321585, |
12270 | 0x1b80, 0x5c321587, | 14686 | 0x1b80, 0x5c321587, |
12271 | 0x1b80, 0x54f51595, | 14687 | 0x1b80, 0x54ef1595, |
12272 | 0x1b80, 0x54f51597, | 14688 | 0x1b80, 0x54ef1597, |
12273 | 0x1b80, 0x6ebc15a5, | 14689 | 0x1b80, 0x6e0c15a5, |
12274 | 0x1b80, 0x6ebc15a7, | 14690 | 0x1b80, 0x6e0c15a7, |
12275 | 0x1b80, 0xe31715b5, | 14691 | 0x1b80, 0x6f0015b5, |
12276 | 0x1b80, 0xe31715b7, | 14692 | 0x1b80, 0x6f0015b7, |
12277 | 0x1b80, 0xe34a15c5, | 14693 | 0x1b80, 0xe3b415c5, |
12278 | 0x1b80, 0xe34a15c7, | 14694 | 0x1b80, 0xe3b415c7, |
12279 | 0x1b80, 0x5c3215d5, | 14695 | 0x1b80, 0xe3e715d5, |
12280 | 0x1b80, 0x5c3215d7, | 14696 | 0x1b80, 0xe3e715d7, |
12281 | 0x1b80, 0x54f615e5, | 14697 | 0x1b80, 0x5c3215e5, |
12282 | 0x1b80, 0x54f615e7, | 14698 | 0x1b80, 0x5c3215e7, |
12283 | 0x1b80, 0x6edc15f5, | 14699 | 0x1b80, 0x54f015f5, |
12284 | 0x1b80, 0x6edc15f7, | 14700 | 0x1b80, 0x54f015f7, |
12285 | 0x1b80, 0xe3171605, | 14701 | 0x1b80, 0x6e1c1605, |
12286 | 0x1b80, 0xe3171607, | 14702 | 0x1b80, 0x6e1c1607, |
12287 | 0x1b80, 0xe34a1615, | 14703 | 0x1b80, 0xe3b41615, |
12288 | 0x1b80, 0xe34a1617, | 14704 | 0x1b80, 0xe3b41617, |
12289 | 0x1b80, 0x5c321625, | 14705 | 0x1b80, 0xe3e71625, |
12290 | 0x1b80, 0x5c321627, | 14706 | 0x1b80, 0xe3e71627, |
12291 | 0x1b80, 0x54f71635, | 14707 | 0x1b80, 0x5c321635, |
12292 | 0x1b80, 0x54f71637, | 14708 | 0x1b80, 0x5c321637, |
12293 | 0x1b80, 0x6ef01645, | 14709 | 0x1b80, 0x54f11645, |
12294 | 0x1b80, 0x6ef01647, | 14710 | 0x1b80, 0x54f11647, |
12295 | 0x1b80, 0xe3171655, | 14711 | 0x1b80, 0x6e3c1655, |
12296 | 0x1b80, 0xe3171657, | 14712 | 0x1b80, 0x6e3c1657, |
12297 | 0x1b80, 0xe34a1665, | 14713 | 0x1b80, 0xe3b41665, |
12298 | 0x1b80, 0xe34a1667, | 14714 | 0x1b80, 0xe3b41667, |
12299 | 0x1b80, 0x63831675, | 14715 | 0x1b80, 0xe3e71675, |
12300 | 0x1b80, 0x63831677, | 14716 | 0x1b80, 0xe3e71677, |
12301 | 0x1b80, 0x30d91685, | 14717 | 0x1b80, 0xfaa91685, |
12302 | 0x1b80, 0x30d91687, | 14718 | 0x1b80, 0xfaa91687, |
12303 | 0x1b80, 0x00011695, | 14719 | 0x1b80, 0x5c321695, |
12304 | 0x1b80, 0x00011697, | 14720 | 0x1b80, 0x5c321697, |
12305 | 0x1b80, 0x000416a5, | 14721 | 0x1b80, 0x54f216a5, |
12306 | 0x1b80, 0x000416a7, | 14722 | 0x1b80, 0x54f216a7, |
12307 | 0x1b80, 0x550116b5, | 14723 | 0x1b80, 0x6e5c16b5, |
12308 | 0x1b80, 0x550116b7, | 14724 | 0x1b80, 0x6e5c16b7, |
12309 | 0x1b80, 0x5c3116c5, | 14725 | 0x1b80, 0xe3b416c5, |
12310 | 0x1b80, 0x5c3116c7, | 14726 | 0x1b80, 0xe3b416c7, |
12311 | 0x1b80, 0x5f8216d5, | 14727 | 0x1b80, 0xe3e716d5, |
12312 | 0x1b80, 0x5f8216d7, | 14728 | 0x1b80, 0xe3e716d7, |
12313 | 0x1b80, 0x660516e5, | 14729 | 0x1b80, 0x5c3216e5, |
12314 | 0x1b80, 0x660516e7, | 14730 | 0x1b80, 0x5c3216e7, |
12315 | 0x1b80, 0x000616f5, | 14731 | 0x1b80, 0x54f316f5, |
12316 | 0x1b80, 0x000616f7, | 14732 | 0x1b80, 0x54f316f7, |
12317 | 0x1b80, 0x5d801705, | 14733 | 0x1b80, 0x6e7c1705, |
12318 | 0x1b80, 0x5d801707, | 14734 | 0x1b80, 0x6e7c1707, |
12319 | 0x1b80, 0x09001715, | 14735 | 0x1b80, 0xe3b41715, |
12320 | 0x1b80, 0x09001717, | 14736 | 0x1b80, 0xe3b41717, |
12321 | 0x1b80, 0x0a011725, | 14737 | 0x1b80, 0xe3e71725, |
12322 | 0x1b80, 0x0a011727, | 14738 | 0x1b80, 0xe3e71727, |
12323 | 0x1b80, 0x0b401735, | 14739 | 0x1b80, 0xfba91735, |
12324 | 0x1b80, 0x0b401737, | 14740 | 0x1b80, 0xfba91737, |
12325 | 0x1b80, 0x0d001745, | 14741 | 0x1b80, 0x5c321745, |
12326 | 0x1b80, 0x0d001747, | 14742 | 0x1b80, 0x5c321747, |
12327 | 0x1b80, 0x0f011755, | 14743 | 0x1b80, 0x54f41755, |
12328 | 0x1b80, 0x0f011757, | 14744 | 0x1b80, 0x54f41757, |
12329 | 0x1b80, 0x002a1765, | 14745 | 0x1b80, 0x6e9c1765, |
12330 | 0x1b80, 0x002a1767, | 14746 | 0x1b80, 0x6e9c1767, |
12331 | 0x1b80, 0x055a1775, | 14747 | 0x1b80, 0xe3b41775, |
12332 | 0x1b80, 0x055a1777, | 14748 | 0x1b80, 0xe3b41777, |
12333 | 0x1b80, 0x05db1785, | 14749 | 0x1b80, 0xe3e71785, |
12334 | 0x1b80, 0x05db1787, | 14750 | 0x1b80, 0xe3e71787, |
12335 | 0x1b80, 0xe3351795, | 14751 | 0x1b80, 0x5c321795, |
12336 | 0x1b80, 0xe3351797, | 14752 | 0x1b80, 0x5c321797, |
12337 | 0x1b80, 0xe2e317a5, | 14753 | 0x1b80, 0x54f517a5, |
12338 | 0x1b80, 0xe2e317a7, | 14754 | 0x1b80, 0x54f517a7, |
12339 | 0x1b80, 0x000617b5, | 14755 | 0x1b80, 0x6ebc17b5, |
12340 | 0x1b80, 0x000617b7, | 14756 | 0x1b80, 0x6ebc17b7, |
12341 | 0x1b80, 0x06da17c5, | 14757 | 0x1b80, 0xe3b417c5, |
12342 | 0x1b80, 0x06da17c7, | 14758 | 0x1b80, 0xe3b417c7, |
12343 | 0x1b80, 0x07db17d5, | 14759 | 0x1b80, 0xe3e717d5, |
12344 | 0x1b80, 0x07db17d7, | 14760 | 0x1b80, 0xe3e717d7, |
12345 | 0x1b80, 0xe33517e5, | 14761 | 0x1b80, 0x5c3217e5, |
12346 | 0x1b80, 0xe33517e7, | 14762 | 0x1b80, 0x5c3217e7, |
12347 | 0x1b80, 0xe2e317f5, | 14763 | 0x1b80, 0x54f617f5, |
12348 | 0x1b80, 0xe2e317f7, | 14764 | 0x1b80, 0x54f617f7, |
12349 | 0x1b80, 0xe32c1805, | 14765 | 0x1b80, 0x6edc1805, |
12350 | 0x1b80, 0xe32c1807, | 14766 | 0x1b80, 0x6edc1807, |
12351 | 0x1b80, 0x00021815, | 14767 | 0x1b80, 0xe3b41815, |
12352 | 0x1b80, 0x00021817, | 14768 | 0x1b80, 0xe3b41817, |
12353 | 0x1b80, 0xe3311825, | 14769 | 0x1b80, 0xe3e71825, |
12354 | 0x1b80, 0xe3311827, | 14770 | 0x1b80, 0xe3e71827, |
12355 | 0x1b80, 0x5d001835, | 14771 | 0x1b80, 0x5c321835, |
12356 | 0x1b80, 0x5d001837, | 14772 | 0x1b80, 0x5c321837, |
12357 | 0x1b80, 0x00041845, | 14773 | 0x1b80, 0x54f71845, |
12358 | 0x1b80, 0x00041847, | 14774 | 0x1b80, 0x54f71847, |
12359 | 0x1b80, 0x5fa21855, | 14775 | 0x1b80, 0x6ef01855, |
12360 | 0x1b80, 0x5fa21857, | 14776 | 0x1b80, 0x6ef01857, |
12361 | 0x1b80, 0x00011865, | 14777 | 0x1b80, 0xe3b41865, |
12362 | 0x1b80, 0x00011867, | 14778 | 0x1b80, 0xe3b41867, |
12363 | 0x1b80, 0xe2571875, | 14779 | 0x1b80, 0xe3e71875, |
12364 | 0x1b80, 0xe2571877, | 14780 | 0x1b80, 0xe3e71877, |
12365 | 0x1b80, 0x74081885, | 14781 | 0x1b80, 0x63431885, |
12366 | 0x1b80, 0x74081887, | 14782 | 0x1b80, 0x63431887, |
12367 | 0x1b80, 0xe2a11895, | 14783 | 0x1b80, 0x30ec1895, |
12368 | 0x1b80, 0xe2a11897, | 14784 | 0x1b80, 0x30ec1897, |
12369 | 0x1b80, 0xe28318a5, | 14785 | 0x1b80, 0x000118a5, |
12370 | 0x1b80, 0xe28318a7, | 14786 | 0x1b80, 0x000118a7, |
12371 | 0x1b80, 0xe2c118b5, | 14787 | 0x1b80, 0x63c318b5, |
12372 | 0x1b80, 0xe2c118b7, | 14788 | 0x1b80, 0x63c318b7, |
12373 | 0x1b80, 0xb90018c5, | 14789 | 0x1b80, 0x003018c5, |
12374 | 0x1b80, 0xb90018c7, | 14790 | 0x1b80, 0x003018c7, |
12375 | 0x1b80, 0x990018d5, | 14791 | 0x1b80, 0x000018d5, |
12376 | 0x1b80, 0x990018d7, | 14792 | 0x1b80, 0x000018d7, |
12377 | 0x1b80, 0x000618e5, | 14793 | 0x1b80, 0x000218e5, |
12378 | 0x1b80, 0x000618e7, | 14794 | 0x1b80, 0x000218e7, |
12379 | 0x1b80, 0x770018f5, | 14795 | 0x1b80, 0x550118f5, |
12380 | 0x1b80, 0x770018f7, | 14796 | 0x1b80, 0x550118f7, |
12381 | 0x1b80, 0x00041905, | 14797 | 0x1b80, 0x57041905, |
12382 | 0x1b80, 0x00041907, | 14798 | 0x1b80, 0x57041907, |
12383 | 0x1b80, 0x49041915, | 14799 | 0x1b80, 0x57001915, |
12384 | 0x1b80, 0x49041917, | 14800 | 0x1b80, 0x57001917, |
12385 | 0x1b80, 0x4bb01925, | 14801 | 0x1b80, 0x96001925, |
12386 | 0x1b80, 0x4bb01927, | 14802 | 0x1b80, 0x96001927, |
12387 | 0x1b80, 0x00061935, | 14803 | 0x1b80, 0x00301935, |
12388 | 0x1b80, 0x00061937, | 14804 | 0x1b80, 0x00301937, |
12389 | 0x1b80, 0x75041945, | 14805 | 0x1b80, 0x00071945, |
12390 | 0x1b80, 0x75041947, | 14806 | 0x1b80, 0x00071947, |
12391 | 0x1b80, 0x77081955, | 14807 | 0x1b80, 0x5be01955, |
12392 | 0x1b80, 0x77081957, | 14808 | 0x1b80, 0x5be01957, |
12393 | 0x1b80, 0x00071965, | 14809 | 0x1b80, 0x5a001965, |
12394 | 0x1b80, 0x00071967, | 14810 | 0x1b80, 0x5a001967, |
12395 | 0x1b80, 0x77101975, | 14811 | 0x1b80, 0x59001975, |
12396 | 0x1b80, 0x77101977, | 14812 | 0x1b80, 0x59001977, |
12397 | 0x1b80, 0x00041985, | 14813 | 0x1b80, 0x58001985, |
12398 | 0x1b80, 0x00041987, | 14814 | 0x1b80, 0x58001987, |
12399 | 0x1b80, 0x44801995, | 14815 | 0x1b80, 0x00041995, |
12400 | 0x1b80, 0x44801997, | 14816 | 0x1b80, 0x00041997, |
12401 | 0x1b80, 0x45ff19a5, | 14817 | 0x1b80, 0x000219a5, |
12402 | 0x1b80, 0x45ff19a7, | 14818 | 0x1b80, 0x000219a7, |
12403 | 0x1b80, 0x463f19b5, | 14819 | 0x1b80, 0x570819b5, |
12404 | 0x1b80, 0x463f19b7, | 14820 | 0x1b80, 0x570819b7, |
12405 | 0x1b80, 0x473119c5, | 14821 | 0x1b80, 0x570019c5, |
12406 | 0x1b80, 0x473119c7, | 14822 | 0x1b80, 0x570019c7, |
12407 | 0x1b80, 0x400819d5, | 14823 | 0x1b80, 0x950019d5, |
12408 | 0x1b80, 0x400819d7, | 14824 | 0x1b80, 0x950019d7, |
12409 | 0x1b80, 0xe23e19e5, | 14825 | 0x1b80, 0x003019e5, |
12410 | 0x1b80, 0xe23e19e7, | 14826 | 0x1b80, 0x003019e7, |
12411 | 0x1b80, 0x000119f5, | 14827 | 0x1b80, 0x000719f5, |
12412 | 0x1b80, 0x000119f7, | 14828 | 0x1b80, 0x000719f7, |
12413 | 0x1b80, 0xe2571a05, | 14829 | 0x1b80, 0x58011a05, |
12414 | 0x1b80, 0xe2571a07, | 14830 | 0x1b80, 0x58011a07, |
12415 | 0x1b80, 0x74081a15, | 14831 | 0x1b80, 0x00041a15, |
12416 | 0x1b80, 0x74081a17, | 14832 | 0x1b80, 0x00041a17, |
12417 | 0x1b80, 0xe2b11a25, | 14833 | 0x1b80, 0x00021a25, |
12418 | 0x1b80, 0xe2b11a27, | 14834 | 0x1b80, 0x00021a27, |
12419 | 0x1b80, 0xe2831a35, | 14835 | 0x1b80, 0x00301a35, |
12420 | 0x1b80, 0xe2831a37, | 14836 | 0x1b80, 0x00301a37, |
12421 | 0x1b80, 0xe2c71a45, | 14837 | 0x1b80, 0x00001a45, |
12422 | 0x1b80, 0xe2c71a47, | 14838 | 0x1b80, 0x00001a47, |
12423 | 0x1b80, 0xb9001a55, | 14839 | 0x1b80, 0x00021a55, |
12424 | 0x1b80, 0xb9001a57, | 14840 | 0x1b80, 0x00021a57, |
12425 | 0x1b80, 0x99001a65, | 14841 | 0x1b80, 0x63051a65, |
12426 | 0x1b80, 0x99001a67, | 14842 | 0x1b80, 0x63051a67, |
12427 | 0x1b80, 0x00061a75, | 14843 | 0x1b80, 0x7b401a75, |
12428 | 0x1b80, 0x00061a77, | 14844 | 0x1b80, 0x7b401a77, |
12429 | 0x1b80, 0x77001a85, | 14845 | 0x1b80, 0x7a001a85, |
12430 | 0x1b80, 0x77001a87, | 14846 | 0x1b80, 0x7a001a87, |
12431 | 0x1b80, 0x00051a95, | 14847 | 0x1b80, 0x79001a95, |
12432 | 0x1b80, 0x00051a97, | 14848 | 0x1b80, 0x79001a97, |
12433 | 0x1b80, 0x61041aa5, | 14849 | 0x1b80, 0x7f401aa5, |
12434 | 0x1b80, 0x61041aa7, | 14850 | 0x1b80, 0x7f401aa7, |
12435 | 0x1b80, 0x63b01ab5, | 14851 | 0x1b80, 0x7e001ab5, |
12436 | 0x1b80, 0x63b01ab7, | 14852 | 0x1b80, 0x7e001ab7, |
12437 | 0x1b80, 0x00061ac5, | 14853 | 0x1b80, 0x7d001ac5, |
12438 | 0x1b80, 0x00061ac7, | 14854 | 0x1b80, 0x7d001ac7, |
12439 | 0x1b80, 0x75081ad5, | 14855 | 0x1b80, 0x00011ad5, |
12440 | 0x1b80, 0x75081ad7, | 14856 | 0x1b80, 0x00011ad7, |
12441 | 0x1b80, 0x77081ae5, | 14857 | 0x1b80, 0x00041ae5, |
12442 | 0x1b80, 0x77081ae7, | 14858 | 0x1b80, 0x00041ae7, |
12443 | 0x1b80, 0x00071af5, | 14859 | 0x1b80, 0x55011af5, |
12444 | 0x1b80, 0x00071af7, | 14860 | 0x1b80, 0x55011af7, |
12445 | 0x1b80, 0x77201b05, | 14861 | 0x1b80, 0x5c311b05, |
12446 | 0x1b80, 0x77201b07, | 14862 | 0x1b80, 0x5c311b07, |
12447 | 0x1b80, 0x00051b15, | 14863 | 0x1b80, 0x5f821b15, |
12448 | 0x1b80, 0x00051b17, | 14864 | 0x1b80, 0x5f821b17, |
12449 | 0x1b80, 0x5c801b25, | 14865 | 0x1b80, 0x66051b25, |
12450 | 0x1b80, 0x5c801b27, | 14866 | 0x1b80, 0x66051b27, |
12451 | 0x1b80, 0x5dff1b35, | 14867 | 0x1b80, 0x00061b35, |
12452 | 0x1b80, 0x5dff1b37, | 14868 | 0x1b80, 0x00061b37, |
12453 | 0x1b80, 0x5e3f1b45, | 14869 | 0x1b80, 0x5d801b45, |
12454 | 0x1b80, 0x5e3f1b47, | 14870 | 0x1b80, 0x5d801b47, |
12455 | 0x1b80, 0x5f311b55, | 14871 | 0x1b80, 0x09001b55, |
12456 | 0x1b80, 0x5f311b57, | 14872 | 0x1b80, 0x09001b57, |
12457 | 0x1b80, 0x00041b65, | 14873 | 0x1b80, 0x0a011b65, |
12458 | 0x1b80, 0x00041b67, | 14874 | 0x1b80, 0x0a011b67, |
12459 | 0x1b80, 0x400a1b75, | 14875 | 0x1b80, 0x0b401b75, |
12460 | 0x1b80, 0x400a1b77, | 14876 | 0x1b80, 0x0b401b77, |
12461 | 0x1b80, 0xe23e1b85, | 14877 | 0x1b80, 0x0d001b85, |
12462 | 0x1b80, 0xe23e1b87, | 14878 | 0x1b80, 0x0d001b87, |
12463 | 0x1b80, 0x00011b95, | 14879 | 0x1b80, 0x0f011b95, |
12464 | 0x1b80, 0x00011b97, | 14880 | 0x1b80, 0x0f011b97, |
12465 | 0x1b80, 0xe2571ba5, | 14881 | 0x1b80, 0x002a1ba5, |
12466 | 0x1b80, 0xe2571ba7, | 14882 | 0x1b80, 0x002a1ba7, |
12467 | 0x1b80, 0x74081bb5, | 14883 | 0x1b80, 0x055a1bb5, |
12468 | 0x1b80, 0x74081bb7, | 14884 | 0x1b80, 0x055a1bb7, |
12469 | 0x1b80, 0xe2a11bc5, | 14885 | 0x1b80, 0x05db1bc5, |
12470 | 0x1b80, 0xe2a11bc7, | 14886 | 0x1b80, 0x05db1bc7, |
12471 | 0x1b80, 0xe2831bd5, | 14887 | 0x1b80, 0xe3d21bd5, |
12472 | 0x1b80, 0xe2831bd7, | 14888 | 0x1b80, 0xe3d21bd7, |
12473 | 0x1b80, 0xe2c11be5, | 14889 | 0x1b80, 0xe3801be5, |
12474 | 0x1b80, 0xe2c11be7, | 14890 | 0x1b80, 0xe3801be7, |
12475 | 0x1b80, 0xe2cd1bf5, | 14891 | 0x1b80, 0x00061bf5, |
12476 | 0x1b80, 0xe2cd1bf7, | 14892 | 0x1b80, 0x00061bf7, |
12477 | 0x1b80, 0xe2101c05, | 14893 | 0x1b80, 0x06da1c05, |
12478 | 0x1b80, 0xe2101c07, | 14894 | 0x1b80, 0x06da1c07, |
12479 | 0x1b80, 0x00011c15, | 14895 | 0x1b80, 0x07db1c15, |
12480 | 0x1b80, 0x00011c17, | 14896 | 0x1b80, 0x07db1c17, |
12481 | 0x1b80, 0xe2571c25, | 14897 | 0x1b80, 0xe3d21c25, |
12482 | 0x1b80, 0xe2571c27, | 14898 | 0x1b80, 0xe3d21c27, |
12483 | 0x1b80, 0x74081c35, | 14899 | 0x1b80, 0xe3801c35, |
12484 | 0x1b80, 0x74081c37, | 14900 | 0x1b80, 0xe3801c37, |
12485 | 0x1b80, 0xe2b11c45, | 14901 | 0x1b80, 0xe3c91c45, |
12486 | 0x1b80, 0xe2b11c47, | 14902 | 0x1b80, 0xe3c91c47, |
12487 | 0x1b80, 0xe2831c55, | 14903 | 0x1b80, 0x00021c55, |
12488 | 0x1b80, 0xe2831c57, | 14904 | 0x1b80, 0x00021c57, |
12489 | 0x1b80, 0xe2c71c65, | 14905 | 0x1b80, 0xe3ce1c65, |
12490 | 0x1b80, 0xe2c71c67, | 14906 | 0x1b80, 0xe3ce1c67, |
12491 | 0x1b80, 0xe2cd1c75, | 14907 | 0x1b80, 0x5d001c75, |
12492 | 0x1b80, 0xe2cd1c77, | 14908 | 0x1b80, 0x5d001c77, |
12493 | 0x1b80, 0xe2261c85, | 14909 | 0x1b80, 0x00041c85, |
12494 | 0x1b80, 0xe2261c87, | 14910 | 0x1b80, 0x00041c87, |
12495 | 0x1b80, 0x00011c95, | 14911 | 0x1b80, 0x5fa21c95, |
12496 | 0x1b80, 0x00011c97, | 14912 | 0x1b80, 0x5fa21c97, |
12497 | 0x1b80, 0xe26d1ca5, | 14913 | 0x1b80, 0x00011ca5, |
12498 | 0x1b80, 0xe26d1ca7, | 14914 | 0x1b80, 0x00011ca7, |
12499 | 0x1b80, 0x74001cb5, | 14915 | 0x1b80, 0x00041cb5, |
12500 | 0x1b80, 0x74001cb7, | 14916 | 0x1b80, 0x00041cb7, |
12501 | 0x1b80, 0xe2a11cc5, | 14917 | 0x1b80, 0xe2711cc5, |
12502 | 0x1b80, 0xe2a11cc7, | 14918 | 0x1b80, 0xe2711cc7, |
12503 | 0x1b80, 0xe2921cd5, | 14919 | 0x1b80, 0xe2821cd5, |
12504 | 0x1b80, 0xe2921cd7, | 14920 | 0x1b80, 0xe2821cd7, |
12505 | 0x1b80, 0xe2c11ce5, | 14921 | 0x1b80, 0xe28b1ce5, |
12506 | 0x1b80, 0xe2c11ce7, | 14922 | 0x1b80, 0xe28b1ce7, |
12507 | 0x1b80, 0xe2cd1cf5, | 14923 | 0x1b80, 0xe29c1cf5, |
12508 | 0x1b80, 0xe2cd1cf7, | 14924 | 0x1b80, 0xe29c1cf7, |
12509 | 0x1b80, 0xe2101d05, | 14925 | 0x1b80, 0x00051d05, |
12510 | 0x1b80, 0xe2101d07, | 14926 | 0x1b80, 0x00051d07, |
12511 | 0x1b80, 0x00011d15, | 14927 | 0x1b80, 0xe2641d15, |
12512 | 0x1b80, 0x00011d17, | 14928 | 0x1b80, 0xe2641d17, |
12513 | 0x1b80, 0xe26d1d25, | 14929 | 0x1b80, 0xe2711d25, |
12514 | 0x1b80, 0xe26d1d27, | 14930 | 0x1b80, 0xe2711d27, |
12515 | 0x1b80, 0x74001d35, | 14931 | 0x1b80, 0xe28b1d35, |
12516 | 0x1b80, 0x74001d37, | 14932 | 0x1b80, 0xe28b1d37, |
12517 | 0x1b80, 0xe2b11d45, | 14933 | 0x1b80, 0xe29c1d45, |
12518 | 0x1b80, 0xe2b11d47, | 14934 | 0x1b80, 0xe29c1d47, |
12519 | 0x1b80, 0xe2921d55, | 14935 | 0x1b80, 0x00061d55, |
12520 | 0x1b80, 0xe2921d57, | 14936 | 0x1b80, 0x00061d57, |
12521 | 0x1b80, 0xe2c71d65, | 14937 | 0x1b80, 0xe2641d65, |
12522 | 0x1b80, 0xe2c71d67, | 14938 | 0x1b80, 0xe2641d67, |
12523 | 0x1b80, 0xe2cd1d75, | 14939 | 0x1b80, 0xe2711d75, |
12524 | 0x1b80, 0xe2cd1d77, | 14940 | 0x1b80, 0xe2711d77, |
12525 | 0x1b80, 0xe2261d85, | 14941 | 0x1b80, 0xe2821d85, |
12526 | 0x1b80, 0xe2261d87, | 14942 | 0x1b80, 0xe2821d87, |
12527 | 0x1b80, 0x00011d95, | 14943 | 0x1b80, 0xe28b1d95, |
12528 | 0x1b80, 0x00011d97, | 14944 | 0x1b80, 0xe28b1d97, |
12529 | 0x1b80, 0x00041da5, | 14945 | 0x1b80, 0x00011da5, |
12530 | 0x1b80, 0x00041da7, | 14946 | 0x1b80, 0x00011da7, |
12531 | 0x1b80, 0x445b1db5, | 14947 | 0x1b80, 0xe2f41db5, |
12532 | 0x1b80, 0x445b1db7, | 14948 | 0x1b80, 0xe2f41db7, |
12533 | 0x1b80, 0x47b01dc5, | 14949 | 0x1b80, 0x74081dc5, |
12534 | 0x1b80, 0x47b01dc7, | 14950 | 0x1b80, 0x74081dc7, |
12535 | 0x1b80, 0x47301dd5, | 14951 | 0x1b80, 0xe33e1dd5, |
12536 | 0x1b80, 0x47301dd7, | 14952 | 0x1b80, 0xe33e1dd7, |
12537 | 0x1b80, 0x47001de5, | 14953 | 0x1b80, 0xe3201de5, |
12538 | 0x1b80, 0x47001de7, | 14954 | 0x1b80, 0xe3201de7, |
12539 | 0x1b80, 0x00061df5, | 14955 | 0x1b80, 0xe35e1df5, |
12540 | 0x1b80, 0x00061df7, | 14956 | 0x1b80, 0xe35e1df7, |
12541 | 0x1b80, 0x77081e05, | 14957 | 0x1b80, 0xb9001e05, |
12542 | 0x1b80, 0x77081e07, | 14958 | 0x1b80, 0xb9001e07, |
12543 | 0x1b80, 0x00041e15, | 14959 | 0x1b80, 0x99001e15, |
12544 | 0x1b80, 0x00041e17, | 14960 | 0x1b80, 0x99001e17, |
12545 | 0x1b80, 0x49401e25, | 14961 | 0x1b80, 0x00061e25, |
12546 | 0x1b80, 0x49401e27, | 14962 | 0x1b80, 0x00061e27, |
12547 | 0x1b80, 0x4bb01e35, | 14963 | 0x1b80, 0x77001e35, |
12548 | 0x1b80, 0x4bb01e37, | 14964 | 0x1b80, 0x77001e37, |
12549 | 0x1b80, 0x00071e45, | 14965 | 0x1b80, 0x00041e45, |
12550 | 0x1b80, 0x00071e47, | 14966 | 0x1b80, 0x00041e47, |
12551 | 0x1b80, 0x54401e55, | 14967 | 0x1b80, 0x49041e55, |
12552 | 0x1b80, 0x54401e57, | 14968 | 0x1b80, 0x49041e57, |
12553 | 0x1b80, 0x00041e65, | 14969 | 0x1b80, 0x4bb01e65, |
12554 | 0x1b80, 0x00041e67, | 14970 | 0x1b80, 0x4bb01e67, |
12555 | 0x1b80, 0x40081e75, | 14971 | 0x1b80, 0x00061e75, |
12556 | 0x1b80, 0x40081e77, | 14972 | 0x1b80, 0x00061e77, |
12557 | 0x1b80, 0x00011e85, | 14973 | 0x1b80, 0x75041e85, |
12558 | 0x1b80, 0x00011e87, | 14974 | 0x1b80, 0x75041e87, |
12559 | 0x1b80, 0x00051e95, | 14975 | 0x1b80, 0x77081e95, |
12560 | 0x1b80, 0x00051e97, | 14976 | 0x1b80, 0x77081e97, |
12561 | 0x1b80, 0x5c5b1ea5, | 14977 | 0x1b80, 0x00071ea5, |
12562 | 0x1b80, 0x5c5b1ea7, | 14978 | 0x1b80, 0x00071ea7, |
12563 | 0x1b80, 0x5fb01eb5, | 14979 | 0x1b80, 0x77101eb5, |
12564 | 0x1b80, 0x5fb01eb7, | 14980 | 0x1b80, 0x77101eb7, |
12565 | 0x1b80, 0x5f301ec5, | 14981 | 0x1b80, 0x00041ec5, |
12566 | 0x1b80, 0x5f301ec7, | 14982 | 0x1b80, 0x00041ec7, |
12567 | 0x1b80, 0x5f001ed5, | 14983 | 0x1b80, 0x44801ed5, |
12568 | 0x1b80, 0x5f001ed7, | 14984 | 0x1b80, 0x44801ed7, |
12569 | 0x1b80, 0x00061ee5, | 14985 | 0x1b80, 0x45ff1ee5, |
12570 | 0x1b80, 0x00061ee7, | 14986 | 0x1b80, 0x45ff1ee7, |
12571 | 0x1b80, 0x77081ef5, | 14987 | 0x1b80, 0x463f1ef5, |
12572 | 0x1b80, 0x77081ef7, | 14988 | 0x1b80, 0x463f1ef7, |
12573 | 0x1b80, 0x00051f05, | 14989 | 0x1b80, 0x47311f05, |
12574 | 0x1b80, 0x00051f07, | 14990 | 0x1b80, 0x47311f07, |
12575 | 0x1b80, 0x61401f15, | 14991 | 0x1b80, 0x40081f15, |
12576 | 0x1b80, 0x61401f17, | 14992 | 0x1b80, 0x40081f17, |
12577 | 0x1b80, 0x63b01f25, | 14993 | 0x1b80, 0xe2db1f25, |
12578 | 0x1b80, 0x63b01f27, | 14994 | 0x1b80, 0xe2db1f27, |
12579 | 0x1b80, 0x00071f35, | 14995 | 0x1b80, 0x00011f35, |
12580 | 0x1b80, 0x00071f37, | 14996 | 0x1b80, 0x00011f37, |
12581 | 0x1b80, 0x54401f45, | 14997 | 0x1b80, 0xe2f41f45, |
12582 | 0x1b80, 0x54401f47, | 14998 | 0x1b80, 0xe2f41f47, |
12583 | 0x1b80, 0x00041f55, | 14999 | 0x1b80, 0x74081f55, |
12584 | 0x1b80, 0x00041f57, | 15000 | 0x1b80, 0x74081f57, |
12585 | 0x1b80, 0x40081f65, | 15001 | 0x1b80, 0xe34e1f65, |
12586 | 0x1b80, 0x40081f67, | 15002 | 0x1b80, 0xe34e1f67, |
12587 | 0x1b80, 0x00011f75, | 15003 | 0x1b80, 0xe3201f75, |
12588 | 0x1b80, 0x00011f77, | 15004 | 0x1b80, 0xe3201f77, |
12589 | 0x1b80, 0xe2571f85, | 15005 | 0x1b80, 0xe3641f85, |
12590 | 0x1b80, 0xe2571f87, | 15006 | 0x1b80, 0xe3641f87, |
12591 | 0x1b80, 0x74081f95, | 15007 | 0x1b80, 0xb9001f95, |
12592 | 0x1b80, 0x74081f97, | 15008 | 0x1b80, 0xb9001f97, |
12593 | 0x1b80, 0xe2a11fa5, | 15009 | 0x1b80, 0x99001fa5, |
12594 | 0x1b80, 0xe2a11fa7, | 15010 | 0x1b80, 0x99001fa7, |
12595 | 0x1b80, 0x00041fb5, | 15011 | 0x1b80, 0x00061fb5, |
12596 | 0x1b80, 0x00041fb7, | 15012 | 0x1b80, 0x00061fb7, |
12597 | 0x1b80, 0x40081fc5, | 15013 | 0x1b80, 0x77001fc5, |
12598 | 0x1b80, 0x40081fc7, | 15014 | 0x1b80, 0x77001fc7, |
12599 | 0x1b80, 0x00011fd5, | 15015 | 0x1b80, 0x00051fd5, |
12600 | 0x1b80, 0x00011fd7, | 15016 | 0x1b80, 0x00051fd7, |
12601 | 0x1b80, 0xe2571fe5, | 15017 | 0x1b80, 0x61041fe5, |
12602 | 0x1b80, 0xe2571fe7, | 15018 | 0x1b80, 0x61041fe7, |
12603 | 0x1b80, 0x74081ff5, | 15019 | 0x1b80, 0x63b01ff5, |
12604 | 0x1b80, 0x74081ff7, | 15020 | 0x1b80, 0x63b01ff7, |
12605 | 0x1b80, 0xe2b12005, | 15021 | 0x1b80, 0x00062005, |
12606 | 0x1b80, 0xe2b12007, | 15022 | 0x1b80, 0x00062007, |
12607 | 0x1b80, 0x00042015, | 15023 | 0x1b80, 0x75082015, |
12608 | 0x1b80, 0x00042017, | 15024 | 0x1b80, 0x75082017, |
12609 | 0x1b80, 0x40082025, | 15025 | 0x1b80, 0x77082025, |
12610 | 0x1b80, 0x40082027, | 15026 | 0x1b80, 0x77082027, |
12611 | 0x1b80, 0x00012035, | 15027 | 0x1b80, 0x00072035, |
12612 | 0x1b80, 0x00012037, | 15028 | 0x1b80, 0x00072037, |
12613 | 0x1b80, 0xe26d2045, | 15029 | 0x1b80, 0x77202045, |
12614 | 0x1b80, 0xe26d2047, | 15030 | 0x1b80, 0x77202047, |
12615 | 0x1b80, 0x74002055, | 15031 | 0x1b80, 0x00052055, |
12616 | 0x1b80, 0x74002057, | 15032 | 0x1b80, 0x00052057, |
12617 | 0x1b80, 0xe2a12065, | 15033 | 0x1b80, 0x5c802065, |
12618 | 0x1b80, 0xe2a12067, | 15034 | 0x1b80, 0x5c802067, |
12619 | 0x1b80, 0x00042075, | 15035 | 0x1b80, 0x5dff2075, |
12620 | 0x1b80, 0x00042077, | 15036 | 0x1b80, 0x5dff2077, |
12621 | 0x1b80, 0x40082085, | 15037 | 0x1b80, 0x5e3f2085, |
12622 | 0x1b80, 0x40082087, | 15038 | 0x1b80, 0x5e3f2087, |
12623 | 0x1b80, 0x00012095, | 15039 | 0x1b80, 0x5f312095, |
12624 | 0x1b80, 0x00012097, | 15040 | 0x1b80, 0x5f312097, |
12625 | 0x1b80, 0xe26d20a5, | 15041 | 0x1b80, 0x000420a5, |
12626 | 0x1b80, 0xe26d20a7, | 15042 | 0x1b80, 0x000420a7, |
12627 | 0x1b80, 0x740020b5, | 15043 | 0x1b80, 0x400a20b5, |
12628 | 0x1b80, 0x740020b7, | 15044 | 0x1b80, 0x400a20b7, |
12629 | 0x1b80, 0xe2b120c5, | 15045 | 0x1b80, 0xe2db20c5, |
12630 | 0x1b80, 0xe2b120c7, | 15046 | 0x1b80, 0xe2db20c7, |
12631 | 0x1b80, 0x000420d5, | 15047 | 0x1b80, 0x000120d5, |
12632 | 0x1b80, 0x000420d7, | 15048 | 0x1b80, 0x000120d7, |
12633 | 0x1b80, 0x400820e5, | 15049 | 0x1b80, 0xe2f420e5, |
12634 | 0x1b80, 0x400820e7, | 15050 | 0x1b80, 0xe2f420e7, |
12635 | 0x1b80, 0x000120f5, | 15051 | 0x1b80, 0x740820f5, |
12636 | 0x1b80, 0x000120f7, | 15052 | 0x1b80, 0x740820f7, |
12637 | 0x1b80, 0x00042105, | 15053 | 0x1b80, 0xe33e2105, |
12638 | 0x1b80, 0x00042107, | 15054 | 0x1b80, 0xe33e2107, |
12639 | 0x1b80, 0x49042115, | 15055 | 0x1b80, 0xe3202115, |
12640 | 0x1b80, 0x49042117, | 15056 | 0x1b80, 0xe3202117, |
12641 | 0x1b80, 0x4bb02125, | 15057 | 0x1b80, 0xe35e2125, |
12642 | 0x1b80, 0x4bb02127, | 15058 | 0x1b80, 0xe35e2127, |
12643 | 0x1b80, 0x00062135, | 15059 | 0x1b80, 0xe36a2135, |
12644 | 0x1b80, 0x00062137, | 15060 | 0x1b80, 0xe36a2137, |
12645 | 0x1b80, 0x75042145, | 15061 | 0x1b80, 0xe2ad2145, |
12646 | 0x1b80, 0x75042147, | 15062 | 0x1b80, 0xe2ad2147, |
12647 | 0x1b80, 0x77082155, | 15063 | 0x1b80, 0x00012155, |
12648 | 0x1b80, 0x77082157, | 15064 | 0x1b80, 0x00012157, |
12649 | 0x1b80, 0x00042165, | 15065 | 0x1b80, 0xe2f42165, |
12650 | 0x1b80, 0x00042167, | 15066 | 0x1b80, 0xe2f42167, |
12651 | 0x1b80, 0x44802175, | 15067 | 0x1b80, 0x74082175, |
12652 | 0x1b80, 0x44802177, | 15068 | 0x1b80, 0x74082177, |
12653 | 0x1b80, 0x45ff2185, | 15069 | 0x1b80, 0xe34e2185, |
12654 | 0x1b80, 0x45ff2187, | 15070 | 0x1b80, 0xe34e2187, |
12655 | 0x1b80, 0x463f2195, | 15071 | 0x1b80, 0xe3202195, |
12656 | 0x1b80, 0x463f2197, | 15072 | 0x1b80, 0xe3202197, |
12657 | 0x1b80, 0x473121a5, | 15073 | 0x1b80, 0xe36421a5, |
12658 | 0x1b80, 0x473121a7, | 15074 | 0x1b80, 0xe36421a7, |
12659 | 0x1b80, 0x400821b5, | 15075 | 0x1b80, 0xe36a21b5, |
12660 | 0x1b80, 0x400821b7, | 15076 | 0x1b80, 0xe36a21b7, |
12661 | 0x1b80, 0xe23e21c5, | 15077 | 0x1b80, 0xe2c321c5, |
12662 | 0x1b80, 0xe23e21c7, | 15078 | 0x1b80, 0xe2c321c7, |
12663 | 0x1b80, 0x000421d5, | 15079 | 0x1b80, 0x000121d5, |
12664 | 0x1b80, 0x000421d7, | 15080 | 0x1b80, 0x000121d7, |
12665 | 0x1b80, 0x400c21e5, | 15081 | 0x1b80, 0xe30a21e5, |
12666 | 0x1b80, 0x400c21e7, | 15082 | 0x1b80, 0xe30a21e7, |
12667 | 0x1b80, 0x000621f5, | 15083 | 0x1b80, 0x740021f5, |
12668 | 0x1b80, 0x000621f7, | 15084 | 0x1b80, 0x740021f7, |
12669 | 0x1b80, 0x75002205, | 15085 | 0x1b80, 0xe33e2205, |
12670 | 0x1b80, 0x75002207, | 15086 | 0x1b80, 0xe33e2207, |
12671 | 0x1b80, 0x00042215, | 15087 | 0x1b80, 0xe32f2215, |
12672 | 0x1b80, 0x00042217, | 15088 | 0x1b80, 0xe32f2217, |
12673 | 0x1b80, 0x445b2225, | 15089 | 0x1b80, 0xe35e2225, |
12674 | 0x1b80, 0x445b2227, | 15090 | 0x1b80, 0xe35e2227, |
12675 | 0x1b80, 0x47002235, | 15091 | 0x1b80, 0xe36a2235, |
12676 | 0x1b80, 0x47002237, | 15092 | 0x1b80, 0xe36a2237, |
12677 | 0x1b80, 0x40082245, | 15093 | 0x1b80, 0xe2ad2245, |
12678 | 0x1b80, 0x40082247, | 15094 | 0x1b80, 0xe2ad2247, |
12679 | 0x1b80, 0x00012255, | 15095 | 0x1b80, 0x00012255, |
12680 | 0x1b80, 0x00012257, | 15096 | 0x1b80, 0x00012257, |
12681 | 0x1b80, 0x00052265, | 15097 | 0x1b80, 0xe30a2265, |
12682 | 0x1b80, 0x00052267, | 15098 | 0x1b80, 0xe30a2267, |
12683 | 0x1b80, 0x61042275, | 15099 | 0x1b80, 0x74002275, |
12684 | 0x1b80, 0x61042277, | 15100 | 0x1b80, 0x74002277, |
12685 | 0x1b80, 0x63b02285, | 15101 | 0x1b80, 0xe34e2285, |
12686 | 0x1b80, 0x63b02287, | 15102 | 0x1b80, 0xe34e2287, |
12687 | 0x1b80, 0x00062295, | 15103 | 0x1b80, 0xe32f2295, |
12688 | 0x1b80, 0x00062297, | 15104 | 0x1b80, 0xe32f2297, |
12689 | 0x1b80, 0x750822a5, | 15105 | 0x1b80, 0xe36422a5, |
12690 | 0x1b80, 0x750822a7, | 15106 | 0x1b80, 0xe36422a7, |
12691 | 0x1b80, 0x770822b5, | 15107 | 0x1b80, 0xe36a22b5, |
12692 | 0x1b80, 0x770822b7, | 15108 | 0x1b80, 0xe36a22b7, |
12693 | 0x1b80, 0x000522c5, | 15109 | 0x1b80, 0xe2c322c5, |
12694 | 0x1b80, 0x000522c7, | 15110 | 0x1b80, 0xe2c322c7, |
12695 | 0x1b80, 0x5c8022d5, | 15111 | 0x1b80, 0x000122d5, |
12696 | 0x1b80, 0x5c8022d7, | 15112 | 0x1b80, 0x000122d7, |
12697 | 0x1b80, 0x5dff22e5, | 15113 | 0x1b80, 0x000422e5, |
12698 | 0x1b80, 0x5dff22e7, | 15114 | 0x1b80, 0x000422e7, |
12699 | 0x1b80, 0x5e3f22f5, | 15115 | 0x1b80, 0x445b22f5, |
12700 | 0x1b80, 0x5e3f22f7, | 15116 | 0x1b80, 0x445b22f7, |
12701 | 0x1b80, 0x5f312305, | 15117 | 0x1b80, 0x47b02305, |
12702 | 0x1b80, 0x5f312307, | 15118 | 0x1b80, 0x47b02307, |
12703 | 0x1b80, 0x00042315, | 15119 | 0x1b80, 0x47302315, |
12704 | 0x1b80, 0x00042317, | 15120 | 0x1b80, 0x47302317, |
12705 | 0x1b80, 0x400a2325, | 15121 | 0x1b80, 0x47002325, |
12706 | 0x1b80, 0x400a2327, | 15122 | 0x1b80, 0x47002327, |
12707 | 0x1b80, 0xe23e2335, | 15123 | 0x1b80, 0x00062335, |
12708 | 0x1b80, 0xe23e2337, | 15124 | 0x1b80, 0x00062337, |
12709 | 0x1b80, 0x00042345, | 15125 | 0x1b80, 0x77082345, |
12710 | 0x1b80, 0x00042347, | 15126 | 0x1b80, 0x77082347, |
12711 | 0x1b80, 0x400c2355, | 15127 | 0x1b80, 0x00042355, |
12712 | 0x1b80, 0x400c2357, | 15128 | 0x1b80, 0x00042357, |
12713 | 0x1b80, 0x00062365, | 15129 | 0x1b80, 0x49402365, |
12714 | 0x1b80, 0x00062367, | 15130 | 0x1b80, 0x49402367, |
12715 | 0x1b80, 0x75002375, | 15131 | 0x1b80, 0x4bb02375, |
12716 | 0x1b80, 0x75002377, | 15132 | 0x1b80, 0x4bb02377, |
12717 | 0x1b80, 0x00052385, | 15133 | 0x1b80, 0x00072385, |
12718 | 0x1b80, 0x00052387, | 15134 | 0x1b80, 0x00072387, |
12719 | 0x1b80, 0x5c5b2395, | 15135 | 0x1b80, 0x54402395, |
12720 | 0x1b80, 0x5c5b2397, | 15136 | 0x1b80, 0x54402397, |
12721 | 0x1b80, 0x5f0023a5, | 15137 | 0x1b80, 0x000423a5, |
12722 | 0x1b80, 0x5f0023a7, | 15138 | 0x1b80, 0x000423a7, |
12723 | 0x1b80, 0x000423b5, | 15139 | 0x1b80, 0x400823b5, |
12724 | 0x1b80, 0x000423b7, | 15140 | 0x1b80, 0x400823b7, |
12725 | 0x1b80, 0x400823c5, | 15141 | 0x1b80, 0x000123c5, |
12726 | 0x1b80, 0x400823c7, | 15142 | 0x1b80, 0x000123c7, |
12727 | 0x1b80, 0x000123d5, | 15143 | 0x1b80, 0x000523d5, |
12728 | 0x1b80, 0x000123d7, | 15144 | 0x1b80, 0x000523d7, |
12729 | 0x1b80, 0x000723e5, | 15145 | 0x1b80, 0x5c5b23e5, |
12730 | 0x1b80, 0x000723e7, | 15146 | 0x1b80, 0x5c5b23e7, |
12731 | 0x1b80, 0x4c1223f5, | 15147 | 0x1b80, 0x5fb023f5, |
12732 | 0x1b80, 0x4c1223f7, | 15148 | 0x1b80, 0x5fb023f7, |
12733 | 0x1b80, 0x4e202405, | 15149 | 0x1b80, 0x5f302405, |
12734 | 0x1b80, 0x4e202407, | 15150 | 0x1b80, 0x5f302407, |
12735 | 0x1b80, 0x00052415, | 15151 | 0x1b80, 0x5f002415, |
12736 | 0x1b80, 0x00052417, | 15152 | 0x1b80, 0x5f002417, |
12737 | 0x1b80, 0x598f2425, | 15153 | 0x1b80, 0x00062425, |
12738 | 0x1b80, 0x598f2427, | 15154 | 0x1b80, 0x00062427, |
12739 | 0x1b80, 0x40022435, | 15155 | 0x1b80, 0x77082435, |
12740 | 0x1b80, 0x40022437, | 15156 | 0x1b80, 0x77082437, |
12741 | 0x1b80, 0x4c012445, | 15157 | 0x1b80, 0x00052445, |
12742 | 0x1b80, 0x4c012447, | 15158 | 0x1b80, 0x00052447, |
12743 | 0x1b80, 0x4c002455, | 15159 | 0x1b80, 0x61402455, |
12744 | 0x1b80, 0x4c002457, | 15160 | 0x1b80, 0x61402457, |
12745 | 0x1b80, 0xab002465, | 15161 | 0x1b80, 0x63b02465, |
12746 | 0x1b80, 0xab002467, | 15162 | 0x1b80, 0x63b02467, |
12747 | 0x1b80, 0x40032475, | 15163 | 0x1b80, 0x00072475, |
12748 | 0x1b80, 0x40032477, | 15164 | 0x1b80, 0x00072477, |
12749 | 0x1b80, 0x49802485, | 15165 | 0x1b80, 0x54402485, |
12750 | 0x1b80, 0x49802487, | 15166 | 0x1b80, 0x54402487, |
12751 | 0x1b80, 0x56c02495, | 15167 | 0x1b80, 0x00042495, |
12752 | 0x1b80, 0x56c02497, | 15168 | 0x1b80, 0x00042497, |
12753 | 0x1b80, 0x540224a5, | 15169 | 0x1b80, 0x400824a5, |
12754 | 0x1b80, 0x540224a7, | 15170 | 0x1b80, 0x400824a7, |
12755 | 0x1b80, 0x4c0124b5, | 15171 | 0x1b80, 0x000124b5, |
12756 | 0x1b80, 0x4c0124b7, | 15172 | 0x1b80, 0x000124b7, |
12757 | 0x1b80, 0x4c0024c5, | 15173 | 0x1b80, 0xe2f424c5, |
12758 | 0x1b80, 0x4c0024c7, | 15174 | 0x1b80, 0xe2f424c7, |
12759 | 0x1b80, 0xab0024d5, | 15175 | 0x1b80, 0x740824d5, |
12760 | 0x1b80, 0xab0024d7, | 15176 | 0x1b80, 0x740824d7, |
12761 | 0x1b80, 0x540024e5, | 15177 | 0x1b80, 0xe33e24e5, |
12762 | 0x1b80, 0x540024e7, | 15178 | 0x1b80, 0xe33e24e7, |
12763 | 0x1b80, 0x000724f5, | 15179 | 0x1b80, 0x000424f5, |
12764 | 0x1b80, 0x000724f7, | 15180 | 0x1b80, 0x000424f7, |
12765 | 0x1b80, 0x4c002505, | 15181 | 0x1b80, 0x40082505, |
12766 | 0x1b80, 0x4c002507, | 15182 | 0x1b80, 0x40082507, |
12767 | 0x1b80, 0x4e002515, | 15183 | 0x1b80, 0x00012515, |
12768 | 0x1b80, 0x4e002517, | 15184 | 0x1b80, 0x00012517, |
12769 | 0x1b80, 0x00052525, | 15185 | 0x1b80, 0xe2f42525, |
12770 | 0x1b80, 0x00052527, | 15186 | 0x1b80, 0xe2f42527, |
12771 | 0x1b80, 0x40042535, | 15187 | 0x1b80, 0x74082535, |
12772 | 0x1b80, 0x40042537, | 15188 | 0x1b80, 0x74082537, |
12773 | 0x1b80, 0x4c012545, | 15189 | 0x1b80, 0xe34e2545, |
12774 | 0x1b80, 0x4c012547, | 15190 | 0x1b80, 0xe34e2547, |
12775 | 0x1b80, 0x4c002555, | 15191 | 0x1b80, 0x00042555, |
12776 | 0x1b80, 0x4c002557, | 15192 | 0x1b80, 0x00042557, |
12777 | 0x1b80, 0x00012565, | 15193 | 0x1b80, 0x40082565, |
12778 | 0x1b80, 0x00012567, | 15194 | 0x1b80, 0x40082567, |
12779 | 0x1b80, 0x00042575, | 15195 | 0x1b80, 0x00012575, |
12780 | 0x1b80, 0x00042577, | 15196 | 0x1b80, 0x00012577, |
12781 | 0x1b80, 0x44802585, | 15197 | 0x1b80, 0xe30a2585, |
12782 | 0x1b80, 0x44802587, | 15198 | 0x1b80, 0xe30a2587, |
12783 | 0x1b80, 0x4b002595, | 15199 | 0x1b80, 0x74002595, |
12784 | 0x1b80, 0x4b002597, | 15200 | 0x1b80, 0x74002597, |
12785 | 0x1b80, 0x000525a5, | 15201 | 0x1b80, 0xe33e25a5, |
12786 | 0x1b80, 0x000525a7, | 15202 | 0x1b80, 0xe33e25a7, |
12787 | 0x1b80, 0x5c8025b5, | 15203 | 0x1b80, 0x000425b5, |
12788 | 0x1b80, 0x5c8025b7, | 15204 | 0x1b80, 0x000425b7, |
12789 | 0x1b80, 0x630025c5, | 15205 | 0x1b80, 0x400825c5, |
12790 | 0x1b80, 0x630025c7, | 15206 | 0x1b80, 0x400825c7, |
12791 | 0x1b80, 0x000725d5, | 15207 | 0x1b80, 0x000125d5, |
12792 | 0x1b80, 0x000725d7, | 15208 | 0x1b80, 0x000125d7, |
12793 | 0x1b80, 0x780c25e5, | 15209 | 0x1b80, 0xe30a25e5, |
12794 | 0x1b80, 0x780c25e7, | 15210 | 0x1b80, 0xe30a25e7, |
12795 | 0x1b80, 0x791925f5, | 15211 | 0x1b80, 0x740025f5, |
12796 | 0x1b80, 0x791925f7, | 15212 | 0x1b80, 0x740025f7, |
12797 | 0x1b80, 0x7a002605, | 15213 | 0x1b80, 0xe34e2605, |
12798 | 0x1b80, 0x7a002607, | 15214 | 0x1b80, 0xe34e2607, |
12799 | 0x1b80, 0x7b822615, | 15215 | 0x1b80, 0x00042615, |
12800 | 0x1b80, 0x7b822617, | 15216 | 0x1b80, 0x00042617, |
12801 | 0x1b80, 0x7b022625, | 15217 | 0x1b80, 0x40082625, |
12802 | 0x1b80, 0x7b022627, | 15218 | 0x1b80, 0x40082627, |
12803 | 0x1b80, 0x78142635, | 15219 | 0x1b80, 0x00012635, |
12804 | 0x1b80, 0x78142637, | 15220 | 0x1b80, 0x00012637, |
12805 | 0x1b80, 0x79ee2645, | 15221 | 0x1b80, 0x40ff2645, |
12806 | 0x1b80, 0x79ee2647, | 15222 | 0x1b80, 0x40ff2647, |
12807 | 0x1b80, 0x7a012655, | 15223 | 0x1b80, 0x411f2655, |
12808 | 0x1b80, 0x7a012657, | 15224 | 0x1b80, 0x411f2657, |
12809 | 0x1b80, 0x7b832665, | 15225 | 0x1b80, 0x42002665, |
12810 | 0x1b80, 0x7b832667, | 15226 | 0x1b80, 0x42002667, |
12811 | 0x1b80, 0x7b032675, | 15227 | 0x1b80, 0x43002675, |
12812 | 0x1b80, 0x7b032677, | 15228 | 0x1b80, 0x43002677, |
12813 | 0x1b80, 0x78282685, | 15229 | 0x1b80, 0x44ff2685, |
12814 | 0x1b80, 0x78282687, | 15230 | 0x1b80, 0x44ff2687, |
12815 | 0x1b80, 0x79b42695, | 15231 | 0x1b80, 0x451f2695, |
12816 | 0x1b80, 0x79b42697, | 15232 | 0x1b80, 0x451f2697, |
12817 | 0x1b80, 0x7a0026a5, | 15233 | 0x1b80, 0x460026a5, |
12818 | 0x1b80, 0x7a0026a7, | 15234 | 0x1b80, 0x460026a7, |
12819 | 0x1b80, 0x7b0026b5, | 15235 | 0x1b80, 0x470026b5, |
12820 | 0x1b80, 0x7b0026b7, | 15236 | 0x1b80, 0x470026b7, |
12821 | 0x1b80, 0x000126c5, | 15237 | 0x1b80, 0x48ff26c5, |
12822 | 0x1b80, 0x000126c7, | 15238 | 0x1b80, 0x48ff26c7, |
12823 | 0x1b80, 0x000426d5, | 15239 | 0x1b80, 0x491f26d5, |
12824 | 0x1b80, 0x000426d7, | 15240 | 0x1b80, 0x491f26d7, |
12825 | 0x1b80, 0x448026e5, | 15241 | 0x1b80, 0x4a0026e5, |
12826 | 0x1b80, 0x448026e7, | 15242 | 0x1b80, 0x4a0026e7, |
12827 | 0x1b80, 0x4b0026f5, | 15243 | 0x1b80, 0x4b0026f5, |
12828 | 0x1b80, 0x4b0026f7, | 15244 | 0x1b80, 0x4b0026f7, |
12829 | 0x1b80, 0x00052705, | 15245 | 0x1b80, 0x00012705, |
12830 | 0x1b80, 0x00052707, | 15246 | 0x1b80, 0x00012707, |
12831 | 0x1b80, 0x5c802715, | 15247 | 0x1b80, 0x4cff2715, |
12832 | 0x1b80, 0x5c802717, | 15248 | 0x1b80, 0x4cff2717, |
12833 | 0x1b80, 0x63002725, | 15249 | 0x1b80, 0x4d1f2725, |
12834 | 0x1b80, 0x63002727, | 15250 | 0x1b80, 0x4d1f2727, |
12835 | 0x1b80, 0x00072735, | 15251 | 0x1b80, 0x4e002735, |
12836 | 0x1b80, 0x00072737, | 15252 | 0x1b80, 0x4e002737, |
12837 | 0x1b80, 0x78102745, | 15253 | 0x1b80, 0x4f002745, |
12838 | 0x1b80, 0x78102747, | 15254 | 0x1b80, 0x4f002747, |
12839 | 0x1b80, 0x79132755, | 15255 | 0x1b80, 0x50ff2755, |
12840 | 0x1b80, 0x79132757, | 15256 | 0x1b80, 0x50ff2757, |
12841 | 0x1b80, 0x7a002765, | 15257 | 0x1b80, 0x511f2765, |
12842 | 0x1b80, 0x7a002767, | 15258 | 0x1b80, 0x511f2767, |
12843 | 0x1b80, 0x7b802775, | 15259 | 0x1b80, 0x52002775, |
12844 | 0x1b80, 0x7b802777, | 15260 | 0x1b80, 0x52002777, |
12845 | 0x1b80, 0x7b002785, | 15261 | 0x1b80, 0x53002785, |
12846 | 0x1b80, 0x7b002787, | 15262 | 0x1b80, 0x53002787, |
12847 | 0x1b80, 0x78db2795, | 15263 | 0x1b80, 0x54ff2795, |
12848 | 0x1b80, 0x78db2797, | 15264 | 0x1b80, 0x54ff2797, |
12849 | 0x1b80, 0x790027a5, | 15265 | 0x1b80, 0x551f27a5, |
12850 | 0x1b80, 0x790027a7, | 15266 | 0x1b80, 0x551f27a7, |
12851 | 0x1b80, 0x7a0027b5, | 15267 | 0x1b80, 0x560027b5, |
12852 | 0x1b80, 0x7a0027b7, | 15268 | 0x1b80, 0x560027b7, |
12853 | 0x1b80, 0x7b8127c5, | 15269 | 0x1b80, 0x570027c5, |
12854 | 0x1b80, 0x7b8127c7, | 15270 | 0x1b80, 0x570027c7, |
12855 | 0x1b80, 0x7b0127d5, | 15271 | 0x1b80, 0x58ff27d5, |
12856 | 0x1b80, 0x7b0127d7, | 15272 | 0x1b80, 0x58ff27d7, |
12857 | 0x1b80, 0x782827e5, | 15273 | 0x1b80, 0x591f27e5, |
12858 | 0x1b80, 0x782827e7, | 15274 | 0x1b80, 0x591f27e7, |
12859 | 0x1b80, 0x79b427f5, | 15275 | 0x1b80, 0x5a0027f5, |
12860 | 0x1b80, 0x79b427f7, | 15276 | 0x1b80, 0x5a0027f7, |
12861 | 0x1b80, 0x7a002805, | 15277 | 0x1b80, 0x5b002805, |
12862 | 0x1b80, 0x7a002807, | 15278 | 0x1b80, 0x5b002807, |
12863 | 0x1b80, 0x7b002815, | 15279 | 0x1b80, 0x00012815, |
12864 | 0x1b80, 0x7b002817, | 15280 | 0x1b80, 0x00012817, |
12865 | 0x1b80, 0x00012825, | 15281 | 0x1b80, 0x5cff2825, |
12866 | 0x1b80, 0x00012827, | 15282 | 0x1b80, 0x5cff2827, |
12867 | 0x1b80, 0x00072835, | 15283 | 0x1b80, 0x5d1f2835, |
12868 | 0x1b80, 0x00072837, | 15284 | 0x1b80, 0x5d1f2837, |
12869 | 0x1b80, 0x783e2845, | 15285 | 0x1b80, 0x5e002845, |
12870 | 0x1b80, 0x783e2847, | 15286 | 0x1b80, 0x5e002847, |
12871 | 0x1b80, 0x79f92855, | 15287 | 0x1b80, 0x5f002855, |
12872 | 0x1b80, 0x79f92857, | 15288 | 0x1b80, 0x5f002857, |
12873 | 0x1b80, 0x7a012865, | 15289 | 0x1b80, 0x60ff2865, |
12874 | 0x1b80, 0x7a012867, | 15290 | 0x1b80, 0x60ff2867, |
12875 | 0x1b80, 0x7b822875, | 15291 | 0x1b80, 0x611f2875, |
12876 | 0x1b80, 0x7b822877, | 15292 | 0x1b80, 0x611f2877, |
12877 | 0x1b80, 0x7b022885, | 15293 | 0x1b80, 0x62002885, |
12878 | 0x1b80, 0x7b022887, | 15294 | 0x1b80, 0x62002887, |
12879 | 0x1b80, 0x78a92895, | 15295 | 0x1b80, 0x63002895, |
12880 | 0x1b80, 0x78a92897, | 15296 | 0x1b80, 0x63002897, |
12881 | 0x1b80, 0x79ed28a5, | 15297 | 0x1b80, 0x000128a5, |
12882 | 0x1b80, 0x79ed28a7, | 15298 | 0x1b80, 0x000128a7, |
12883 | 0x1b80, 0x7b8328b5, | 15299 | 0x1b80, 0x64ff28b5, |
12884 | 0x1b80, 0x7b8328b7, | 15300 | 0x1b80, 0x64ff28b7, |
12885 | 0x1b80, 0x7b0328c5, | 15301 | 0x1b80, 0x651f28c5, |
12886 | 0x1b80, 0x7b0328c7, | 15302 | 0x1b80, 0x651f28c7, |
12887 | 0x1b80, 0x782828d5, | 15303 | 0x1b80, 0x660028d5, |
12888 | 0x1b80, 0x782828d7, | 15304 | 0x1b80, 0x660028d7, |
12889 | 0x1b80, 0x79b428e5, | 15305 | 0x1b80, 0x670028e5, |
12890 | 0x1b80, 0x79b428e7, | 15306 | 0x1b80, 0x670028e7, |
12891 | 0x1b80, 0x7a0028f5, | 15307 | 0x1b80, 0x68ff28f5, |
12892 | 0x1b80, 0x7a0028f7, | 15308 | 0x1b80, 0x68ff28f7, |
12893 | 0x1b80, 0x7b002905, | 15309 | 0x1b80, 0x691f2905, |
12894 | 0x1b80, 0x7b002907, | 15310 | 0x1b80, 0x691f2907, |
12895 | 0x1b80, 0x00012915, | 15311 | 0x1b80, 0x6a002915, |
12896 | 0x1b80, 0x00012917, | 15312 | 0x1b80, 0x6a002917, |
12897 | 0x1b80, 0x00072925, | 15313 | 0x1b80, 0x6b002925, |
12898 | 0x1b80, 0x00072927, | 15314 | 0x1b80, 0x6b002927, |
12899 | 0x1b80, 0x78ae2935, | 15315 | 0x1b80, 0x6cff2935, |
12900 | 0x1b80, 0x78ae2937, | 15316 | 0x1b80, 0x6cff2937, |
12901 | 0x1b80, 0x79fa2945, | 15317 | 0x1b80, 0x6d1f2945, |
12902 | 0x1b80, 0x79fa2947, | 15318 | 0x1b80, 0x6d1f2947, |
12903 | 0x1b80, 0x7a012955, | 15319 | 0x1b80, 0x6e002955, |
12904 | 0x1b80, 0x7a012957, | 15320 | 0x1b80, 0x6e002957, |
12905 | 0x1b80, 0x7b802965, | 15321 | 0x1b80, 0x6f002965, |
12906 | 0x1b80, 0x7b802967, | 15322 | 0x1b80, 0x6f002967, |
12907 | 0x1b80, 0x7b002975, | 15323 | 0x1b80, 0x70ff2975, |
12908 | 0x1b80, 0x7b002977, | 15324 | 0x1b80, 0x70ff2977, |
12909 | 0x1b80, 0x787a2985, | 15325 | 0x1b80, 0x711f2985, |
12910 | 0x1b80, 0x787a2987, | 15326 | 0x1b80, 0x711f2987, |
12911 | 0x1b80, 0x79f12995, | 15327 | 0x1b80, 0x72002995, |
12912 | 0x1b80, 0x79f12997, | 15328 | 0x1b80, 0x72002997, |
12913 | 0x1b80, 0x7b8129a5, | 15329 | 0x1b80, 0x730029a5, |
12914 | 0x1b80, 0x7b8129a7, | 15330 | 0x1b80, 0x730029a7, |
12915 | 0x1b80, 0x7b0129b5, | 15331 | 0x1b80, 0x000129b5, |
12916 | 0x1b80, 0x7b0129b7, | 15332 | 0x1b80, 0x000129b7, |
12917 | 0x1b80, 0x782829c5, | 15333 | 0x1b80, 0x70ff29c5, |
12918 | 0x1b80, 0x782829c7, | 15334 | 0x1b80, 0x70ff29c7, |
12919 | 0x1b80, 0x79b429d5, | 15335 | 0x1b80, 0x711f29d5, |
12920 | 0x1b80, 0x79b429d7, | 15336 | 0x1b80, 0x711f29d7, |
12921 | 0x1b80, 0x7a0029e5, | 15337 | 0x1b80, 0x720029e5, |
12922 | 0x1b80, 0x7a0029e7, | 15338 | 0x1b80, 0x720029e7, |
12923 | 0x1b80, 0x7b0029f5, | 15339 | 0x1b80, 0x730029f5, |
12924 | 0x1b80, 0x7b0029f7, | 15340 | 0x1b80, 0x730029f7, |
12925 | 0x1b80, 0x00012a05, | 15341 | 0x1b80, 0x74ff2a05, |
12926 | 0x1b80, 0x00012a07, | 15342 | 0x1b80, 0x74ff2a07, |
12927 | 0x1b80, 0x00072a15, | 15343 | 0x1b80, 0x751f2a15, |
12928 | 0x1b80, 0x00072a17, | 15344 | 0x1b80, 0x751f2a17, |
12929 | 0x1b80, 0x75002a25, | 15345 | 0x1b80, 0x76002a25, |
12930 | 0x1b80, 0x75002a27, | 15346 | 0x1b80, 0x76002a27, |
12931 | 0x1b80, 0x76022a35, | 15347 | 0x1b80, 0x77002a35, |
12932 | 0x1b80, 0x76022a37, | 15348 | 0x1b80, 0x77002a37, |
12933 | 0x1b80, 0x77152a45, | 15349 | 0x1b80, 0x78ff2a45, |
12934 | 0x1b80, 0x77152a47, | 15350 | 0x1b80, 0x78ff2a47, |
12935 | 0x1b80, 0x00062a55, | 15351 | 0x1b80, 0x791f2a55, |
12936 | 0x1b80, 0x00062a57, | 15352 | 0x1b80, 0x791f2a57, |
12937 | 0x1b80, 0x74002a65, | 15353 | 0x1b80, 0x7a002a65, |
12938 | 0x1b80, 0x74002a67, | 15354 | 0x1b80, 0x7a002a67, |
12939 | 0x1b80, 0x76002a75, | 15355 | 0x1b80, 0x7b002a75, |
12940 | 0x1b80, 0x76002a77, | 15356 | 0x1b80, 0x7b002a77, |
12941 | 0x1b80, 0x77002a85, | 15357 | 0x1b80, 0x7cff2a85, |
12942 | 0x1b80, 0x77002a87, | 15358 | 0x1b80, 0x7cff2a87, |
12943 | 0x1b80, 0x75102a95, | 15359 | 0x1b80, 0x7d1f2a95, |
12944 | 0x1b80, 0x75102a97, | 15360 | 0x1b80, 0x7d1f2a97, |
12945 | 0x1b80, 0x75002aa5, | 15361 | 0x1b80, 0x7e002aa5, |
12946 | 0x1b80, 0x75002aa7, | 15362 | 0x1b80, 0x7e002aa7, |
12947 | 0x1b80, 0xb3002ab5, | 15363 | 0x1b80, 0x7f002ab5, |
12948 | 0x1b80, 0xb3002ab7, | 15364 | 0x1b80, 0x7f002ab7, |
12949 | 0x1b80, 0x93002ac5, | 15365 | 0x1b80, 0x00012ac5, |
12950 | 0x1b80, 0x93002ac7, | 15366 | 0x1b80, 0x00012ac7, |
12951 | 0x1b80, 0x00072ad5, | 15367 | 0x1b80, 0x00042ad5, |
12952 | 0x1b80, 0x00072ad7, | 15368 | 0x1b80, 0x00042ad7, |
12953 | 0x1b80, 0x76002ae5, | 15369 | 0x1b80, 0x49042ae5, |
12954 | 0x1b80, 0x76002ae7, | 15370 | 0x1b80, 0x49042ae7, |
12955 | 0x1b80, 0x77002af5, | 15371 | 0x1b80, 0x4bb02af5, |
12956 | 0x1b80, 0x77002af7, | 15372 | 0x1b80, 0x4bb02af7, |
12957 | 0x1b80, 0x00012b05, | 15373 | 0x1b80, 0x00062b05, |
12958 | 0x1b80, 0x00012b07, | 15374 | 0x1b80, 0x00062b07, |
12959 | 0x1b80, 0x00072b15, | 15375 | 0x1b80, 0x75042b15, |
12960 | 0x1b80, 0x00072b17, | 15376 | 0x1b80, 0x75042b17, |
12961 | 0x1b80, 0x75002b25, | 15377 | 0x1b80, 0x77082b25, |
12962 | 0x1b80, 0x75002b27, | 15378 | 0x1b80, 0x77082b27, |
12963 | 0x1b80, 0x76022b35, | 15379 | 0x1b80, 0x00042b35, |
12964 | 0x1b80, 0x76022b37, | 15380 | 0x1b80, 0x00042b37, |
12965 | 0x1b80, 0x77252b45, | 15381 | 0x1b80, 0x44802b45, |
12966 | 0x1b80, 0x77252b47, | 15382 | 0x1b80, 0x44802b47, |
12967 | 0x1b80, 0x00062b55, | 15383 | 0x1b80, 0x45ff2b55, |
12968 | 0x1b80, 0x00062b57, | 15384 | 0x1b80, 0x45ff2b57, |
12969 | 0x1b80, 0x74002b65, | 15385 | 0x1b80, 0x463f2b65, |
12970 | 0x1b80, 0x74002b67, | 15386 | 0x1b80, 0x463f2b67, |
12971 | 0x1b80, 0x76002b75, | 15387 | 0x1b80, 0x47312b75, |
12972 | 0x1b80, 0x76002b77, | 15388 | 0x1b80, 0x47312b77, |
12973 | 0x1b80, 0x77012b85, | 15389 | 0x1b80, 0x40082b85, |
12974 | 0x1b80, 0x77012b87, | 15390 | 0x1b80, 0x40082b87, |
12975 | 0x1b80, 0x75102b95, | 15391 | 0x1b80, 0xe2db2b95, |
12976 | 0x1b80, 0x75102b97, | 15392 | 0x1b80, 0xe2db2b97, |
12977 | 0x1b80, 0x75002ba5, | 15393 | 0x1b80, 0x00042ba5, |
12978 | 0x1b80, 0x75002ba7, | 15394 | 0x1b80, 0x00042ba7, |
12979 | 0x1b80, 0xb3002bb5, | 15395 | 0x1b80, 0x400c2bb5, |
12980 | 0x1b80, 0xb3002bb7, | 15396 | 0x1b80, 0x400c2bb7, |
12981 | 0x1b80, 0x93002bc5, | 15397 | 0x1b80, 0x00062bc5, |
12982 | 0x1b80, 0x93002bc7, | 15398 | 0x1b80, 0x00062bc7, |
12983 | 0x1b80, 0x00072bd5, | 15399 | 0x1b80, 0x75002bd5, |
12984 | 0x1b80, 0x00072bd7, | 15400 | 0x1b80, 0x75002bd7, |
12985 | 0x1b80, 0x76002be5, | 15401 | 0x1b80, 0x00042be5, |
12986 | 0x1b80, 0x76002be7, | 15402 | 0x1b80, 0x00042be7, |
12987 | 0x1b80, 0x77002bf5, | 15403 | 0x1b80, 0x445b2bf5, |
12988 | 0x1b80, 0x77002bf7, | 15404 | 0x1b80, 0x445b2bf7, |
12989 | 0x1b80, 0x00012c05, | 15405 | 0x1b80, 0x47002c05, |
12990 | 0x1b80, 0x00012c07, | 15406 | 0x1b80, 0x47002c07, |
12991 | 0x1b80, 0x00042c15, | 15407 | 0x1b80, 0x40082c15, |
12992 | 0x1b80, 0x00042c17, | 15408 | 0x1b80, 0x40082c17, |
12993 | 0x1b80, 0x44802c25, | 15409 | 0x1b80, 0x00012c25, |
12994 | 0x1b80, 0x44802c27, | 15410 | 0x1b80, 0x00012c27, |
12995 | 0x1b80, 0x47302c35, | 15411 | 0x1b80, 0x00052c35, |
12996 | 0x1b80, 0x47302c37, | 15412 | 0x1b80, 0x00052c37, |
12997 | 0x1b80, 0x00062c45, | 15413 | 0x1b80, 0x61042c45, |
12998 | 0x1b80, 0x00062c47, | 15414 | 0x1b80, 0x61042c47, |
12999 | 0x1b80, 0x776c2c55, | 15415 | 0x1b80, 0x63b02c55, |
13000 | 0x1b80, 0x776c2c57, | 15416 | 0x1b80, 0x63b02c57, |
13001 | 0x1b80, 0x00012c65, | 15417 | 0x1b80, 0x00062c65, |
13002 | 0x1b80, 0x00012c67, | 15418 | 0x1b80, 0x00062c67, |
13003 | 0x1b80, 0x00052c75, | 15419 | 0x1b80, 0x75082c75, |
13004 | 0x1b80, 0x00052c77, | 15420 | 0x1b80, 0x75082c77, |
13005 | 0x1b80, 0x5c802c85, | 15421 | 0x1b80, 0x77082c85, |
13006 | 0x1b80, 0x5c802c87, | 15422 | 0x1b80, 0x77082c87, |
13007 | 0x1b80, 0x5f302c95, | 15423 | 0x1b80, 0x00052c95, |
13008 | 0x1b80, 0x5f302c97, | 15424 | 0x1b80, 0x00052c97, |
13009 | 0x1b80, 0x00062ca5, | 15425 | 0x1b80, 0x5c802ca5, |
13010 | 0x1b80, 0x00062ca7, | 15426 | 0x1b80, 0x5c802ca7, |
13011 | 0x1b80, 0x776d2cb5, | 15427 | 0x1b80, 0x5dff2cb5, |
13012 | 0x1b80, 0x776d2cb7, | 15428 | 0x1b80, 0x5dff2cb7, |
13013 | 0x1b80, 0x00012cc5, | 15429 | 0x1b80, 0x5e3f2cc5, |
13014 | 0x1b80, 0x00012cc7, | 15430 | 0x1b80, 0x5e3f2cc7, |
13015 | 0x1b80, 0xb9002cd5, | 15431 | 0x1b80, 0x5f312cd5, |
13016 | 0x1b80, 0xb9002cd7, | 15432 | 0x1b80, 0x5f312cd7, |
13017 | 0x1b80, 0x99002ce5, | 15433 | 0x1b80, 0x00042ce5, |
13018 | 0x1b80, 0x99002ce7, | 15434 | 0x1b80, 0x00042ce7, |
13019 | 0x1b80, 0x00062cf5, | 15435 | 0x1b80, 0x400a2cf5, |
13020 | 0x1b80, 0x00062cf7, | 15436 | 0x1b80, 0x400a2cf7, |
13021 | 0x1b80, 0x77002d05, | 15437 | 0x1b80, 0xe2db2d05, |
13022 | 0x1b80, 0x77002d07, | 15438 | 0x1b80, 0xe2db2d07, |
13023 | 0x1b80, 0x98052d15, | 15439 | 0x1b80, 0x00042d15, |
13024 | 0x1b80, 0x98052d17, | 15440 | 0x1b80, 0x00042d17, |
13025 | 0x1b80, 0x00042d25, | 15441 | 0x1b80, 0x400c2d25, |
13026 | 0x1b80, 0x00042d27, | 15442 | 0x1b80, 0x400c2d27, |
13027 | 0x1b80, 0x40082d35, | 15443 | 0x1b80, 0x00062d35, |
13028 | 0x1b80, 0x40082d37, | 15444 | 0x1b80, 0x00062d37, |
13029 | 0x1b80, 0x4a022d45, | 15445 | 0x1b80, 0x75002d45, |
13030 | 0x1b80, 0x4a022d47, | 15446 | 0x1b80, 0x75002d47, |
13031 | 0x1b80, 0x30192d55, | 15447 | 0x1b80, 0x00052d55, |
13032 | 0x1b80, 0x30192d57, | 15448 | 0x1b80, 0x00052d57, |
13033 | 0x1b80, 0x00012d65, | 15449 | 0x1b80, 0x5c5b2d65, |
13034 | 0x1b80, 0x00012d67, | 15450 | 0x1b80, 0x5c5b2d67, |
13035 | 0x1b80, 0x7b482d75, | 15451 | 0x1b80, 0x5f002d75, |
13036 | 0x1b80, 0x7b482d77, | 15452 | 0x1b80, 0x5f002d77, |
13037 | 0x1b80, 0x7a902d85, | 15453 | 0x1b80, 0x00042d85, |
13038 | 0x1b80, 0x7a902d87, | 15454 | 0x1b80, 0x00042d87, |
13039 | 0x1b80, 0x79002d95, | 15455 | 0x1b80, 0x40082d95, |
13040 | 0x1b80, 0x79002d97, | 15456 | 0x1b80, 0x40082d97, |
13041 | 0x1b80, 0x55032da5, | 15457 | 0x1b80, 0x00012da5, |
13042 | 0x1b80, 0x55032da7, | 15458 | 0x1b80, 0x00012da7, |
13043 | 0x1b80, 0x32e32db5, | 15459 | 0x1b80, 0x00072db5, |
13044 | 0x1b80, 0x32e32db7, | 15460 | 0x1b80, 0x00072db7, |
13045 | 0x1b80, 0x7b382dc5, | 15461 | 0x1b80, 0x4c122dc5, |
13046 | 0x1b80, 0x7b382dc7, | 15462 | 0x1b80, 0x4c122dc7, |
13047 | 0x1b80, 0x7a802dd5, | 15463 | 0x1b80, 0x4e202dd5, |
13048 | 0x1b80, 0x7a802dd7, | 15464 | 0x1b80, 0x4e202dd7, |
13049 | 0x1b80, 0x550b2de5, | 15465 | 0x1b80, 0x00052de5, |
13050 | 0x1b80, 0x550b2de7, | 15466 | 0x1b80, 0x00052de7, |
13051 | 0x1b80, 0x32e32df5, | 15467 | 0x1b80, 0x598f2df5, |
13052 | 0x1b80, 0x32e32df7, | 15468 | 0x1b80, 0x598f2df7, |
13053 | 0x1b80, 0x7b402e05, | 15469 | 0x1b80, 0x40022e05, |
13054 | 0x1b80, 0x7b402e07, | 15470 | 0x1b80, 0x40022e07, |
13055 | 0x1b80, 0x7a002e15, | 15471 | 0x1b80, 0x4c012e15, |
13056 | 0x1b80, 0x7a002e17, | 15472 | 0x1b80, 0x4c012e17, |
13057 | 0x1b80, 0x55132e25, | 15473 | 0x1b80, 0x4c002e25, |
13058 | 0x1b80, 0x55132e27, | 15474 | 0x1b80, 0x4c002e27, |
13059 | 0x1b80, 0x74012e35, | 15475 | 0x1b80, 0xab002e35, |
13060 | 0x1b80, 0x74012e37, | 15476 | 0x1b80, 0xab002e37, |
13061 | 0x1b80, 0x74002e45, | 15477 | 0x1b80, 0x40032e45, |
13062 | 0x1b80, 0x74002e47, | 15478 | 0x1b80, 0x40032e47, |
13063 | 0x1b80, 0x8e002e55, | 15479 | 0x1b80, 0x49802e55, |
13064 | 0x1b80, 0x8e002e57, | 15480 | 0x1b80, 0x49802e57, |
13065 | 0x1b80, 0x00012e65, | 15481 | 0x1b80, 0x56c02e65, |
13066 | 0x1b80, 0x00012e67, | 15482 | 0x1b80, 0x56c02e67, |
13067 | 0x1b80, 0x57022e75, | 15483 | 0x1b80, 0x54022e75, |
13068 | 0x1b80, 0x57022e77, | 15484 | 0x1b80, 0x54022e77, |
13069 | 0x1b80, 0x57002e85, | 15485 | 0x1b80, 0x4c012e85, |
13070 | 0x1b80, 0x57002e87, | 15486 | 0x1b80, 0x4c012e87, |
13071 | 0x1b80, 0x97002e95, | 15487 | 0x1b80, 0x4c002e95, |
13072 | 0x1b80, 0x97002e97, | 15488 | 0x1b80, 0x4c002e97, |
13073 | 0x1b80, 0x00012ea5, | 15489 | 0x1b80, 0xab002ea5, |
13074 | 0x1b80, 0x00012ea7, | 15490 | 0x1b80, 0xab002ea7, |
13075 | 0x1b80, 0x4f782eb5, | 15491 | 0x1b80, 0x54002eb5, |
13076 | 0x1b80, 0x4f782eb7, | 15492 | 0x1b80, 0x54002eb7, |
13077 | 0x1b80, 0x53882ec5, | 15493 | 0x1b80, 0x00072ec5, |
13078 | 0x1b80, 0x53882ec7, | 15494 | 0x1b80, 0x00072ec7, |
13079 | 0x1b80, 0xe2f72ed5, | 15495 | 0x1b80, 0x4c002ed5, |
13080 | 0x1b80, 0xe2f72ed7, | 15496 | 0x1b80, 0x4c002ed7, |
13081 | 0x1b80, 0x54802ee5, | 15497 | 0x1b80, 0x4e002ee5, |
13082 | 0x1b80, 0x54802ee7, | 15498 | 0x1b80, 0x4e002ee7, |
13083 | 0x1b80, 0x54002ef5, | 15499 | 0x1b80, 0x00052ef5, |
13084 | 0x1b80, 0x54002ef7, | 15500 | 0x1b80, 0x00052ef7, |
13085 | 0x1b80, 0x54812f05, | 15501 | 0x1b80, 0x40042f05, |
13086 | 0x1b80, 0x54812f07, | 15502 | 0x1b80, 0x40042f07, |
13087 | 0x1b80, 0x54002f15, | 15503 | 0x1b80, 0x4c012f15, |
13088 | 0x1b80, 0x54002f17, | 15504 | 0x1b80, 0x4c012f17, |
13089 | 0x1b80, 0x54822f25, | 15505 | 0x1b80, 0x4c002f25, |
13090 | 0x1b80, 0x54822f27, | 15506 | 0x1b80, 0x4c002f27, |
13091 | 0x1b80, 0x54002f35, | 15507 | 0x1b80, 0x00012f35, |
13092 | 0x1b80, 0x54002f37, | 15508 | 0x1b80, 0x00012f37, |
13093 | 0x1b80, 0xe3022f45, | 15509 | 0x1b80, 0x00042f45, |
13094 | 0x1b80, 0xe3022f47, | 15510 | 0x1b80, 0x00042f47, |
13095 | 0x1b80, 0xbf1d2f55, | 15511 | 0x1b80, 0x44802f55, |
13096 | 0x1b80, 0xbf1d2f57, | 15512 | 0x1b80, 0x44802f57, |
13097 | 0x1b80, 0x30192f65, | 15513 | 0x1b80, 0x4b002f65, |
13098 | 0x1b80, 0x30192f67, | 15514 | 0x1b80, 0x4b002f67, |
13099 | 0x1b80, 0xe2d72f75, | 15515 | 0x1b80, 0x00052f75, |
13100 | 0x1b80, 0xe2d72f77, | 15516 | 0x1b80, 0x00052f77, |
13101 | 0x1b80, 0xe2dc2f85, | 15517 | 0x1b80, 0x5c802f85, |
13102 | 0x1b80, 0xe2dc2f87, | 15518 | 0x1b80, 0x5c802f87, |
13103 | 0x1b80, 0xe2e02f95, | 15519 | 0x1b80, 0x63002f95, |
13104 | 0x1b80, 0xe2e02f97, | 15520 | 0x1b80, 0x63002f97, |
13105 | 0x1b80, 0xe2e72fa5, | 15521 | 0x1b80, 0x00072fa5, |
13106 | 0x1b80, 0xe2e72fa7, | 15522 | 0x1b80, 0x00072fa7, |
13107 | 0x1b80, 0xe3412fb5, | 15523 | 0x1b80, 0x780c2fb5, |
13108 | 0x1b80, 0xe3412fb7, | 15524 | 0x1b80, 0x780c2fb7, |
13109 | 0x1b80, 0x55132fc5, | 15525 | 0x1b80, 0x79192fc5, |
13110 | 0x1b80, 0x55132fc7, | 15526 | 0x1b80, 0x79192fc7, |
13111 | 0x1b80, 0xe2e32fd5, | 15527 | 0x1b80, 0x7a002fd5, |
13112 | 0x1b80, 0xe2e32fd7, | 15528 | 0x1b80, 0x7a002fd7, |
13113 | 0x1b80, 0x55152fe5, | 15529 | 0x1b80, 0x7b822fe5, |
13114 | 0x1b80, 0x55152fe7, | 15530 | 0x1b80, 0x7b822fe7, |
13115 | 0x1b80, 0xe2e72ff5, | 15531 | 0x1b80, 0x7b022ff5, |
13116 | 0x1b80, 0xe2e72ff7, | 15532 | 0x1b80, 0x7b022ff7, |
13117 | 0x1b80, 0xe3413005, | 15533 | 0x1b80, 0x78143005, |
13118 | 0x1b80, 0xe3413007, | 15534 | 0x1b80, 0x78143007, |
13119 | 0x1b80, 0x00013015, | 15535 | 0x1b80, 0x79ee3015, |
13120 | 0x1b80, 0x00013017, | 15536 | 0x1b80, 0x79ee3017, |
13121 | 0x1b80, 0x54bf3025, | 15537 | 0x1b80, 0x7a013025, |
13122 | 0x1b80, 0x54bf3027, | 15538 | 0x1b80, 0x7a013027, |
13123 | 0x1b80, 0x54c03035, | 15539 | 0x1b80, 0x7b833035, |
13124 | 0x1b80, 0x54c03037, | 15540 | 0x1b80, 0x7b833037, |
13125 | 0x1b80, 0x54a33045, | 15541 | 0x1b80, 0x7b033045, |
13126 | 0x1b80, 0x54a33047, | 15542 | 0x1b80, 0x7b033047, |
13127 | 0x1b80, 0x54c13055, | 15543 | 0x1b80, 0x78283055, |
13128 | 0x1b80, 0x54c13057, | 15544 | 0x1b80, 0x78283057, |
13129 | 0x1b80, 0x54a43065, | 15545 | 0x1b80, 0x79b43065, |
13130 | 0x1b80, 0x54a43067, | 15546 | 0x1b80, 0x79b43067, |
13131 | 0x1b80, 0x4c183075, | 15547 | 0x1b80, 0x7a003075, |
13132 | 0x1b80, 0x4c183077, | 15548 | 0x1b80, 0x7a003077, |
13133 | 0x1b80, 0xbf073085, | 15549 | 0x1b80, 0x7b003085, |
13134 | 0x1b80, 0xbf073087, | 15550 | 0x1b80, 0x7b003087, |
13135 | 0x1b80, 0x54c23095, | 15551 | 0x1b80, 0x00013095, |
13136 | 0x1b80, 0x54c23097, | 15552 | 0x1b80, 0x00013097, |
13137 | 0x1b80, 0x54a430a5, | 15553 | 0x1b80, 0x000430a5, |
13138 | 0x1b80, 0x54a430a7, | 15554 | 0x1b80, 0x000430a7, |
13139 | 0x1b80, 0xbf0430b5, | 15555 | 0x1b80, 0x448030b5, |
13140 | 0x1b80, 0xbf0430b7, | 15556 | 0x1b80, 0x448030b7, |
13141 | 0x1b80, 0x54c130c5, | 15557 | 0x1b80, 0x4b0030c5, |
13142 | 0x1b80, 0x54c130c7, | 15558 | 0x1b80, 0x4b0030c7, |
13143 | 0x1b80, 0x54a330d5, | 15559 | 0x1b80, 0x000530d5, |
13144 | 0x1b80, 0x54a330d7, | 15560 | 0x1b80, 0x000530d7, |
13145 | 0x1b80, 0xbf0130e5, | 15561 | 0x1b80, 0x5c8030e5, |
13146 | 0x1b80, 0xbf0130e7, | 15562 | 0x1b80, 0x5c8030e7, |
13147 | 0x1b80, 0xe34f30f5, | 15563 | 0x1b80, 0x630030f5, |
13148 | 0x1b80, 0xe34f30f7, | 15564 | 0x1b80, 0x630030f7, |
13149 | 0x1b80, 0x54df3105, | 15565 | 0x1b80, 0x00073105, |
13150 | 0x1b80, 0x54df3107, | 15566 | 0x1b80, 0x00073107, |
13151 | 0x1b80, 0x00013115, | 15567 | 0x1b80, 0x78103115, |
13152 | 0x1b80, 0x00013117, | 15568 | 0x1b80, 0x78103117, |
13153 | 0x1b80, 0x54bf3125, | 15569 | 0x1b80, 0x79133125, |
13154 | 0x1b80, 0x54bf3127, | 15570 | 0x1b80, 0x79133127, |
13155 | 0x1b80, 0x54e53135, | 15571 | 0x1b80, 0x7a003135, |
13156 | 0x1b80, 0x54e53137, | 15572 | 0x1b80, 0x7a003137, |
13157 | 0x1b80, 0x050a3145, | 15573 | 0x1b80, 0x7b803145, |
13158 | 0x1b80, 0x050a3147, | 15574 | 0x1b80, 0x7b803147, |
13159 | 0x1b80, 0x54df3155, | 15575 | 0x1b80, 0x7b003155, |
13160 | 0x1b80, 0x54df3157, | 15576 | 0x1b80, 0x7b003157, |
13161 | 0x1b80, 0x00013165, | 15577 | 0x1b80, 0x78db3165, |
13162 | 0x1b80, 0x00013167, | 15578 | 0x1b80, 0x78db3167, |
13163 | 0x1b80, 0x7f403175, | 15579 | 0x1b80, 0x79003175, |
13164 | 0x1b80, 0x7f403177, | 15580 | 0x1b80, 0x79003177, |
13165 | 0x1b80, 0x7e003185, | 15581 | 0x1b80, 0x7a003185, |
13166 | 0x1b80, 0x7e003187, | 15582 | 0x1b80, 0x7a003187, |
13167 | 0x1b80, 0x7d003195, | 15583 | 0x1b80, 0x7b813195, |
13168 | 0x1b80, 0x7d003197, | 15584 | 0x1b80, 0x7b813197, |
13169 | 0x1b80, 0x550131a5, | 15585 | 0x1b80, 0x7b0131a5, |
13170 | 0x1b80, 0x550131a7, | 15586 | 0x1b80, 0x7b0131a7, |
13171 | 0x1b80, 0x5c3131b5, | 15587 | 0x1b80, 0x782831b5, |
13172 | 0x1b80, 0x5c3131b7, | 15588 | 0x1b80, 0x782831b7, |
13173 | 0x1b80, 0xe2e331c5, | 15589 | 0x1b80, 0x79b431c5, |
13174 | 0x1b80, 0xe2e331c7, | 15590 | 0x1b80, 0x79b431c7, |
13175 | 0x1b80, 0xe2e731d5, | 15591 | 0x1b80, 0x7a0031d5, |
13176 | 0x1b80, 0xe2e731d7, | 15592 | 0x1b80, 0x7a0031d7, |
13177 | 0x1b80, 0x548031e5, | 15593 | 0x1b80, 0x7b0031e5, |
13178 | 0x1b80, 0x548031e7, | 15594 | 0x1b80, 0x7b0031e7, |
13179 | 0x1b80, 0x540031f5, | 15595 | 0x1b80, 0x000131f5, |
13180 | 0x1b80, 0x540031f7, | 15596 | 0x1b80, 0x000131f7, |
13181 | 0x1b80, 0x54813205, | 15597 | 0x1b80, 0x00073205, |
13182 | 0x1b80, 0x54813207, | 15598 | 0x1b80, 0x00073207, |
13183 | 0x1b80, 0x54003215, | 15599 | 0x1b80, 0x783e3215, |
13184 | 0x1b80, 0x54003217, | 15600 | 0x1b80, 0x783e3217, |
13185 | 0x1b80, 0x54823225, | 15601 | 0x1b80, 0x79f93225, |
13186 | 0x1b80, 0x54823227, | 15602 | 0x1b80, 0x79f93227, |
13187 | 0x1b80, 0x54003235, | 15603 | 0x1b80, 0x7a013235, |
13188 | 0x1b80, 0x54003237, | 15604 | 0x1b80, 0x7a013237, |
13189 | 0x1b80, 0xe3023245, | 15605 | 0x1b80, 0x7b823245, |
13190 | 0x1b80, 0xe3023247, | 15606 | 0x1b80, 0x7b823247, |
13191 | 0x1b80, 0xbfed3255, | 15607 | 0x1b80, 0x7b023255, |
13192 | 0x1b80, 0xbfed3257, | 15608 | 0x1b80, 0x7b023257, |
13193 | 0x1b80, 0x30193265, | 15609 | 0x1b80, 0x78a93265, |
13194 | 0x1b80, 0x30193267, | 15610 | 0x1b80, 0x78a93267, |
13195 | 0x1b80, 0x74023275, | 15611 | 0x1b80, 0x79ed3275, |
13196 | 0x1b80, 0x74023277, | 15612 | 0x1b80, 0x79ed3277, |
13197 | 0x1b80, 0x003f3285, | 15613 | 0x1b80, 0x7b833285, |
13198 | 0x1b80, 0x003f3287, | 15614 | 0x1b80, 0x7b833287, |
13199 | 0x1b80, 0x74003295, | 15615 | 0x1b80, 0x7b033295, |
13200 | 0x1b80, 0x74003297, | 15616 | 0x1b80, 0x7b033297, |
13201 | 0x1b80, 0x000232a5, | 15617 | 0x1b80, 0x782832a5, |
13202 | 0x1b80, 0x000232a7, | 15618 | 0x1b80, 0x782832a7, |
13203 | 0x1b80, 0x000132b5, | 15619 | 0x1b80, 0x79b432b5, |
13204 | 0x1b80, 0x000132b7, | 15620 | 0x1b80, 0x79b432b7, |
13205 | 0x1b80, 0x000632c5, | 15621 | 0x1b80, 0x7a0032c5, |
13206 | 0x1b80, 0x000632c7, | 15622 | 0x1b80, 0x7a0032c7, |
13207 | 0x1b80, 0x5a8032d5, | 15623 | 0x1b80, 0x7b0032d5, |
13208 | 0x1b80, 0x5a8032d7, | 15624 | 0x1b80, 0x7b0032d7, |
13209 | 0x1b80, 0x5a0032e5, | 15625 | 0x1b80, 0x000132e5, |
13210 | 0x1b80, 0x5a0032e7, | 15626 | 0x1b80, 0x000132e7, |
13211 | 0x1b80, 0x920032f5, | 15627 | 0x1b80, 0x000732f5, |
13212 | 0x1b80, 0x920032f7, | 15628 | 0x1b80, 0x000732f7, |
13213 | 0x1b80, 0x00013305, | 15629 | 0x1b80, 0x78ae3305, |
13214 | 0x1b80, 0x00013307, | 15630 | 0x1b80, 0x78ae3307, |
13215 | 0x1b80, 0x5b8f3315, | 15631 | 0x1b80, 0x79fa3315, |
13216 | 0x1b80, 0x5b8f3317, | 15632 | 0x1b80, 0x79fa3317, |
13217 | 0x1b80, 0x5b0f3325, | 15633 | 0x1b80, 0x7a013325, |
13218 | 0x1b80, 0x5b0f3327, | 15634 | 0x1b80, 0x7a013327, |
13219 | 0x1b80, 0x91003335, | 15635 | 0x1b80, 0x7b803335, |
13220 | 0x1b80, 0x91003337, | 15636 | 0x1b80, 0x7b803337, |
13221 | 0x1b80, 0x00013345, | 15637 | 0x1b80, 0x7b003345, |
13222 | 0x1b80, 0x00013347, | 15638 | 0x1b80, 0x7b003347, |
13223 | 0x1b80, 0x00063355, | 15639 | 0x1b80, 0x787a3355, |
13224 | 0x1b80, 0x00063357, | 15640 | 0x1b80, 0x787a3357, |
13225 | 0x1b80, 0x5d803365, | 15641 | 0x1b80, 0x79f13365, |
13226 | 0x1b80, 0x5d803367, | 15642 | 0x1b80, 0x79f13367, |
13227 | 0x1b80, 0x5e563375, | 15643 | 0x1b80, 0x7b813375, |
13228 | 0x1b80, 0x5e563377, | 15644 | 0x1b80, 0x7b813377, |
13229 | 0x1b80, 0x00043385, | 15645 | 0x1b80, 0x7b013385, |
13230 | 0x1b80, 0x00043387, | 15646 | 0x1b80, 0x7b013387, |
13231 | 0x1b80, 0x4d083395, | 15647 | 0x1b80, 0x78283395, |
13232 | 0x1b80, 0x4d083397, | 15648 | 0x1b80, 0x78283397, |
13233 | 0x1b80, 0x571033a5, | 15649 | 0x1b80, 0x79b433a5, |
13234 | 0x1b80, 0x571033a7, | 15650 | 0x1b80, 0x79b433a7, |
13235 | 0x1b80, 0x570033b5, | 15651 | 0x1b80, 0x7a0033b5, |
13236 | 0x1b80, 0x570033b7, | 15652 | 0x1b80, 0x7a0033b7, |
13237 | 0x1b80, 0x4d0033c5, | 15653 | 0x1b80, 0x7b0033c5, |
13238 | 0x1b80, 0x4d0033c7, | 15654 | 0x1b80, 0x7b0033c7, |
13239 | 0x1b80, 0x000633d5, | 15655 | 0x1b80, 0x000133d5, |
13240 | 0x1b80, 0x000633d7, | 15656 | 0x1b80, 0x000133d7, |
13241 | 0x1b80, 0x5d0033e5, | 15657 | 0x1b80, 0x000733e5, |
13242 | 0x1b80, 0x5d0033e7, | 15658 | 0x1b80, 0x000733e7, |
13243 | 0x1b80, 0x000433f5, | 15659 | 0x1b80, 0x750033f5, |
13244 | 0x1b80, 0x000433f7, | 15660 | 0x1b80, 0x750033f7, |
13245 | 0x1b80, 0x00013405, | 15661 | 0x1b80, 0x76023405, |
13246 | 0x1b80, 0x00013407, | 15662 | 0x1b80, 0x76023407, |
13247 | 0x1b80, 0x549f3415, | 15663 | 0x1b80, 0x77153415, |
13248 | 0x1b80, 0x549f3417, | 15664 | 0x1b80, 0x77153417, |
13249 | 0x1b80, 0x54ff3425, | 15665 | 0x1b80, 0x00063425, |
13250 | 0x1b80, 0x54ff3427, | 15666 | 0x1b80, 0x00063427, |
13251 | 0x1b80, 0x54003435, | 15667 | 0x1b80, 0x74003435, |
13252 | 0x1b80, 0x54003437, | 15668 | 0x1b80, 0x74003437, |
13253 | 0x1b80, 0x00013445, | 15669 | 0x1b80, 0x76003445, |
13254 | 0x1b80, 0x00013447, | 15670 | 0x1b80, 0x76003447, |
13255 | 0x1b80, 0x5c313455, | 15671 | 0x1b80, 0x77003455, |
13256 | 0x1b80, 0x5c313457, | 15672 | 0x1b80, 0x77003457, |
13257 | 0x1b80, 0x07143465, | 15673 | 0x1b80, 0x75103465, |
13258 | 0x1b80, 0x07143467, | 15674 | 0x1b80, 0x75103467, |
13259 | 0x1b80, 0x54003475, | 15675 | 0x1b80, 0x75003475, |
13260 | 0x1b80, 0x54003477, | 15676 | 0x1b80, 0x75003477, |
13261 | 0x1b80, 0x5c323485, | 15677 | 0x1b80, 0xb3003485, |
13262 | 0x1b80, 0x5c323487, | 15678 | 0x1b80, 0xb3003487, |
13263 | 0x1b80, 0x00013495, | 15679 | 0x1b80, 0x93003495, |
13264 | 0x1b80, 0x00013497, | 15680 | 0x1b80, 0x93003497, |
13265 | 0x1b80, 0x5c3234a5, | 15681 | 0x1b80, 0x000734a5, |
13266 | 0x1b80, 0x5c3234a7, | 15682 | 0x1b80, 0x000734a7, |
13267 | 0x1b80, 0x071434b5, | 15683 | 0x1b80, 0x760034b5, |
13268 | 0x1b80, 0x071434b7, | 15684 | 0x1b80, 0x760034b7, |
13269 | 0x1b80, 0x540034c5, | 15685 | 0x1b80, 0x770034c5, |
13270 | 0x1b80, 0x540034c7, | 15686 | 0x1b80, 0x770034c7, |
13271 | 0x1b80, 0x5c3134d5, | 15687 | 0x1b80, 0x000134d5, |
13272 | 0x1b80, 0x5c3134d7, | 15688 | 0x1b80, 0x000134d7, |
13273 | 0x1b80, 0x000134e5, | 15689 | 0x1b80, 0x000734e5, |
13274 | 0x1b80, 0x000134e7, | 15690 | 0x1b80, 0x000734e7, |
13275 | 0x1b80, 0x4c9834f5, | 15691 | 0x1b80, 0x750034f5, |
13276 | 0x1b80, 0x4c9834f7, | 15692 | 0x1b80, 0x750034f7, |
13277 | 0x1b80, 0x4c183505, | 15693 | 0x1b80, 0x76023505, |
13278 | 0x1b80, 0x4c183507, | 15694 | 0x1b80, 0x76023507, |
13279 | 0x1b80, 0x00013515, | 15695 | 0x1b80, 0x77253515, |
13280 | 0x1b80, 0x00013517, | 15696 | 0x1b80, 0x77253517, |
13281 | 0x1b80, 0x5c323525, | 15697 | 0x1b80, 0x00063525, |
13282 | 0x1b80, 0x5c323527, | 15698 | 0x1b80, 0x00063527, |
13283 | 0x1b80, 0x62043535, | 15699 | 0x1b80, 0x74003535, |
13284 | 0x1b80, 0x62043537, | 15700 | 0x1b80, 0x74003537, |
13285 | 0x1b80, 0x63033545, | 15701 | 0x1b80, 0x76003545, |
13286 | 0x1b80, 0x63033547, | 15702 | 0x1b80, 0x76003547, |
13287 | 0x1b80, 0x66073555, | 15703 | 0x1b80, 0x77013555, |
13288 | 0x1b80, 0x66073557, | 15704 | 0x1b80, 0x77013557, |
13289 | 0x1b80, 0x7b403565, | 15705 | 0x1b80, 0x75103565, |
13290 | 0x1b80, 0x7b403567, | 15706 | 0x1b80, 0x75103567, |
13291 | 0x1b80, 0x7a003575, | 15707 | 0x1b80, 0x75003575, |
13292 | 0x1b80, 0x7a003577, | 15708 | 0x1b80, 0x75003577, |
13293 | 0x1b80, 0x79003585, | 15709 | 0x1b80, 0xb3003585, |
13294 | 0x1b80, 0x79003587, | 15710 | 0x1b80, 0xb3003587, |
13295 | 0x1b80, 0x7f403595, | 15711 | 0x1b80, 0x93003595, |
13296 | 0x1b80, 0x7f403597, | 15712 | 0x1b80, 0x93003597, |
13297 | 0x1b80, 0x7e0035a5, | 15713 | 0x1b80, 0x000735a5, |
13298 | 0x1b80, 0x7e0035a7, | 15714 | 0x1b80, 0x000735a7, |
13299 | 0x1b80, 0x7d0035b5, | 15715 | 0x1b80, 0x760035b5, |
13300 | 0x1b80, 0x7d0035b7, | 15716 | 0x1b80, 0x760035b7, |
13301 | 0x1b80, 0x090135c5, | 15717 | 0x1b80, 0x770035c5, |
13302 | 0x1b80, 0x090135c7, | 15718 | 0x1b80, 0x770035c7, |
13303 | 0x1b80, 0x0c0135d5, | 15719 | 0x1b80, 0x000135d5, |
13304 | 0x1b80, 0x0c0135d7, | 15720 | 0x1b80, 0x000135d7, |
13305 | 0x1b80, 0x0ba635e5, | 15721 | 0x1b80, 0x000435e5, |
13306 | 0x1b80, 0x0ba635e7, | 15722 | 0x1b80, 0x000435e7, |
13307 | 0x1b80, 0x000135f5, | 15723 | 0x1b80, 0x448035f5, |
13308 | 0x1b80, 0x000135f7, | 15724 | 0x1b80, 0x448035f7, |
15725 | 0x1b80, 0x47303605, | ||
15726 | 0x1b80, 0x47303607, | ||
15727 | 0x1b80, 0x00063615, | ||
15728 | 0x1b80, 0x00063617, | ||
15729 | 0x1b80, 0x776c3625, | ||
15730 | 0x1b80, 0x776c3627, | ||
15731 | 0x1b80, 0x00013635, | ||
15732 | 0x1b80, 0x00013637, | ||
15733 | 0x1b80, 0x00053645, | ||
15734 | 0x1b80, 0x00053647, | ||
15735 | 0x1b80, 0x5c803655, | ||
15736 | 0x1b80, 0x5c803657, | ||
15737 | 0x1b80, 0x5f303665, | ||
15738 | 0x1b80, 0x5f303667, | ||
15739 | 0x1b80, 0x00063675, | ||
15740 | 0x1b80, 0x00063677, | ||
15741 | 0x1b80, 0x776d3685, | ||
15742 | 0x1b80, 0x776d3687, | ||
15743 | 0x1b80, 0x00013695, | ||
15744 | 0x1b80, 0x00013697, | ||
15745 | 0x1b80, 0xb90036a5, | ||
15746 | 0x1b80, 0xb90036a7, | ||
15747 | 0x1b80, 0x990036b5, | ||
15748 | 0x1b80, 0x990036b7, | ||
15749 | 0x1b80, 0x000636c5, | ||
15750 | 0x1b80, 0x000636c7, | ||
15751 | 0x1b80, 0x770036d5, | ||
15752 | 0x1b80, 0x770036d7, | ||
15753 | 0x1b80, 0x980536e5, | ||
15754 | 0x1b80, 0x980536e7, | ||
15755 | 0x1b80, 0x000436f5, | ||
15756 | 0x1b80, 0x000436f7, | ||
15757 | 0x1b80, 0x40083705, | ||
15758 | 0x1b80, 0x40083707, | ||
15759 | 0x1b80, 0x4a023715, | ||
15760 | 0x1b80, 0x4a023717, | ||
15761 | 0x1b80, 0x30193725, | ||
15762 | 0x1b80, 0x30193727, | ||
15763 | 0x1b80, 0x00013735, | ||
15764 | 0x1b80, 0x00013737, | ||
15765 | 0x1b80, 0x7b483745, | ||
15766 | 0x1b80, 0x7b483747, | ||
15767 | 0x1b80, 0x7a903755, | ||
15768 | 0x1b80, 0x7a903757, | ||
15769 | 0x1b80, 0x79003765, | ||
15770 | 0x1b80, 0x79003767, | ||
15771 | 0x1b80, 0x55033775, | ||
15772 | 0x1b80, 0x55033777, | ||
15773 | 0x1b80, 0x33803785, | ||
15774 | 0x1b80, 0x33803787, | ||
15775 | 0x1b80, 0x7b383795, | ||
15776 | 0x1b80, 0x7b383797, | ||
15777 | 0x1b80, 0x7a8037a5, | ||
15778 | 0x1b80, 0x7a8037a7, | ||
15779 | 0x1b80, 0x550b37b5, | ||
15780 | 0x1b80, 0x550b37b7, | ||
15781 | 0x1b80, 0x338037c5, | ||
15782 | 0x1b80, 0x338037c7, | ||
15783 | 0x1b80, 0x7b4037d5, | ||
15784 | 0x1b80, 0x7b4037d7, | ||
15785 | 0x1b80, 0x7a0037e5, | ||
15786 | 0x1b80, 0x7a0037e7, | ||
15787 | 0x1b80, 0x551337f5, | ||
15788 | 0x1b80, 0x551337f7, | ||
15789 | 0x1b80, 0x74013805, | ||
15790 | 0x1b80, 0x74013807, | ||
15791 | 0x1b80, 0x74003815, | ||
15792 | 0x1b80, 0x74003817, | ||
15793 | 0x1b80, 0x8e003825, | ||
15794 | 0x1b80, 0x8e003827, | ||
15795 | 0x1b80, 0x00013835, | ||
15796 | 0x1b80, 0x00013837, | ||
15797 | 0x1b80, 0x57023845, | ||
15798 | 0x1b80, 0x57023847, | ||
15799 | 0x1b80, 0x57003855, | ||
15800 | 0x1b80, 0x57003857, | ||
15801 | 0x1b80, 0x97003865, | ||
15802 | 0x1b80, 0x97003867, | ||
15803 | 0x1b80, 0x00013875, | ||
15804 | 0x1b80, 0x00013877, | ||
15805 | 0x1b80, 0x4f783885, | ||
15806 | 0x1b80, 0x4f783887, | ||
15807 | 0x1b80, 0x53883895, | ||
15808 | 0x1b80, 0x53883897, | ||
15809 | 0x1b80, 0xe39438a5, | ||
15810 | 0x1b80, 0xe39438a7, | ||
15811 | 0x1b80, 0x548038b5, | ||
15812 | 0x1b80, 0x548038b7, | ||
15813 | 0x1b80, 0x540038c5, | ||
15814 | 0x1b80, 0x540038c7, | ||
15815 | 0x1b80, 0x548138d5, | ||
15816 | 0x1b80, 0x548138d7, | ||
15817 | 0x1b80, 0x540038e5, | ||
15818 | 0x1b80, 0x540038e7, | ||
15819 | 0x1b80, 0x548238f5, | ||
15820 | 0x1b80, 0x548238f7, | ||
15821 | 0x1b80, 0x54003905, | ||
15822 | 0x1b80, 0x54003907, | ||
15823 | 0x1b80, 0xe39f3915, | ||
15824 | 0x1b80, 0xe39f3917, | ||
15825 | 0x1b80, 0xbf1d3925, | ||
15826 | 0x1b80, 0xbf1d3927, | ||
15827 | 0x1b80, 0x30193935, | ||
15828 | 0x1b80, 0x30193937, | ||
15829 | 0x1b80, 0xe3743945, | ||
15830 | 0x1b80, 0xe3743947, | ||
15831 | 0x1b80, 0xe3793955, | ||
15832 | 0x1b80, 0xe3793957, | ||
15833 | 0x1b80, 0xe37d3965, | ||
15834 | 0x1b80, 0xe37d3967, | ||
15835 | 0x1b80, 0xe3843975, | ||
15836 | 0x1b80, 0xe3843977, | ||
15837 | 0x1b80, 0xe3de3985, | ||
15838 | 0x1b80, 0xe3de3987, | ||
15839 | 0x1b80, 0x55133995, | ||
15840 | 0x1b80, 0x55133997, | ||
15841 | 0x1b80, 0xe38039a5, | ||
15842 | 0x1b80, 0xe38039a7, | ||
15843 | 0x1b80, 0x551539b5, | ||
15844 | 0x1b80, 0x551539b7, | ||
15845 | 0x1b80, 0xe38439c5, | ||
15846 | 0x1b80, 0xe38439c7, | ||
15847 | 0x1b80, 0xe3de39d5, | ||
15848 | 0x1b80, 0xe3de39d7, | ||
15849 | 0x1b80, 0x000139e5, | ||
15850 | 0x1b80, 0x000139e7, | ||
15851 | 0x1b80, 0x54bf39f5, | ||
15852 | 0x1b80, 0x54bf39f7, | ||
15853 | 0x1b80, 0x54c03a05, | ||
15854 | 0x1b80, 0x54c03a07, | ||
15855 | 0x1b80, 0x54a33a15, | ||
15856 | 0x1b80, 0x54a33a17, | ||
15857 | 0x1b80, 0x54c13a25, | ||
15858 | 0x1b80, 0x54c13a27, | ||
15859 | 0x1b80, 0x54a43a35, | ||
15860 | 0x1b80, 0x54a43a37, | ||
15861 | 0x1b80, 0x4c183a45, | ||
15862 | 0x1b80, 0x4c183a47, | ||
15863 | 0x1b80, 0xbf073a55, | ||
15864 | 0x1b80, 0xbf073a57, | ||
15865 | 0x1b80, 0x54c23a65, | ||
15866 | 0x1b80, 0x54c23a67, | ||
15867 | 0x1b80, 0x54a43a75, | ||
15868 | 0x1b80, 0x54a43a77, | ||
15869 | 0x1b80, 0xbf043a85, | ||
15870 | 0x1b80, 0xbf043a87, | ||
15871 | 0x1b80, 0x54c13a95, | ||
15872 | 0x1b80, 0x54c13a97, | ||
15873 | 0x1b80, 0x54a33aa5, | ||
15874 | 0x1b80, 0x54a33aa7, | ||
15875 | 0x1b80, 0xbf013ab5, | ||
15876 | 0x1b80, 0xbf013ab7, | ||
15877 | 0x1b80, 0xe3ec3ac5, | ||
15878 | 0x1b80, 0xe3ec3ac7, | ||
15879 | 0x1b80, 0x54df3ad5, | ||
15880 | 0x1b80, 0x54df3ad7, | ||
15881 | 0x1b80, 0x00013ae5, | ||
15882 | 0x1b80, 0x00013ae7, | ||
15883 | 0x1b80, 0x54bf3af5, | ||
15884 | 0x1b80, 0x54bf3af7, | ||
15885 | 0x1b80, 0x54e53b05, | ||
15886 | 0x1b80, 0x54e53b07, | ||
15887 | 0x1b80, 0x050a3b15, | ||
15888 | 0x1b80, 0x050a3b17, | ||
15889 | 0x1b80, 0x54df3b25, | ||
15890 | 0x1b80, 0x54df3b27, | ||
15891 | 0x1b80, 0x00013b35, | ||
15892 | 0x1b80, 0x00013b37, | ||
15893 | 0x1b80, 0x7f403b45, | ||
15894 | 0x1b80, 0x7f403b47, | ||
15895 | 0x1b80, 0x7e003b55, | ||
15896 | 0x1b80, 0x7e003b57, | ||
15897 | 0x1b80, 0x7d003b65, | ||
15898 | 0x1b80, 0x7d003b67, | ||
15899 | 0x1b80, 0x55013b75, | ||
15900 | 0x1b80, 0x55013b77, | ||
15901 | 0x1b80, 0x5c313b85, | ||
15902 | 0x1b80, 0x5c313b87, | ||
15903 | 0x1b80, 0xe3803b95, | ||
15904 | 0x1b80, 0xe3803b97, | ||
15905 | 0x1b80, 0xe3843ba5, | ||
15906 | 0x1b80, 0xe3843ba7, | ||
15907 | 0x1b80, 0x54803bb5, | ||
15908 | 0x1b80, 0x54803bb7, | ||
15909 | 0x1b80, 0x54003bc5, | ||
15910 | 0x1b80, 0x54003bc7, | ||
15911 | 0x1b80, 0x54813bd5, | ||
15912 | 0x1b80, 0x54813bd7, | ||
15913 | 0x1b80, 0x54003be5, | ||
15914 | 0x1b80, 0x54003be7, | ||
15915 | 0x1b80, 0x54823bf5, | ||
15916 | 0x1b80, 0x54823bf7, | ||
15917 | 0x1b80, 0x54003c05, | ||
15918 | 0x1b80, 0x54003c07, | ||
15919 | 0x1b80, 0xe39f3c15, | ||
15920 | 0x1b80, 0xe39f3c17, | ||
15921 | 0x1b80, 0xbfed3c25, | ||
15922 | 0x1b80, 0xbfed3c27, | ||
15923 | 0x1b80, 0x30193c35, | ||
15924 | 0x1b80, 0x30193c37, | ||
15925 | 0x1b80, 0x74023c45, | ||
15926 | 0x1b80, 0x74023c47, | ||
15927 | 0x1b80, 0x003f3c55, | ||
15928 | 0x1b80, 0x003f3c57, | ||
15929 | 0x1b80, 0x74003c65, | ||
15930 | 0x1b80, 0x74003c67, | ||
15931 | 0x1b80, 0x00023c75, | ||
15932 | 0x1b80, 0x00023c77, | ||
15933 | 0x1b80, 0x00013c85, | ||
15934 | 0x1b80, 0x00013c87, | ||
15935 | 0x1b80, 0x00063c95, | ||
15936 | 0x1b80, 0x00063c97, | ||
15937 | 0x1b80, 0x5a803ca5, | ||
15938 | 0x1b80, 0x5a803ca7, | ||
15939 | 0x1b80, 0x5a003cb5, | ||
15940 | 0x1b80, 0x5a003cb7, | ||
15941 | 0x1b80, 0x92003cc5, | ||
15942 | 0x1b80, 0x92003cc7, | ||
15943 | 0x1b80, 0x00013cd5, | ||
15944 | 0x1b80, 0x00013cd7, | ||
15945 | 0x1b80, 0x5b8f3ce5, | ||
15946 | 0x1b80, 0x5b8f3ce7, | ||
15947 | 0x1b80, 0x5b0f3cf5, | ||
15948 | 0x1b80, 0x5b0f3cf7, | ||
15949 | 0x1b80, 0x91003d05, | ||
15950 | 0x1b80, 0x91003d07, | ||
15951 | 0x1b80, 0x00013d15, | ||
15952 | 0x1b80, 0x00013d17, | ||
15953 | 0x1b80, 0x00063d25, | ||
15954 | 0x1b80, 0x00063d27, | ||
15955 | 0x1b80, 0x5d803d35, | ||
15956 | 0x1b80, 0x5d803d37, | ||
15957 | 0x1b80, 0x5e563d45, | ||
15958 | 0x1b80, 0x5e563d47, | ||
15959 | 0x1b80, 0x00043d55, | ||
15960 | 0x1b80, 0x00043d57, | ||
15961 | 0x1b80, 0x4d083d65, | ||
15962 | 0x1b80, 0x4d083d67, | ||
15963 | 0x1b80, 0x57103d75, | ||
15964 | 0x1b80, 0x57103d77, | ||
15965 | 0x1b80, 0x57003d85, | ||
15966 | 0x1b80, 0x57003d87, | ||
15967 | 0x1b80, 0x4d003d95, | ||
15968 | 0x1b80, 0x4d003d97, | ||
15969 | 0x1b80, 0x00063da5, | ||
15970 | 0x1b80, 0x00063da7, | ||
15971 | 0x1b80, 0x5d003db5, | ||
15972 | 0x1b80, 0x5d003db7, | ||
15973 | 0x1b80, 0x00043dc5, | ||
15974 | 0x1b80, 0x00043dc7, | ||
15975 | 0x1b80, 0x00013dd5, | ||
15976 | 0x1b80, 0x00013dd7, | ||
15977 | 0x1b80, 0x549f3de5, | ||
15978 | 0x1b80, 0x549f3de7, | ||
15979 | 0x1b80, 0x54ff3df5, | ||
15980 | 0x1b80, 0x54ff3df7, | ||
15981 | 0x1b80, 0x54003e05, | ||
15982 | 0x1b80, 0x54003e07, | ||
15983 | 0x1b80, 0x00013e15, | ||
15984 | 0x1b80, 0x00013e17, | ||
15985 | 0x1b80, 0x5c313e25, | ||
15986 | 0x1b80, 0x5c313e27, | ||
15987 | 0x1b80, 0x07143e35, | ||
15988 | 0x1b80, 0x07143e37, | ||
15989 | 0x1b80, 0x54003e45, | ||
15990 | 0x1b80, 0x54003e47, | ||
15991 | 0x1b80, 0x5c323e55, | ||
15992 | 0x1b80, 0x5c323e57, | ||
15993 | 0x1b80, 0x00013e65, | ||
15994 | 0x1b80, 0x00013e67, | ||
15995 | 0x1b80, 0x5c323e75, | ||
15996 | 0x1b80, 0x5c323e77, | ||
15997 | 0x1b80, 0x07143e85, | ||
15998 | 0x1b80, 0x07143e87, | ||
15999 | 0x1b80, 0x54003e95, | ||
16000 | 0x1b80, 0x54003e97, | ||
16001 | 0x1b80, 0x5c313ea5, | ||
16002 | 0x1b80, 0x5c313ea7, | ||
16003 | 0x1b80, 0x00013eb5, | ||
16004 | 0x1b80, 0x00013eb7, | ||
16005 | 0x1b80, 0x4c983ec5, | ||
16006 | 0x1b80, 0x4c983ec7, | ||
16007 | 0x1b80, 0x4c183ed5, | ||
16008 | 0x1b80, 0x4c183ed7, | ||
16009 | 0x1b80, 0x00013ee5, | ||
16010 | 0x1b80, 0x00013ee7, | ||
16011 | 0x1b80, 0x5c323ef5, | ||
16012 | 0x1b80, 0x5c323ef7, | ||
16013 | 0x1b80, 0x62043f05, | ||
16014 | 0x1b80, 0x62043f07, | ||
16015 | 0x1b80, 0x63033f15, | ||
16016 | 0x1b80, 0x63033f17, | ||
16017 | 0x1b80, 0x66073f25, | ||
16018 | 0x1b80, 0x66073f27, | ||
16019 | 0x1b80, 0x7b403f35, | ||
16020 | 0x1b80, 0x7b403f37, | ||
16021 | 0x1b80, 0x7a003f45, | ||
16022 | 0x1b80, 0x7a003f47, | ||
16023 | 0x1b80, 0x79003f55, | ||
16024 | 0x1b80, 0x79003f57, | ||
16025 | 0x1b80, 0x7f403f65, | ||
16026 | 0x1b80, 0x7f403f67, | ||
16027 | 0x1b80, 0x7e003f75, | ||
16028 | 0x1b80, 0x7e003f77, | ||
16029 | 0x1b80, 0x7d003f85, | ||
16030 | 0x1b80, 0x7d003f87, | ||
16031 | 0x1b80, 0x09013f95, | ||
16032 | 0x1b80, 0x09013f97, | ||
16033 | 0x1b80, 0x0c013fa5, | ||
16034 | 0x1b80, 0x0c013fa7, | ||
16035 | 0x1b80, 0x0ba63fb5, | ||
16036 | 0x1b80, 0x0ba63fb7, | ||
16037 | 0x1b80, 0x00013fc5, | ||
16038 | 0x1b80, 0x00013fc7, | ||
13309 | 0x1b80, 0x00000006, | 16039 | 0x1b80, 0x00000006, |
13310 | 0x1b80, 0x00000002, | 16040 | 0x1b80, 0x00000002, |
13311 | }; | 16041 | }; |
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c_table.h b/drivers/net/wireless/realtek/rtw88/rtw8822c_table.h index 06e207dd8e5f..80c06c4f8184 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c_table.h +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c_table.h | |||
@@ -12,6 +12,9 @@ extern const struct rtw_table rtw8822c_bb_pg_type0_tbl; | |||
12 | extern const struct rtw_table rtw8822c_rf_a_tbl; | 12 | extern const struct rtw_table rtw8822c_rf_a_tbl; |
13 | extern const struct rtw_table rtw8822c_rf_b_tbl; | 13 | extern const struct rtw_table rtw8822c_rf_b_tbl; |
14 | extern const struct rtw_table rtw8822c_txpwr_lmt_type0_tbl; | 14 | extern const struct rtw_table rtw8822c_txpwr_lmt_type0_tbl; |
15 | extern const struct rtw_table rtw8822c_dpk_afe_no_dpk_tbl; | ||
16 | extern const struct rtw_table rtw8822c_dpk_afe_is_dpk_tbl; | ||
17 | extern const struct rtw_table rtw8822c_dpk_mac_bb_tbl; | ||
15 | extern const struct rtw_table rtw8822c_array_mp_cal_init_tbl; | 18 | extern const struct rtw_table rtw8822c_array_mp_cal_init_tbl; |
16 | 19 | ||
17 | #endif | 20 | #endif |
diff --git a/drivers/net/wireless/realtek/rtw88/rx.c b/drivers/net/wireless/realtek/rtw88/rx.c index 4d837f0c6d5f..48b9ed49b79a 100644 --- a/drivers/net/wireless/realtek/rtw88/rx.c +++ b/drivers/net/wireless/realtek/rtw88/rx.c | |||
@@ -90,6 +90,7 @@ void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev, | |||
90 | u8 *phy_status) | 90 | u8 *phy_status) |
91 | { | 91 | { |
92 | struct ieee80211_hw *hw = rtwdev->hw; | 92 | struct ieee80211_hw *hw = rtwdev->hw; |
93 | u8 path; | ||
93 | 94 | ||
94 | memset(rx_status, 0, sizeof(*rx_status)); | 95 | memset(rx_status, 0, sizeof(*rx_status)); |
95 | rx_status->freq = hw->conf.chandef.chan->center_freq; | 96 | rx_status->freq = hw->conf.chandef.chan->center_freq; |
@@ -146,6 +147,10 @@ void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev, | |||
146 | rx_status->bw = RATE_INFO_BW_20; | 147 | rx_status->bw = RATE_INFO_BW_20; |
147 | 148 | ||
148 | rx_status->signal = pkt_stat->signal_power; | 149 | rx_status->signal = pkt_stat->signal_power; |
150 | for (path = 0; path < rtwdev->hal.rf_path_num; path++) { | ||
151 | rx_status->chains |= BIT(path); | ||
152 | rx_status->chain_signal[path] = pkt_stat->rx_power[path]; | ||
153 | } | ||
149 | 154 | ||
150 | rtw_rx_addr_match(rtwdev, pkt_stat, hdr); | 155 | rtw_rx_addr_match(rtwdev, pkt_stat, hdr); |
151 | } | 156 | } |
diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c index da2d2ab8104d..7c3ae52f2b15 100644 --- a/drivers/ssb/pci.c +++ b/drivers/ssb/pci.c | |||
@@ -595,7 +595,7 @@ static void sprom_extract_r8(struct ssb_sprom *out, const u16 *in) | |||
595 | { | 595 | { |
596 | int i; | 596 | int i; |
597 | u16 o; | 597 | u16 o; |
598 | u16 pwr_info_offset[] = { | 598 | static const u16 pwr_info_offset[] = { |
599 | SSB_SROM8_PWR_INFO_CORE0, SSB_SROM8_PWR_INFO_CORE1, | 599 | SSB_SROM8_PWR_INFO_CORE0, SSB_SROM8_PWR_INFO_CORE1, |
600 | SSB_SROM8_PWR_INFO_CORE2, SSB_SROM8_PWR_INFO_CORE3 | 600 | SSB_SROM8_PWR_INFO_CORE2, SSB_SROM8_PWR_INFO_CORE3 |
601 | }; | 601 | }; |