diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index 5a99e33a8864..653fc2346922 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -63,6 +63,7 @@ #include "cfg_ucfg_api.h" #include "target_type.h" #include "wlan_hdd_object_manager.h" +#include "sme_api.h" #if defined(QCA_LL_TX_FLOW_CONTROL_V2) || defined(QCA_LL_PDEV_TX_FLOW_CONTROL) /* @@ -2664,6 +2665,13 @@ int hdd_set_mon_rx_cb(struct net_device *dev) struct ol_txrx_ops txrx_ops; void *soc = cds_get_context(QDF_MODULE_ID_SOC); void *pdev = cds_get_context(QDF_MODULE_ID_TXRX); + struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); + + if (!hdd_ctx || !soc || !pdev) { + hdd_err("Context is NULL"); + return -EINVAL; + } + qdf_mem_zero(&txrx_ops, sizeof(txrx_ops)); txrx_ops.rx.rx = hdd_mon_rx_packet_cbk; @@ -2682,6 +2690,13 @@ int hdd_set_mon_rx_cb(struct net_device *dev) goto exit; } + qdf_status = sme_create_mon_session(hdd_ctx->mac_handle, + adapter->mac_addr.bytes, + adapter->vdev_id); + if (QDF_STATUS_SUCCESS != qdf_status) + hdd_err("sme_create_mon_session() failed to register. Status= %d [0x%08X]", + qdf_status, qdf_status); + exit: ret = qdf_status_to_os_return(qdf_status); return ret; diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h index 10e3719fb376..f2f8fb3e85d5 100644 --- a/core/sme/inc/sme_api.h +++ b/core/sme/inc/sme_api.h @@ -1739,8 +1739,18 @@ sme_apf_read_work_memory(mac_handle_t mac_handle, #endif /* FEATURE_WLAN_APF */ uint32_t sme_get_wni_dot11_mode(mac_handle_t mac_handle); + +#if !defined(QCA_WIFI_QCA6290) || !defined(QCA_WIFI_QCA6390) QDF_STATUS sme_create_mon_session(mac_handle_t mac_handle, uint8_t *bssid, uint8_t vdev_id); +#else +inline QDF_STATUS sme_create_mon_session(mac_handle_t mac_handle, + uint8_t *bssid, + uint8_t vdev_id) { + return QDF_STATUS_SUCCESS; +} +#endif + /** * sme_delete_mon_session() - post message to delete PE session for mon_mode