* [PATCH 0/3] wifi: ath12k: Add multi radio iface combination support
@ 2024-08-14 10:34 Karthikeyan Periyasamy
2024-08-14 10:34 ` [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper Karthikeyan Periyasamy
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Karthikeyan Periyasamy @ 2024-08-14 10:34 UTC (permalink / raw)
To: ath12k; +Cc: linux-wireless, Karthikeyan Periyasamy
Refactor the interface combination procedure and add support to advertise
multi-radio interface combinations when multiple radios are combined to
achieve Multi-Link Operation (MLO).
Karthikeyan Periyasamy (3):
wifi: ath12k: Introduce iface combination cleanup helper
wifi: ath12k: Refactor radio freq low and high information
wifi: ath12k: Advertise multi device iface combination
drivers/net/wireless/ath/ath12k/core.h | 3 +-
drivers/net/wireless/ath/ath12k/mac.c | 225 ++++++++++++++++++++-----
2 files changed, 185 insertions(+), 43 deletions(-)
base-commit: 1462e8e1c93ecb96b5820ec28f7cbbb8a5aeb732
--
2.34.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper
2024-08-14 10:34 [PATCH 0/3] wifi: ath12k: Add multi radio iface combination support Karthikeyan Periyasamy
@ 2024-08-14 10:34 ` Karthikeyan Periyasamy
2024-08-14 18:12 ` Jeff Johnson
2024-08-22 16:53 ` Kalle Valo
2024-08-14 10:34 ` [PATCH 2/3] wifi: ath12k: Refactor radio freq low and high information Karthikeyan Periyasamy
2024-08-14 10:34 ` [PATCH 3/3] wifi: ath12k: Advertise multi device iface combination Karthikeyan Periyasamy
2 siblings, 2 replies; 10+ messages in thread
From: Karthikeyan Periyasamy @ 2024-08-14 10:34 UTC (permalink / raw)
To: ath12k; +Cc: linux-wireless, Karthikeyan Periyasamy
Introduce a cleanup helper function to avoid redundant code for iface
combination cleanup. Remove the cleanup code from
ath12k_mac_hw_unregister() and ath12k_mac_hw_register() and replace it
with new cleanup helper function.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00183-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
---
drivers/net/wireless/ath/ath12k/mac.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
index a3248d977532..69f50c1a52d6 100644
--- a/drivers/net/wireless/ath/ath12k/mac.c
+++ b/drivers/net/wireless/ath/ath12k/mac.c
@@ -8865,6 +8865,14 @@ static bool ath12k_mac_is_iface_mode_enable(struct ath12k_hw *ah,
return is_enable;
}
+static void ath12k_mac_cleanup_iface_combinations(struct ath12k_hw *ah)
+{
+ struct wiphy *wiphy = ah->hw->wiphy;
+
+ kfree(wiphy->iface_combinations[0].limits);
+ kfree(wiphy->iface_combinations);
+}
+
static int ath12k_mac_setup_iface_combinations(struct ath12k_hw *ah)
{
struct wiphy *wiphy = ah->hw->wiphy;
@@ -8993,7 +9001,6 @@ static void ath12k_mac_cleanup_unregister(struct ath12k *ar)
static void ath12k_mac_hw_unregister(struct ath12k_hw *ah)
{
struct ieee80211_hw *hw = ah->hw;
- struct wiphy *wiphy = hw->wiphy;
struct ath12k *ar;
int i;
@@ -9007,8 +9014,7 @@ static void ath12k_mac_hw_unregister(struct ath12k_hw *ah)
for_each_ar(ah, ar, i)
ath12k_mac_cleanup_unregister(ar);
- kfree(wiphy->iface_combinations[0].limits);
- kfree(wiphy->iface_combinations);
+ ath12k_mac_cleanup_iface_combinations(ah);
SET_IEEE80211_DEV(hw, NULL);
}
@@ -9238,13 +9244,13 @@ static int ath12k_mac_hw_register(struct ath12k_hw *ah)
ret = ath12k_wow_init(ar);
if (ret) {
ath12k_warn(ar->ab, "failed to init wow: %d\n", ret);
- goto err_free_if_combs;
+ goto err_cleanup_if_combs;
}
ret = ieee80211_register_hw(hw);
if (ret) {
ath12k_err(ab, "ieee80211 registration failed: %d\n", ret);
- goto err_free_if_combs;
+ goto err_cleanup_if_combs;
}
if (is_monitor_disable)
@@ -9274,9 +9280,8 @@ static int ath12k_mac_hw_register(struct ath12k_hw *ah)
ieee80211_unregister_hw(hw);
-err_free_if_combs:
- kfree(wiphy->iface_combinations[0].limits);
- kfree(wiphy->iface_combinations);
+err_cleanup_if_combs:
+ ath12k_mac_cleanup_iface_combinations(ah);
err_complete_cleanup_unregister:
i = ah->num_radio;
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/3] wifi: ath12k: Refactor radio freq low and high information
2024-08-14 10:34 [PATCH 0/3] wifi: ath12k: Add multi radio iface combination support Karthikeyan Periyasamy
2024-08-14 10:34 ` [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper Karthikeyan Periyasamy
@ 2024-08-14 10:34 ` Karthikeyan Periyasamy
2024-08-14 18:21 ` Jeff Johnson
2024-08-14 10:34 ` [PATCH 3/3] wifi: ath12k: Advertise multi device iface combination Karthikeyan Periyasamy
2 siblings, 1 reply; 10+ messages in thread
From: Karthikeyan Periyasamy @ 2024-08-14 10:34 UTC (permalink / raw)
To: ath12k; +Cc: linux-wireless, Karthikeyan Periyasamy
Currently, radio stores the low frequency and high frequency information
as a separate variables. However, cfg80211 already provides a suitable
data structure struct wiphy_radio_freq_range, to store this information
efficiently. Additionally, for multi radio per wiphy infrastructure, this
frequency range information is essential. Therefore, to enhance
adaptibility and leverage existing structures, modify the storage of
frequency low and high information to the struct wiphy_radio_freq_range
data structure.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00183-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
---
drivers/net/wireless/ath/ath12k/core.h | 3 +--
drivers/net/wireless/ath/ath12k/mac.c | 8 ++++----
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h
index cdfd43a7321a..ff830d91ceb6 100644
--- a/drivers/net/wireless/ath/ath12k/core.h
+++ b/drivers/net/wireless/ath/ath12k/core.h
@@ -645,8 +645,7 @@ struct ath12k {
bool monitor_started;
int monitor_vdev_id;
- u32 freq_low;
- u32 freq_high;
+ struct wiphy_radio_freq_range freq_range;
bool nlo_enabled;
};
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
index 69f50c1a52d6..6761204048f6 100644
--- a/drivers/net/wireless/ath/ath12k/mac.c
+++ b/drivers/net/wireless/ath/ath12k/mac.c
@@ -639,8 +639,8 @@ static struct ath12k *ath12k_mac_get_ar_by_chan(struct ieee80211_hw *hw,
return ar;
for_each_ar(ah, ar, i) {
- if (channel->center_freq >= ar->freq_low &&
- channel->center_freq <= ar->freq_high)
+ if (channel->center_freq >= KHZ_TO_MHZ(ar->freq_range.start_freq) &&
+ channel->center_freq <= KHZ_TO_MHZ(ar->freq_range.end_freq))
return ar;
}
return NULL;
@@ -8717,8 +8717,8 @@ static void ath12k_mac_update_ch_list(struct ath12k *ar,
band->channels[i].flags |= IEEE80211_CHAN_DISABLED;
}
- ar->freq_low = freq_low;
- ar->freq_high = freq_high;
+ ar->freq_range.start_freq = MHZ_TO_KHZ(freq_low);
+ ar->freq_range.end_freq = MHZ_TO_KHZ(freq_high);
}
static u32 ath12k_get_phy_id(struct ath12k *ar, u32 band)
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/3] wifi: ath12k: Advertise multi device iface combination
2024-08-14 10:34 [PATCH 0/3] wifi: ath12k: Add multi radio iface combination support Karthikeyan Periyasamy
2024-08-14 10:34 ` [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper Karthikeyan Periyasamy
2024-08-14 10:34 ` [PATCH 2/3] wifi: ath12k: Refactor radio freq low and high information Karthikeyan Periyasamy
@ 2024-08-14 10:34 ` Karthikeyan Periyasamy
2024-08-14 18:38 ` Jeff Johnson
2 siblings, 1 reply; 10+ messages in thread
From: Karthikeyan Periyasamy @ 2024-08-14 10:34 UTC (permalink / raw)
To: ath12k; +Cc: linux-wireless, Karthikeyan Periyasamy
The prerequisite for MLO support in cfg80211/mac80211 requires that all
the links participating in MLO belong to the same wiphy/ieee80211_hw.
The driver needs to group multiple discrete hardware components, each
acting as a link in MLO, under one wiphy. Consequently, the driver
advertises multi-hardware device interface combination capabilities
specific to the radio, including supported frequencies. The global
interface combination represent the combined interface capabilities.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00183-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
---
drivers/net/wireless/ath/ath12k/mac.c | 212 +++++++++++++++++++++-----
1 file changed, 175 insertions(+), 37 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
index 6761204048f6..8f5f6a08446f 100644
--- a/drivers/net/wireless/ath/ath12k/mac.c
+++ b/drivers/net/wireless/ath/ath12k/mac.c
@@ -8850,14 +8850,20 @@ static bool ath12k_mac_is_iface_mode_enable(struct ath12k_hw *ah,
{
struct ath12k *ar;
int i;
- u16 interface_modes, mode;
- bool is_enable = true;
+ u16 interface_modes, mode = 0;
+ bool is_enable = false;
+
+ if (type == NL80211_IFTYPE_MESH_POINT) {
+ if (IS_ENABLED(CONFIG_MAC80211_MESH))
+ mode = BIT(type);
+ } else {
+ mode = BIT(type);
+ }
- mode = BIT(type);
for_each_ar(ah, ar, i) {
interface_modes = ar->ab->hw_params->interface_modes;
- if (!(interface_modes & mode)) {
- is_enable = false;
+ if (interface_modes & mode) {
+ is_enable = true;
break;
}
}
@@ -8865,31 +8871,20 @@ static bool ath12k_mac_is_iface_mode_enable(struct ath12k_hw *ah,
return is_enable;
}
-static void ath12k_mac_cleanup_iface_combinations(struct ath12k_hw *ah)
-{
- struct wiphy *wiphy = ah->hw->wiphy;
-
- kfree(wiphy->iface_combinations[0].limits);
- kfree(wiphy->iface_combinations);
-}
-
-static int ath12k_mac_setup_iface_combinations(struct ath12k_hw *ah)
+static int
+ath12k_mac_setup_radio_iface_comb(struct ath12k *ar,
+ struct ieee80211_iface_combination *comb)
{
- struct wiphy *wiphy = ah->hw->wiphy;
- struct ieee80211_iface_combination *combinations;
struct ieee80211_iface_limit *limits;
int n_limits, max_interfaces;
+ u16 interface_modes = ar->ab->hw_params->interface_modes;
bool ap, mesh, p2p;
- ap = ath12k_mac_is_iface_mode_enable(ah, NL80211_IFTYPE_AP);
- p2p = ath12k_mac_is_iface_mode_enable(ah, NL80211_IFTYPE_P2P_DEVICE);
+ ap = interface_modes & BIT(NL80211_IFTYPE_AP);
+ p2p = interface_modes & BIT(NL80211_IFTYPE_P2P_DEVICE);
mesh = IS_ENABLED(CONFIG_MAC80211_MESH) &&
- ath12k_mac_is_iface_mode_enable(ah, NL80211_IFTYPE_MESH_POINT);
-
- combinations = kzalloc(sizeof(*combinations), GFP_KERNEL);
- if (!combinations)
- return -ENOMEM;
+ (interface_modes & BIT(NL80211_IFTYPE_MESH_POINT));
if ((ap || mesh) && !p2p) {
n_limits = 2;
@@ -8906,10 +8901,8 @@ static int ath12k_mac_setup_iface_combinations(struct ath12k_hw *ah)
}
limits = kcalloc(n_limits, sizeof(*limits), GFP_KERNEL);
- if (!limits) {
- kfree(combinations);
+ if (!limits)
return -ENOMEM;
- }
limits[0].max = 1;
limits[0].types |= BIT(NL80211_IFTYPE_STATION);
@@ -8925,26 +8918,171 @@ static int ath12k_mac_setup_iface_combinations(struct ath12k_hw *ah)
if (p2p) {
limits[1].types |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
- BIT(NL80211_IFTYPE_P2P_GO);
+ BIT(NL80211_IFTYPE_P2P_GO);
limits[2].max = 1;
limits[2].types |= BIT(NL80211_IFTYPE_P2P_DEVICE);
}
- combinations[0].limits = limits;
- combinations[0].n_limits = n_limits;
- combinations[0].max_interfaces = max_interfaces;
- combinations[0].num_different_channels = 1;
- combinations[0].beacon_int_infra_match = true;
- combinations[0].beacon_int_min_gcd = 100;
- combinations[0].radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
- BIT(NL80211_CHAN_WIDTH_20) |
- BIT(NL80211_CHAN_WIDTH_40) |
- BIT(NL80211_CHAN_WIDTH_80);
+ comb[0].limits = limits;
+ comb[0].n_limits = n_limits;
+ comb[0].max_interfaces = max_interfaces;
+ comb[0].num_different_channels = 1;
+ comb[0].beacon_int_infra_match = true;
+ comb[0].beacon_int_min_gcd = 100;
+ comb[0].radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
+ BIT(NL80211_CHAN_WIDTH_20) |
+ BIT(NL80211_CHAN_WIDTH_40) |
+ BIT(NL80211_CHAN_WIDTH_80);
+
+ return 0;
+}
+
+static int
+ath12k_mac_setup_global_iface_comb(struct ath12k_hw *ah,
+ struct wiphy_radio *radio,
+ u8 n_radio,
+ struct ieee80211_iface_combination *comb)
+{
+ struct ieee80211_iface_limit *limits;
+ const struct ieee80211_iface_combination *iter_comb;
+ int i, j, n_limits;
+ bool ap, mesh, p2p;
+
+ if (!n_radio)
+ return 0;
+
+ ap = ath12k_mac_is_iface_mode_enable(ah, NL80211_IFTYPE_AP);
+ p2p = ath12k_mac_is_iface_mode_enable(ah, NL80211_IFTYPE_P2P_DEVICE);
+ mesh = ath12k_mac_is_iface_mode_enable(ah, NL80211_IFTYPE_MESH_POINT);
+
+ if ((ap || mesh) && !p2p)
+ n_limits = 2;
+ else if (p2p)
+ n_limits = 3;
+ else
+ n_limits = 1;
+
+ limits = kcalloc(n_limits, sizeof(*limits), GFP_KERNEL);
+ if (!limits)
+ return -ENOMEM;
+
+ for (i = 0; i < n_radio; i++) {
+ iter_comb = radio[i].iface_combinations;
+ for (j = 0; j < iter_comb->n_limits && j < n_limits; j++) {
+ limits[j].types |= iter_comb->limits[j].types;
+ limits[j].max += iter_comb->limits[j].max;
+ }
+
+ comb->max_interfaces += iter_comb->max_interfaces;
+ comb->num_different_channels += iter_comb->num_different_channels;
+ comb->radar_detect_widths |= iter_comb->radar_detect_widths;
+ }
+
+ comb->limits = limits;
+ comb->n_limits = n_limits;
+ comb->beacon_int_infra_match = true;
+ comb->beacon_int_min_gcd = 100;
+
+ return 0;
+}
+
+static
+void ath12k_mac_cleanup_iface_comb(const struct ieee80211_iface_combination *iface_comb)
+{
+ kfree(iface_comb[0].limits);
+ kfree(iface_comb);
+}
+
+static void ath12k_mac_cleanup_iface_combinations(struct ath12k_hw *ah)
+{
+ struct wiphy *wiphy = ah->hw->wiphy;
+ const struct wiphy_radio *radio;
+ int i;
+
+ if (wiphy->n_radio > 0) {
+ radio = wiphy->radio;
+ for (i = 0; i < wiphy->n_radio; i++)
+ ath12k_mac_cleanup_iface_comb(radio[i].iface_combinations);
+
+ kfree(wiphy->radio);
+ }
+
+ ath12k_mac_cleanup_iface_comb(wiphy->iface_combinations);
+}
+
+static int ath12k_mac_setup_iface_combinations(struct ath12k_hw *ah)
+{
+ struct wiphy *wiphy = ah->hw->wiphy;
+ struct wiphy_radio *radio;
+ struct ath12k *ar;
+ struct ieee80211_iface_combination *combinations;
+ int i = 0, ret;
+
+ combinations = kzalloc(sizeof(*combinations), GFP_KERNEL);
+ if (!combinations)
+ return -ENOMEM;
+
+ if (ah->num_radio > 1) {
+ struct ieee80211_iface_combination *comb;
+
+ radio = kcalloc(ah->num_radio, sizeof(*radio), GFP_KERNEL);
+ if (!radio) {
+ ret = -ENOMEM;
+ goto err_combination;
+ }
+
+ for_each_ar(ah, ar, i) {
+ comb = kzalloc(sizeof(*comb), GFP_KERNEL);
+ if (!comb) {
+ ret = -ENOMEM;
+ goto err_radio_comb;
+ }
+
+ ret = ath12k_mac_setup_radio_iface_comb(ar, comb);
+ if (ret) {
+ kfree(comb);
+ goto err_radio_comb;
+ }
+
+ radio[i].freq_range = &ar->freq_range;
+ radio[i].n_freq_range = 1;
+
+ radio[i].iface_combinations = comb;
+ radio[i].n_iface_combinations = 1;
+ }
+
+ ret = ath12k_mac_setup_global_iface_comb(ah, radio,
+ ah->num_radio,
+ combinations);
+ if (ret)
+ goto err_full_radio_comb;
+
+ wiphy->radio = radio;
+ wiphy->n_radio = ah->num_radio;
+ } else {
+ ret = ath12k_mac_setup_radio_iface_comb(&ah->radio[0],
+ combinations);
+ if (ret)
+ goto err_combination;
+ }
wiphy->iface_combinations = combinations;
wiphy->n_iface_combinations = 1;
return 0;
+
+err_full_radio_comb:
+ i = ah->num_radio;
+err_radio_comb:
+ while (i--)
+ ath12k_mac_cleanup_iface_comb(radio[i].iface_combinations);
+
+ kfree(radio);
+
+err_combination:
+ kfree(combinations);
+
+ return ret;
}
static const u8 ath12k_if_types_ext_capa[] = {
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper
2024-08-14 10:34 ` [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper Karthikeyan Periyasamy
@ 2024-08-14 18:12 ` Jeff Johnson
2024-08-22 16:53 ` Kalle Valo
1 sibling, 0 replies; 10+ messages in thread
From: Jeff Johnson @ 2024-08-14 18:12 UTC (permalink / raw)
To: Karthikeyan Periyasamy, ath12k; +Cc: linux-wireless
On 8/14/2024 3:34 AM, Karthikeyan Periyasamy wrote:
> Introduce a cleanup helper function to avoid redundant code for iface
> combination cleanup. Remove the cleanup code from
> ath12k_mac_hw_unregister() and ath12k_mac_hw_register() and replace it
> with new cleanup helper function.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00183-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
>
> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] wifi: ath12k: Refactor radio freq low and high information
2024-08-14 10:34 ` [PATCH 2/3] wifi: ath12k: Refactor radio freq low and high information Karthikeyan Periyasamy
@ 2024-08-14 18:21 ` Jeff Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Jeff Johnson @ 2024-08-14 18:21 UTC (permalink / raw)
To: Karthikeyan Periyasamy, ath12k; +Cc: linux-wireless
On 8/14/2024 3:34 AM, Karthikeyan Periyasamy wrote:
> Currently, radio stores the low frequency and high frequency information
> as a separate variables. However, cfg80211 already provides a suitable
nit: s/as a/as/
> data structure struct wiphy_radio_freq_range, to store this information
> efficiently. Additionally, for multi radio per wiphy infrastructure, this
> frequency range information is essential. Therefore, to enhance
> adaptibility and leverage existing structures, modify the storage of
nit: s/adaptibility /adaptability /
> frequency low and high information to the struct wiphy_radio_freq_range
> data structure.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00183-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
>
> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
(Kalle can make the nit changes in the pending branch)
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] wifi: ath12k: Advertise multi device iface combination
2024-08-14 10:34 ` [PATCH 3/3] wifi: ath12k: Advertise multi device iface combination Karthikeyan Periyasamy
@ 2024-08-14 18:38 ` Jeff Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Jeff Johnson @ 2024-08-14 18:38 UTC (permalink / raw)
To: Karthikeyan Periyasamy, ath12k; +Cc: linux-wireless
On 8/14/2024 3:34 AM, Karthikeyan Periyasamy wrote:
> The prerequisite for MLO support in cfg80211/mac80211 requires that all
> the links participating in MLO belong to the same wiphy/ieee80211_hw.
> The driver needs to group multiple discrete hardware components, each
> acting as a link in MLO, under one wiphy. Consequently, the driver
> advertises multi-hardware device interface combination capabilities
> specific to the radio, including supported frequencies. The global
> interface combination represent the combined interface capabilities.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00183-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
>
> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper
2024-08-14 10:34 ` [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper Karthikeyan Periyasamy
2024-08-14 18:12 ` Jeff Johnson
@ 2024-08-22 16:53 ` Kalle Valo
2024-08-26 6:04 ` Karthikeyan Periyasamy
1 sibling, 1 reply; 10+ messages in thread
From: Kalle Valo @ 2024-08-22 16:53 UTC (permalink / raw)
To: Karthikeyan Periyasamy; +Cc: ath12k, linux-wireless, Karthikeyan Periyasamy
Karthikeyan Periyasamy <quic_periyasa@quicinc.com> wrote:
> Introduce a cleanup helper function to avoid redundant code for iface
> combination cleanup. Remove the cleanup code from
> ath12k_mac_hw_unregister() and ath12k_mac_hw_register() and replace it
> with new cleanup helper function.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00183-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
>
> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
I'll drop this patchset because of MLO cleanup.
3 patches set to Changes Requested.
13763255 [1/3] wifi: ath12k: Introduce iface combination cleanup helper
13763256 [2/3] wifi: ath12k: Refactor radio freq low and high information
13763257 [3/3] wifi: ath12k: Advertise multi device iface combination
--
https://patchwork.kernel.org/project/linux-wireless/patch/20240814103423.3980958-2-quic_periyasa@quicinc.com/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
https://docs.kernel.org/process/submitting-patches.html
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper
2024-08-22 16:53 ` Kalle Valo
@ 2024-08-26 6:04 ` Karthikeyan Periyasamy
2024-08-27 7:25 ` Kalle Valo
0 siblings, 1 reply; 10+ messages in thread
From: Karthikeyan Periyasamy @ 2024-08-26 6:04 UTC (permalink / raw)
To: Kalle Valo; +Cc: ath12k, linux-wireless
On 8/22/2024 10:23 PM, Kalle Valo wrote:
> Karthikeyan Periyasamy <quic_periyasa@quicinc.com> wrote:
>
>> Introduce a cleanup helper function to avoid redundant code for iface
>> combination cleanup. Remove the cleanup code from
>> ath12k_mac_hw_unregister() and ath12k_mac_hw_register() and replace it
>> with new cleanup helper function.
>>
>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
>> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00183-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
>>
>> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
>> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
>> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
>
> I'll drop this patchset because of MLO cleanup.
This change not related to MLO dependency. Its a basic to group multiple
radio under a wiphy.
>
> 3 patches set to Changes Requested.
>
> 13763255 [1/3] wifi: ath12k: Introduce iface combination cleanup helper
> 13763256 [2/3] wifi: ath12k: Refactor radio freq low and high information
> 13763257 [3/3] wifi: ath12k: Advertise multi device iface combination
>
--
Karthikeyan Periyasamy
--
கார்த்திகேயன் பெரியசாமி
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper
2024-08-26 6:04 ` Karthikeyan Periyasamy
@ 2024-08-27 7:25 ` Kalle Valo
0 siblings, 0 replies; 10+ messages in thread
From: Kalle Valo @ 2024-08-27 7:25 UTC (permalink / raw)
To: Karthikeyan Periyasamy; +Cc: ath12k, linux-wireless
Karthikeyan Periyasamy <quic_periyasa@quicinc.com> writes:
> On 8/22/2024 10:23 PM, Kalle Valo wrote:
>> Karthikeyan Periyasamy <quic_periyasa@quicinc.com> wrote:
>>
>>> Introduce a cleanup helper function to avoid redundant code for iface
>>> combination cleanup. Remove the cleanup code from
>>> ath12k_mac_hw_unregister() and ath12k_mac_hw_register() and replace it
>>> with new cleanup helper function.
>>>
>>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
>>> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00183-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
>>>
>>> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
>>> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
>>> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
>> I'll drop this patchset because of MLO cleanup.
>
> This change not related to MLO dependency. Its a basic to group
> multiple radio under a wiphy.
Ok, but it's still good to look at this together with rest of the MLO patches.
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
https://docs.kernel.org/process/submitting-patches.html
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-08-27 7:25 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-14 10:34 [PATCH 0/3] wifi: ath12k: Add multi radio iface combination support Karthikeyan Periyasamy
2024-08-14 10:34 ` [PATCH 1/3] wifi: ath12k: Introduce iface combination cleanup helper Karthikeyan Periyasamy
2024-08-14 18:12 ` Jeff Johnson
2024-08-22 16:53 ` Kalle Valo
2024-08-26 6:04 ` Karthikeyan Periyasamy
2024-08-27 7:25 ` Kalle Valo
2024-08-14 10:34 ` [PATCH 2/3] wifi: ath12k: Refactor radio freq low and high information Karthikeyan Periyasamy
2024-08-14 18:21 ` Jeff Johnson
2024-08-14 10:34 ` [PATCH 3/3] wifi: ath12k: Advertise multi device iface combination Karthikeyan Periyasamy
2024-08-14 18:38 ` Jeff Johnson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).