RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
By default Banana Pi R4 uses official supported BE14 wifi7 card from Banana Pi. Driver for BE 14 card is designed in such a way that all the wireless radios (2.4G/5G/6g) are mapped under single phy for supporting MLO in Wi-Fi 7. However, current rdk-wifi-hal associated with Onewifi is not supporting this mechanism.
RDKM In collaboration with comcast will design Single wiphy use case for Onewifi/rdk-wifi-hal/hostap. This page will capture the design changes to achieve this.
The radio_interface_mapping_t structure part of wifi_hal_generic.h is used to define the mapping of phy to a particular radio along with the primary interface. Structure declaration is as below:
typedef struct {
unsigned int phy_index; /* Phy Index */
unsigned int radio_index; /* Radio Index, 0 - 2.4G, 1 - 5G, 2 - 6G */
char radio_name[16]; /* Readable radio name */
wifi_interface_name_t interface_name; / Primary interface associated with the radio */
}__attribute__((packed)) radio_interface_mapping_t;
We will use this structure to map the multiple radio to the same phy.
For e.g. in case of the current implementation, the elements of the structure for a 3 radio will be as below (indicating different phy index for different radio):
{ 0, 0, "radio1", "wlan0"},
{ 1, 1, "radio2", "wlan1"},
{ 2, 2, "radio3", "wlan2"},
In case of single phy, the elements of this structure for a 3 radio will have the same phy mapped to different radio index indicated in green.
{ 0, 0, "radio1", "wlan0"},
{ 0, 1, "radio2", "wlan1"},
{ 0, 2, "radio3", "wlan2"},
This section will provide details on the changes in different modules to support Single wiphy usecase.
In wiphy_dump_handler, the global object g_wifi_hal's (an instance of wifi_hal_priv_t) is populated with the radio info associated with each phy.
Here there is a function get_rdk_radio_index which takes in phy_index and provides a single radio_index as output.Proposed change:
Introduce a new function get_rdk_radio_indices replacing get_rdk_radio_index, which provides an array of rdk_radio_index associated with a particular phy_index. The array will be based on the defined radio_interface_mapping elements.
Use this array to populate the g_wifi_hal.radio_info.
This function takes input as phy_index and returns a single radio_info structure. In case of single phy, since there would be multiple radio_info associated with the same phy_index returning a single radio_info structure is incorrect.
Proposed Change:
All the usage instances of this function was checked. We can remove the usage of this function and fully deprecate it with the below changes:
The right radio info is then passed as arg to this function and can be accessed without calling get_radio_by_phy_index.
This function is called in update_channel_flags which does not use radio_info structure, thus this needs to be changed. Look further in this