qcacld-3.0: Fix invalid vdev_id value while sending link report frame
In lim_send_link_report_action_frame(), the link report action frame is filled in response to the link measurement request from the AP. wma_tx_frame() is called to send the frame to the firmware. But the vdev_id is initialized to 0 in lim_send_link_report_action_frame(), but is not updated from pe_session before passing it in wma_tx_frame. SO when STA comes up on vdev 1, the vdev value is still sent as 0. This results in the action frame dropped in firmware. Fill the vdev_id from pe_session before sending it to firmware. Change-Id: I5ee830fc6ca542c29f555bce63a77c3309777d3b CRs-Fixed: 2530258
Cette révision appartient à :

révisé par
nshrivas

Parent
3c33fde7c7
révision
683c1cfe6c
@@ -4170,23 +4170,6 @@ returnAfterError:
|
||||
return status_code;
|
||||
} /* End lim_send_neighbor_report_request_frame. */
|
||||
|
||||
/**
|
||||
* \brief Send a Link Report Action frame
|
||||
*
|
||||
*
|
||||
* \param mac Pointer to the global MAC structure
|
||||
*
|
||||
* \param pLinkReport Address of a tSirMacLinkReport
|
||||
*
|
||||
* \param peer mac address of peer station.
|
||||
*
|
||||
* \param pe_session address of session entry.
|
||||
*
|
||||
* \return QDF_STATUS_SUCCESS on success, QDF_STATUS_E_FAILURE else
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
QDF_STATUS
|
||||
lim_send_link_report_action_frame(struct mac_context *mac,
|
||||
tpSirMacLinkReport pLinkReport,
|
||||
@@ -4200,13 +4183,14 @@ lim_send_link_report_action_frame(struct mac_context *mac,
|
||||
void *pPacket;
|
||||
QDF_STATUS qdf_status;
|
||||
uint8_t txFlag = 0;
|
||||
uint8_t smeSessionId = 0;
|
||||
uint8_t vdev_id = 0;
|
||||
|
||||
if (!pe_session) {
|
||||
pe_err("(!psession) in Request to send Link Report action frame");
|
||||
pe_err("RRM: Send link report: NULL PE session");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
vdev_id = pe_session->vdev_id;
|
||||
qdf_mem_zero((uint8_t *) &frm, sizeof(frm));
|
||||
|
||||
frm.Category.category = ACTION_CATEGORY_RRM;
|
||||
@@ -4281,8 +4265,7 @@ lim_send_link_report_action_frame(struct mac_context *mac,
|
||||
nStatus);
|
||||
}
|
||||
|
||||
pe_warn("Sending a Link Report to");
|
||||
lim_print_mac_addr(mac, peer, LOGW);
|
||||
pe_warn("RRM: Sending Link Report to %pM on vdev[%d]", peer, vdev_id);
|
||||
|
||||
if (wlan_reg_is_5ghz_ch_freq(pe_session->curr_op_freq) ||
|
||||
pe_session->opmode == QDF_P2P_CLIENT_MODE ||
|
||||
@@ -4297,7 +4280,7 @@ lim_send_link_report_action_frame(struct mac_context *mac,
|
||||
TXRX_FRM_802_11_MGMT,
|
||||
ANI_TXDIR_TODS,
|
||||
7, lim_tx_complete, pFrame, txFlag,
|
||||
smeSessionId, 0, RATEID_DEFAULT);
|
||||
vdev_id, 0, RATEID_DEFAULT);
|
||||
MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE,
|
||||
pe_session->peSessionId, qdf_status));
|
||||
if (QDF_STATUS_SUCCESS != qdf_status) {
|
||||
|
@@ -600,8 +600,23 @@ QDF_STATUS lim_p2p_oper_chan_change_confirm_action_frame(
|
||||
QDF_STATUS lim_send_neighbor_report_request_frame(struct mac_context *,
|
||||
tpSirMacNeighborReportReq,
|
||||
tSirMacAddr, struct pe_session *);
|
||||
QDF_STATUS lim_send_link_report_action_frame(struct mac_context *, tpSirMacLinkReport,
|
||||
tSirMacAddr, struct pe_session *);
|
||||
|
||||
/**
|
||||
* lim_send_link_report_action_frame() - Send link measurement report action
|
||||
* frame in response for a link measurement request received.
|
||||
* @mac: Pointer to Mac context
|
||||
* @link_report: Pointer to the sSirMacLinkReport struct
|
||||
* @peer: BSSID of the peer
|
||||
* @pe_session: Pointer to the pe_session
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*
|
||||
*/
|
||||
QDF_STATUS
|
||||
lim_send_link_report_action_frame(struct mac_context *mac,
|
||||
tpSirMacLinkReport link_report,
|
||||
tSirMacAddr peer,
|
||||
struct pe_session *pe_session);
|
||||
|
||||
/**
|
||||
* lim_send_radio_measure_report_action_frame - Send RRM report action frame
|
||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur