September 1, 2010

rate adaptation for RT2870

The rate selection of the driver is working as follow: firstly, identify the initial link speed with the FUNCTION "MlmeUpdateTxRates" in mlme.c, then set the transmition rate with FUNCTION "SetCommonHT" in cmm_info.c. Specifically the FUNCTION "RTMPSetDesiredRates" in \common\cmm_info.c is to set 802.11a/b/g data rate; and FUNCTION "RTMPSetHT", "RTMPSetIndividualHT", and "RTMPUpdateHTIE" in the same file are to set the 802.11n data rate, where set its value according to desired rate according to input parameter and bandwidth.

The FUNCTION "MlmeUpdateHtTxRates" in \include\mlme.c is to update the data rate used in 802.11n scenario. The update decision is made based on the desired PHY layer infromation saved in a struct, the updated channel parameters provided by FUNCTION "RTMPCheckHt" in the same file, and more importantly, the calculation provided by FUNCITON "MlmeSelectTxRateTable". The three function mentioned about communication with each other mainly via the array MCSSet[16], whose definition is in file \include\mlme.h.

Furthermore, your advice about the rate selection range help me find the definition of high throughput in file \include\rtmp_def.h, where has two groups of transition rate: 0 to 7 (6Mbps to 54Mbps) for OFDM, and 0 to 33 (MCS_0 to MCS_32, and MCS_33 is auto-rate). As long as the dongle we chose have two transmission antennas, we can use MCS_0 to MCS_15, corresponding  up to 300Mbps. This can be set in file \common\cmm_profile.c, triggered by key words "FixedTxMode" or "HT_TxStream". However, because the algorithm will check the status of channel every time it updates the date rate, the original algorithm cannot set the rate to a specific number all the time.

No comments:

Post a Comment

Days of our lives

Daisypath Anniversary tickers