mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 14:12:07 +02:00
Merge ath-current from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
ath.git fixes for 6.10. Two fixes for user reported regressions in ath11k. One dependency fix and one error path fix. -----BEGIN PGP SIGNATURE----- iQFLBAABCgA1FiEEiBjanGPFTz4PRfLobhckVSbrbZsFAmZaAPoXHHF1aWNfa3Zh bG9AcXVpY2luYy5jb20ACgkQbhckVSbrbZsyFAf/R3y+MhEEMgQRHiBddHrzCWb0 J0z88GoUtQL5R8nYZu7jwyl9OozR8EpdHHmnapvvZ4AXY00CC5yFEJeZkWEEttNk DY2th3sEy0MlQmHs1C57Y1vAHQnClQpyRtohw6kxl5u8SZlB7TAfd+20aJiYstTA DsmggxnXXg8ag9mtjweoMGnEoozQ39DRZ+fcMbVQAX322Vom3CIqEwJim27oVhve 2jY6La2T0t2y+xK7vQO7oqYtWYIu4yWvShyhqcMlOfs2It77UtjcnI1aKZXZ+ngK EBNYPtf0i3Ik/MDd78d5F/jRddZTcw0ITyncfWaTr1xX9UwbpzfZDIt1uutZ6g== =J1DD -----END PGP SIGNATURE----- Merge tag 'ath-current-20240531' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath Merge ath-current from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath.git fixes for 6.10. Two fixes for user reported regressions in ath11k. One dependency fix and one error path fix.
This commit is contained in:
commit
10bc8558b5
|
|
@ -45,6 +45,7 @@ config ATH10K_SNOC
|
|||
depends on ATH10K
|
||||
depends on ARCH_QCOM || COMPILE_TEST
|
||||
depends on QCOM_SMEM
|
||||
depends on QCOM_RPROC_COMMON || QCOM_RPROC_COMMON=n
|
||||
select QCOM_SCM
|
||||
select QCOM_QMI_HELPERS
|
||||
help
|
||||
|
|
|
|||
|
|
@ -604,7 +604,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
|
|||
.coldboot_cal_ftm = true,
|
||||
.cbcal_restart_fw = false,
|
||||
.fw_mem_mode = 0,
|
||||
.num_vdevs = 16 + 1,
|
||||
.num_vdevs = 3,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = false,
|
||||
.hal_desc_sz = sizeof(struct hal_rx_desc_qcn9074),
|
||||
|
|
|
|||
|
|
@ -7988,8 +7988,6 @@ ath11k_mac_op_assign_vif_chanctx(struct ieee80211_hw *hw,
|
|||
struct ath11k_base *ab = ar->ab;
|
||||
struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
|
||||
int ret;
|
||||
struct cur_regulatory_info *reg_info;
|
||||
enum ieee80211_ap_reg_power power_type;
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
|
|
@ -8000,17 +7998,6 @@ ath11k_mac_op_assign_vif_chanctx(struct ieee80211_hw *hw,
|
|||
if (ath11k_wmi_supports_6ghz_cc_ext(ar) &&
|
||||
ctx->def.chan->band == NL80211_BAND_6GHZ &&
|
||||
arvif->vdev_type == WMI_VDEV_TYPE_STA) {
|
||||
reg_info = &ab->reg_info_store[ar->pdev_idx];
|
||||
power_type = vif->bss_conf.power_type;
|
||||
|
||||
ath11k_dbg(ab, ATH11K_DBG_MAC, "chanctx power type %d\n", power_type);
|
||||
|
||||
if (power_type == IEEE80211_REG_UNSET_AP) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ath11k_reg_handle_chan_list(ab, reg_info, power_type);
|
||||
arvif->chanctx = *ctx;
|
||||
ath11k_mac_parse_tx_pwr_env(ar, vif, ctx);
|
||||
}
|
||||
|
|
@ -9626,6 +9613,8 @@ static int ath11k_mac_op_sta_state(struct ieee80211_hw *hw,
|
|||
struct ath11k *ar = hw->priv;
|
||||
struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
|
||||
struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
|
||||
enum ieee80211_ap_reg_power power_type;
|
||||
struct cur_regulatory_info *reg_info;
|
||||
struct ath11k_peer *peer;
|
||||
int ret = 0;
|
||||
|
||||
|
|
@ -9705,6 +9694,29 @@ static int ath11k_mac_op_sta_state(struct ieee80211_hw *hw,
|
|||
ath11k_warn(ar->ab, "Unable to authorize peer %pM vdev %d: %d\n",
|
||||
sta->addr, arvif->vdev_id, ret);
|
||||
}
|
||||
|
||||
if (!ret &&
|
||||
ath11k_wmi_supports_6ghz_cc_ext(ar) &&
|
||||
arvif->vdev_type == WMI_VDEV_TYPE_STA &&
|
||||
arvif->chanctx.def.chan &&
|
||||
arvif->chanctx.def.chan->band == NL80211_BAND_6GHZ) {
|
||||
reg_info = &ar->ab->reg_info_store[ar->pdev_idx];
|
||||
power_type = vif->bss_conf.power_type;
|
||||
|
||||
if (power_type == IEEE80211_REG_UNSET_AP) {
|
||||
ath11k_warn(ar->ab, "invalid power type %d\n",
|
||||
power_type);
|
||||
ret = -EINVAL;
|
||||
} else {
|
||||
ret = ath11k_reg_handle_chan_list(ar->ab,
|
||||
reg_info,
|
||||
power_type);
|
||||
if (ret)
|
||||
ath11k_warn(ar->ab,
|
||||
"failed to handle chan list with power type %d\n",
|
||||
power_type);
|
||||
}
|
||||
}
|
||||
} else if (old_state == IEEE80211_STA_AUTHORIZED &&
|
||||
new_state == IEEE80211_STA_ASSOC) {
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
|
|
|
|||
|
|
@ -561,6 +561,7 @@ static int ath11k_pcic_ext_irq_config(struct ath11k_base *ab)
|
|||
{
|
||||
int i, j, n, ret, num_vectors = 0;
|
||||
u32 user_base_data = 0, base_vector = 0;
|
||||
struct ath11k_ext_irq_grp *irq_grp;
|
||||
unsigned long irq_flags;
|
||||
|
||||
ret = ath11k_pcic_get_user_msi_assignment(ab, "DP", &num_vectors,
|
||||
|
|
@ -574,14 +575,16 @@ static int ath11k_pcic_ext_irq_config(struct ath11k_base *ab)
|
|||
irq_flags |= IRQF_NOBALANCING;
|
||||
|
||||
for (i = 0; i < ATH11K_EXT_IRQ_GRP_NUM_MAX; i++) {
|
||||
struct ath11k_ext_irq_grp *irq_grp = &ab->ext_irq_grp[i];
|
||||
irq_grp = &ab->ext_irq_grp[i];
|
||||
u32 num_irq = 0;
|
||||
|
||||
irq_grp->ab = ab;
|
||||
irq_grp->grp_id = i;
|
||||
irq_grp->napi_ndev = alloc_netdev_dummy(0);
|
||||
if (!irq_grp->napi_ndev)
|
||||
return -ENOMEM;
|
||||
if (!irq_grp->napi_ndev) {
|
||||
ret = -ENOMEM;
|
||||
goto fail_allocate;
|
||||
}
|
||||
|
||||
netif_napi_add(irq_grp->napi_ndev, &irq_grp->napi,
|
||||
ath11k_pcic_ext_grp_napi_poll);
|
||||
|
|
@ -606,11 +609,8 @@ static int ath11k_pcic_ext_irq_config(struct ath11k_base *ab)
|
|||
int irq = ath11k_pcic_get_msi_irq(ab, vector);
|
||||
|
||||
if (irq < 0) {
|
||||
for (n = 0; n <= i; n++) {
|
||||
irq_grp = &ab->ext_irq_grp[n];
|
||||
free_netdev(irq_grp->napi_ndev);
|
||||
}
|
||||
return irq;
|
||||
ret = irq;
|
||||
goto fail_irq;
|
||||
}
|
||||
|
||||
ab->irq_num[irq_idx] = irq;
|
||||
|
|
@ -635,6 +635,15 @@ static int ath11k_pcic_ext_irq_config(struct ath11k_base *ab)
|
|||
}
|
||||
|
||||
return 0;
|
||||
fail_irq:
|
||||
/* i ->napi_ndev was properly allocated. Free it also */
|
||||
i += 1;
|
||||
fail_allocate:
|
||||
for (n = 0; n < i; n++) {
|
||||
irq_grp = &ab->ext_irq_grp[n];
|
||||
free_netdev(irq_grp->napi_ndev);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ath11k_pcic_config_irq(struct ath11k_base *ab)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user