...
This section will provide details on the changes in different modules to support Single wiphy usecase.
rdk-wifi-hal
Proposed change:
Introduce a new function 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:
- Interface_info_handler: get_radio_by_phy_index is used to get the radio_info instance in which the interface is updated into the hash_map. The right radio_info instance can be passed as an argument to this function in the nl80211_send_and_recv call where the interface_info_handler is passed as callback function pointer.
The right radio info is then passed as arg to this function and can be accessed without calling get_radio_by_phy_index.
- wiphy_get_info_handler: This function is passed as callback handler to nl80211_send_and_recv as part of nl80211_init_radio_info. This is called for each radio_info in the g_wifi_hal structure.
- Pass radio_info as argument to the function nl80211_send_and_recv similar change as that of interface_info_handler.
- In wiphy_
...
- get_info_handler, based on the band associated with radio_info process the right band in the nested bands sent with attribute NL80211_ATTR_WIPHY_BANDS. In nl80211, band mapping is defined as per enum nl80211_band.
- remove_station_from_other_interfaces: Change interface_info structure to have rdk_index associated with this interface. Obtain the right radio_info structure using the function get_radio_by_rdk_index instead of get_radio_by_phy_index.
- phy_info_handler: This function is passed as callback handler to nl80211_send_and_recv in update_channel_flags which does not use radio_info structure. In the phy_info_handler, based on the band obtained the channel flags has to be updated to the right radio_info structure.
- wifi_hal_purgeScanResult: get_radio_by_phy_index was used to obtain the interface for purging the scan result. Simplify this by using get_interface_by_vap_index and remove the usage of get_radio_by_phy_index.
- platform_get_radio_phytemperature: In broadcom platform.c file, get_radio_by_phy_index is called in this function. Instead of this function, obtain the appropriate radio_info pointer by calling get_radio_by_rdk_index.
Onewifi
- Needs to check further whether there is any direct usage of phy_index instead of rdk_radio_index. Study in progress.
hostap
- No changes required in hostap patches.
References
- PoC to create interfaces under single Phy using netlink - https://github.com/cpokuru/NetlinkApis/tree/main
...