Merge 8ed9cddc1a on remote branch

Change-Id: Iad50de58514eda375659247dbc8e47cf23bfa479
This commit is contained in:
Linux Build Service Account 2022-12-15 08:51:46 -08:00
commit 0bb802e012
19 changed files with 145 additions and 126 deletions

View file

@ -667,6 +667,8 @@ mlme_init_qos_edca_params(struct wlan_objmgr_psoc *psoc,
edca_params->enable_edca_params =
cfg_get(psoc, CFG_EDCA_ENABLE_PARAM);
edca_params->enable_wmm_txop =
cfg_get(psoc, CFG_ENABLE_WMM_TXOP);
edca_params->edca_ac_vo.vo_cwmin =
cfg_get(psoc, CFG_EDCA_VO_CWMIN);
edca_params->edca_ac_vo.vo_cwmax =

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2011-2019 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -481,6 +482,28 @@
0, \
"Enable edca parameter")
/*
* <ini>
* enable_wmm_txop - Enable WMM based txop feature
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable the WMM based txop feature in FW
*
* Related: None
*
* Supported Feature: STA
*
* Usage: Internal
*
* </ini>
*/
#define CFG_ENABLE_WMM_TXOP CFG_INI_BOOL( \
"enable_wmm_txop", \
1, \
"Enable WMM TXOP")
/*
* <ini>
* gEdcaVoCwmin - Set Cwmin value for QCA_WLAN_AC_VO
@ -838,6 +861,7 @@
CFG(CFG_EDCA_BK_AIFS) \
CFG(CFG_EDCA_BE_CWMIN) \
CFG(CFG_EDCA_BE_CWMAX) \
CFG(CFG_ENABLE_WMM_TXOP) \
CFG(CFG_EDCA_BE_AIFS)
#endif /* __CFG_MLME_EDCA__PARAM_H */

View file

@ -376,6 +376,7 @@ struct wlan_mlme_edca_params {
struct mlme_cfg_str etsi_acvo_b;
bool enable_edca_params;
bool enable_wmm_txop;
struct mlme_edca_ac_vo edca_ac_vo;
struct mlme_edca_ac_vi edca_ac_vi;
struct mlme_edca_ac_bk edca_ac_bk;

View file

@ -885,7 +885,15 @@ fail:
psoc_nan_obj->nan_social_ch_2g_freq = 0;
psoc_nan_obj->nan_social_ch_5g_freq = 0;
nan_set_discovery_state(psoc, NAN_DISC_DISABLED);
policy_mgr_check_n_start_opportunistic_timer(psoc);
if (ucfg_is_nan_dbs_supported(psoc))
policy_mgr_check_n_start_opportunistic_timer(psoc);
/*
* If FW respond with NAN enable failure, then TDLS should be enable
* again if there is TDLS connection exist earlier.
* decrement the active TDLS session.
*/
ucfg_tdls_notify_connect_failure(psoc);
done:
nan_conc_callback = psoc_nan_obj->cb_obj.nan_concurrency_update;
@ -1113,7 +1121,6 @@ bool nan_is_enable_allowed(struct wlan_objmgr_psoc *psoc, uint32_t nan_ch_freq)
}
return (NAN_DISC_DISABLED == nan_get_discovery_state(psoc) &&
ucfg_is_nan_conc_control_supported(psoc) &&
policy_mgr_allow_concurrency(psoc, PM_NAN_DISC_MODE,
nan_ch_freq, HW_MODE_20_MHZ));
}

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -35,6 +35,7 @@
#include "cfg_nan.h"
#include "wlan_mlme_api.h"
#include "cfg_nan_api.h"
#include "wlan_tdls_ucfg_api.h"
struct wlan_objmgr_psoc;
struct wlan_objmgr_vdev;
@ -876,8 +877,16 @@ post_msg:
if (req_type == NAN_ENABLE_REQ) {
nan_set_discovery_state(psoc,
NAN_DISC_DISABLED);
policy_mgr_check_n_start_opportunistic_timer(
psoc);
if (ucfg_is_nan_dbs_supported(psoc))
policy_mgr_check_n_start_opportunistic_timer(psoc);
/*
* If FW respond with NAN enable failure, then
* TDLS should be enable again if there is TDLS
* connection exist earlier.
* decrement the active TDLS session.
*/
ucfg_tdls_notify_connect_failure(psoc);
} else if (req_type == NAN_DISABLE_REQ) {
nan_disable_cleanup(psoc);
}

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -1545,38 +1546,6 @@ static QDF_STATUS p2p_disable_tx_timer(struct tx_action_context *tx_ctx)
return status;
}
/**
* is_rmf_mgmt_action_frame() - check RMF action frame by category
* @action_category: action frame actegory
*
* This function check the frame is robust mgmt action frame or not
*
* Return: true - if category is robust mgmt type
*/
static bool is_rmf_mgmt_action_frame(uint8_t action_category)
{
switch (action_category) {
case ACTION_CATEGORY_SPECTRUM_MGMT:
case ACTION_CATEGORY_QOS:
case ACTION_CATEGORY_DLS:
case ACTION_CATEGORY_BACK:
case ACTION_CATEGORY_RRM:
case ACTION_FAST_BSS_TRNST:
case ACTION_CATEGORY_SA_QUERY:
case ACTION_CATEGORY_PROTECTED_DUAL_OF_PUBLIC_ACTION:
case ACTION_CATEGORY_WNM:
case ACTION_CATEGORY_MESH_ACTION:
case ACTION_CATEGORY_MULTIHOP_ACTION:
case ACTION_CATEGORY_DMG:
case ACTION_CATEGORY_FST:
case ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED:
return true;
default:
break;
}
return false;
}
/**
* p2p_populate_rmf_field() - populate unicast rmf frame
* @tx_ctx: tx_action_context
@ -1620,7 +1589,7 @@ static QDF_STATUS p2p_populate_rmf_field(struct tx_action_context *tx_ctx,
* to get the actual action category we need to ignore the MSB.
*/
action_category = action_hdr->action_category & 0x7f;
if (!is_rmf_mgmt_action_frame(action_category)) {
if (!wlan_mgmt_is_rmf_mgmt_action_frame(action_category)) {
p2p_debug("non rmf act frame 0x%x category %x",
tx_ctx->frame_info.sub_type,
action_hdr->action_category);

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -65,6 +66,7 @@
#define PMO_MAC_ACTION_FST 18
#define PMO_MAC_ACTION_RVS 19
#define PMO_MAC_ACTION_VHT 21
#define PMO_VENDOR_PROTECTED 126
#define PMO_MAC_ACTION_MAX 256
/*
@ -96,6 +98,7 @@
* PMO_ACTION_FST 18 1
* PMO_ACTION_RVS 19 1
* PMO_ACTION_VHT 21 1
* PMO_VENDOR_PROTECTED 126 1
* ----------------------------+------+-------+
*/
#define SYSTEM_SUSPEND_ALLOWED_ACTION_FRAMES_BITMAP0 \
@ -112,7 +115,9 @@
#define ALLOWED_ACTION_FRAMES_BITMAP1 0x0
#define ALLOWED_ACTION_FRAMES_BITMAP2 0x0
#define ALLOWED_ACTION_FRAMES_BITMAP3 0x0
#define ALLOWED_ACTION_FRAMES_BITMAP3 \
(1 << (PMO_VENDOR_PROTECTED % 32))
#define ALLOWED_ACTION_FRAMES_BITMAP4 0x0
#define ALLOWED_ACTION_FRAMES_BITMAP5 0x0
#define ALLOWED_ACTION_FRAMES_BITMAP6 0x0

View file

@ -10552,6 +10552,13 @@ void hdd_send_mscs_action_frame(struct hdd_context *hdd_ctx,
uint64_t mscs_vo_pkt_delta;
unsigned long tx_vo_pkts;
/*
* To disable MSCS feature in driver set mscs_pkt_threshold = 0
* in ini file.
*/
if (!hdd_ctx->config->mscs_pkt_threshold)
return;
tx_vo_pkts = adapter->hdd_stats.tx_rx_stats.tx_classified_ac[SME_AC_VO];
if (!adapter->mscs_counter)

View file

@ -32,9 +32,9 @@
#define QWLAN_VERSION_MAJOR 2
#define QWLAN_VERSION_MINOR 0
#define QWLAN_VERSION_PATCH 8
#define QWLAN_VERSION_EXTRA "J"
#define QWLAN_VERSION_EXTRA "R"
#define QWLAN_VERSION_BUILD 31
#define QWLAN_VERSIONSTR "2.0.8.31J"
#define QWLAN_VERSIONSTR "2.0.8.31R"
#endif /* QWLAN_VERSION_H */

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2011-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -134,6 +135,7 @@
/* block acknowledgment action frame types */
#define SIR_MAC_ACTION_VENDOR_SPECIFIC 9
#define SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY 0x7F
#define SIR_MAC_PROT_ACTION_VENDOR_SPECIFIC_CATEGORY 0x7E
#define SIR_MAC_ACTION_P2P_SUBTYPE_PRESENCE_RSP 2
/* Public Action for 20/40 BSS Coexistence */

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -735,10 +736,8 @@ void lim_fill_ft_session(struct mac_context *mac,
#ifdef WLAN_FEATURE_11W
ft_session->limRmfEnabled = pe_session->limRmfEnabled;
#endif
if ((ft_session->limRFBand == REG_BAND_2G) &&
(ft_session->htSupportedChannelWidthSet ==
eHT_CHANNEL_WIDTH_40MHZ))
lim_init_obss_params(mac, ft_session);
/* Load default OBSS parameters to session entry */
lim_init_obss_params(mac, ft_session);
ft_session->enableHtSmps = pe_session->enableHtSmps;
ft_session->htSmpsvalue = pe_session->htSmpsvalue;

View file

@ -1606,7 +1606,6 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
int8_t rssi;
uint32_t frame_len = WMA_GET_RX_PAYLOAD_LEN(rx_pkt_info);
tpSirMacVendorSpecificFrameHdr vendor_specific;
uint8_t oui[] = { 0x00, 0x00, 0xf0 };
uint8_t dpp_oui[] = { 0x50, 0x6F, 0x9A, 0x1A };
tpSirMacVendorSpecificPublicActionFrameHdr pub_action;
@ -1617,8 +1616,8 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
}
#ifdef WLAN_FEATURE_11W
if (lim_is_robust_mgmt_action_frame(action_hdr->category) &&
lim_drop_unprotected_action_frame(mac_ctx, session,
if (wlan_mgmt_is_rmf_mgmt_action_frame(action_hdr->category) &&
lim_drop_unprotected_action_frame(mac_ctx, session,
mac_hdr_11w, action_hdr->category))
return;
#endif
@ -1818,6 +1817,7 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
break;
case SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY:
case SIR_MAC_PROT_ACTION_VENDOR_SPECIFIC_CATEGORY:
vendor_specific = (tpSirMacVendorSpecificFrameHdr) action_hdr;
mac_hdr = NULL;
@ -1829,12 +1829,9 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
return;
}
/* Check if it is a vendor specific action frame. */
if (LIM_IS_STA_ROLE(session) &&
(!qdf_mem_cmp(session->self_mac_addr,
&mac_hdr->da[0], sizeof(tSirMacAddr)))
&& IS_WES_MODE_ENABLED(mac_ctx)
&& !qdf_mem_cmp(vendor_specific->Oui, oui, 3)) {
/* Forward all vendor specific action frames. */
if (!qdf_mem_cmp(session->self_mac_addr,
&mac_hdr->da[0], sizeof(tSirMacAddr))) {
pe_debug("Rcvd Vendor specific frame OUI: %x %x %x",
vendor_specific->Oui[0],
vendor_specific->Oui[1],
@ -1854,16 +1851,8 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
WMA_GET_RX_RSSI_NORMALIZED(
rx_pkt_info), RXMGMT_FLAG_NONE);
} else {
pe_debug("Dropping the vendor specific action frame"
"beacause of (WES Mode not enabled "
"(WESMODE: %d) or OUI mismatch "
"(%02x %02x %02x) or not received with"
"SelfSta address) system role: %d",
IS_WES_MODE_ENABLED(mac_ctx),
vendor_specific->Oui[0],
vendor_specific->Oui[1],
vendor_specific->Oui[2],
GET_LIM_SYSTEM_ROLE(session));
pe_debug("Dropping the vendor specific action frame SelfSta address system role: %d",
GET_LIM_SYSTEM_ROLE(session));
}
break;
case ACTION_CATEGORY_PUBLIC:
@ -1896,11 +1885,15 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
/* send the frame to supplicant */
/* fallthrough */
case SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY:
case SIR_MAC_PROT_ACTION_VENDOR_SPECIFIC_CATEGORY:
case SIR_MAC_ACTION_2040_BSS_COEXISTENCE:
case SIR_MAC_ACTION_GAS_INITIAL_REQUEST:
case SIR_MAC_ACTION_GAS_INITIAL_RESPONSE:
case SIR_MAC_ACTION_GAS_COMEBACK_REQUEST:
case SIR_MAC_ACTION_GAS_COMEBACK_RESPONSE:
default:
pe_debug("Public action frame: %d",
action_hdr->actionID);
/*
* Forward to the SME to HDD to wpa_supplicant
* type is ACTION
@ -1914,10 +1907,6 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
WMA_GET_RX_RSSI_NORMALIZED(
rx_pkt_info), RXMGMT_FLAG_NONE);
break;
default:
pe_debug("Unhandled public action frame: %d",
action_hdr->actionID);
break;
}
break;

View file

@ -751,11 +751,16 @@ lim_deactivate_and_change_per_sta_id_timer(struct mac_context *mac, uint32_t tim
switch (timerId) {
case eLIM_CNF_WAIT_TIMER:
if (tx_timer_deactivate
(&mac->lim.lim_timers.gpLimCnfWaitTimer[staId])
!= TX_SUCCESS) {
if (staId >= (mac->lim.maxStation + 1)) {
pe_err("Invalid staId = %d ", staId);
return;
}
if (tx_timer_deactivate(&mac->lim.lim_timers.gpLimCnfWaitTimer[staId])
!= TX_SUCCESS) {
pe_err("unable to deactivate CNF wait timer");
}
/* Change timer to reactivate it in future */
val = mac->mlme_cfg->sta.wait_cnf_timeout;
val = SYS_MS_TO_TICKS(val);

View file

@ -6652,46 +6652,6 @@ void lim_update_obss_scanparams(struct pe_session *session,
return;
}
/**
* lim_is_robust_mgmt_action_frame() - Check if action category is
* robust action frame
* @action_category: Action frame category.
*
* This function is used to check if given action category is robust
* action frame.
*
* Return: bool
*/
bool lim_is_robust_mgmt_action_frame(uint8_t action_category)
{
switch (action_category) {
/*
* NOTE: This function doesn't take care of the DMG
* (Directional Multi-Gigatbit) BSS case as 8011ad
* support is not yet added. In future, if the support
* is required then this function need few more arguments
* and little change in logic.
*/
case ACTION_CATEGORY_SPECTRUM_MGMT:
case ACTION_CATEGORY_QOS:
case ACTION_CATEGORY_DLS:
case ACTION_CATEGORY_BACK:
case ACTION_CATEGORY_RRM:
case ACTION_FAST_BSS_TRNST:
case ACTION_CATEGORY_SA_QUERY:
case ACTION_CATEGORY_PROTECTED_DUAL_OF_PUBLIC_ACTION:
case ACTION_CATEGORY_WNM:
case ACTION_CATEGORY_MESH_ACTION:
case ACTION_CATEGORY_MULTIHOP_ACTION:
case ACTION_CATEGORY_FST:
return true;
default:
pe_debug("non-PMF action category: %d", action_category);
break;
}
return false;
}
/**
* lim_compute_ext_cap_ie_length - compute the length of ext cap ie
* based on the bits set

View file

@ -1081,7 +1081,6 @@ static inline void lim_deactivate_and_change_timer_host_roam(
{}
#endif
bool lim_is_robust_mgmt_action_frame(uint8_t action_category);
uint8_t lim_compute_ext_cap_ie_length(tDot11fIEExtCap *ext_cap);
void lim_update_caps_info_for_bss(struct mac_context *mac_ctx,

View file

@ -21017,17 +21017,21 @@ static bool csr_is_sae_single_pmk_vsie_ap(struct bss_description *bss_des)
* @mac_ctx: mac context
* @session: Session
* @vdev_id: session id
* @psk_pmk: pmk of roamed AP
* @pmk_len: pmk length
*
* Return: True if same pmk IE is present
*/
static void
csr_check_and_set_sae_single_pmk_cap(struct mac_context *mac_ctx,
struct csr_roam_session *session,
uint8_t vdev_id)
uint8_t vdev_id, uint8_t *psk_pmk,
uint8_t pmk_len)
{
struct wlan_objmgr_vdev *vdev;
struct mlme_pmk_info *pmk_info;
tPmkidCacheInfo *pmkid_cache;
struct wlan_crypto_pmksa *roam_sync_pmksa;
int32_t keymgmt;
bool val, lookup_success;
@ -21052,9 +21056,28 @@ csr_check_and_set_sae_single_pmk_cap(struct mac_context *mac_ctx,
if (!val)
goto end;
wlan_crypto_set_sae_single_pmk_bss_cap(vdev,
(struct qdf_mac_addr *)session->pConnectBssDesc->bssId,
true);
roam_sync_pmksa = qdf_mem_malloc(sizeof(*roam_sync_pmksa));
if (roam_sync_pmksa) {
qdf_copy_macaddr(&roam_sync_pmksa->bssid,
(struct qdf_mac_addr *)
&session->pConnectBssDesc->bssId);
roam_sync_pmksa->single_pmk_supported = true;
roam_sync_pmksa->pmk_len = pmk_len;
qdf_mem_copy(roam_sync_pmksa->pmk, psk_pmk,
roam_sync_pmksa->pmk_len);
sme_debug("SPMK received for " QDF_MAC_ADDR_FMT
"pmk_len:%d", QDF_MAC_ADDR_REF(
roam_sync_pmksa->bssid.bytes),
roam_sync_pmksa->pmk_len);
/* update single pmk info for roamed ap to pmk table */
wlan_crypto_set_sae_single_pmk_info(vdev,
roam_sync_pmksa);
qdf_mem_zero(roam_sync_pmksa, sizeof(*roam_sync_pmksa));
qdf_mem_free(roam_sync_pmksa);
} else {
goto end;
}
pmkid_cache = qdf_mem_malloc(sizeof(*pmkid_cache));
if (!pmkid_cache)
@ -21107,7 +21130,8 @@ end:
static inline void
csr_check_and_set_sae_single_pmk_cap(struct mac_context *mac_ctx,
struct csr_roam_session *session,
uint8_t vdev_id)
uint8_t vdev_id, uint8_t *psk_pmk,
uint8_t pmk_len)
{
}
#endif
@ -21330,8 +21354,12 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx,
mac_ctx->psoc);
mac_ctx->sme.set_connection_info_cb(false);
csr_check_and_set_sae_single_pmk_cap(mac_ctx, session,
session_id);
if (roam_synch_data->pmk_len)
csr_check_and_set_sae_single_pmk_cap(
mac_ctx, session,
session_id,
roam_synch_data->pmk,
roam_synch_data->pmk_len);
if (ucfg_pkt_capture_get_pktcap_mode(mac_ctx->psoc))
ucfg_pkt_capture_record_channel(vdev);

View file

@ -2538,6 +2538,16 @@ QDF_STATUS wma_post_vdev_create_setup(struct wlan_objmgr_vdev *vdev)
status);
}
wma_debug("Setting WMI_VDEV_PARAM_WMM_TXOP_ENABLE: %d",
mac->mlme_cfg->edca_params.enable_wmm_txop);
status = wma_vdev_set_param(wma_handle->wmi_handle, vdev_id,
WMI_VDEV_PARAM_WMM_TXOP_ENABLE,
mac->mlme_cfg->edca_params.enable_wmm_txop);
if (QDF_IS_STATUS_ERROR(status))
wma_err("failed to set WMM TXOP (status = %d)", status);
wma_debug("Setting WMI_VDEV_PARAM_DISCONNECT_TH: %d",
mac->mlme_cfg->gen.dropped_pkt_disconnect_thresh);
status = wma_vdev_set_param(

View file

@ -4723,6 +4723,8 @@ int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf,
QDF_MAC_ADDR_REF(bssid.bytes));
wma_handle_hw_mode_transition(wma_handle, param_buf);
wma_roam_ho_fail_handler(wma_handle, wmi_event->vdev_id, bssid);
wma_handle->interfaces[wmi_event->vdev_id].roaming_in_progress
= false;
lim_sae_auth_cleanup_retry(wma_handle->mac_context,
wmi_event->vdev_id);
break;

View file

@ -37,6 +37,7 @@
#include "wlan_utility.h"
#include "wlan_osif_request_manager.h"
#include "wlan_mlme_ucfg_api.h"
#include "wlan_tdls_ucfg_api.h"
#define NAN_CMD_MAX_SIZE 2048
@ -2624,15 +2625,15 @@ int os_if_process_nan_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
}
/*
* If target does not support NAN DBS, send request with type GENERIC.
* These will be treated as passthrough by the driver. This is to make
* sure that HW mode is not set to DBS by NAN Enable request. NAN state
* machine will remain unaffected in this case.
* If target does not support NAN DBS, stop the opportunistic timer.
* Opportunistic timer gets triggered as soon as a DBS use case is
* completed and hw_mode would be set to SMM when the timer(5 seconds)
* expires.
* This is to make sure that HW mode is not set to DBS by NAN Enable
* request. NAN state machine will remain unaffected in this case.
*/
if (!NAN_CONCURRENCY_SUPPORTED(psoc)) {
if (!NAN_CONCURRENCY_SUPPORTED(psoc))
policy_mgr_check_and_stop_opportunistic_timer(psoc, vdev_id);
return os_if_nan_generic_req(psoc, tb);
}
/*
* Send all requests other than Enable/Disable as type GENERIC.