diff --git a/wmi/inc/wmi_unified_dfs_api.h b/wmi/inc/wmi_unified_dfs_api.h index 5a35821b00..1626e5bd88 100644 --- a/wmi/inc/wmi_unified_dfs_api.h +++ b/wmi/inc/wmi_unified_dfs_api.h @@ -69,4 +69,24 @@ QDF_STATUS wmi_extract_wlan_radar_event_info(void *wmi_hdl, struct radar_event_info *wlan_radar_event, uint32_t len); #endif + +/** + * wmi_send_usenol_pdev_param() - function to send usenol pdev param. + * @wmi_hdl: wmi handle + * @usenol: value of usenol + * @pdev: pointer to objmgr_pdev structure + * + * Return: QDF_STATUS + */ +#if defined(WLAN_DFS_FULL_OFFLOAD) && defined(QCA_DFS_NOL_OFFLOAD) +QDF_STATUS wmi_send_usenol_pdev_param(void *wmi_hdl, bool usenol, + struct wlan_objmgr_pdev *pdev); +#else +static inline QDF_STATUS +wmi_send_usenol_pdev_param(void *wmi_hdl, bool usenol, + struct wlan_objmgr_pdev *pdev) +{ + return QDF_STATUS_SUCCESS; +} +#endif #endif /* _WMI_UNIFIED_DFS_API_H_ */ diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 9b6c3f7cd8..99bbfd1edd 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -467,6 +467,7 @@ typedef enum { WMI_HOST_VDEV_START_OK = 0, WMI_HOST_VDEV_START_CHAN_INVALID, WMI_HOST_VDEV_START_CHAN_BLOCKED, + WMI_HOST_VDEV_START_CHAN_DFS_VIOLATION, } WMI_HOST_VDEV_START_STATUS; /* @@ -4863,6 +4864,7 @@ typedef enum { wmi_pdev_param_esp_ba_window, wmi_pdev_param_esp_airtime_fraction, wmi_pdev_param_esp_ppdu_duration, + wmi_pdev_param_use_nol, wmi_pdev_param_max, } wmi_conv_pdev_params_id; diff --git a/wmi/src/wmi_unified_dfs_api.c b/wmi/src/wmi_unified_dfs_api.c index 94505d453b..062402d57a 100644 --- a/wmi/src/wmi_unified_dfs_api.c +++ b/wmi/src/wmi_unified_dfs_api.c @@ -27,6 +27,7 @@ #include #include #include +#include QDF_STATUS wmi_extract_dfs_cac_complete_event(void *wmi_hdl, uint8_t *evt_buf, @@ -73,3 +74,23 @@ QDF_STATUS wmi_extract_wlan_radar_event_info(void *wmi_hdl, } qdf_export_symbol(wmi_extract_dfs_radar_detection_event); #endif + +#if defined(WLAN_DFS_FULL_OFFLOAD) && defined(QCA_DFS_NOL_OFFLOAD) +QDF_STATUS wmi_send_usenol_pdev_param(void *wmi_hdl, bool usenol, + struct wlan_objmgr_pdev *pdev) +{ + struct pdev_params pparam; + int pdev_idx; + struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl; + + pdev_idx = lmac_get_pdev_idx(pdev); + if (pdev_idx < 0) + return QDF_STATUS_E_FAILURE; + + qdf_mem_set(&pparam, sizeof(pparam), 0); + pparam.param_id = wmi_pdev_param_use_nol; + pparam.param_value = usenol; + + return wmi_unified_pdev_param_send(wmi_handle, &pparam, pdev_idx); +} +#endif diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index d37e858553..1ddcff7a4b 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -8225,6 +8225,9 @@ static QDF_STATUS extract_vdev_scan_ev_param_tlv(wmi_unified_t wmi_handle, case WMI_SCAN_REASON_SUSPENDED: param->reason = SCAN_REASON_SUSPENDED; break; + case WMI_SCAN_REASON_DFS_VIOLATION: + param->reason = SCAN_REASON_DFS_VIOLATION; + break; case WMI_SCAN_REASON_MAX: param->reason = SCAN_REASON_MAX; break; @@ -11878,6 +11881,7 @@ static void populate_pdev_param_tlv(uint32_t *pdev_param) #ifdef WLAN_RU26_SUPPORT pdev_param[wmi_pdev_param_ru26_allowed] = WMI_PDEV_PARAM_RU26_ALLOWED; #endif + pdev_param[wmi_pdev_param_use_nol] = WMI_PDEV_PARAM_USE_NOL; } /**