rsi_wlan_add_mfi_ie#
Functions#
Add the Apple defined IE elements to the beacon command request structure.
Assign the user configurable channel gain values in different regions to the module from user.This method is used for overwriting default gain tables that are present in firmware. Customer can load all the three gain tables (i.e., 2.4GHz-20Mhz, 5GHz-20Mhz, 5GHz-40Mhz) one after other by changing band and bandwidth values. This is a blocking API.
Function Documentation#
rsi_wlan_add_mfi_ie#
int32_t rsi_wlan_add_mfi_ie (int8_t * mfi_ie, uint32_t ie_len)
Add the Apple defined IE elements to the beacon command request structure.
[in] | mfi_ie | - Pointer to the IE element |
[in] | ie_len | - Length of the IE element |
Returns
0 - Success Non-Zero Value - Failure -4 - Buffer not available to serve the command
6517
of file wlan/rsi_wlan_apis.c
rsi_wlan_update_gain_table#
int32_t rsi_wlan_update_gain_table (uint8_t band, uint8_t bandwidth, uint8_t * payload, uint16_t payload_len)
Assign the user configurable channel gain values in different regions to the module from user.This method is used for overwriting default gain tables that are present in firmware. Customer can load all the three gain tables (i.e., 2.4GHz-20Mhz, 5GHz-20Mhz, 5GHz-40Mhz) one after other by changing band and bandwidth values. This is a blocking API.
[in] | band | - 0 ? 2.4GHz 1 ? 5GHz 2 ? Dual band (2.4 Ghz and 5 Ghz) |
[in] | bandwidth | - 0 ? 20 MHz 1 ? 40 MHz |
[in] | payload | - Pass channel gain values for different regions in an given array format. |
[in] | payload_len | - Max payload length (table size) in 2.4GHz is 128 bytes Max payload length (table size) in 5GHz is 64 bytes |
Note
1. This frame has to be used by customers who has done FCC/ETSI/TELEC/KCC certification with their own antenna. All other customers should not use this. Inappropriate use of this frame may result in violation of FCC/ETSI/TELEC/KCC or any certifications and Silicon labs is not liable for that
Internally firmware maintains two tables : Worldwide table & Region based table. Worldwide table is populated by firmware with Max power values that chip can transmit that meets target specs like EVM. Region based table has default gain value set.
When certifying with user antenna, Region has to be set to Worldwide and sweep the power from 0 to 21dBm. Arrive at max power level that is passing certification especially band-edge.
These FCC/ETSI/TELEC/KCC Max power level should be loaded in end-to-end mode via WLAN User Gain table. This has to be called done every boot-up since this information is not saved inside flash. Region based user gain table sent by application is copied onto Region based table .SoC uses this table in FCC/ETSI/TELEC/KCC to limit power and not to violate allowed limits. For Worldwide region firmware uses Worldwide table for Tx. For other regions(FCC/ETSI/TELEC/KCC), Firmware uses min value out of Worldwide & Region based table for Tx. Also there will be part to part variation across chips and offsets are estimated during manufacturing flow which will be applied as correction factor during normal mode of operation.
rsi_radio_init() API needs to be called before this API
Gain Table Payload Format#
1. Gain table Format for 2.4G Band: (Each entry of the table is 1 byte)
In 2Ghz, Max Gain/Power obtained from certification should be doubled and loaded.
<TABLE NAME[]>= {
<NO.of Regions>,
<REGION NAME 1>, <CHANNEL_CODE_2G>,
<CHANNEL NUMBER 1>, <2 * MAX POWER FOR b RATE>, <2 * MAX POWER FOR g RATE>, <2 * MAX POWER FOR n RATE>,
<CHANNEL NUMBER 2>, <2 * MAX POWER FOR b RATE>, <2 * MAX POWER FOR g RATE>, <2 * MAX POWER FOR n RATE>,
.
.
.
.
.
<CHANNEL NUMBER m-1>, <2 * MAX POWER FOR b RATE>, <2 * MAX POWER FOR g RATE>, <2 * MAX POWER FOR n RATE>,
<CHANNEL NUMBER m>, <2 * MAX POWER FOR b RATE>, <2 * MAX POWER FOR g RATE>, <2 * MAX POWER FOR n RATE>,
<REGION NAME 2>, <CHANNEL_CODE_2G>,
<CHANNEL NUMBER 1>, <2 * MAX POWER FOR b RATE>, <2 * MAX POWER FOR g RATE>, <2 * MAX POWER FOR n RATE>,
<CHANNEL NUMBER 2>, <2 * MAX POWER FOR b RATE>, <2 * MAX POWER FOR g RATE>, <2 * MAX POWER FOR n RATE>,
.
.
.
.
<CHANNEL NUMBER m-1>, <2 * MAX POWER FOR b RATE>, <2 * MAX POWER FOR g RATE>, <2 * MAX POWER FOR n RATE>,
<CHANNEL NUMBER m>, <2 * MAX POWER FOR b RATE>, <2 * MAX POWER FOR g RATE>, <2 * MAX POWER FOR n RATE>,
};
Gain table Format for 5G Band: (Each entry of the table is 1 byte)
In 5Ghz, Max Gain/Power obtained from certification should be loaded.
<TABLE NAME[]>= {
<NO.of Regions>,
<REGION NAME 1>, <CHANNEL_CODE_5G>,
<CHANNEL NUMBER IN BAND 1 IF ANY>, <MAX POWER FOR 11a RATE>, <MAX POWER FOR n RATE>,
<BAND_NUMBER 1>, <MAX POWER FOR 11a RATE>, <MAX POWER FOR n RATE>,
<CHANNEL NUMBER IN BAND 2 IF ANY>, <MAX POWER FOR 11a RATE>, <MAX POWER FOR n RATE>,
<BAND_NUMBER 2>, <MAX POWER FOR 11a RATE>, <MAX POWER FOR n RATE>,
<CHANNEL NUMBER IN BAND 3 IF ANY>, <MAX POWER FOR 11a RATE>, <MAX POWER FOR n RATE>,
<BAND_NUMBER 3>, <MAX POWER FOR 11a RATE>, <MAX POWER FOR n RATE>,
<CHANNEL NUMBER IN BAND 4 IF ANY>, <MAX POWER FOR 11a RATE>, <MAX POWER FOR n RATE>,
<BAND_NUMBER 4>, <MAX POWER FOR 11a RATE>, <MAX POWER FOR n RATE>,
.
.
.
.
.
<REGION NAME y>, <CHANNEL_CODE_5G>,
};
2. Supported Region names:
FCC, ETSI,TELEC, KCC
The following are the regions and the values to be passed instead of macros in the example.
Region | Macro Value
------------|--------------------
FCC | 0
ETSI | 1
TELEC | 2
KCC | 4
3. <CHANNEL_CODE_2G> is a 8 bit value which is encoded as:
If TX powers of all the channels are same, then use CHANNEL_CODE_2G as 17. In this case, mention channel number as 255.
Tf TX power is not same for all channels, then indicate CHANNEL_CODE_2G as no-of channels. And specify tx power values for all the channels indicated.
4. <CHANNEL_CODE_5G> is a 8 bit value encoded as number of rows in a region for 5G band.
a. 5G is divided into 4 sub bands:
band 1: channel number <= 48
band 2: channel number > 48 and channel number <= 64
band 3: channel number > 64 and channel number <= 144
band 4: channel number > 144
b. If any channel in a band has different set of power values, specify the channel number followed by power values.
c. If all the channels in a band 1 has same power values, specify the band number as 1 followed by power value.
d. If all the channels in a band 2 has same power values, specify the band number as 2 followed by power value.
e. If all the channels in a band 3 has same power values, specify the band number as 3 followed by power value.
f. If all the channels in a band 4 has same power values, specify the band number as 4 followed by power value.
Example payload formats#
Examples:
For 2.4Ghz Band in 20Mhz bandwidth
{3, //NUM_OF_REGIONS
FCC, 13, //NUM_OF_CHANNELS
// rate, 11b, 11g, 11n
1, 34, 20, 20,
2, 34, 28, 28,
3, 34, 32, 32,
4, 34, 36, 36,
5, 34, 38, 38,
6, 34, 40, 40,
7, 34, 38, 38,
8, 34, 36, 36,
9, 34, 32, 32,
10, 34, 32, 32,
11, 34, 24, 24,
12, 34, 16, 24,
13, 34, 12, 12,
TELEC, 17,
255, 20, 16, 16,
KCC, 17,
255, 26, 20, 20,
}; //}}}
For 5Ghz band in 20Mhz bandwidth
{2,
FCC, 6,
1, 9, 10, //band 1
2, 8, 9, //band 2
100, 4, 4, //band 3
3, 6, 8, //band 3
149, 3, 3, //band 4
TELEC, 4,
1, 9, 10, //band 1
2, 8, 10, //band 2
3, 6, 8, //band 3
4, 6, 7, //band 4
};
For 5Ghz band in 40Mhz bandwidth
{2,
FCC, 8,
1, 9, 10, //band 1
62, 8, 9, //band 2
2, 8, 9, //band 2
102, 4, 4, //band 3
134, 6, 8, //band 3
3, 6, 8, //band 3
151, 3, 3, //band 4
4, 6, 7, //band 4
TELEC, 4,
1, 9, 10, //band 1
2, 8, 10, //band 2
3, 6, 8, //band 3
4, 6, 7, //band 4
};
Customers using Certified MARS antenna should use the gain table structures below:#
For 2.4Ghz Band in 20Mhz bandwidth
{3,//NUM_OF_REGIONS
FCC, 0xD,//NUM_OF_CHANNELS
// rate, 11b, 11g, 11n
1, 28, 32, 30,
2, 28, 32, 30,
3, 28, 32, 30,
4, 30, 28, 34,
5, 30, 28, 34,
6, 30, 28, 34,
7, 30, 28, 34,
8, 30, 28, 34,
9, 28, 30, 30,
10, 28, 30, 30,
11, 28, 30, 30,
12, 28, 30, 30,
13, 28, 30, 30,
TELEC,0x11, //NA
255, 20, 16, 16,
KCC, 0x11 //NA,
255, 26, 20, 20
};
For 5Ghz band in 20Mhz bandwidth
{2,
FCC, 0x6,
1, 12, 12, //band 1
2, 11, 11, //band 2
100, 10, 12, //band 3
3, 13, 13, //band 3
140, 10, 11, //band 4
4, 13, 13, //band 4
TELEC, 0x4, //NA
1, 9, 10, //band 1
2, 8, 10, //band 2
3, 6, 8, //band 3
4, 6, 7, //band 4
};
For 5Ghz band in 40Mhz bandwidth
{2,
FCC, 0x8,
1, 9, 9, //band 1
62, 8, 8, //band 2
2, 9, 9, //band 2
102, 9, 9, //band 3
134, 12, 12, //band 3
3, 10, 10, //band 3
151, 11, 11, //band 4
4, 11, 11, //band 4
TELEC, 0x4, //NA
1, 9, 10, //band 1
2, 8, 10, //band 2
3, 6, 8, //band 3
4, 6, 7, //band 4
};
Note
1. Length of the payload should match with payload_len parameter value.
2. In 2.4Ghz band, 40Mhz is not supported
Returns
0 - Success Non-Zero Value - Failure If return value is less than 0 -2 - Invalid parameters -3 - Command given in wrong state If return value is greater than 0 0x0021, 0x003E
Note
Refer to Error Codes section for above error codes Error Codes.
6797
of file wlan/rsi_wlan_apis.c