|
@@ -2385,6 +2385,7 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen,
|
|
|
uint8_t proto_type = 0;
|
|
|
#endif /* QCA_PKT_PROTO_TRACE */
|
|
|
struct wmi_mgmt_params mgmt_param = {0};
|
|
|
+ struct wmi_desc_t *wmi_desc = NULL;
|
|
|
ol_pdev_handle ctrl_pdev;
|
|
|
|
|
|
if (NULL == wma_handle) {
|
|
@@ -2715,21 +2716,25 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen,
|
|
|
mgmt_param.tx_frame = tx_frame;
|
|
|
mgmt_param.frm_len = frmLen;
|
|
|
mgmt_param.vdev_id = vdev_id;
|
|
|
- mgmt_param.tx_complete_cb = tx_frm_download_comp_cb;
|
|
|
- mgmt_param.tx_ota_post_proc_cb = tx_frm_ota_comp_cb;
|
|
|
- mgmt_param.chanfreq = chanfreq;
|
|
|
mgmt_param.pdata = pData;
|
|
|
+ mgmt_param.chanfreq = chanfreq;
|
|
|
mgmt_param.qdf_ctx = cds_get_context(QDF_MODULE_ID_QDF_DEVICE);
|
|
|
- mgmt_param.wmi_desc = wmi_desc_get(wma_handle);
|
|
|
- if (NULL == mgmt_param.wmi_desc) {
|
|
|
- WMA_LOGE(FL("Failed to get wmi descriptor"));
|
|
|
+ wmi_desc = wmi_desc_get(wma_handle);
|
|
|
+ if (!wmi_desc) {
|
|
|
+ WMA_LOGE("%s: Failed to get wmi_desc", __func__);
|
|
|
status = QDF_STATUS_E_FAILURE;
|
|
|
} else {
|
|
|
+ mgmt_param.desc_id = wmi_desc->desc_id;
|
|
|
status = wmi_mgmt_unified_cmd_send(
|
|
|
- wma_handle->wmi_handle,
|
|
|
- &mgmt_param);
|
|
|
- if (status)
|
|
|
- wmi_desc_put(wma_handle, mgmt_param.wmi_desc);
|
|
|
+ wma_handle->wmi_handle,
|
|
|
+ &mgmt_param);
|
|
|
+ if (status) {
|
|
|
+ wmi_desc_put(wma_handle, wmi_desc);
|
|
|
+ } else {
|
|
|
+ wmi_desc->nbuf = tx_frame;
|
|
|
+ wmi_desc->tx_cmpl_cb = tx_frm_download_comp_cb;
|
|
|
+ wmi_desc->ota_post_proc_cb = tx_frm_ota_comp_cb;
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
/* Hand over the Tx Mgmt frame to TxRx */
|