Search Linux Wireless

Re: How to use the rate control in mac80211?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 24/10/2022 05:13, Ping-Ke Shih wrote:
> 
>> -----Original Message-----
>> From: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx>
>> Sent: Sunday, October 23, 2022 5:24 AM
>> To: linux-wireless@xxxxxxxxxxxxxxx
>> Subject: How to use the rate control in mac80211?
>>
>> Hi!
>>
>> What does a driver (rtl8xxxu) need to do to make the rate control work?
>>
>> I thought it's like this:
>> 1) don't set HAS_RATE_CONTROL
>> 2) tell the chip to use the rate from tx_info->control.rates[0]
>> 3) report if the frame was acked or not
>>
>> But it's not that easy. I'm always getting MCS0. Currently rtl8xxxu
>> doesn't ask the chip for TX reports and always sets IEEE80211_TX_STAT_ACK.
>> I thought this would get me MCS7 for all data frames, but it doesn't.
> 
> I don't dig rate control of mac80211, but I think it is hard to support this
> by Realtek chip, because the item 3 you listed.
> 
> Realtek WiFi chip only reports TX status for specific packets, because bus
> bandwidth is limited, so reduce these reports to have better performance.
> And, firmware has implemented rate control called rate adaptive (RA), and
> using firmware RA is expected.
> 
> If you really want to control rate by driver, you can refer to implementation
> of management frame below:
> 
> 	if (ieee80211_is_mgmt(hdr->frame_control)) {
> 		tx_desc->txdw5 = cpu_to_le32(rate);
> 		tx_desc->txdw4 |= cpu_to_le32(TXDESC32_USE_DRIVER_RATE);
> 		tx_desc->txdw5 |= cpu_to_le32(6 << TXDESC32_RETRY_LIMIT_SHIFT);
> 		tx_desc->txdw5 |= cpu_to_le32(TXDESC32_RETRY_LIMIT_ENABLE);
> 	}
> 
> Another thing is that retry rate is decided by hardware by another register
> settings, but I'm not familiar with them, because I always use RA mentioned
> above. Maybe, you still can use *default* settings of retry rate that could
> work but not always good in all situations.
> 
> Ping-Ke
> 
Normally, we use the firmware rate control, but RTL8188EU doesn't have it:
https://github.com/lwfinger/rtl8188eu/blob/c4908ca4caf861d858c4d9e8452a2ad5c88cf2ba/rtl8188eu_xmit.c#L349
https://github.com/lwfinger/rtl8188eu/blob/c4908ca4caf861d858c4d9e8452a2ad5c88cf2ba/hal8188erateadaptive.c

(I guess they used the space in the firmware on the IOL stuff and the rate
control code didn't fit?)

Maybe we don't need to ask for TX reports for every data frame?



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux