qcacmn: Update missing HE MAC/PHY WMI capabilities
Add HE Mac, PHY , MCS , OP & PPET in peer_assoc_params structure. Add HE PHY & PPET in wmi_host_mac_phy_caps structure. Populate HE params while sending WMI Peer assoc commands.Parse HE Phy & PPET while parsing Mac Phy TLV in Service ready extension event.Add required changes in psoc_service_ready header files. Change-Id: Ia2fc7f54634a7a0c98996e361e38b11b3b74a7a0 CRs-Fixed: 2009118
This commit is contained in:

committed by
qcabuildsw

parent
3abe2eef8a
commit
199b72d9bb
@@ -30,6 +30,7 @@
|
|||||||
*/
|
*/
|
||||||
#define OBJMGR_SERVICE_BM_SIZE ((128 + sizeof(uint32_t) - 1) / sizeof(uint32_t))
|
#define OBJMGR_SERVICE_BM_SIZE ((128 + sizeof(uint32_t) - 1) / sizeof(uint32_t))
|
||||||
#define OBJMGR_HOST_MAX_NUM_SS (8)
|
#define OBJMGR_HOST_MAX_NUM_SS (8)
|
||||||
|
#define OBJMGR_HOST_MAX_PHY_SIZE (3)
|
||||||
#define OBJMGR_MAX_HW_MODE (2)
|
#define OBJMGR_MAX_HW_MODE (2)
|
||||||
#define OBJMGR_MAX_MAC_PHY_CAP (5)
|
#define OBJMGR_MAX_MAC_PHY_CAP (5)
|
||||||
#define OBJMGR_MAX_PHY_REG_CAP (3)
|
#define OBJMGR_MAX_PHY_REG_CAP (3)
|
||||||
@@ -164,6 +165,25 @@ struct wlan_psoc_host_hal_reg_capabilities_ext {
|
|||||||
uint32_t high_5ghz_chan;
|
uint32_t high_5ghz_chan;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_objmgr_host_ppe_threshold - PPE threshold
|
||||||
|
* @numss_m1: NSS - 1
|
||||||
|
* @ru_count: Max RU count
|
||||||
|
* @ppet16_ppet8_ru3_ru0: ppet8 and ppet16 for max num ss
|
||||||
|
*
|
||||||
|
* wlan_objmgr_host_ppe_threshold is derived from wmi_host_ppe_threshold
|
||||||
|
* because of WIN direct attach limitation which blocks WMI data structures and
|
||||||
|
* WMI APIs direct usage in common code. So whenever wmi_host_ppe_threshold
|
||||||
|
* changes wlan_objmgr_host_ppe_threshold also needs to be updated
|
||||||
|
* accordingly.
|
||||||
|
*/
|
||||||
|
struct wlan_objmgr_host_ppe_threshold {
|
||||||
|
uint32_t numss_m1;
|
||||||
|
uint32_t ru_count;
|
||||||
|
uint32_t ppet16_ppet8_ru3_ru0[OBJMGR_HOST_MAX_NUM_SS];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wlan_psoc_host_mac_phy_caps - Phy caps recvd in EXT service
|
* struct wlan_psoc_host_mac_phy_caps - Phy caps recvd in EXT service
|
||||||
* @hw_mode_id: identify a particular set of HW characteristics,
|
* @hw_mode_id: identify a particular set of HW characteristics,
|
||||||
@@ -208,6 +228,10 @@ struct wlan_psoc_host_hal_reg_capabilities_ext {
|
|||||||
* @he_supp_mcs_5G: HE Supported MCS Set field Rx/Tx same
|
* @he_supp_mcs_5G: HE Supported MCS Set field Rx/Tx same
|
||||||
* @tx_chain_mask_5G: Valid Transmit chain mask
|
* @tx_chain_mask_5G: Valid Transmit chain mask
|
||||||
* @rx_chain_mask_5G: Valid Receive chain mask
|
* @rx_chain_mask_5G: Valid Receive chain mask
|
||||||
|
* @he_cap_phy_info_2G: 2G HE capability phy field
|
||||||
|
* @he_cap_phy_info_5G: 5G HE capability phy field
|
||||||
|
* @he_ppet2G: 2G HE PPET info
|
||||||
|
* @he_ppet5G: 5G HE PPET info
|
||||||
*
|
*
|
||||||
* wlan_psoc_host_mac_phy_caps is derived from wmi_host_mac_phy_caps
|
* wlan_psoc_host_mac_phy_caps is derived from wmi_host_mac_phy_caps
|
||||||
* because of WIN direct attach limitation which blocks WMI data structures and
|
* because of WIN direct attach limitation which blocks WMI data structures and
|
||||||
@@ -243,6 +267,10 @@ struct wlan_psoc_host_mac_phy_caps {
|
|||||||
uint32_t he_supp_mcs_5G;
|
uint32_t he_supp_mcs_5G;
|
||||||
uint32_t tx_chain_mask_5G;
|
uint32_t tx_chain_mask_5G;
|
||||||
uint32_t rx_chain_mask_5G;
|
uint32_t rx_chain_mask_5G;
|
||||||
|
uint32_t he_cap_phy_info_2G[OBJMGR_HOST_MAX_PHY_SIZE];
|
||||||
|
uint32_t he_cap_phy_info_5G[OBJMGR_HOST_MAX_PHY_SIZE];
|
||||||
|
struct wlan_objmgr_host_ppe_threshold he_ppet2G;
|
||||||
|
struct wlan_objmgr_host_ppe_threshold he_ppet5G;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -258,23 +286,7 @@ struct wlan_psoc_host_hw_mode_caps {
|
|||||||
uint32_t hw_mode_config_type;
|
uint32_t hw_mode_config_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* struct wlan_objmgr_host_ppe_threshold - PPE threshold
|
|
||||||
* @numss_m1: NSS - 1
|
|
||||||
* @ru_count: Max RU count
|
|
||||||
* @ppet16_ppet8_ru3_ru0: ppet8 and ppet16 for max num ss
|
|
||||||
*
|
|
||||||
* wlan_objmgr_host_ppe_threshold is derived from wmi_host_ppe_threshold
|
|
||||||
* because of WIN direct attach limitation which blocks WMI data structures and
|
|
||||||
* WMI APIs direct usage in common code. So whenever wmi_host_ppe_threshold
|
|
||||||
* changes wlan_objmgr_host_ppe_threshold also needs to be updated
|
|
||||||
* accordingly.
|
|
||||||
*/
|
|
||||||
struct wlan_objmgr_host_ppe_threshold {
|
|
||||||
uint32_t numss_m1;
|
|
||||||
uint32_t ru_count;
|
|
||||||
uint32_t ppet16_ppet8_ru3_ru0[OBJMGR_HOST_MAX_NUM_SS];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wlan_psoc_host_service_ext_param - EXT service base params in event
|
* struct wlan_psoc_host_service_ext_param - EXT service base params in event
|
||||||
|
@@ -940,6 +940,23 @@ typedef struct {
|
|||||||
uint32_t rates[(WMI_MAX_SUPPORTED_RATES / 4) + 1];
|
uint32_t rates[(WMI_MAX_SUPPORTED_RATES / 4) + 1];
|
||||||
} target_rate_set;
|
} target_rate_set;
|
||||||
|
|
||||||
|
|
||||||
|
#define WMI_HOST_MAX_NUM_SS 8
|
||||||
|
#define WMI_MAX_HECAP_PHY_SIZE 3
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wmi_host_ppe_threshold -PPE threshold
|
||||||
|
* @numss_m1: NSS - 1
|
||||||
|
* @ru_count: Max RU count
|
||||||
|
* @ppet16_ppet8_ru3_ru0: ppet8 and ppet16 for max num ss
|
||||||
|
*/
|
||||||
|
struct wmi_host_ppe_threshold {
|
||||||
|
uint32_t numss_m1;
|
||||||
|
uint32_t ru_count;
|
||||||
|
uint32_t ppet16_ppet8_ru3_ru0[WMI_HOST_MAX_NUM_SS];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wmi_host_mac_addr - host mac addr 2 word representation of MAC addr
|
* struct wmi_host_mac_addr - host mac addr 2 word representation of MAC addr
|
||||||
* @mac_addr31to0: upper 4 bytes of MAC address
|
* @mac_addr31to0: upper 4 bytes of MAC address
|
||||||
@@ -996,6 +1013,11 @@ typedef struct {
|
|||||||
* @safe_mode_enabled: Safe enabled for this peer
|
* @safe_mode_enabled: Safe enabled for this peer
|
||||||
* @amsdu_disable: AMSDU disble
|
* @amsdu_disable: AMSDU disble
|
||||||
* @peer_mac: Peer mac address
|
* @peer_mac: Peer mac address
|
||||||
|
* @peer_he_cap_macinfo: Peer HE Cap MAC info
|
||||||
|
* @peer_he_ops: Peer HE operation info
|
||||||
|
* @peer_he_cap_phyinfo: Peer HE Cap PHY info
|
||||||
|
* @peer_he_mcs: Peer HE MCS MAP
|
||||||
|
* @peer_ppet: Peer HE PPET info
|
||||||
*/
|
*/
|
||||||
struct peer_assoc_params {
|
struct peer_assoc_params {
|
||||||
wmi_host_mac_addr peer_macaddr;
|
wmi_host_mac_addr peer_macaddr;
|
||||||
@@ -1046,6 +1068,11 @@ struct peer_assoc_params {
|
|||||||
/* Use common structure */
|
/* Use common structure */
|
||||||
uint8_t peer_mac[IEEE80211_ADDR_LEN];
|
uint8_t peer_mac[IEEE80211_ADDR_LEN];
|
||||||
#endif
|
#endif
|
||||||
|
uint32_t peer_he_cap_macinfo;
|
||||||
|
uint32_t peer_he_ops;
|
||||||
|
uint32_t peer_he_cap_phyinfo[WMI_MAX_HECAP_PHY_SIZE];
|
||||||
|
uint32_t peer_he_mcs;
|
||||||
|
struct wmi_host_ppe_threshold peer_ppet;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -7064,19 +7091,6 @@ struct encrypt_decrypt_req_params {
|
|||||||
uint8_t *data;
|
uint8_t *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* struct wmi_host_ppe_threshold -PPE threshold
|
|
||||||
* @numss_m1: NSS - 1
|
|
||||||
* @ru_count: Max RU count
|
|
||||||
* @ppet16_ppet8_ru3_ru0: ppet8 and ppet16 for max num ss
|
|
||||||
*/
|
|
||||||
#define WMI_HOST_MAX_NUM_SS 8
|
|
||||||
struct wmi_host_ppe_threshold {
|
|
||||||
uint32_t numss_m1;
|
|
||||||
uint32_t ru_count;
|
|
||||||
uint32_t ppet16_ppet8_ru3_ru0[WMI_HOST_MAX_NUM_SS];
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* HW mode config type replicated from FW header
|
* HW mode config type replicated from FW header
|
||||||
* @WMI_HOST_HW_MODE_SINGLE: Only one PHY is active.
|
* @WMI_HOST_HW_MODE_SINGLE: Only one PHY is active.
|
||||||
@@ -7186,6 +7200,10 @@ struct wmi_host_hw_mode_caps {
|
|||||||
* @he_supp_mcs_5G: HE Supported MCS Set field Rx/Tx same
|
* @he_supp_mcs_5G: HE Supported MCS Set field Rx/Tx same
|
||||||
* @tx_chain_mask_5G: Valid Transmit chain mask
|
* @tx_chain_mask_5G: Valid Transmit chain mask
|
||||||
* @rx_chain_mask_5G: Valid Receive chain mask
|
* @rx_chain_mask_5G: Valid Receive chain mask
|
||||||
|
* @he_cap_phy_info_2G: 2G HE capability phy field
|
||||||
|
* @he_cap_phy_info_5G: 5G HE capability phy field
|
||||||
|
* @he_ppet2G: 2G HE PPET info
|
||||||
|
* @he_ppet5G: 5G HE PPET info
|
||||||
*/
|
*/
|
||||||
struct wmi_host_mac_phy_caps {
|
struct wmi_host_mac_phy_caps {
|
||||||
uint32_t hw_mode_id;
|
uint32_t hw_mode_id;
|
||||||
@@ -7215,6 +7233,10 @@ struct wmi_host_mac_phy_caps {
|
|||||||
uint32_t he_supp_mcs_5G;
|
uint32_t he_supp_mcs_5G;
|
||||||
uint32_t tx_chain_mask_5G;
|
uint32_t tx_chain_mask_5G;
|
||||||
uint32_t rx_chain_mask_5G;
|
uint32_t rx_chain_mask_5G;
|
||||||
|
uint32_t he_cap_phy_info_2G[WMI_MAX_HECAP_PHY_SIZE];
|
||||||
|
uint32_t he_cap_phy_info_5G[WMI_MAX_HECAP_PHY_SIZE];
|
||||||
|
struct wmi_host_ppe_threshold he_ppet2G;
|
||||||
|
struct wmi_host_ppe_threshold he_ppet5G;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1802,6 +1802,14 @@ static QDF_STATUS send_peer_assoc_cmd_tlv(wmi_unified_t wmi_handle,
|
|||||||
mcs->tx_max_rate = param->tx_max_rate;
|
mcs->tx_max_rate = param->tx_max_rate;
|
||||||
mcs->tx_mcs_set = param->tx_mcs_set;
|
mcs->tx_mcs_set = param->tx_mcs_set;
|
||||||
}
|
}
|
||||||
|
/* Update 11ax capabilities */
|
||||||
|
cmd->peer_he_cap_info = param->peer_he_cap_macinfo;
|
||||||
|
cmd->peer_he_ops = param->peer_he_ops;
|
||||||
|
cmd->peer_he_mcs = param->peer_he_mcs;
|
||||||
|
qdf_mem_copy(&cmd->peer_he_cap_phy, ¶m->peer_he_cap_phyinfo,
|
||||||
|
sizeof(param->peer_he_cap_phyinfo));
|
||||||
|
qdf_mem_copy(&cmd->peer_ppet, ¶m->peer_ppet,
|
||||||
|
sizeof(param->peer_ppet));
|
||||||
|
|
||||||
WMI_LOGD("%s: vdev_id %d associd %d peer_flags %x rate_caps %x "
|
WMI_LOGD("%s: vdev_id %d associd %d peer_flags %x rate_caps %x "
|
||||||
"peer_caps %x listen_intval %d ht_caps %x max_mpdu %d "
|
"peer_caps %x listen_intval %d ht_caps %x max_mpdu %d "
|
||||||
@@ -13519,6 +13527,16 @@ static QDF_STATUS extract_mac_phy_cap_service_ready_ext_tlv(
|
|||||||
param->he_supp_mcs_5G = mac_phy_caps->he_supp_mcs_5G;
|
param->he_supp_mcs_5G = mac_phy_caps->he_supp_mcs_5G;
|
||||||
param->tx_chain_mask_5G = mac_phy_caps->tx_chain_mask_5G;
|
param->tx_chain_mask_5G = mac_phy_caps->tx_chain_mask_5G;
|
||||||
param->rx_chain_mask_5G = mac_phy_caps->rx_chain_mask_5G;
|
param->rx_chain_mask_5G = mac_phy_caps->rx_chain_mask_5G;
|
||||||
|
qdf_mem_copy(¶m->he_cap_phy_info_2G,
|
||||||
|
&mac_phy_caps->he_cap_phy_info_2G,
|
||||||
|
sizeof(param->he_cap_phy_info_2G));
|
||||||
|
qdf_mem_copy(¶m->he_cap_phy_info_5G,
|
||||||
|
&mac_phy_caps->he_cap_phy_info_5G,
|
||||||
|
sizeof(param->he_cap_phy_info_5G));
|
||||||
|
qdf_mem_copy(¶m->he_ppet2G, &mac_phy_caps->he_ppet2G,
|
||||||
|
sizeof(param->he_ppet2G));
|
||||||
|
qdf_mem_copy(¶m->he_ppet5G, &mac_phy_caps->he_ppet5G,
|
||||||
|
sizeof(param->he_ppet5G));
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user