Browse Source

Merge "qcacld-3.0: Process rx_mgmt_pkt based on frequency" into wlan-cld3.driver.lnx.2.0

CNSS_WLAN Service 5 years ago
parent
commit
7ff488ca01

+ 4 - 4
components/p2p/core/src/wlan_p2p_off_chan_tx.c

@@ -3015,10 +3015,10 @@ QDF_STATUS p2p_process_rx_mgmt(
 		return QDF_STATUS_E_INVAL;
 	}
 
-	p2p_debug("soc:%pK, frame_len:%d, rx_chan:%d, vdev_id:%d, frm_type:%d, rx_rssi:%d, buf:%pK",
-		p2p_soc_obj->soc, rx_mgmt->frame_len,
-		rx_mgmt->rx_chan, rx_mgmt->vdev_id, rx_mgmt->frm_type,
-		rx_mgmt->rx_rssi, rx_mgmt->buf);
+	p2p_debug("soc:%pK, frame_len:%d, rx_freq:%d, vdev_id:%d, frm_type:%d, rx_rssi:%d, buf:%pK",
+		  p2p_soc_obj->soc, rx_mgmt->frame_len,
+		  rx_mgmt->rx_freq, rx_mgmt->vdev_id, rx_mgmt->frm_type,
+		  rx_mgmt->rx_rssi, rx_mgmt->buf);
 
 	if (rx_mgmt->frm_type == MGMT_ACTION_VENDOR_SPECIFIC) {
 		p2p_get_frame_info(rx_mgmt->buf, rx_mgmt->frame_len,

+ 2 - 2
components/p2p/dispatcher/inc/wlan_p2p_public_struct.h

@@ -103,7 +103,7 @@ struct p2p_event {
 /**
  * struct p2p_rx_mgmt_frame - rx mgmt frame structure
  * @frame_len:   Frame length
- * @rx_chan:     RX channel
+ * @rx_freq:     RX Frequency
  * @vdev_id:     Vdev id
  * @frm_type:    Frame type
  * @rx_rssi:     RX rssi
@@ -111,7 +111,7 @@ struct p2p_event {
  */
 struct p2p_rx_mgmt_frame {
 	uint32_t frame_len;
-	uint32_t rx_chan;
+	uint32_t rx_freq;
 	uint32_t vdev_id;
 	uint32_t frm_type;
 	uint32_t rx_rssi;

+ 1 - 1
components/p2p/dispatcher/src/wlan_p2p_tgt_api.c

@@ -349,7 +349,7 @@ QDF_STATUS tgt_p2p_mgmt_frame_rx_cb(struct wlan_objmgr_psoc *psoc,
 
 	pdata = (uint8_t *)qdf_nbuf_data(buf);
 	rx_mgmt->frame_len = mgmt_rx_params->buf_len;
-	rx_mgmt->rx_chan = mgmt_rx_params->channel;
+	rx_mgmt->rx_freq = mgmt_rx_params->chan_freq;
 	rx_mgmt->vdev_id = vdev_id;
 	rx_mgmt->frm_type = frm_type;
 	rx_mgmt->rx_rssi = mgmt_rx_params->snr +

+ 4 - 4
components/tdls/core/src/wlan_tdls_mgmt.c

@@ -104,10 +104,10 @@ static QDF_STATUS tdls_process_rx_mgmt(
 		return QDF_STATUS_E_INVAL;
 	}
 
-	tdls_debug("soc:%pK, frame_len:%d, rx_chan:%d, vdev_id:%d, frm_type:%d, rx_rssi:%d, buf:%pK",
-		tdls_soc_obj->soc, rx_mgmt->frame_len,
-		rx_mgmt->rx_chan, rx_mgmt->vdev_id, rx_mgmt->frm_type,
-		rx_mgmt->rx_rssi, rx_mgmt->buf);
+	tdls_debug("soc:%pK, frame_len:%d, rx_freq:%d, vdev_id:%d, frm_type:%d, rx_rssi:%d, buf:%pK",
+		   tdls_soc_obj->soc, rx_mgmt->frame_len,
+		   rx_mgmt->rx_freq, rx_mgmt->vdev_id, rx_mgmt->frm_type,
+		   rx_mgmt->rx_rssi, rx_mgmt->buf);
 
 	if (rx_mgmt->buf[TDLS_PUBLIC_ACTION_FRAME_OFFSET + 1] ==
 						TDLS_PUBLIC_ACTION_DISC_RESP) {

+ 2 - 2
components/tdls/dispatcher/inc/wlan_tdls_public_structs.h

@@ -545,7 +545,7 @@ struct tdls_tx_cnf {
 /**
  * struct tdls_rx_mgmt_frame - rx mgmt frame structure
  * @frame_len: frame length
- * @rx_chan: rx channel
+ * @rx_freq: rx freq
  * @vdev_id: vdev id
  * @frm_type: frame type
  * @rx_rssi: rx rssi
@@ -553,7 +553,7 @@ struct tdls_tx_cnf {
  */
 struct tdls_rx_mgmt_frame {
 	uint32_t frame_len;
-	uint32_t rx_chan;
+	uint32_t rx_freq;
 	uint32_t vdev_id;
 	uint32_t frm_type;
 	uint32_t rx_rssi;

+ 1 - 1
components/tdls/dispatcher/src/wlan_tdls_tgt_api.c

@@ -293,7 +293,7 @@ QDF_STATUS tgt_tdls_mgmt_frame_process_rx_cb(
 
 	pdata = (uint8_t *)qdf_nbuf_data(buf);
 	rx_mgmt->frame_len = mgmt_rx_params->buf_len;
-	rx_mgmt->rx_chan = mgmt_rx_params->channel;
+	rx_mgmt->rx_freq = mgmt_rx_params->chan_freq;
 	rx_mgmt->vdev_id = vdev_id;
 	rx_mgmt->frm_type = frm_type;
 	rx_mgmt->rx_rssi = mgmt_rx_params->rssi;

+ 2 - 2
core/cds/src/i_cds_packet.h

@@ -37,7 +37,7 @@
  * Rx Packet Struct
  * Buffer for the packet received from WMA has pointers to 802.11
  * frame fields and additional information based on the type of frame.
- * @channel: Channel number
+ * @frequency: Frequency
  * @snr: Signal to noise ratio
  * @rssi: Received signal strength indicator, normalized to -96 dBm as
  *        normal noise floor by adding -96 to snr. All the configured
@@ -57,7 +57,7 @@
  * @rssi_raw: rssi based on actual noise floor in hardware.
  */
 typedef struct {
-	uint8_t channel;
+	uint32_t frequency;
 	uint8_t snr;
 	uint32_t rssi;
 	uint32_t timestamp;

+ 2 - 2
core/hdd/inc/wlan_hdd_p2p.h

@@ -66,13 +66,13 @@ int hdd_set_p2p_noa(struct net_device *dev, uint8_t *command);
  * @frm_len: frame length
  * @pb_frames: frame bytes
  * @frame_type: frame type
- * @rx_chan: channel on which frame was received
+ * @rx_freq: frequency on which frame was received
  * @rx_rssi: rssi
  * @rx_flags: rx flags of the frame
  */
 void hdd_indicate_mgmt_frame_to_user(struct hdd_adapter *adapter,
 				     uint32_t frm_len, uint8_t *pb_frames,
-				     uint8_t frame_type, uint32_t rx_chan,
+				     uint8_t frame_type, uint32_t rx_freq,
 				     int8_t rx_rssi,
 				     enum rxmgmt_flags rx_flags);
 

+ 2 - 2
core/hdd/src/wlan_hdd_main.c

@@ -9563,7 +9563,7 @@ void hdd_indicate_mgmt_frame(tSirSmeMgmtFrameInd *frame_ind)
 						frame_ind->frame_len,
 						frame_ind->frameBuf,
 						frame_ind->frameType,
-						frame_ind->rxChan,
+						frame_ind->rx_freq,
 						frame_ind->rxRssi,
 						frame_ind->rx_flags);
 			}
@@ -9580,7 +9580,7 @@ void hdd_indicate_mgmt_frame(tSirSmeMgmtFrameInd *frame_ind)
 						frame_ind->frame_len,
 						frame_ind->frameBuf,
 						frame_ind->frameType,
-						frame_ind->rxChan,
+						frame_ind->rx_freq,
 						frame_ind->rxRssi,
 						frame_ind->rx_flags);
 }

+ 10 - 17
core/hdd/src/wlan_hdd_p2p.c

@@ -981,18 +981,17 @@ wlan_hdd_cfg80211_convert_rxmgmt_flags(enum rxmgmt_flags flag,
 static void
 __hdd_indicate_mgmt_frame_to_user(struct hdd_adapter *adapter,
 				  uint32_t frm_len, uint8_t *pb_frames,
-				  uint8_t frame_type, uint32_t rx_chan,
+				  uint8_t frame_type, uint32_t rx_freq,
 				  int8_t rx_rssi, enum rxmgmt_flags rx_flags)
 {
-	uint16_t freq;
 	uint8_t type = 0;
 	uint8_t sub_type = 0;
 	struct hdd_context *hdd_ctx;
 	uint8_t *dest_addr;
 	enum nl80211_rxmgmt_flags nl80211_flag = 0;
 
-	hdd_debug("Frame Type = %d Frame Length = %d",
-		  frame_type, frm_len);
+	hdd_debug("Frame Type = %d Frame Length = %d freq = %d",
+		  frame_type, frm_len, rx_freq);
 
 	if (!adapter) {
 		hdd_err("adapter is NULL");
@@ -1063,12 +1062,6 @@ __hdd_indicate_mgmt_frame_to_user(struct hdd_adapter *adapter,
 
 	/* Channel indicated may be wrong. TODO */
 	/* Indicate an action frame. */
-	if (rx_chan <= MAX_NO_OF_2_4_CHANNELS)
-		freq = ieee80211_channel_to_frequency(rx_chan,
-						      NL80211_BAND_2GHZ);
-	else
-		freq = ieee80211_channel_to_frequency(rx_chan,
-						      NL80211_BAND_5GHZ);
 
 	if (hdd_is_qos_action_frame(pb_frames, frm_len))
 		sme_update_dsc_pto_up_mapping(hdd_ctx->mac_handle,
@@ -1085,23 +1078,23 @@ __hdd_indicate_mgmt_frame_to_user(struct hdd_adapter *adapter,
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
 	cfg80211_rx_mgmt(adapter->dev->ieee80211_ptr,
-		 freq, rx_rssi * 100, pb_frames,
+			 rx_freq, rx_rssi * 100, pb_frames,
 			 frm_len, NL80211_RXMGMT_FLAG_ANSWERED | nl80211_flag);
 #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0))
 	cfg80211_rx_mgmt(adapter->dev->ieee80211_ptr,
-			freq, rx_rssi * 100, pb_frames,
+			 rx_freq, rx_rssi * 100, pb_frames,
 			 frm_len, NL80211_RXMGMT_FLAG_ANSWERED,
 			 GFP_ATOMIC);
 #else
-	cfg80211_rx_mgmt(adapter->dev->ieee80211_ptr, freq,
-			rx_rssi * 100,
-			pb_frames, frm_len, GFP_ATOMIC);
+	cfg80211_rx_mgmt(adapter->dev->ieee80211_ptr, rx_freq,
+			 rx_rssi * 100,
+			 pb_frames, frm_len, GFP_ATOMIC);
 #endif /* LINUX_VERSION_CODE */
 }
 
 void hdd_indicate_mgmt_frame_to_user(struct hdd_adapter *adapter,
 				     uint32_t frm_len, uint8_t *pb_frames,
-				     uint8_t frame_type, uint32_t rx_chan,
+				     uint8_t frame_type, uint32_t rx_freq,
 				     int8_t rx_rssi, enum rxmgmt_flags rx_flags)
 {
 	int errno;
@@ -1112,7 +1105,7 @@ void hdd_indicate_mgmt_frame_to_user(struct hdd_adapter *adapter,
 		return;
 
 	__hdd_indicate_mgmt_frame_to_user(adapter, frm_len, pb_frames,
-					  frame_type, rx_chan,
+					  frame_type, rx_freq,
 					  rx_rssi, rx_flags);
 	osif_vdev_sync_op_stop(vdev_sync);
 }

+ 1 - 1
core/mac/inc/sir_api.h

@@ -1926,7 +1926,7 @@ enum rxmgmt_flags {
 
 typedef struct sSirSmeMgmtFrameInd {
 	uint16_t frame_len;
-	uint32_t rxChan;
+	uint32_t rx_freq;
 	uint8_t sessionId;
 	uint8_t frameType;
 	int8_t rxRssi;

+ 1 - 1
core/mac/src/pe/lim/lim_api.c

@@ -1895,7 +1895,7 @@ lim_roam_gen_mbssid_beacon(struct mac_context *mac,
 	bcn_prb_ptr = (uint8_t *)roam_ind +
 				roam_ind->beaconProbeRespOffset;
 
-	rx_param.channel = wlan_freq_to_chan(roam_ind->chan_freq);
+	rx_param.chan_freq = roam_ind->chan_freq;
 	rx_param.pdev_id = wlan_objmgr_pdev_get_pdev_id(mac->pdev);
 	rx_param.rssi = roam_ind->rssi;
 

+ 9 - 9
core/mac/src/pe/lim/lim_process_action_frame.c

@@ -1070,7 +1070,7 @@ static void __lim_process_qos_map_configure_frame(struct mac_context *mac_ctx,
 	lim_send_sme_mgmt_frame_ind(mac_ctx, mac_hdr->fc.subType,
 				    (uint8_t *)mac_hdr,
 				    frame_len + sizeof(tSirMacMgmtHdr), 0,
-				    WMA_GET_RX_CH(rx_pkt_info), session,
+				    WMA_GET_RX_FREQ(rx_pkt_info), session,
 				    WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info),
 				    RXMGMT_FLAG_NONE);
 }
@@ -1289,7 +1289,7 @@ __lim_process_radio_measure_request(struct mac_context *mac, uint8_t *pRxPacketI
 	mac->rrm.rrmPEContext.prev_rrm_report_seq_num = curr_seq_num;
 	lim_send_sme_mgmt_frame_ind(mac, pHdr->fc.subType, (uint8_t *)pHdr,
 				    frameLen + sizeof(tSirMacMgmtHdr), 0,
-				    WMA_GET_RX_CH(pRxPacketInfo), pe_session,
+				    WMA_GET_RX_FREQ(pRxPacketInfo), pe_session,
 				    WMA_GET_RX_RSSI_NORMALIZED(pRxPacketInfo),
 				    RXMGMT_FLAG_NONE);
 
@@ -1519,7 +1519,7 @@ static void __lim_process_sa_query_response_action_frame(struct mac_context *mac
 					    (uint8_t *)pHdr,
 					    frame_len + sizeof(tSirMacMgmtHdr),
 					    0,
-					    WMA_GET_RX_CH(pRxPacketInfo),
+					    WMA_GET_RX_FREQ(pRxPacketInfo),
 					    pe_session,
 					    WMA_GET_RX_RSSI_NORMALIZED(
 					    pRxPacketInfo), RXMGMT_FLAG_NONE);
@@ -1941,7 +1941,7 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
 					(uint8_t *) mac_hdr,
 					frame_len + sizeof(tSirMacMgmtHdr),
 					session->smeSessionId,
-					WMA_GET_RX_CH(rx_pkt_info),
+					WMA_GET_RX_FREQ(rx_pkt_info),
 					session, rssi, RXMGMT_FLAG_NONE);
 			break;
 		default:
@@ -2029,7 +2029,7 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
 					frame_len +
 					sizeof(tSirMacMgmtHdr),
 					session->smeSessionId,
-					WMA_GET_RX_CH(rx_pkt_info),
+					WMA_GET_RX_FREQ(rx_pkt_info),
 					session,
 					WMA_GET_RX_RSSI_NORMALIZED(
 					rx_pkt_info), RXMGMT_FLAG_NONE);
@@ -2089,7 +2089,7 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
 					(uint8_t *) mac_hdr,
 					frame_len + sizeof(tSirMacMgmtHdr),
 					session->smeSessionId,
-					WMA_GET_RX_CH(rx_pkt_info), session,
+					WMA_GET_RX_FREQ(rx_pkt_info), session,
 					WMA_GET_RX_RSSI_NORMALIZED(
 					rx_pkt_info), RXMGMT_FLAG_NONE);
 			break;
@@ -2153,7 +2153,7 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
 					    (uint8_t *)hdr,
 					    frame_len + sizeof(tSirMacMgmtHdr),
 					    session->smeSessionId,
-					    WMA_GET_RX_CH(rx_pkt_info),
+					    WMA_GET_RX_FREQ(rx_pkt_info),
 					    session,
 					    WMA_GET_RX_RSSI_NORMALIZED(
 					    rx_pkt_info), RXMGMT_FLAG_NONE);
@@ -2173,7 +2173,7 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
 				mac_hdr->fc.subType, (uint8_t *) mac_hdr,
 				frame_len + sizeof(tSirMacMgmtHdr),
 				session->smeSessionId,
-				WMA_GET_RX_CH(rx_pkt_info), session, rssi,
+				WMA_GET_RX_FREQ(rx_pkt_info), session, rssi,
 				RXMGMT_FLAG_NONE);
 			break;
 		default:
@@ -2277,7 +2277,7 @@ void lim_process_action_frame_no_session(struct mac_context *mac, uint8_t *pBd)
 					mac_hdr->fc.subType,
 					(uint8_t *) mac_hdr,
 					frame_len + sizeof(tSirMacMgmtHdr), 0,
-					WMA_GET_RX_CH(pBd), NULL,
+					WMA_GET_RX_FREQ(pBd), NULL,
 					WMA_GET_RX_RSSI_NORMALIZED(pBd),
 					RXMGMT_FLAG_NONE);
 			break;

+ 2 - 2
core/mac/src/pe/lim/lim_process_auth_frame.c

@@ -407,7 +407,7 @@ static void lim_process_sae_auth_frame(struct mac_context *mac_ctx,
 				    (uint8_t *)mac_hdr,
 				    frame_len + sizeof(tSirMacMgmtHdr),
 				    pe_session->smeSessionId,
-				    WMA_GET_RX_CH(rx_pkt_info), pe_session,
+				    WMA_GET_RX_FREQ(rx_pkt_info), pe_session,
 				    WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info),
 				    rx_flags);
 }
@@ -1649,7 +1649,7 @@ bool lim_process_sae_preauth_frame(struct mac_context *mac, uint8_t *rx_pkt)
 				    (uint8_t *)dot11_hdr,
 				    frm_len + sizeof(tSirMacMgmtHdr),
 				    SME_SESSION_ID_ANY,
-				    WMA_GET_RX_CH(rx_pkt), NULL,
+				    WMA_GET_RX_FREQ(rx_pkt), NULL,
 				    WMA_GET_RX_RSSI_NORMALIZED(rx_pkt),
 				    RXMGMT_FLAG_NONE);
 	return true;

+ 17 - 11
core/mac/src/pe/lim/lim_process_message_queue.c

@@ -631,7 +631,9 @@ __lim_pno_match_fwd_bcn_probepsp(struct mac_context *pmac, uint8_t *rx_pkt_info,
 		result->ap[i].beaconPeriod = frame->beaconInterval;
 		result->ap[i].capability =
 			lim_get_u16((uint8_t *) &frame->capabilityInfo);
-		result->ap[i].channel = WMA_GET_RX_CH(rx_pkt_info);
+		result->ap[i].channel = wlan_reg_freq_to_chan(
+						pmac->pdev,
+						WMA_GET_RX_FREQ(rx_pkt_info));
 		result->ap[i].rssi = WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info);
 		result->ap[i].rtt = 0;
 		result->ap[i].rtt_sd = 0;
@@ -682,7 +684,9 @@ __lim_ext_scan_forward_bcn_probe_rsp(struct mac_context *pmac, uint8_t *rx_pkt_i
 	result->ap.beaconPeriod = frame->beaconInterval;
 	result->ap.capability =
 			lim_get_u16((uint8_t *) &frame->capabilityInfo);
-	result->ap.channel = WMA_GET_RX_CH(rx_pkt_info);
+	result->ap.channel = wlan_reg_freq_to_chan(
+						pmac->pdev,
+						WMA_GET_RX_FREQ(rx_pkt_info));
 	result->ap.rssi = WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info);
 	result->ap.rtt = 0;
 	result->ap.rtt_sd = 0;
@@ -821,8 +825,8 @@ __lim_handle_beacon(struct mac_context *mac, struct scheduler_msg *pMsg,
 static void lim_fill_sap_bcn_pkt_meta(struct scan_cache_entry *scan_entry,
 					cds_pkt_t *rx_pkt)
 {
-	rx_pkt->pkt_meta.channel = scan_entry->channel.chan_idx;
-
+	rx_pkt->pkt_meta.frequency = scan_entry->channel.chan_freq;
+	pe_debug("rx pkt meta freq %d", rx_pkt->pkt_meta.frequency);
 	rx_pkt->pkt_meta.mpdu_hdr_len = sizeof(struct ieee80211_frame);
 	rx_pkt->pkt_meta.mpdu_len = scan_entry->raw_frame.len;
 	rx_pkt->pkt_meta.mpdu_data_len = rx_pkt->pkt_meta.mpdu_len -
@@ -947,7 +951,8 @@ void lim_handle_sap_beacon(struct wlan_objmgr_pdev *pdev,
 	for (session_id = 0; session_id < mac_ctx->lim.maxBssId; session_id++) {
 		if (filter->sap_channel[session_id] &&
 		    (filter->sap_channel[session_id] ==
-		    scan_entry->channel.chan_idx)) {
+		    wlan_reg_freq_to_chan(pdev,
+					  scan_entry->channel.chan_freq))) {
 			if (!pkt) {
 				status = lim_allocate_and_get_bcn(
 					mac_ctx, &pkt, &rx_pkt_info,
@@ -1142,7 +1147,7 @@ lim_check_mgmt_registered_frames(struct mac_context *mac_ctx, uint8_t *buff_desc
 			(uint8_t *) hdr,
 			WMA_GET_RX_PAYLOAD_LEN(buff_desc) +
 			sizeof(tSirMacMgmtHdr), mgmt_frame->sessionId,
-			WMA_GET_RX_CH(buff_desc), session_entry,
+			WMA_GET_RX_FREQ(buff_desc), session_entry,
 			WMA_GET_RX_RSSI_NORMALIZED(buff_desc),
 			RXMGMT_FLAG_NONE);
 
@@ -1226,7 +1231,7 @@ lim_handle80211_frames(struct mac_context *mac, struct scheduler_msg *limMsg,
 	struct pe_session *pe_session = NULL;
 	uint8_t sessionId;
 	bool isFrmFt = false;
-	uint8_t channel;
+	uint32_t frequency;
 	bool is_hw_sbs_capable = false;
 
 	*pDeferMsg = false;
@@ -1235,14 +1240,15 @@ lim_handle80211_frames(struct mac_context *mac, struct scheduler_msg *limMsg,
 
 	pHdr = WMA_GET_RX_MAC_HEADER(pRxPacketInfo);
 	isFrmFt = WMA_GET_RX_FT_DONE(pRxPacketInfo);
-	channel = WMA_GET_RX_CH(pRxPacketInfo);
+	frequency = WMA_GET_RX_FREQ(pRxPacketInfo);
 	fc = pHdr->fc;
 
 	is_hw_sbs_capable =
 		policy_mgr_is_hw_sbs_capable(mac->psoc);
-	if (IS_5G_CH(channel) &&
-	   (!is_hw_sbs_capable ||
-	   (is_hw_sbs_capable && wlan_reg_is_dfs_ch(mac->pdev, channel))) &&
+	if (WLAN_REG_IS_5GHZ_CH_FREQ(frequency) &&
+	    (!is_hw_sbs_capable ||
+	    (is_hw_sbs_capable &&
+	    wlan_reg_is_dfs_for_freq(mac->pdev, frequency))) &&
 	    mac->sap.SapDfsInfo.is_dfs_cac_timer_running) {
 		pe_session = pe_find_session_by_bssid(mac,
 					pHdr->bssId, &sessionId);

+ 2 - 1
core/mac/src/pe/lim/lim_process_probe_req_frame.c

@@ -446,7 +446,8 @@ lim_indicate_probe_req_to_hdd(struct mac_context *mac, uint8_t *pBd,
 	lim_send_sme_mgmt_frame_ind(mac, pHdr->fc.subType,
 				    (uint8_t *) pHdr,
 				    (frameLen + sizeof(tSirMacMgmtHdr)),
-				    pe_session->smeSessionId, WMA_GET_RX_CH(pBd),
+				    pe_session->smeSessionId,
+				    WMA_GET_RX_FREQ(pBd),
 				    pe_session,
 				    WMA_GET_RX_RSSI_NORMALIZED(pBd),
 				    RXMGMT_FLAG_NONE);

+ 0 - 2
core/mac/src/pe/lim/lim_scan_result_utils.c

@@ -70,7 +70,6 @@ lim_collect_bss_description(struct mac_context *mac,
 	uint32_t ieLen = 0;
 	tpSirMacMgmtHdr pHdr;
 	uint8_t channel_num;
-	uint8_t rx_channel;
 	uint8_t rfBand = 0;
 
 	pHdr = WMA_GET_RX_MAC_HEADER(pRxPacketInfo);
@@ -82,7 +81,6 @@ lim_collect_bss_description(struct mac_context *mac,
 	}
 	ieLen =
 		WMA_GET_RX_PAYLOAD_LEN(pRxPacketInfo) - SIR_MAC_B_PR_SSID_OFFSET;
-	rx_channel = WMA_GET_RX_CH(pRxPacketInfo);
 	pBody = WMA_GET_RX_MPDU_DATA(pRxPacketInfo);
 	rfBand = WMA_GET_RX_RFBAND(pRxPacketInfo);
 

+ 2 - 2
core/mac/src/pe/lim/lim_utils.c

@@ -7648,7 +7648,7 @@ enum rateid lim_get_min_session_txrate(struct pe_session *session)
 
 void lim_send_sme_mgmt_frame_ind(struct mac_context *mac_ctx, uint8_t frame_type,
 				 uint8_t *frame, uint32_t frame_len,
-				 uint16_t session_id, uint32_t rx_channel,
+				 uint16_t session_id, uint32_t rx_freq,
 				 struct pe_session *psession_entry,
 				 int8_t rx_rssi, enum rxmgmt_flags rx_flags)
 {
@@ -7672,7 +7672,7 @@ void lim_send_sme_mgmt_frame_ind(struct mac_context *mac_ctx, uint8_t frame_type
 	sme_mgmt_frame->sessionId = session_id;
 	sme_mgmt_frame->frameType = frame_type;
 	sme_mgmt_frame->rxRssi = rx_rssi;
-	sme_mgmt_frame->rxChan = rx_channel;
+	sme_mgmt_frame->rx_freq = rx_freq;
 	sme_mgmt_frame->rx_flags = rx_flags;
 
 	qdf_mem_zero(sme_mgmt_frame->frameBuf, frame_len);

+ 2 - 2
core/mac/src/pe/lim/lim_utils.h

@@ -193,7 +193,7 @@ void lim_update_short_slot_time(struct mac_context *mac, tSirMacAddr peerMacAddr
  * @frame_len: Length og mgmt frame
  * @session_id: session id
  * @psession_entry: PE Session Entry
- * @rx_channel: Channel of where packet is received
+ * @rx_freq: Frequency on which packet is received
  * @rx_rssi: rssi value
  * @rx_flags: RXMGMT flags to be set for the frame. Defined in enum rxmgmt_flags
  *
@@ -204,7 +204,7 @@ void lim_update_short_slot_time(struct mac_context *mac, tSirMacAddr peerMacAddr
 */
 void lim_send_sme_mgmt_frame_ind(struct mac_context *mac_ctx, uint8_t frame_type,
 				 uint8_t *frame, uint32_t frame_len,
-				 uint16_t session_id, uint32_t rx_channel,
+				 uint16_t session_id, uint32_t rx_freq,
 				 struct pe_session *psession_entry,
 				 int8_t rx_rssi, enum rxmgmt_flags rx_flags);
 

+ 3 - 3
core/mac/src/sys/legacy/src/utils/src/parser_api.c

@@ -4053,12 +4053,10 @@ sir_convert_beacon_frame2_struct(struct mac_context *mac,
 	uint32_t status, nPayload;
 	uint8_t *pPayload;
 	tpSirMacMgmtHdr pHdr;
-	uint8_t mappedRXCh;
 
 	pPayload = WMA_GET_RX_MPDU_DATA(pFrame);
 	nPayload = WMA_GET_RX_PAYLOAD_LEN(pFrame);
 	pHdr = WMA_GET_RX_MAC_HEADER(pFrame);
-	mappedRXCh = WMA_GET_RX_CH(pFrame);
 
 	/* Zero-init our [out] parameter, */
 	qdf_mem_zero((uint8_t *) pBeaconStruct, sizeof(tSirProbeRespBeacon));
@@ -4222,7 +4220,9 @@ sir_convert_beacon_frame2_struct(struct mac_context *mac,
 	} else if (pBeacon->HTInfo.present) {
 		pBeaconStruct->channelNumber = pBeacon->HTInfo.primaryChannel;
 	} else {
-		pBeaconStruct->channelNumber = mappedRXCh;
+		pBeaconStruct->channelNumber =
+			wlan_reg_freq_to_chan(mac->pdev,
+					      WMA_GET_RX_FREQ(pFrame));
 		pe_debug_rl("In Beacon No Channel info");
 	}
 

+ 4 - 2
core/sap/src/sap_ch_select.c

@@ -1453,8 +1453,10 @@ static void sap_compute_spect_weight(tSapChSelSpectInfo *pSpectInfoParams,
 		for (chn_num = 0; chn_num < pSpectInfoParams->numSpectChans;
 		     chn_num++) {
 
-			channel_id =
-				util_scan_entry_channel_num(cur_node->entry);
+			channel_id = wlan_reg_freq_to_chan(
+					mac->pdev,
+					util_scan_entry_channel_frequency(
+							cur_node->entry));
 
 			if (pSpectCh && (channel_id == pSpectCh->chNum)) {
 				if (pSpectCh->rssiAgr <

+ 12 - 10
core/sme/src/csr/csr_api_scan.c

@@ -390,8 +390,7 @@ static void csr_scan_add_result(struct mac_context *mac_ctx,
 		frm_type = MGMT_PROBE_RESP;
 
 	rx_param.pdev_id = 0;
-	rx_param.channel = wlan_reg_freq_to_chan(mac_ctx->pdev,
-						 bss_desc->chan_freq);
+	rx_param.chan_freq = bss_desc->chan_freq;
 	rx_param.rssi = bss_desc->rssi;
 	rx_param.tsf_delta = bss_desc->tsf_delta;
 
@@ -2355,12 +2354,15 @@ static QDF_STATUS csr_fill_bss_from_scan_entry(struct mac_context *mac_ctx,
 	enum channel_state ap_channel_state;
 
 	ap_channel_state =
-		wlan_reg_get_channel_state(mac_ctx->pdev,
-					   scan_entry->channel.chan_idx);
+		wlan_reg_get_channel_state(
+				mac_ctx->pdev,
+				wlan_reg_freq_to_chan(
+					mac_ctx->pdev,
+					scan_entry->channel.chan_freq));
 	if (ap_channel_state == CHANNEL_STATE_DISABLE ||
 	    ap_channel_state == CHANNEL_STATE_INVALID) {
 		sme_err("BSS %pM channel %d invalid, not populating this BSSID",
-			scan_entry->bssid.bytes, scan_entry->channel.chan_idx);
+			scan_entry->bssid.bytes, scan_entry->channel.chan_freq);
 		return QDF_STATUS_E_INVAL;
 	}
 
@@ -2408,7 +2410,7 @@ static QDF_STATUS csr_fill_bss_from_scan_entry(struct mac_context *mac_ctx,
 	bss_desc->beaconInterval = scan_entry->bcn_int;
 	bss_desc->capabilityInfo = scan_entry->cap_info.value;
 
-	if (WLAN_REG_IS_5GHZ_CH(scan_entry->channel.chan_idx))
+	if (WLAN_REG_IS_5GHZ_CH_FREQ(scan_entry->channel.chan_freq))
 		bss_desc->nwType = eSIR_11A_NW_TYPE;
 	else if (scan_entry->phy_mode == WLAN_PHYMODE_11B)
 		bss_desc->nwType = eSIR_11B_NW_TYPE;
@@ -2419,9 +2421,7 @@ static QDF_STATUS csr_fill_bss_from_scan_entry(struct mac_context *mac_ctx,
 	bss_desc->rssi_raw = scan_entry->rssi_raw;
 
 	/* channel frequency what peer sent in beacon/probersp. */
-	bss_desc->chan_freq =
-		wlan_reg_chan_to_freq(mac_ctx->pdev,
-				      scan_entry->channel.chan_idx);
+	bss_desc->chan_freq = scan_entry->channel.chan_freq;
 	bss_desc->received_time =
 		scan_entry->scan_entry_time;
 	bss_desc->startTSF[0] =
@@ -2809,7 +2809,9 @@ void csr_init_occupied_channels_list(struct mac_context *mac_ctx,
 	while (cur_lst) {
 		cur_node = qdf_container_of(cur_lst, struct scan_cache_node,
 					    node);
-		ch = cur_node->entry->channel.chan_idx;
+		ch = wlan_reg_freq_to_chan(
+				pdev,
+				cur_node->entry->channel.chan_freq);
 		csr_add_to_occupied_channels(
 				mac_ctx, ch,
 				sessionId,

+ 2 - 2
core/wma/inc/wma_types.h

@@ -57,8 +57,8 @@
 
 #define WMA_GET_RX_UNKNOWN_UCAST(pRxMeta) 0
 
-#define WMA_GET_RX_CH(pRxMeta) \
-	(((t_packetmeta *)pRxMeta)->channel)
+#define WMA_GET_RX_FREQ(pRxMeta) \
+	(((t_packetmeta *)pRxMeta)->frequency)
 
 #define WMA_GET_RX_FT_DONE(pRxMeta) 0
 

+ 1 - 1
core/wma/src/wma_mgmt.c

@@ -4303,7 +4303,7 @@ int wma_form_rx_packet(qdf_nbuf_t buf,
 	 * Fill in meta information needed by pe/lim
 	 * TODO: Try to maintain rx metainfo as part of skb->data.
 	 */
-	rx_pkt->pkt_meta.channel = mgmt_rx_params->channel;
+	rx_pkt->pkt_meta.frequency = mgmt_rx_params->chan_freq;
 	rx_pkt->pkt_meta.scan_src = mgmt_rx_params->flags;
 
 	/*

+ 8 - 16
os_if/p2p/src/wlan_cfg80211_p2p.c

@@ -53,7 +53,6 @@ static void wlan_p2p_rx_callback(void *user_data,
 	struct wlan_objmgr_vdev *vdev;
 	struct vdev_osif_priv *osif_priv;
 	struct wireless_dev *wdev;
-	uint16_t freq;
 
 	osif_debug("user data:%pK, vdev id:%d, rssi:%d, buf:%pK, len:%d",
 		   user_data, rx_frame->vdev_id, rx_frame->rx_rssi,
@@ -84,27 +83,20 @@ static void wlan_p2p_rx_callback(void *user_data,
 		goto fail;
 	}
 
-	if (rx_frame->rx_chan <= MAX_NO_OF_2_4_CHANNELS)
-		freq = ieee80211_channel_to_frequency(
-			rx_frame->rx_chan, NL80211_BAND_2GHZ);
-	else
-		freq = ieee80211_channel_to_frequency(
-			rx_frame->rx_chan, NL80211_BAND_5GHZ);
-
 	osif_debug("Indicate frame over nl80211, vdev id:%d, idx:%d",
 		   rx_frame->vdev_id, wdev->netdev->ifindex);
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
-	cfg80211_rx_mgmt(wdev, freq, rx_frame->rx_rssi * 100,
-		rx_frame->buf, rx_frame->frame_len,
-		NL80211_RXMGMT_FLAG_ANSWERED);
+	cfg80211_rx_mgmt(wdev, rx_frame->rx_freq, rx_frame->rx_rssi * 100,
+			 rx_frame->buf, rx_frame->frame_len,
+			 NL80211_RXMGMT_FLAG_ANSWERED);
 #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0))
-	cfg80211_rx_mgmt(wdev, freq, rx_frame->rx_rssi * 100,
-		rx_frame->buf, rx_frame->frame_len,
-		NL80211_RXMGMT_FLAG_ANSWERED, GFP_ATOMIC);
+	cfg80211_rx_mgmt(wdev, rx_frame->rx_freq, rx_frame->rx_rssi * 100,
+			 rx_frame->buf, rx_frame->frame_len,
+			 NL80211_RXMGMT_FLAG_ANSWERED, GFP_ATOMIC);
 #else
-	cfg80211_rx_mgmt(wdev, freq, rx_frame->rx_rssi * 100,
-		rx_frame->buf, rx_frame->frame_len, GFP_ATOMIC);
+	cfg80211_rx_mgmt(wdev, rx_frame->rx_freq, rx_frame->rx_rssi * 100,
+			 rx_frame->buf, rx_frame->frame_len, GFP_ATOMIC);
 #endif /* LINUX_VERSION_CODE */
 fail:
 	wlan_objmgr_vdev_release_ref(vdev, WLAN_P2P_ID);

+ 8 - 16
os_if/tdls/src/wlan_cfg80211_tdls.c

@@ -623,7 +623,6 @@ void wlan_cfg80211_tdls_rx_callback(void *user_data,
 	struct wlan_objmgr_vdev *vdev;
 	struct vdev_osif_priv *osif_priv;
 	struct wireless_dev *wdev;
-	uint16_t freq;
 
 	osif_debug("user data:%pK, vdev id:%d, rssi:%d, buf:%pK, len:%d",
 		   user_data, rx_frame->vdev_id, rx_frame->rx_rssi,
@@ -654,27 +653,20 @@ void wlan_cfg80211_tdls_rx_callback(void *user_data,
 		goto fail;
 	}
 
-	if (rx_frame->rx_chan <= TDLS_MAX_NO_OF_2_4_CHANNELS)
-		freq = ieee80211_channel_to_frequency(
-			rx_frame->rx_chan, NL80211_BAND_2GHZ);
-	else
-		freq = ieee80211_channel_to_frequency(
-			rx_frame->rx_chan, NL80211_BAND_5GHZ);
-
 	osif_notice("Indicate frame over nl80211, vdev id:%d, idx:%d",
 		    rx_frame->vdev_id, wdev->netdev->ifindex);
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
-	cfg80211_rx_mgmt(wdev, freq, rx_frame->rx_rssi * 100,
-		rx_frame->buf, rx_frame->frame_len,
-		NL80211_RXMGMT_FLAG_ANSWERED);
+	cfg80211_rx_mgmt(wdev, rx_frame->rx_freq, rx_frame->rx_rssi * 100,
+			 rx_frame->buf, rx_frame->frame_len,
+			 NL80211_RXMGMT_FLAG_ANSWERED);
 #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0))
-	cfg80211_rx_mgmt(wdev, freq, rx_frame->rx_rssi * 100,
-		rx_frame->buf, rx_frame->frame_len,
-		NL80211_RXMGMT_FLAG_ANSWERED, GFP_ATOMIC);
+	cfg80211_rx_mgmt(wdev, rx_frame->rx_freq, rx_frame->rx_rssi * 100,
+			 rx_frame->buf, rx_frame->frame_len,
+			 NL80211_RXMGMT_FLAG_ANSWERED, GFP_ATOMIC);
 #else
-	cfg80211_rx_mgmt(wdev, freq, rx_frame->rx_rssi * 100,
-		rx_frame->buf, rx_frame->frame_len, GFP_ATOMIC);
+	cfg80211_rx_mgmt(wdev, rx_frame->rx_freq, rx_frame->rx_rssi * 100,
+			 rx_frame->buf, rx_frame->frame_len, GFP_ATOMIC);
 #endif /* LINUX_VERSION_CODE */
 fail:
 	wlan_objmgr_vdev_release_ref(vdev, WLAN_TDLS_NB_ID);