On 7/25/2023 3:51 AM, Wen Gong wrote:
On 6/15/2023 7:49 PM, Kalle Valo wrote:
Aloka Dixit <quic_alokad@xxxxxxxxxxx> writes:
[...]
[...]
+struct ath12k_fw_pdev {
+ u32 pdev_id;
+ u32 phy_id;
+ u32 supported_bands;
+};
So we have now two very similar structures, ath12k_pdev and
ath12k_fw_pdev. It would be good to document above the structs their
purpose. Any ideas what I could add?
Currently ath12k has single_pdev parameter, it impact the interface
number of wifi.
For single_pdev=ture, ab->num_radios is set to 1 and all capbility of
2.4 GHz/
5 GHz/6 GHz is saved into ab->pdevs[0] in
ath12k_wmi_ext_soc_hal_reg_caps_parse().
ath12k_mac_register() will call only one time into
__ath12k_mac_register(), and
ieee80211_register_hw() is called only one time, and only one wifi
interface in
the result of "iw dev/ifconfig", the interface support 2.4 GHz/5 GHz/6
GHz. Actually
there hare more than one PHY in firmware, firmware maintain the all PHY
data and
provide a single pdev/soc interface to ath12k, then ath12k do not need
to consider
the PHY info such as channel/BAND<->PHY mapping relationship, it is
convenient for
ath12k to support 2.4 GHz/5 GHz/6 GHz.
For single_pdev=false, ab->num_radios is more than 1, ab->pdevs[] has
muti valid
element, each element only support one BAND. Firmware do not provide a
single
pdev/soc interface, so ath12k need to maintain the PHY data such as
channel/BAND<->
PHY mapping relationship, and ath12k_mac_register() will call muti-time
into
__ath12k_mac_register(), and ieee80211_register_hw() is called
muti-time, and muti
wifi interface in the result of "iw dev/ifconfig", and each interface
only support
one BAND, for example, wlan0 only support 2.4 GHz, wlan1 only support 5
GHz, and
wlan2 only support 6 GHz.
For single_pdev=ture, ath12k also need to know some info about the PHYs
sush as
pdev_id/phy_id/supported_bands in this patch, so ab->fw_pdev is used to
store the
PHY data.
The new struct ath12k_fw_pdev is anyway going to have as many elements
as the num_radio, right? Then there must be a way to reuse the common
struct ath12k_pdev instead as it done for QCN devices. I understand this
it will need changes to all the existing code for the single-pdev where
it might have hard-coded pdev[0] for the original structure. Something
to think about in a separate patch-set.
For now I will send new version with comments (as far as I understood
it) because without this patch WCN devices show a crash during boot-up.
Thanks.