qcacld-3.0: Replace CSR API with connection mgr API part 4
Replace the CSR API to get connect info with cnx mgr API. Change-Id: I22f83727e4b2e6f6b7258ef41f8595e789015a58 CRs-Fixed: 2853089
This commit is contained in:

committed by
snandini

parent
68a81ed3f2
commit
8e098a3412
@@ -37,6 +37,11 @@
|
||||
#define mlme_legacy_info(params...) QDF_TRACE_INFO(QDF_MODULE_ID_MLME, params)
|
||||
#define mlme_legacy_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_MLME, params)
|
||||
|
||||
enum size_of_len_field {
|
||||
ONE_BYTE = 1,
|
||||
TWO_BYTE = 2
|
||||
};
|
||||
|
||||
/**
|
||||
* struct wlan_mlme_psoc_ext_obj -MLME ext psoc priv object
|
||||
* @cfg: cfg items
|
||||
@@ -606,6 +611,39 @@ void mlme_get_discon_reason_n_from_ap(struct wlan_objmgr_psoc *psoc,
|
||||
enum QDF_OPMODE wlan_get_opmode_from_vdev_id(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id);
|
||||
|
||||
/**
|
||||
* wlan_mlme_get_ssid_vdev_id() - get ssid
|
||||
* @pdev: pdev object
|
||||
* @vdev_id: vdev id
|
||||
* @ssid: SSID
|
||||
* @ssid_len: Length of SSID
|
||||
*
|
||||
* API to get the SSID of vdev id, it updates the SSID and its length
|
||||
* in @ssid, @ssid_len respectively
|
||||
*
|
||||
* Return: SUCCESS, if update is done
|
||||
* FAILURE, if ssid length is > max ssid len
|
||||
*/
|
||||
QDF_STATUS wlan_mlme_get_ssid_vdev_id(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id,
|
||||
uint8_t *ssid, uint8_t *ssid_len);
|
||||
|
||||
/**
|
||||
* wlan_vdev_get_bss_peer_mac() - get bss peer mac address(BSSID) using vdev id
|
||||
* @pdev: pdev
|
||||
* @vdev_id: vdev_id
|
||||
* @bss_peer_mac: pointer to bss_peer_mac_address
|
||||
*
|
||||
* This API is used to get mac address of bss peer/bssid.
|
||||
*
|
||||
* Context: Any context.
|
||||
*
|
||||
* Return: QDF_STATUS based on overall success
|
||||
*/
|
||||
QDF_STATUS wlan_mlme_get_bssid_vdev_id(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id,
|
||||
struct qdf_mac_addr *bss_peer_mac);
|
||||
|
||||
/**
|
||||
* csr_get_operation_chan_freq() - get operating chan freq of
|
||||
* given vdev
|
||||
@@ -625,6 +663,32 @@ qdf_freq_t wlan_get_operation_chan_freq(struct wlan_objmgr_vdev *vdev);
|
||||
qdf_freq_t wlan_get_operation_chan_freq_vdev_id(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id);
|
||||
|
||||
QDF_STATUS
|
||||
wlan_get_op_chan_freq_info_vdev_id(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id, qdf_freq_t *op_freq,
|
||||
qdf_freq_t *freq_seg_0,
|
||||
enum phy_ch_width *ch_width);
|
||||
|
||||
/**
|
||||
* wlan_strip_ie() - strip requested IE from IE buffer
|
||||
* @addn_ie: Additional IE buffer
|
||||
* @addn_ielen: Length of additional IE
|
||||
* @eid: EID of IE to strip
|
||||
* @size_of_len_field: length of IE length field
|
||||
* @oui: if present matches OUI also
|
||||
* @oui_length: if previous present, this is length of oui
|
||||
* @extracted_ie: if not NULL, copy the stripped IE to this buffer
|
||||
*
|
||||
* This utility function is used to strip of the requested IE if present
|
||||
* in IE buffer.
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS wlan_strip_ie(uint8_t *addn_ie, uint16_t *addn_ielen,
|
||||
uint8_t eid, enum size_of_len_field size_of_len_field,
|
||||
uint8_t *oui, uint8_t oui_length,
|
||||
uint8_t *extracted_ie, uint32_t eid_max_len);
|
||||
|
||||
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||
/**
|
||||
* mlme_get_supplicant_disabled_roaming() - Get supplicant disabled roaming
|
||||
|
@@ -2698,6 +2698,48 @@ enum QDF_OPMODE wlan_get_opmode_from_vdev_id(struct wlan_objmgr_pdev *pdev,
|
||||
return opmode;
|
||||
}
|
||||
|
||||
QDF_STATUS wlan_mlme_get_ssid_vdev_id(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id,
|
||||
uint8_t *ssid, uint8_t *ssid_len)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
QDF_STATUS status;
|
||||
|
||||
if (!pdev)
|
||||
return QDF_STATUS_E_INVAL;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, vdev_id,
|
||||
WLAN_LEGACY_MAC_ID);
|
||||
if (!vdev)
|
||||
return QDF_STATUS_E_INVAL;
|
||||
|
||||
status = wlan_vdev_mlme_get_ssid(vdev, ssid, ssid_len);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
QDF_STATUS wlan_mlme_get_bssid_vdev_id(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id,
|
||||
struct qdf_mac_addr *bss_peer_mac)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
QDF_STATUS status;
|
||||
|
||||
if (!pdev)
|
||||
return QDF_STATUS_E_INVAL;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, vdev_id,
|
||||
WLAN_LEGACY_MAC_ID);
|
||||
if (!vdev)
|
||||
return QDF_STATUS_E_INVAL;
|
||||
|
||||
status = wlan_vdev_get_bss_peer_mac(vdev, bss_peer_mac);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
qdf_freq_t wlan_get_operation_chan_freq(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
qdf_freq_t chan_freq = 0;
|
||||
@@ -2735,6 +2777,118 @@ qdf_freq_t wlan_get_operation_chan_freq_vdev_id(struct wlan_objmgr_pdev *pdev,
|
||||
return chan_freq;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
wlan_get_op_chan_freq_info_vdev_id(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id, qdf_freq_t *op_freq,
|
||||
qdf_freq_t *freq_seg_0,
|
||||
enum phy_ch_width *ch_width)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct wlan_channel *chan;
|
||||
QDF_STATUS status = QDF_STATUS_E_INVAL;
|
||||
|
||||
*op_freq = 0;
|
||||
*freq_seg_0 = 0;
|
||||
*ch_width = 0;
|
||||
|
||||
if (!pdev)
|
||||
return QDF_STATUS_E_INVAL;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, vdev_id,
|
||||
WLAN_LEGACY_MAC_ID);
|
||||
if (!vdev)
|
||||
goto rel_ref;
|
||||
if (wlan_vdev_mlme_is_active(vdev) != QDF_STATUS_SUCCESS)
|
||||
goto rel_ref;
|
||||
chan = wlan_vdev_get_active_channel(vdev);
|
||||
if (!chan)
|
||||
goto rel_ref;
|
||||
|
||||
*op_freq = chan->ch_freq;
|
||||
*freq_seg_0 = chan->ch_cfreq1;
|
||||
*ch_width = chan->ch_width;
|
||||
status = QDF_STATUS_SUCCESS;
|
||||
|
||||
rel_ref:
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
QDF_STATUS wlan_strip_ie(uint8_t *addn_ie, uint16_t *addn_ielen,
|
||||
uint8_t eid, enum size_of_len_field size_of_len_field,
|
||||
uint8_t *oui, uint8_t oui_length,
|
||||
uint8_t *extracted_ie, uint32_t eid_max_len)
|
||||
{
|
||||
uint8_t *tmp_buf = NULL;
|
||||
uint16_t tmp_len = 0;
|
||||
int left = *addn_ielen;
|
||||
uint8_t *ptr = addn_ie;
|
||||
uint8_t elem_id;
|
||||
uint16_t elem_len, ie_len, extracted_ie_len = 0;
|
||||
|
||||
if (!addn_ie) {
|
||||
mlme_debug("NULL addn_ie pointer");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
tmp_buf = qdf_mem_malloc(left);
|
||||
if (!tmp_buf)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
if (extracted_ie)
|
||||
qdf_mem_zero(extracted_ie, eid_max_len + size_of_len_field + 1);
|
||||
|
||||
while (left >= 2) {
|
||||
elem_id = ptr[0];
|
||||
left -= 1;
|
||||
if (size_of_len_field == TWO_BYTE) {
|
||||
elem_len = *((uint16_t *)&ptr[1]);
|
||||
left -= 2;
|
||||
} else {
|
||||
elem_len = ptr[1];
|
||||
left -= 1;
|
||||
}
|
||||
if (elem_len > left) {
|
||||
mlme_err("Invalid IEs eid: %d elem_len: %d left: %d",
|
||||
elem_id, elem_len, left);
|
||||
qdf_mem_free(tmp_buf);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
if (eid != elem_id ||
|
||||
(oui && qdf_mem_cmp(oui,
|
||||
&ptr[size_of_len_field + 1],
|
||||
oui_length))) {
|
||||
qdf_mem_copy(tmp_buf + tmp_len, &ptr[0],
|
||||
elem_len + size_of_len_field + 1);
|
||||
tmp_len += (elem_len + size_of_len_field + 1);
|
||||
} else {
|
||||
/*
|
||||
* eid matched and if provided OUI also matched
|
||||
* take oui IE and store in provided buffer.
|
||||
*/
|
||||
if (extracted_ie) {
|
||||
ie_len = elem_len + size_of_len_field + 1;
|
||||
if (ie_len <= eid_max_len - extracted_ie_len) {
|
||||
qdf_mem_copy(
|
||||
extracted_ie + extracted_ie_len,
|
||||
&ptr[0], ie_len);
|
||||
extracted_ie_len += ie_len;
|
||||
}
|
||||
}
|
||||
}
|
||||
left -= elem_len;
|
||||
ptr += (elem_len + size_of_len_field + 1);
|
||||
}
|
||||
qdf_mem_copy(addn_ie, tmp_buf, tmp_len);
|
||||
|
||||
*addn_ielen = tmp_len;
|
||||
qdf_mem_free(tmp_buf);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||
static
|
||||
const char *mlme_roam_state_to_string(enum roam_offload_state state)
|
||||
|
@@ -1169,7 +1169,8 @@ static void mlme_ext_handler_destroy(struct vdev_mlme_obj *vdev_mlme)
|
||||
mlme_free_sae_auth_retry(vdev_mlme->vdev);
|
||||
/* This is temp ifdef will be removed in near future */
|
||||
#ifndef FEATURE_CM_ENABLE
|
||||
wlan_cm_rso_config_deinit(vdev_mlme->vdev);
|
||||
wlan_cm_rso_config_deinit(vdev_mlme->vdev,
|
||||
&vdev_mlme->ext_vdev_ptr->rso_cfg);
|
||||
#endif
|
||||
qdf_mem_free(vdev_mlme->ext_vdev_ptr->fils_con_info);
|
||||
vdev_mlme->ext_vdev_ptr->fils_con_info = NULL;
|
||||
@@ -1198,7 +1199,8 @@ QDF_STATUS vdevmgr_mlme_ext_hdl_create(struct vdev_mlme_obj *vdev_mlme)
|
||||
vdev_mlme->ext_vdev_ptr->fils_con_info = NULL;
|
||||
/* This is temp ifdef will be removed in near future */
|
||||
#ifndef FEATURE_CM_ENABLE
|
||||
wlan_cm_rso_config_init(vdev_mlme->vdev);
|
||||
wlan_cm_rso_config_init(vdev_mlme->vdev,
|
||||
&vdev_mlme->ext_vdev_ptr->rso_cfg);
|
||||
#endif
|
||||
sme_get_vdev_type_nss(wlan_vdev_mlme_get_opmode(vdev_mlme->vdev),
|
||||
&vdev_mlme->proto.generic.nss_2g,
|
||||
|
Reference in New Issue
Block a user