ath10k: add abstraction layer for peer flags
Abstraction layer for peer flags is added to fix ABI breakage. Signed-off-by: Tamizh chelvam <c_traja@qti.qualcomm.com> Signed-off-by: SenthilKumar Jegadeesan <sjegadee@qti.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
parent
2c9bceced3
commit
3fab30f7e8
|
@ -151,6 +151,7 @@ struct ath10k_wmi {
|
||||||
struct wmi_vdev_param_map *vdev_param;
|
struct wmi_vdev_param_map *vdev_param;
|
||||||
struct wmi_pdev_param_map *pdev_param;
|
struct wmi_pdev_param_map *pdev_param;
|
||||||
const struct wmi_ops *ops;
|
const struct wmi_ops *ops;
|
||||||
|
const struct wmi_peer_flags_map *peer_flags;
|
||||||
|
|
||||||
u32 num_mem_chunks;
|
u32 num_mem_chunks;
|
||||||
u32 rx_decap_mode;
|
u32 rx_decap_mode;
|
||||||
|
|
|
@ -1960,7 +1960,7 @@ static void ath10k_peer_assoc_h_basic(struct ath10k *ar,
|
||||||
ether_addr_copy(arg->addr, sta->addr);
|
ether_addr_copy(arg->addr, sta->addr);
|
||||||
arg->vdev_id = arvif->vdev_id;
|
arg->vdev_id = arvif->vdev_id;
|
||||||
arg->peer_aid = aid;
|
arg->peer_aid = aid;
|
||||||
arg->peer_flags |= WMI_PEER_AUTH;
|
arg->peer_flags |= arvif->ar->wmi.peer_flags->auth;
|
||||||
arg->peer_listen_intval = ath10k_peer_assoc_h_listen_intval(ar, vif);
|
arg->peer_listen_intval = ath10k_peer_assoc_h_listen_intval(ar, vif);
|
||||||
arg->peer_num_spatial_streams = 1;
|
arg->peer_num_spatial_streams = 1;
|
||||||
arg->peer_caps = vif->bss_conf.assoc_capability;
|
arg->peer_caps = vif->bss_conf.assoc_capability;
|
||||||
|
@ -2002,12 +2002,12 @@ static void ath10k_peer_assoc_h_crypto(struct ath10k *ar,
|
||||||
/* FIXME: base on RSN IE/WPA IE is a correct idea? */
|
/* FIXME: base on RSN IE/WPA IE is a correct idea? */
|
||||||
if (rsnie || wpaie) {
|
if (rsnie || wpaie) {
|
||||||
ath10k_dbg(ar, ATH10K_DBG_WMI, "%s: rsn ie found\n", __func__);
|
ath10k_dbg(ar, ATH10K_DBG_WMI, "%s: rsn ie found\n", __func__);
|
||||||
arg->peer_flags |= WMI_PEER_NEED_PTK_4_WAY;
|
arg->peer_flags |= ar->wmi.peer_flags->need_ptk_4_way;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wpaie) {
|
if (wpaie) {
|
||||||
ath10k_dbg(ar, ATH10K_DBG_WMI, "%s: wpa ie found\n", __func__);
|
ath10k_dbg(ar, ATH10K_DBG_WMI, "%s: wpa ie found\n", __func__);
|
||||||
arg->peer_flags |= WMI_PEER_NEED_GTK_2_WAY;
|
arg->peer_flags |= ar->wmi.peer_flags->need_gtk_2_way;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2104,7 +2104,7 @@ static void ath10k_peer_assoc_h_ht(struct ath10k *ar,
|
||||||
ath10k_peer_assoc_h_vht_masked(vht_mcs_mask))
|
ath10k_peer_assoc_h_vht_masked(vht_mcs_mask))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
arg->peer_flags |= WMI_PEER_HT;
|
arg->peer_flags |= ar->wmi.peer_flags->ht;
|
||||||
arg->peer_max_mpdu = (1 << (IEEE80211_HT_MAX_AMPDU_FACTOR +
|
arg->peer_max_mpdu = (1 << (IEEE80211_HT_MAX_AMPDU_FACTOR +
|
||||||
ht_cap->ampdu_factor)) - 1;
|
ht_cap->ampdu_factor)) - 1;
|
||||||
|
|
||||||
|
@ -2115,10 +2115,10 @@ static void ath10k_peer_assoc_h_ht(struct ath10k *ar,
|
||||||
arg->peer_rate_caps |= WMI_RC_HT_FLAG;
|
arg->peer_rate_caps |= WMI_RC_HT_FLAG;
|
||||||
|
|
||||||
if (ht_cap->cap & IEEE80211_HT_CAP_LDPC_CODING)
|
if (ht_cap->cap & IEEE80211_HT_CAP_LDPC_CODING)
|
||||||
arg->peer_flags |= WMI_PEER_LDPC;
|
arg->peer_flags |= ar->wmi.peer_flags->ldbc;
|
||||||
|
|
||||||
if (sta->bandwidth >= IEEE80211_STA_RX_BW_40) {
|
if (sta->bandwidth >= IEEE80211_STA_RX_BW_40) {
|
||||||
arg->peer_flags |= WMI_PEER_40MHZ;
|
arg->peer_flags |= ar->wmi.peer_flags->bw40;
|
||||||
arg->peer_rate_caps |= WMI_RC_CW40_FLAG;
|
arg->peer_rate_caps |= WMI_RC_CW40_FLAG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2132,7 +2132,7 @@ static void ath10k_peer_assoc_h_ht(struct ath10k *ar,
|
||||||
|
|
||||||
if (ht_cap->cap & IEEE80211_HT_CAP_TX_STBC) {
|
if (ht_cap->cap & IEEE80211_HT_CAP_TX_STBC) {
|
||||||
arg->peer_rate_caps |= WMI_RC_TX_STBC_FLAG;
|
arg->peer_rate_caps |= WMI_RC_TX_STBC_FLAG;
|
||||||
arg->peer_flags |= WMI_PEER_STBC;
|
arg->peer_flags |= ar->wmi.peer_flags->stbc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ht_cap->cap & IEEE80211_HT_CAP_RX_STBC) {
|
if (ht_cap->cap & IEEE80211_HT_CAP_RX_STBC) {
|
||||||
|
@ -2140,7 +2140,7 @@ static void ath10k_peer_assoc_h_ht(struct ath10k *ar,
|
||||||
stbc = stbc >> IEEE80211_HT_CAP_RX_STBC_SHIFT;
|
stbc = stbc >> IEEE80211_HT_CAP_RX_STBC_SHIFT;
|
||||||
stbc = stbc << WMI_RC_RX_STBC_FLAG_S;
|
stbc = stbc << WMI_RC_RX_STBC_FLAG_S;
|
||||||
arg->peer_rate_caps |= stbc;
|
arg->peer_rate_caps |= stbc;
|
||||||
arg->peer_flags |= WMI_PEER_STBC;
|
arg->peer_flags |= ar->wmi.peer_flags->stbc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ht_cap->mcs.rx_mask[1] && ht_cap->mcs.rx_mask[2])
|
if (ht_cap->mcs.rx_mask[1] && ht_cap->mcs.rx_mask[2])
|
||||||
|
@ -2321,10 +2321,10 @@ static void ath10k_peer_assoc_h_vht(struct ath10k *ar,
|
||||||
if (ath10k_peer_assoc_h_vht_masked(vht_mcs_mask))
|
if (ath10k_peer_assoc_h_vht_masked(vht_mcs_mask))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
arg->peer_flags |= WMI_PEER_VHT;
|
arg->peer_flags |= ar->wmi.peer_flags->vht;
|
||||||
|
|
||||||
if (def.chan->band == IEEE80211_BAND_2GHZ)
|
if (def.chan->band == IEEE80211_BAND_2GHZ)
|
||||||
arg->peer_flags |= WMI_PEER_VHT_2G;
|
arg->peer_flags |= ar->wmi.peer_flags->vht_2g;
|
||||||
|
|
||||||
arg->peer_vht_caps = vht_cap->cap;
|
arg->peer_vht_caps = vht_cap->cap;
|
||||||
|
|
||||||
|
@ -2341,7 +2341,7 @@ static void ath10k_peer_assoc_h_vht(struct ath10k *ar,
|
||||||
ampdu_factor)) - 1);
|
ampdu_factor)) - 1);
|
||||||
|
|
||||||
if (sta->bandwidth == IEEE80211_STA_RX_BW_80)
|
if (sta->bandwidth == IEEE80211_STA_RX_BW_80)
|
||||||
arg->peer_flags |= WMI_PEER_80MHZ;
|
arg->peer_flags |= ar->wmi.peer_flags->bw80;
|
||||||
|
|
||||||
arg->peer_vht_rates.rx_max_rate =
|
arg->peer_vht_rates.rx_max_rate =
|
||||||
__le16_to_cpu(vht_cap->vht_mcs.rx_highest);
|
__le16_to_cpu(vht_cap->vht_mcs.rx_highest);
|
||||||
|
@ -2366,27 +2366,28 @@ static void ath10k_peer_assoc_h_qos(struct ath10k *ar,
|
||||||
switch (arvif->vdev_type) {
|
switch (arvif->vdev_type) {
|
||||||
case WMI_VDEV_TYPE_AP:
|
case WMI_VDEV_TYPE_AP:
|
||||||
if (sta->wme)
|
if (sta->wme)
|
||||||
arg->peer_flags |= WMI_PEER_QOS;
|
arg->peer_flags |= arvif->ar->wmi.peer_flags->qos;
|
||||||
|
|
||||||
if (sta->wme && sta->uapsd_queues) {
|
if (sta->wme && sta->uapsd_queues) {
|
||||||
arg->peer_flags |= WMI_PEER_APSD;
|
arg->peer_flags |= arvif->ar->wmi.peer_flags->apsd;
|
||||||
arg->peer_rate_caps |= WMI_RC_UAPSD_FLAG;
|
arg->peer_rate_caps |= WMI_RC_UAPSD_FLAG;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WMI_VDEV_TYPE_STA:
|
case WMI_VDEV_TYPE_STA:
|
||||||
if (vif->bss_conf.qos)
|
if (vif->bss_conf.qos)
|
||||||
arg->peer_flags |= WMI_PEER_QOS;
|
arg->peer_flags |= arvif->ar->wmi.peer_flags->qos;
|
||||||
break;
|
break;
|
||||||
case WMI_VDEV_TYPE_IBSS:
|
case WMI_VDEV_TYPE_IBSS:
|
||||||
if (sta->wme)
|
if (sta->wme)
|
||||||
arg->peer_flags |= WMI_PEER_QOS;
|
arg->peer_flags |= arvif->ar->wmi.peer_flags->qos;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ath10k_dbg(ar, ATH10K_DBG_MAC, "mac peer %pM qos %d\n",
|
ath10k_dbg(ar, ATH10K_DBG_MAC, "mac peer %pM qos %d\n",
|
||||||
sta->addr, !!(arg->peer_flags & WMI_PEER_QOS));
|
sta->addr, !!(arg->peer_flags &
|
||||||
|
arvif->ar->wmi.peer_flags->qos));
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ath10k_mac_sta_has_ofdm_only(struct ieee80211_sta *sta)
|
static bool ath10k_mac_sta_has_ofdm_only(struct ieee80211_sta *sta)
|
||||||
|
|
|
@ -3485,6 +3485,24 @@ static const struct wmi_ops wmi_tlv_ops = {
|
||||||
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
|
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
|
||||||
|
.auth = WMI_TLV_PEER_AUTH,
|
||||||
|
.qos = WMI_TLV_PEER_QOS,
|
||||||
|
.need_ptk_4_way = WMI_TLV_PEER_NEED_PTK_4_WAY,
|
||||||
|
.need_gtk_2_way = WMI_TLV_PEER_NEED_GTK_2_WAY,
|
||||||
|
.apsd = WMI_TLV_PEER_APSD,
|
||||||
|
.ht = WMI_TLV_PEER_HT,
|
||||||
|
.bw40 = WMI_TLV_PEER_40MHZ,
|
||||||
|
.stbc = WMI_TLV_PEER_STBC,
|
||||||
|
.ldbc = WMI_TLV_PEER_LDPC,
|
||||||
|
.dyn_mimops = WMI_TLV_PEER_DYN_MIMOPS,
|
||||||
|
.static_mimops = WMI_TLV_PEER_STATIC_MIMOPS,
|
||||||
|
.spatial_mux = WMI_TLV_PEER_SPATIAL_MUX,
|
||||||
|
.vht = WMI_TLV_PEER_VHT,
|
||||||
|
.bw80 = WMI_TLV_PEER_80MHZ,
|
||||||
|
.pmf = WMI_TLV_PEER_PMF,
|
||||||
|
};
|
||||||
|
|
||||||
/************/
|
/************/
|
||||||
/* TLV init */
|
/* TLV init */
|
||||||
/************/
|
/************/
|
||||||
|
@ -3495,4 +3513,5 @@ void ath10k_wmi_tlv_attach(struct ath10k *ar)
|
||||||
ar->wmi.vdev_param = &wmi_tlv_vdev_param_map;
|
ar->wmi.vdev_param = &wmi_tlv_vdev_param_map;
|
||||||
ar->wmi.pdev_param = &wmi_tlv_pdev_param_map;
|
ar->wmi.pdev_param = &wmi_tlv_pdev_param_map;
|
||||||
ar->wmi.ops = &wmi_tlv_ops;
|
ar->wmi.ops = &wmi_tlv_ops;
|
||||||
|
ar->wmi.peer_flags = &wmi_tlv_peer_flags_map;
|
||||||
}
|
}
|
||||||
|
|
|
@ -527,6 +527,24 @@ enum wmi_tlv_vdev_param {
|
||||||
WMI_TLV_VDEV_PARAM_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_ENABLE,
|
WMI_TLV_VDEV_PARAM_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_ENABLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum wmi_tlv_peer_flags {
|
||||||
|
WMI_TLV_PEER_AUTH = 0x00000001,
|
||||||
|
WMI_TLV_PEER_QOS = 0x00000002,
|
||||||
|
WMI_TLV_PEER_NEED_PTK_4_WAY = 0x00000004,
|
||||||
|
WMI_TLV_PEER_NEED_GTK_2_WAY = 0x00000010,
|
||||||
|
WMI_TLV_PEER_APSD = 0x00000800,
|
||||||
|
WMI_TLV_PEER_HT = 0x00001000,
|
||||||
|
WMI_TLV_PEER_40MHZ = 0x00002000,
|
||||||
|
WMI_TLV_PEER_STBC = 0x00008000,
|
||||||
|
WMI_TLV_PEER_LDPC = 0x00010000,
|
||||||
|
WMI_TLV_PEER_DYN_MIMOPS = 0x00020000,
|
||||||
|
WMI_TLV_PEER_STATIC_MIMOPS = 0x00040000,
|
||||||
|
WMI_TLV_PEER_SPATIAL_MUX = 0x00200000,
|
||||||
|
WMI_TLV_PEER_VHT = 0x02000000,
|
||||||
|
WMI_TLV_PEER_80MHZ = 0x04000000,
|
||||||
|
WMI_TLV_PEER_PMF = 0x08000000,
|
||||||
|
};
|
||||||
|
|
||||||
enum wmi_tlv_tag {
|
enum wmi_tlv_tag {
|
||||||
WMI_TLV_TAG_LAST_RESERVED = 15,
|
WMI_TLV_TAG_LAST_RESERVED = 15,
|
||||||
|
|
||||||
|
|
|
@ -1546,6 +1546,61 @@ static struct wmi_pdev_param_map wmi_10_4_pdev_param_map = {
|
||||||
.arp_dstaddr = WMI_10_4_PDEV_PARAM_ARP_DSTADDR,
|
.arp_dstaddr = WMI_10_4_PDEV_PARAM_ARP_DSTADDR,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct wmi_peer_flags_map wmi_peer_flags_map = {
|
||||||
|
.auth = WMI_PEER_AUTH,
|
||||||
|
.qos = WMI_PEER_QOS,
|
||||||
|
.need_ptk_4_way = WMI_PEER_NEED_PTK_4_WAY,
|
||||||
|
.need_gtk_2_way = WMI_PEER_NEED_GTK_2_WAY,
|
||||||
|
.apsd = WMI_PEER_APSD,
|
||||||
|
.ht = WMI_PEER_HT,
|
||||||
|
.bw40 = WMI_PEER_40MHZ,
|
||||||
|
.stbc = WMI_PEER_STBC,
|
||||||
|
.ldbc = WMI_PEER_LDPC,
|
||||||
|
.dyn_mimops = WMI_PEER_DYN_MIMOPS,
|
||||||
|
.static_mimops = WMI_PEER_STATIC_MIMOPS,
|
||||||
|
.spatial_mux = WMI_PEER_SPATIAL_MUX,
|
||||||
|
.vht = WMI_PEER_VHT,
|
||||||
|
.bw80 = WMI_PEER_80MHZ,
|
||||||
|
.vht_2g = WMI_PEER_VHT_2G,
|
||||||
|
.pmf = WMI_PEER_PMF,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct wmi_peer_flags_map wmi_10x_peer_flags_map = {
|
||||||
|
.auth = WMI_10X_PEER_AUTH,
|
||||||
|
.qos = WMI_10X_PEER_QOS,
|
||||||
|
.need_ptk_4_way = WMI_10X_PEER_NEED_PTK_4_WAY,
|
||||||
|
.need_gtk_2_way = WMI_10X_PEER_NEED_GTK_2_WAY,
|
||||||
|
.apsd = WMI_10X_PEER_APSD,
|
||||||
|
.ht = WMI_10X_PEER_HT,
|
||||||
|
.bw40 = WMI_10X_PEER_40MHZ,
|
||||||
|
.stbc = WMI_10X_PEER_STBC,
|
||||||
|
.ldbc = WMI_10X_PEER_LDPC,
|
||||||
|
.dyn_mimops = WMI_10X_PEER_DYN_MIMOPS,
|
||||||
|
.static_mimops = WMI_10X_PEER_STATIC_MIMOPS,
|
||||||
|
.spatial_mux = WMI_10X_PEER_SPATIAL_MUX,
|
||||||
|
.vht = WMI_10X_PEER_VHT,
|
||||||
|
.bw80 = WMI_10X_PEER_80MHZ,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct wmi_peer_flags_map wmi_10_2_peer_flags_map = {
|
||||||
|
.auth = WMI_10_2_PEER_AUTH,
|
||||||
|
.qos = WMI_10_2_PEER_QOS,
|
||||||
|
.need_ptk_4_way = WMI_10_2_PEER_NEED_PTK_4_WAY,
|
||||||
|
.need_gtk_2_way = WMI_10_2_PEER_NEED_GTK_2_WAY,
|
||||||
|
.apsd = WMI_10_2_PEER_APSD,
|
||||||
|
.ht = WMI_10_2_PEER_HT,
|
||||||
|
.bw40 = WMI_10_2_PEER_40MHZ,
|
||||||
|
.stbc = WMI_10_2_PEER_STBC,
|
||||||
|
.ldbc = WMI_10_2_PEER_LDPC,
|
||||||
|
.dyn_mimops = WMI_10_2_PEER_DYN_MIMOPS,
|
||||||
|
.static_mimops = WMI_10_2_PEER_STATIC_MIMOPS,
|
||||||
|
.spatial_mux = WMI_10_2_PEER_SPATIAL_MUX,
|
||||||
|
.vht = WMI_10_2_PEER_VHT,
|
||||||
|
.bw80 = WMI_10_2_PEER_80MHZ,
|
||||||
|
.vht_2g = WMI_10_2_PEER_VHT_2G,
|
||||||
|
.pmf = WMI_10_2_PEER_PMF,
|
||||||
|
};
|
||||||
|
|
||||||
void ath10k_wmi_put_wmi_channel(struct wmi_channel *ch,
|
void ath10k_wmi_put_wmi_channel(struct wmi_channel *ch,
|
||||||
const struct wmi_channel_arg *arg)
|
const struct wmi_channel_arg *arg)
|
||||||
{
|
{
|
||||||
|
@ -7554,30 +7609,35 @@ int ath10k_wmi_attach(struct ath10k *ar)
|
||||||
ar->wmi.cmd = &wmi_10_4_cmd_map;
|
ar->wmi.cmd = &wmi_10_4_cmd_map;
|
||||||
ar->wmi.vdev_param = &wmi_10_4_vdev_param_map;
|
ar->wmi.vdev_param = &wmi_10_4_vdev_param_map;
|
||||||
ar->wmi.pdev_param = &wmi_10_4_pdev_param_map;
|
ar->wmi.pdev_param = &wmi_10_4_pdev_param_map;
|
||||||
|
ar->wmi.peer_flags = &wmi_10_2_peer_flags_map;
|
||||||
break;
|
break;
|
||||||
case ATH10K_FW_WMI_OP_VERSION_10_2_4:
|
case ATH10K_FW_WMI_OP_VERSION_10_2_4:
|
||||||
ar->wmi.cmd = &wmi_10_2_4_cmd_map;
|
ar->wmi.cmd = &wmi_10_2_4_cmd_map;
|
||||||
ar->wmi.ops = &wmi_10_2_4_ops;
|
ar->wmi.ops = &wmi_10_2_4_ops;
|
||||||
ar->wmi.vdev_param = &wmi_10_2_4_vdev_param_map;
|
ar->wmi.vdev_param = &wmi_10_2_4_vdev_param_map;
|
||||||
ar->wmi.pdev_param = &wmi_10_2_4_pdev_param_map;
|
ar->wmi.pdev_param = &wmi_10_2_4_pdev_param_map;
|
||||||
|
ar->wmi.peer_flags = &wmi_10_2_peer_flags_map;
|
||||||
break;
|
break;
|
||||||
case ATH10K_FW_WMI_OP_VERSION_10_2:
|
case ATH10K_FW_WMI_OP_VERSION_10_2:
|
||||||
ar->wmi.cmd = &wmi_10_2_cmd_map;
|
ar->wmi.cmd = &wmi_10_2_cmd_map;
|
||||||
ar->wmi.ops = &wmi_10_2_ops;
|
ar->wmi.ops = &wmi_10_2_ops;
|
||||||
ar->wmi.vdev_param = &wmi_10x_vdev_param_map;
|
ar->wmi.vdev_param = &wmi_10x_vdev_param_map;
|
||||||
ar->wmi.pdev_param = &wmi_10x_pdev_param_map;
|
ar->wmi.pdev_param = &wmi_10x_pdev_param_map;
|
||||||
|
ar->wmi.peer_flags = &wmi_10_2_peer_flags_map;
|
||||||
break;
|
break;
|
||||||
case ATH10K_FW_WMI_OP_VERSION_10_1:
|
case ATH10K_FW_WMI_OP_VERSION_10_1:
|
||||||
ar->wmi.cmd = &wmi_10x_cmd_map;
|
ar->wmi.cmd = &wmi_10x_cmd_map;
|
||||||
ar->wmi.ops = &wmi_10_1_ops;
|
ar->wmi.ops = &wmi_10_1_ops;
|
||||||
ar->wmi.vdev_param = &wmi_10x_vdev_param_map;
|
ar->wmi.vdev_param = &wmi_10x_vdev_param_map;
|
||||||
ar->wmi.pdev_param = &wmi_10x_pdev_param_map;
|
ar->wmi.pdev_param = &wmi_10x_pdev_param_map;
|
||||||
|
ar->wmi.peer_flags = &wmi_10x_peer_flags_map;
|
||||||
break;
|
break;
|
||||||
case ATH10K_FW_WMI_OP_VERSION_MAIN:
|
case ATH10K_FW_WMI_OP_VERSION_MAIN:
|
||||||
ar->wmi.cmd = &wmi_cmd_map;
|
ar->wmi.cmd = &wmi_cmd_map;
|
||||||
ar->wmi.ops = &wmi_ops;
|
ar->wmi.ops = &wmi_ops;
|
||||||
ar->wmi.vdev_param = &wmi_vdev_param_map;
|
ar->wmi.vdev_param = &wmi_vdev_param_map;
|
||||||
ar->wmi.pdev_param = &wmi_pdev_param_map;
|
ar->wmi.pdev_param = &wmi_pdev_param_map;
|
||||||
|
ar->wmi.peer_flags = &wmi_peer_flags_map;
|
||||||
break;
|
break;
|
||||||
case ATH10K_FW_WMI_OP_VERSION_TLV:
|
case ATH10K_FW_WMI_OP_VERSION_TLV:
|
||||||
ath10k_wmi_tlv_attach(ar);
|
ath10k_wmi_tlv_attach(ar);
|
||||||
|
|
|
@ -5641,21 +5641,79 @@ struct wmi_peer_set_q_empty_callback_cmd {
|
||||||
__le32 callback_enable;
|
__le32 callback_enable;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
#define WMI_PEER_AUTH 0x00000001
|
struct wmi_peer_flags_map {
|
||||||
#define WMI_PEER_QOS 0x00000002
|
u32 auth;
|
||||||
#define WMI_PEER_NEED_PTK_4_WAY 0x00000004
|
u32 qos;
|
||||||
#define WMI_PEER_NEED_GTK_2_WAY 0x00000010
|
u32 need_ptk_4_way;
|
||||||
#define WMI_PEER_APSD 0x00000800
|
u32 need_gtk_2_way;
|
||||||
#define WMI_PEER_HT 0x00001000
|
u32 apsd;
|
||||||
#define WMI_PEER_40MHZ 0x00002000
|
u32 ht;
|
||||||
#define WMI_PEER_STBC 0x00008000
|
u32 bw40;
|
||||||
#define WMI_PEER_LDPC 0x00010000
|
u32 stbc;
|
||||||
#define WMI_PEER_DYN_MIMOPS 0x00020000
|
u32 ldbc;
|
||||||
#define WMI_PEER_STATIC_MIMOPS 0x00040000
|
u32 dyn_mimops;
|
||||||
#define WMI_PEER_SPATIAL_MUX 0x00200000
|
u32 static_mimops;
|
||||||
#define WMI_PEER_VHT 0x02000000
|
u32 spatial_mux;
|
||||||
#define WMI_PEER_80MHZ 0x04000000
|
u32 vht;
|
||||||
#define WMI_PEER_VHT_2G 0x08000000
|
u32 bw80;
|
||||||
|
u32 vht_2g;
|
||||||
|
u32 pmf;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum wmi_peer_flags {
|
||||||
|
WMI_PEER_AUTH = 0x00000001,
|
||||||
|
WMI_PEER_QOS = 0x00000002,
|
||||||
|
WMI_PEER_NEED_PTK_4_WAY = 0x00000004,
|
||||||
|
WMI_PEER_NEED_GTK_2_WAY = 0x00000010,
|
||||||
|
WMI_PEER_APSD = 0x00000800,
|
||||||
|
WMI_PEER_HT = 0x00001000,
|
||||||
|
WMI_PEER_40MHZ = 0x00002000,
|
||||||
|
WMI_PEER_STBC = 0x00008000,
|
||||||
|
WMI_PEER_LDPC = 0x00010000,
|
||||||
|
WMI_PEER_DYN_MIMOPS = 0x00020000,
|
||||||
|
WMI_PEER_STATIC_MIMOPS = 0x00040000,
|
||||||
|
WMI_PEER_SPATIAL_MUX = 0x00200000,
|
||||||
|
WMI_PEER_VHT = 0x02000000,
|
||||||
|
WMI_PEER_80MHZ = 0x04000000,
|
||||||
|
WMI_PEER_VHT_2G = 0x08000000,
|
||||||
|
WMI_PEER_PMF = 0x10000000,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum wmi_10x_peer_flags {
|
||||||
|
WMI_10X_PEER_AUTH = 0x00000001,
|
||||||
|
WMI_10X_PEER_QOS = 0x00000002,
|
||||||
|
WMI_10X_PEER_NEED_PTK_4_WAY = 0x00000004,
|
||||||
|
WMI_10X_PEER_NEED_GTK_2_WAY = 0x00000010,
|
||||||
|
WMI_10X_PEER_APSD = 0x00000800,
|
||||||
|
WMI_10X_PEER_HT = 0x00001000,
|
||||||
|
WMI_10X_PEER_40MHZ = 0x00002000,
|
||||||
|
WMI_10X_PEER_STBC = 0x00008000,
|
||||||
|
WMI_10X_PEER_LDPC = 0x00010000,
|
||||||
|
WMI_10X_PEER_DYN_MIMOPS = 0x00020000,
|
||||||
|
WMI_10X_PEER_STATIC_MIMOPS = 0x00040000,
|
||||||
|
WMI_10X_PEER_SPATIAL_MUX = 0x00200000,
|
||||||
|
WMI_10X_PEER_VHT = 0x02000000,
|
||||||
|
WMI_10X_PEER_80MHZ = 0x04000000,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum wmi_10_2_peer_flags {
|
||||||
|
WMI_10_2_PEER_AUTH = 0x00000001,
|
||||||
|
WMI_10_2_PEER_QOS = 0x00000002,
|
||||||
|
WMI_10_2_PEER_NEED_PTK_4_WAY = 0x00000004,
|
||||||
|
WMI_10_2_PEER_NEED_GTK_2_WAY = 0x00000010,
|
||||||
|
WMI_10_2_PEER_APSD = 0x00000800,
|
||||||
|
WMI_10_2_PEER_HT = 0x00001000,
|
||||||
|
WMI_10_2_PEER_40MHZ = 0x00002000,
|
||||||
|
WMI_10_2_PEER_STBC = 0x00008000,
|
||||||
|
WMI_10_2_PEER_LDPC = 0x00010000,
|
||||||
|
WMI_10_2_PEER_DYN_MIMOPS = 0x00020000,
|
||||||
|
WMI_10_2_PEER_STATIC_MIMOPS = 0x00040000,
|
||||||
|
WMI_10_2_PEER_SPATIAL_MUX = 0x00200000,
|
||||||
|
WMI_10_2_PEER_VHT = 0x02000000,
|
||||||
|
WMI_10_2_PEER_80MHZ = 0x04000000,
|
||||||
|
WMI_10_2_PEER_VHT_2G = 0x08000000,
|
||||||
|
WMI_10_2_PEER_PMF = 0x10000000,
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Peer rate capabilities.
|
* Peer rate capabilities.
|
||||||
|
|
Loading…
Reference in New Issue