mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
Merge "qcacld-3.0: Process rx_mgmt_pkt based on frequency" into wlan-cld3.driver.lnx.2.0
This commit is contained in:
commit
7ff488ca01
26 changed files with 104 additions and 118 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 +
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue