diff options
Diffstat (limited to 'sys/contrib/dev/rtw88/rtw8821c.c')
| -rw-r--r-- | sys/contrib/dev/rtw88/rtw8821c.c | 21 | 
1 files changed, 13 insertions, 8 deletions
| diff --git a/sys/contrib/dev/rtw88/rtw8821c.c b/sys/contrib/dev/rtw88/rtw8821c.c index 0fe02f0b5d91..a6401e6172ba 100644 --- a/sys/contrib/dev/rtw88/rtw8821c.c +++ b/sys/contrib/dev/rtw88/rtw8821c.c @@ -680,11 +680,11 @@ static void query_phy_status(struct rtw_dev *rtwdev, u8 *phy_status,  }  static void -rtw8821c_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs) +rtw8821c_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, +				    u8 rs, u32 *phy_pwr_idx)  {  	struct rtw_hal *hal = &rtwdev->hal;  	static const u32 offset_txagc[2] = {0x1d00, 0x1d80}; -	static u32 phy_pwr_idx;  	u8 rate, rate_idx, pwr_index, shift;  	int j; @@ -692,12 +692,12 @@ rtw8821c_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)  		rate = rtw_rate_section[rs][j];  		pwr_index = hal->tx_pwr_tbl[path][rate];  		shift = rate & 0x3; -		phy_pwr_idx |= ((u32)pwr_index << (shift * 8)); +		*phy_pwr_idx |= ((u32)pwr_index << (shift * 8));  		if (shift == 0x3 || rate == DESC_RATEVHT1SS_MCS9) {  			rate_idx = rate & 0xfc;  			rtw_write32(rtwdev, offset_txagc[path] + rate_idx, -				    phy_pwr_idx); -			phy_pwr_idx = 0; +				    *phy_pwr_idx); +			*phy_pwr_idx = 0;  		}  	}  } @@ -705,14 +705,16 @@ rtw8821c_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)  static void rtw8821c_set_tx_power_index(struct rtw_dev *rtwdev)  {  	struct rtw_hal *hal = &rtwdev->hal; +	u32 phy_pwr_idx = 0;  	int rs, path;  	for (path = 0; path < hal->rf_path_num; path++) { -		for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) { +		for (rs = 0; rs <= __RTW_RATE_SECTION_2SS_MAX; rs++) {  			if (rs == RTW_RATE_SECTION_HT_2S ||  			    rs == RTW_RATE_SECTION_VHT_2S)  				continue; -			rtw8821c_set_tx_power_index_by_rate(rtwdev, path, rs); +			rtw8821c_set_tx_power_index_by_rate(rtwdev, path, rs, +							    &phy_pwr_idx);  		}  	}  } @@ -1661,11 +1663,13 @@ static const struct rtw_chip_ops rtw8821c_ops = {  	.query_phy_status	= query_phy_status,  	.set_channel		= rtw8821c_set_channel,  	.mac_init		= rtw8821c_mac_init, +	.mac_postinit		= NULL,  	.read_rf		= rtw_phy_read_rf,  	.write_rf		= rtw_phy_write_rf_reg_sipi,  	.set_antenna		= NULL,  	.set_tx_power_index	= rtw8821c_set_tx_power_index,  	.cfg_ldo25		= rtw8821c_cfg_ldo25, +	.set_ampdu_factor	= NULL,  	.false_alarm_statistics	= rtw8821c_false_alarm_statistics,  	.phy_calibration	= rtw8821c_phy_calibration,  	.cck_pd_set		= rtw8821c_phy_cck_pd_set, @@ -1974,7 +1978,7 @@ const struct rtw_chip_info rtw8821c_hw_spec = {  	.ops = &rtw8821c_ops,  	.id = RTW_CHIP_TYPE_8821C,  	.fw_name = "rtw88/rtw8821c_fw.bin", -	.wlan_cpu = RTW_WCPU_11AC, +	.wlan_cpu = RTW_WCPU_3081,  	.tx_pkt_desc_sz = 48,  	.tx_buf_desc_sz = 16,  	.rx_pkt_desc_sz = 24, @@ -1992,6 +1996,7 @@ const struct rtw_chip_info rtw8821c_hw_spec = {  	.band = RTW_BAND_2G | RTW_BAND_5G,  	.page_size = TX_PAGE_SIZE,  	.dig_min = 0x1c, +	.amsdu_in_ampdu = true,  	.usb_tx_agg_desc_num = 3,  	.hw_feature_report = true,  	.c2h_ra_report_size = 7, | 
