|
@@ -85,7 +85,7 @@ mlme_fill_freq_in_scan_start_request(struct wlan_objmgr_vdev *vdev,
|
|
enum phy_ch_width associated_ch_width;
|
|
enum phy_ch_width associated_ch_width;
|
|
uint8_t i;
|
|
uint8_t i;
|
|
struct chan_list *scan_chan_list;
|
|
struct chan_list *scan_chan_list;
|
|
- uint16_t first_freq, operation_chan_freq;
|
|
|
|
|
|
+ qdf_freq_t first_freq, operation_chan_freq, sec_2g_freq;
|
|
char *chan_buff = NULL;
|
|
char *chan_buff = NULL;
|
|
uint32_t buff_len, buff_num = 0, chan_count = 0;
|
|
uint32_t buff_len, buff_num = 0, chan_count = 0;
|
|
|
|
|
|
@@ -94,7 +94,8 @@ mlme_fill_freq_in_scan_start_request(struct wlan_objmgr_vdev *vdev,
|
|
return QDF_STATUS_E_FAILURE;
|
|
return QDF_STATUS_E_FAILURE;
|
|
|
|
|
|
operation_chan_freq = wlan_get_operation_chan_freq(vdev);
|
|
operation_chan_freq = wlan_get_operation_chan_freq(vdev);
|
|
- associated_ch_width = mlme_priv->connect_info.ch_width_orig;
|
|
|
|
|
|
+ associated_ch_width =
|
|
|
|
+ mlme_priv->connect_info.chan_info_orig.ch_width_orig;
|
|
if (associated_ch_width == CH_WIDTH_INVALID) {
|
|
if (associated_ch_width == CH_WIDTH_INVALID) {
|
|
mlme_debug("vdev %d : Invalid associated ch width for freq %d",
|
|
mlme_debug("vdev %d : Invalid associated ch width for freq %d",
|
|
req->scan_req.vdev_id, operation_chan_freq);
|
|
req->scan_req.vdev_id, operation_chan_freq);
|
|
@@ -115,6 +116,30 @@ mlme_fill_freq_in_scan_start_request(struct wlan_objmgr_vdev *vdev,
|
|
return QDF_STATUS_SUCCESS;
|
|
return QDF_STATUS_SUCCESS;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (wlan_reg_is_24ghz_ch_freq(operation_chan_freq) &&
|
|
|
|
+ associated_ch_width == CH_WIDTH_40MHZ) {
|
|
|
|
+ sec_2g_freq =
|
|
|
|
+ mlme_priv->connect_info.chan_info_orig.sec_2g_freq;
|
|
|
|
+ if (!sec_2g_freq) {
|
|
|
|
+ mlme_debug("vdev %d : Invalid sec 2g freq for freq: %d",
|
|
|
|
+ req->scan_req.vdev_id, operation_chan_freq);
|
|
|
|
+ return QDF_STATUS_E_FAILURE;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (operation_chan_freq > sec_2g_freq) {
|
|
|
|
+ req->scan_req.chan_list.chan[0].freq = sec_2g_freq;
|
|
|
|
+ req->scan_req.chan_list.chan[1].freq =
|
|
|
|
+ operation_chan_freq;
|
|
|
|
+ } else {
|
|
|
|
+ req->scan_req.chan_list.chan[0].freq =
|
|
|
|
+ operation_chan_freq;
|
|
|
|
+ req->scan_req.chan_list.chan[1].freq = sec_2g_freq;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ req->scan_req.chan_list.num_chan = 2;
|
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
|
+ }
|
|
|
|
+
|
|
range = wlan_reg_get_bonded_chan_entry(operation_chan_freq,
|
|
range = wlan_reg_get_bonded_chan_entry(operation_chan_freq,
|
|
associated_ch_width, 0);
|
|
associated_ch_width, 0);
|
|
if (!range) {
|
|
if (!range) {
|
|
@@ -489,7 +514,8 @@ mlme_fill_freq_in_wide_scan_start_request(struct wlan_objmgr_vdev *vdev,
|
|
if (!mlme_priv)
|
|
if (!mlme_priv)
|
|
return QDF_STATUS_E_FAILURE;
|
|
return QDF_STATUS_E_FAILURE;
|
|
|
|
|
|
- associated_ch_width = mlme_priv->connect_info.ch_width_orig;
|
|
|
|
|
|
+ associated_ch_width =
|
|
|
|
+ mlme_priv->connect_info.chan_info_orig.ch_width_orig;
|
|
if (associated_ch_width == CH_WIDTH_INVALID) {
|
|
if (associated_ch_width == CH_WIDTH_INVALID) {
|
|
mlme_debug("vdev %d :Invalid associated ch_width",
|
|
mlme_debug("vdev %d :Invalid associated ch_width",
|
|
req->scan_req.vdev_id);
|
|
req->scan_req.vdev_id);
|
|
@@ -675,6 +701,22 @@ QDF_STATUS mlme_init_rate_config(struct vdev_mlme_obj *vdev_mlme)
|
|
return QDF_STATUS_SUCCESS;
|
|
return QDF_STATUS_SUCCESS;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+QDF_STATUS mlme_init_connect_chan_info_config(struct vdev_mlme_obj *vdev_mlme)
|
|
|
|
+{
|
|
|
|
+ struct mlme_legacy_priv *mlme_priv;
|
|
|
|
+
|
|
|
|
+ mlme_priv = vdev_mlme->ext_vdev_ptr;
|
|
|
|
+ if (!mlme_priv) {
|
|
|
|
+ mlme_legacy_err("vdev legacy private object is NULL");
|
|
|
|
+ return QDF_STATUS_E_FAILURE;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ mlme_priv->connect_info.chan_info_orig.ch_width_orig = CH_WIDTH_INVALID;
|
|
|
|
+ mlme_priv->connect_info.chan_info_orig.sec_2g_freq = 0;
|
|
|
|
+
|
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
|
+}
|
|
|
|
+
|
|
QDF_STATUS mlme_get_peer_mic_len(struct wlan_objmgr_psoc *psoc, uint8_t pdev_id,
|
|
QDF_STATUS mlme_get_peer_mic_len(struct wlan_objmgr_psoc *psoc, uint8_t pdev_id,
|
|
uint8_t *peer_mac, uint8_t *mic_len,
|
|
uint8_t *peer_mac, uint8_t *mic_len,
|
|
uint8_t *mic_hdr_len)
|
|
uint8_t *mic_hdr_len)
|