Path: blob/master/drivers/net/wireless/realtek/rtw88/bf.h
53394 views
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */1/* Copyright(c) 2018-2019 Realtek Corporation.2*/34#ifndef __RTW_BF_H_5#define __RTW_BF_H_67#define REG_TXBF_CTRL 0x042C8#define REG_RRSR 0x04409#define REG_NDPA_OPT_CTRL 0x045F1011#define REG_ASSOCIATED_BFMER0_INFO 0x06E412#define REG_ASSOCIATED_BFMER1_INFO 0x06EC13#define REG_TX_CSI_RPT_PARAM_BW20 0x06F414#define REG_SND_PTCL_CTRL 0x071815#define BIT_DIS_CHK_VHTSIGB_CRC BIT(6)16#define BIT_DIS_CHK_VHTSIGA_CRC BIT(5)17#define BIT_MASK_BEAMFORM (GENMASK(4, 0) | BIT(7))18#define REG_MU_TX_CTL 0x14C019#define REG_MU_STA_GID_VLD 0x14C420#define REG_MU_STA_USER_POS_INFO 0x14C821#define REG_CSI_RRSR 0x167822#define REG_WMAC_MU_BF_OPTION 0x167C23#define REG_WMAC_MU_BF_CTL 0x16802425#define BIT_WMAC_USE_NDPARATE BIT(30)26#define BIT_WMAC_TXMU_ACKPOLICY_EN BIT(6)27#define BIT_USE_NDPA_PARAMETER BIT(30)28#define BIT_MU_P1_WAIT_STATE_EN BIT(16)29#define BIT_EN_MU_MIMO BIT(7)3031#define R_MU_RL 0xf32#define BIT_SHIFT_R_MU_RL 1233#define BIT_SHIFT_WMAC_TXMU_ACKPOLICY 434#define BIT_SHIFT_CSI_RATE 2435#define BIT_CSI_FORCE_RATE BIT(15)3637#define BIT_MASK_R_MU_RL (R_MU_RL << BIT_SHIFT_R_MU_RL)38#define BIT_MASK_R_MU_TABLE_VALID 0x3f39#define BIT_MASK_CSI_RATE_VAL 0x3F40#define BIT_MASK_CSI_RATE (BIT_MASK_CSI_RATE_VAL << BIT_SHIFT_CSI_RATE)4142#define BIT_RXFLTMAP0_ACTIONNOACK BIT(14)43#define BIT_RXFLTMAP1_BF (BIT(4) | BIT(5))44#define BIT_RXFLTMAP1_BF_REPORT_POLL BIT(4)45#define BIT_RXFLTMAP4_BF_REPORT_POLL BIT(4)4647#define RTW_NDP_RX_STANDBY_TIME 0x7048#define RTW_SND_CTRL_REMOVE 0x9849#define RTW_SND_CTRL_SOUNDING 0x9B5051enum csi_rsc {52CSI_RSC_PRIMARY_20M_BW = 0,53CSI_RSC_FOLLOW_RX_PACKET_BW = 1,54CSI_RSC_DUPLICATE_MODE = 2,55};5657enum csi_seg_len {58HAL_CSI_SEG_4K = 0,59HAL_CSI_SEG_8K = 1,60HAL_CSI_SEG_11K = 2,61};6263struct cfg_mumimo_para {64u8 sounding_sts[6];65u16 grouping_bitmap;66u8 mu_tx_en;67u32 given_gid_tab[2];68u32 given_user_pos[4];69};7071struct mu_bfer_init_para {72u16 paid;73u16 csi_para;74u16 my_aid;75enum csi_seg_len csi_length_sel;76u8 bfer_address[ETH_ALEN];77};7879void rtw_bf_disassoc(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,80struct ieee80211_bss_conf *bss_conf);81void rtw_bf_assoc(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,82struct ieee80211_bss_conf *bss_conf);83void rtw_bf_init_bfer_entry_mu(struct rtw_dev *rtwdev,84struct mu_bfer_init_para *param);85void rtw_bf_cfg_sounding(struct rtw_dev *rtwdev, struct rtw_vif *vif,86enum rtw_trx_desc_rate rate);87void rtw_bf_cfg_mu_bfee(struct rtw_dev *rtwdev, struct cfg_mumimo_para *param);88void rtw_bf_del_bfer_entry_mu(struct rtw_dev *rtwdev);89void rtw_bf_del_sounding(struct rtw_dev *rtwdev);90void rtw_bf_enable_bfee_su(struct rtw_dev *rtwdev, struct rtw_vif *vif,91struct rtw_bfee *bfee);92void rtw_bf_enable_bfee_mu(struct rtw_dev *rtwdev, struct rtw_vif *vif,93struct rtw_bfee *bfee);94void rtw_bf_remove_bfee_su(struct rtw_dev *rtwdev, struct rtw_bfee *bfee);95void rtw_bf_remove_bfee_mu(struct rtw_dev *rtwdev, struct rtw_bfee *bfee);96void rtw_bf_set_gid_table(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,97struct ieee80211_bss_conf *conf);98void rtw_bf_phy_init(struct rtw_dev *rtwdev);99void rtw_bf_cfg_csi_rate(struct rtw_dev *rtwdev, u8 rssi, u8 cur_rate,100u8 fixrate_en, u8 *new_rate);101static inline void rtw_chip_config_bfee(struct rtw_dev *rtwdev, struct rtw_vif *vif,102struct rtw_bfee *bfee, bool enable)103{104if (rtwdev->chip->ops->config_bfee)105rtwdev->chip->ops->config_bfee(rtwdev, vif, bfee, enable);106}107108static inline void rtw_chip_set_gid_table(struct rtw_dev *rtwdev,109struct ieee80211_vif *vif,110struct ieee80211_bss_conf *conf)111{112if (rtwdev->chip->ops->set_gid_table)113rtwdev->chip->ops->set_gid_table(rtwdev, vif, conf);114}115116static inline void rtw_chip_cfg_csi_rate(struct rtw_dev *rtwdev, u8 rssi, u8 cur_rate,117u8 fixrate_en, u8 *new_rate)118{119if (rtwdev->chip->ops->cfg_csi_rate)120rtwdev->chip->ops->cfg_csi_rate(rtwdev, rssi, cur_rate,121fixrate_en, new_rate);122}123#endif124125126