|
|
@@ -121,7 +121,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
};
|
|
|
|
|
|
static __le32 ath12k_wmi_tlv_hdr(u32 cmd, u32 len)
|
|
|
-@@ -2364,7 +2366,10 @@ int ath12k_wmi_send_scan_start_cmd(struc
|
|
|
+@@ -2374,7 +2376,10 @@ int ath12k_wmi_send_scan_start_cmd(struc
|
|
|
cmd->scan_id = cpu_to_le32(arg->scan_id);
|
|
|
cmd->scan_req_id = cpu_to_le32(arg->scan_req_id);
|
|
|
cmd->vdev_id = cpu_to_le32(arg->vdev_id);
|
|
|
@@ -133,7 +133,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
cmd->notify_scan_events = cpu_to_le32(arg->notify_scan_events);
|
|
|
|
|
|
ath12k_wmi_copy_scan_event_cntrl_flags(cmd, arg);
|
|
|
-@@ -3084,6 +3089,110 @@ out:
|
|
|
+@@ -3094,6 +3099,110 @@ out:
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
@@ -244,7 +244,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
int
|
|
|
ath12k_wmi_send_twt_enable_cmd(struct ath12k *ar, u32 pdev_id)
|
|
|
{
|
|
|
-@@ -5669,6 +5778,50 @@ static void ath12k_wmi_op_ep_tx_credits(
|
|
|
+@@ -5714,6 +5823,50 @@ static void ath12k_wmi_op_ep_tx_credits(
|
|
|
wake_up(&ab->wmi_ab.tx_credits_wq);
|
|
|
}
|
|
|
|
|
|
@@ -295,7 +295,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
static void ath12k_wmi_htc_tx_complete(struct ath12k_base *ab,
|
|
|
struct sk_buff *skb)
|
|
|
{
|
|
|
-@@ -7270,6 +7423,9 @@ static void ath12k_wmi_op_rx(struct ath1
|
|
|
+@@ -7317,6 +7470,9 @@ static void ath12k_wmi_op_rx(struct ath1
|
|
|
case WMI_GTK_OFFLOAD_STATUS_EVENTID:
|
|
|
ath12k_wmi_gtk_offload_status_event(ab, skb);
|
|
|
break;
|
|
|
@@ -336,9 +336,9 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
struct wmi_delba_send_cmd {
|
|
|
__le32 tlv_header;
|
|
|
__le32 vdev_id;
|
|
|
-@@ -3945,6 +3967,16 @@ struct ath12k_wmi_eht_rate_set_params {
|
|
|
+@@ -3944,6 +3966,16 @@ struct ath12k_wmi_eht_rate_set_params {
|
|
|
+ #define REG_ALPHA2_LEN 2
|
|
|
#define MAX_6G_REG_RULES 5
|
|
|
- #define REG_US_5G_NUM_REG_RULES 4
|
|
|
|
|
|
+struct wmi_set_current_country_arg {
|
|
|
+ u8 alpha2[REG_ALPHA2_LEN];
|
|
|
@@ -353,7 +353,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
enum wmi_start_event_param {
|
|
|
WMI_VDEV_START_RESP_EVENT = 0,
|
|
|
WMI_VDEV_RESTART_RESP_EVENT,
|
|
|
-@@ -5547,11 +5579,17 @@ int ath12k_wmi_send_bcn_offload_control_
|
|
|
+@@ -5546,11 +5578,17 @@ int ath12k_wmi_send_bcn_offload_control_
|
|
|
u32 vdev_id, u32 bcn_ctrl_op);
|
|
|
int ath12k_wmi_send_init_country_cmd(struct ath12k *ar,
|
|
|
struct ath12k_wmi_init_country_arg *arg);
|
|
|
@@ -373,7 +373,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
struct ath12k_wmi_rx_reorder_queue_remove_arg *arg);
|
|
|
--- a/drivers/net/wireless/ath/ath12k/core.c
|
|
|
+++ b/drivers/net/wireless/ath/ath12k/core.c
|
|
|
-@@ -1014,6 +1014,7 @@ void ath12k_core_halt(struct ath12k *ar)
|
|
|
+@@ -1017,6 +1017,7 @@ void ath12k_core_halt(struct ath12k *ar)
|
|
|
cancel_delayed_work_sync(&ar->scan.timeout);
|
|
|
cancel_work_sync(&ar->regd_update_work);
|
|
|
cancel_work_sync(&ab->rfkill_work);
|
|
|
@@ -381,7 +381,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
|
|
|
rcu_assign_pointer(ab->pdevs_active[ar->pdev_idx], NULL);
|
|
|
synchronize_rcu();
|
|
|
-@@ -1021,6 +1022,34 @@ void ath12k_core_halt(struct ath12k *ar)
|
|
|
+@@ -1029,6 +1030,34 @@ void ath12k_core_halt(struct ath12k *ar)
|
|
|
idr_init(&ar->txmgmt_idr);
|
|
|
}
|
|
|
|
|
|
@@ -416,7 +416,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
static void ath12k_core_pre_reconfigure_recovery(struct ath12k_base *ab)
|
|
|
{
|
|
|
struct ath12k *ar;
|
|
|
-@@ -1045,8 +1074,10 @@ static void ath12k_core_pre_reconfigure_
|
|
|
+@@ -1053,8 +1082,10 @@ static void ath12k_core_pre_reconfigure_
|
|
|
ar = &ah->radio[j];
|
|
|
|
|
|
ath12k_mac_drain_tx(ar);
|
|
|
@@ -428,7 +428,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
complete(&ar->scan.on_channel);
|
|
|
complete(&ar->peer_assoc_done);
|
|
|
complete(&ar->peer_delete_done);
|
|
|
-@@ -1312,6 +1343,7 @@ struct ath12k_base *ath12k_core_alloc(st
|
|
|
+@@ -1320,6 +1351,7 @@ struct ath12k_base *ath12k_core_alloc(st
|
|
|
INIT_WORK(&ab->restart_work, ath12k_core_restart);
|
|
|
INIT_WORK(&ab->reset_work, ath12k_core_reset);
|
|
|
INIT_WORK(&ab->rfkill_work, ath12k_rfkill_work);
|
|
|
@@ -438,7 +438,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
init_completion(&ab->htc_suspend);
|
|
|
--- a/drivers/net/wireless/ath/ath12k/core.h
|
|
|
+++ b/drivers/net/wireless/ath/ath12k/core.h
|
|
|
-@@ -199,6 +199,12 @@ enum ath12k_scan_state {
|
|
|
+@@ -200,6 +200,12 @@ enum ath12k_scan_state {
|
|
|
ATH12K_SCAN_ABORTING,
|
|
|
};
|
|
|
|
|
|
@@ -451,7 +451,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
enum ath12k_dev_flags {
|
|
|
ATH12K_CAC_RUNNING,
|
|
|
ATH12K_FLAG_CRASH_FLUSH,
|
|
|
-@@ -319,6 +325,8 @@ struct ath12k_vif_iter {
|
|
|
+@@ -320,6 +326,8 @@ struct ath12k_vif_iter {
|
|
|
#define ATH12K_RX_RATE_TABLE_11AX_NUM 576
|
|
|
#define ATH12K_RX_RATE_TABLE_NUM 320
|
|
|
|
|
|
@@ -460,7 +460,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
struct ath12k_rx_peer_rate_stats {
|
|
|
u64 ht_mcs_count[HAL_RX_MAX_MCS_HT + 1];
|
|
|
u64 vht_mcs_count[HAL_RX_MAX_MCS_VHT + 1];
|
|
|
-@@ -654,6 +662,13 @@ struct ath12k {
|
|
|
+@@ -655,6 +663,13 @@ struct ath12k {
|
|
|
u32 freq_low;
|
|
|
u32 freq_high;
|
|
|
|
|
|
@@ -474,7 +474,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
bool nlo_enabled;
|
|
|
};
|
|
|
|
|
|
-@@ -886,6 +901,8 @@ struct ath12k_base {
|
|
|
+@@ -887,6 +902,8 @@ struct ath12k_base {
|
|
|
/* continuous recovery fail count */
|
|
|
atomic_t fail_cont_count;
|
|
|
unsigned long reset_fail_timeout;
|
|
|
@@ -532,7 +532,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-@@ -5994,7 +6009,7 @@ static int ath12k_mac_start(struct ath12
|
|
|
+@@ -5998,7 +6013,7 @@ static int ath12k_mac_start(struct ath12
|
|
|
|
|
|
/* TODO: Do we need to enable ANI? */
|
|
|
|
|
|
@@ -541,7 +541,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
|
|
|
ar->num_started_vdevs = 0;
|
|
|
ar->num_created_vdevs = 0;
|
|
|
-@@ -6174,6 +6189,9 @@ static void ath12k_mac_stop(struct ath12
|
|
|
+@@ -6178,6 +6193,9 @@ static void ath12k_mac_stop(struct ath12
|
|
|
cancel_delayed_work_sync(&ar->scan.timeout);
|
|
|
cancel_work_sync(&ar->regd_update_work);
|
|
|
cancel_work_sync(&ar->ab->rfkill_work);
|
|
|
@@ -551,7 +551,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
|
|
|
spin_lock_bh(&ar->data_lock);
|
|
|
list_for_each_entry_safe(ppdu_stats, tmp, &ar->ppdu_stats_info, list) {
|
|
|
-@@ -6420,6 +6438,117 @@ static void ath12k_mac_op_update_vif_off
|
|
|
+@@ -6424,6 +6442,117 @@ static void ath12k_mac_op_update_vif_off
|
|
|
ath12k_mac_update_vif_offload(arvif);
|
|
|
}
|
|
|
|
|
|
@@ -669,7 +669,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
static int ath12k_mac_vdev_create(struct ath12k *ar, struct ieee80211_vif *vif)
|
|
|
{
|
|
|
struct ath12k_hw *ah = ar->ah;
|
|
|
-@@ -6534,6 +6663,7 @@ static int ath12k_mac_vdev_create(struct
|
|
|
+@@ -6538,6 +6667,7 @@ static int ath12k_mac_vdev_create(struct
|
|
|
arvif->vdev_id, ret);
|
|
|
goto err_peer_del;
|
|
|
}
|
|
|
@@ -677,7 +677,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
break;
|
|
|
case WMI_VDEV_TYPE_STA:
|
|
|
param_id = WMI_STA_PS_PARAM_RX_WAKE_POLICY;
|
|
|
-@@ -6572,6 +6702,13 @@ static int ath12k_mac_vdev_create(struct
|
|
|
+@@ -6576,6 +6706,13 @@ static int ath12k_mac_vdev_create(struct
|
|
|
arvif->vdev_id, ret);
|
|
|
goto err_peer_del;
|
|
|
}
|
|
|
@@ -691,7 +691,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
-@@ -6912,6 +7049,11 @@ static void ath12k_mac_op_remove_interfa
|
|
|
+@@ -6916,6 +7053,11 @@ static void ath12k_mac_op_remove_interfa
|
|
|
ath12k_dbg(ab, ATH12K_DBG_MAC, "mac remove interface (vdev %d)\n",
|
|
|
arvif->vdev_id);
|
|
|
|
|
|
@@ -703,7 +703,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
|
|
|
ret = ath12k_peer_delete(ar, arvif->vdev_id, vif->addr);
|
|
|
if (ret)
|
|
|
-@@ -7752,6 +7894,14 @@ ath12k_mac_op_unassign_vif_chanctx(struc
|
|
|
+@@ -7756,6 +7898,14 @@ ath12k_mac_op_unassign_vif_chanctx(struc
|
|
|
ar->num_started_vdevs == 1 && ar->monitor_vdev_created)
|
|
|
ath12k_mac_monitor_stop(ar);
|
|
|
|
|
|
@@ -718,7 +718,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
mutex_unlock(&ar->conf_mutex);
|
|
|
}
|
|
|
|
|
|
-@@ -8290,6 +8440,14 @@ ath12k_mac_op_reconfig_complete(struct i
|
|
|
+@@ -8294,6 +8444,14 @@ ath12k_mac_op_reconfig_complete(struct i
|
|
|
ath12k_warn(ar->ab, "pdev %d successfully recovered\n",
|
|
|
ar->pdev->pdev_id);
|
|
|
|
|
|
@@ -733,7 +733,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
if (ab->is_reset) {
|
|
|
recovery_count = atomic_inc_return(&ab->recovery_count);
|
|
|
|
|
|
-@@ -9339,6 +9497,9 @@ static void ath12k_mac_setup(struct ath1
|
|
|
+@@ -9344,6 +9502,9 @@ static void ath12k_mac_setup(struct ath1
|
|
|
|
|
|
INIT_WORK(&ar->wmi_mgmt_tx_work, ath12k_mgmt_over_wmi_tx_work);
|
|
|
skb_queue_head_init(&ar->wmi_mgmt_tx_queue);
|
|
|
@@ -888,7 +888,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
#endif
|
|
|
--- a/drivers/net/wireless/ath/ath12k/hw.c
|
|
|
+++ b/drivers/net/wireless/ath/ath12k/hw.c
|
|
|
-@@ -928,6 +928,7 @@ static const struct ath12k_hw_params ath
|
|
|
+@@ -961,6 +961,7 @@ static const struct ath12k_hw_params ath
|
|
|
.iova_mask = 0,
|
|
|
|
|
|
.supports_aspm = false,
|
|
|
@@ -896,7 +896,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
},
|
|
|
{
|
|
|
.name = "wcn7850 hw2.0",
|
|
|
-@@ -1008,6 +1009,7 @@ static const struct ath12k_hw_params ath
|
|
|
+@@ -1041,6 +1042,7 @@ static const struct ath12k_hw_params ath
|
|
|
.iova_mask = ATH12K_PCIE_MAX_PAYLOAD_SIZE - 1,
|
|
|
|
|
|
.supports_aspm = true,
|
|
|
@@ -904,7 +904,7 @@ Acked-by: Jeff Johnson <[email protected]>
|
|
|
},
|
|
|
{
|
|
|
.name = "qcn9274 hw2.0",
|
|
|
-@@ -1084,6 +1086,7 @@ static const struct ath12k_hw_params ath
|
|
|
+@@ -1117,6 +1119,7 @@ static const struct ath12k_hw_params ath
|
|
|
.iova_mask = 0,
|
|
|
|
|
|
.supports_aspm = false,
|