qcacmn: Add lite monitor set/get functions

-Add lite monitor tx/rx filter config set/get fucntions
-Add lite monitor tx/rx peer config set/get functions

Change-Id: I47cc1085c64468b8a0fada871e2f5d3707ca7063
CRs-Fixed: 3078298
This commit is contained in:
Jeevan Kukkalli
2021-11-18 23:49:47 +05:30
committed by Madan Koyyalamudi
parent a68a2f3b18
commit 7f9da4ae12
11 changed files with 375 additions and 4 deletions

View File

@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2016-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 * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -68,4 +69,153 @@ cdp_deliver_tx_mgmt(ol_txrx_soc_handle soc, uint8_t pdev_id,
return soc->ops->mon_ops->txrx_deliver_tx_mgmt(soc, pdev_id, nbuf); return soc->ops->mon_ops->txrx_deliver_tx_mgmt(soc, pdev_id, nbuf);
} }
#ifdef QCA_SUPPORT_LITE_MONITOR
/*
* cdp_set_lite_mon_config() - Set lite monitor config/filter
*
*@soc: dp soc handle
*@config: lite monitor config
*@pdev_id: pdev id
*
* This API is used to enable/disable lite monitor feature
*
* Return: QDF_STATUS_SUCCESS if value set successfully
* QDF_STATUS_E_INVAL false if error
*/
static inline QDF_STATUS
cdp_set_lite_mon_config(ol_txrx_soc_handle soc,
struct cdp_lite_mon_filter_config *config,
uint8_t pdev_id)
{
if (!soc || !soc->ops) {
dp_cdp_debug("Invalid Instance");
return QDF_STATUS_E_INVAL;
}
if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_set_lite_mon_config)
return QDF_STATUS_E_INVAL;
return soc->ops->mon_ops->txrx_set_lite_mon_config(soc, config,
pdev_id);
}
/*
* cdp_get_lite_mon_config() - Get lite monitor config
*
*@soc: dp soc handle
*@config: lite monitor config
*@pdev_id: pdev id
*
* This API is used to get lite monitor feature config
*
* Return: QDF_STATUS_SUCCESS if get is successfully
* QDF_STATUS_E_INVAL false if error
*/
static inline QDF_STATUS
cdp_get_lite_mon_config(ol_txrx_soc_handle soc,
struct cdp_lite_mon_filter_config *config,
uint8_t pdev_id)
{
if (!soc || !soc->ops) {
dp_cdp_debug("Invalid Instance");
return QDF_STATUS_E_INVAL;
}
if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_get_lite_mon_config)
return QDF_STATUS_E_INVAL;
return soc->ops->mon_ops->txrx_get_lite_mon_config(soc, config,
pdev_id);
}
/*
* cdp_set_lite_mon_peer_config() - Set lite monitor peer config
*
*@soc: dp soc handle
*@config: lite monitor peer config
*@pdev_id: pdev id
*
* This API is used to add/del lite monitor peers
*
* Return: QDF_STATUS_SUCCESS if value set successfully
* QDF_STATUS_E_INVAL false if error
*/
static inline QDF_STATUS
cdp_set_lite_mon_peer_config(ol_txrx_soc_handle soc,
struct cdp_lite_mon_peer_config *config,
uint8_t pdev_id)
{
if (!soc || !soc->ops) {
dp_cdp_debug("Invalid Instance");
return QDF_STATUS_E_INVAL;
}
if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_set_lite_mon_peer_config)
return QDF_STATUS_E_INVAL;
return soc->ops->mon_ops->txrx_set_lite_mon_peer_config(soc, config,
pdev_id);
}
/*
* cdp_get_lite_mon_peer_config() - Get lite monitor peer list
*
*@soc: dp soc handle
*@info: lite monitor peer info
*@pdev_id: pdev id
*
* This API is used to get lite monitor peers
*
* Return: QDF_STATUS_SUCCESS if value set successfully
* QDF_STATUS_E_INVAL false if error
*/
static inline QDF_STATUS
cdp_get_lite_mon_peer_config(ol_txrx_soc_handle soc,
struct cdp_lite_mon_peer_info *info,
uint8_t pdev_id)
{
if (!soc || !soc->ops) {
dp_cdp_debug("Invalid Instance");
return QDF_STATUS_E_INVAL;
}
if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_get_lite_mon_peer_config)
return QDF_STATUS_E_INVAL;
return soc->ops->mon_ops->txrx_get_lite_mon_peer_config(soc, info,
pdev_id);
}
/*
* cdp_is_lite_mon_enabled() - Get lite monitor enable status
*
*@soc: dp soc handle
*@pdev_id: pdev id
*@dir: direction tx/rx
*
* This API is used to get lite monitor enable status
*
* Return: 0 if disabled
* 1 if enabled
*/
static inline int
cdp_is_lite_mon_enabled(ol_txrx_soc_handle soc,
uint8_t pdev_id, uint8_t dir)
{
if (!soc || !soc->ops) {
dp_cdp_debug("Invalid Instance");
return 0;
}
if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_is_lite_mon_enabled)
return 0;
return soc->ops->mon_ops->txrx_is_lite_mon_enabled(soc, pdev_id, dir);
}
#endif
#endif #endif

View File

@@ -25,6 +25,35 @@
#ifndef _CDP_TXRX_MON_STRUCT_H_ #ifndef _CDP_TXRX_MON_STRUCT_H_
#define _CDP_TXRX_MON_STRUCT_H_ #define _CDP_TXRX_MON_STRUCT_H_
#ifdef QCA_SUPPORT_LITE_MONITOR
#define CDP_LITE_MON_MODE_MAX 3
#define CDP_LITE_MON_FRM_TYPE_MAX 3
#define CDP_LITE_MON_PEER_MAX 16
/* lite mon peer action */
enum cdp_lite_mon_peer_action {
CDP_LITE_MON_PEER_ADD = 0,
CDP_LITE_MON_PEER_REMOVE = 1,
};
/* lite mon peer types */
enum cdp_lite_mon_peer_type {
CDP_LITE_MON_PEER_TYPE_ASSOCIATED = 0,
CDP_LITE_MON_PEER_TYPE_NON_ASSOCIATED = 1,
CDP_LITE_MON_PEER_TYPE_MAX = 2,
};
/* lite mon config direction */
enum cdp_lite_mon_direction {
CDP_LITE_MON_DIRECTION_RX = 1,
CDP_LITE_MON_DIRECTION_TX = 2,
};
/* This should align with nac mac type enumerations in ieee80211_ioctl.h */
#define CDP_LITE_MON_PEER_MAC_TYPE_CLIENT 2
#endif
/* XXX not really a mode; there are really multiple PHY's */ /* XXX not really a mode; there are really multiple PHY's */
enum cdp_mon_phymode { enum cdp_mon_phymode {
/* autoselect */ /* autoselect */
@@ -354,4 +383,62 @@ struct cdp_pdev_mon_stats {
uint32_t rx_undecoded_error[CDP_PHYRX_ERR_MAX]; uint32_t rx_undecoded_error[CDP_PHYRX_ERR_MAX];
#endif #endif
}; };
#ifdef QCA_SUPPORT_LITE_MONITOR
/**
* cdp_lite_mon_filter_config - lite mon set/get filter config
* @direction: direction tx/rx
* @disable: disables lite mon
* @level: MSDU/MPDU/PPDU levels
* @metadata: meta information to be added
* @mgmt_filter: mgmt filter for modes fp,md,mo
* @ctrl_filter: ctrl filter for modes fp,md,mo
* @data_filter: data filter for modes fp,md,mo
* @len: mgmt/ctrl/data frame lens
* @debug: debug options
* @vdev_id: output vdev id
*/
struct cdp_lite_mon_filter_config {
uint8_t direction;
uint8_t disable;
uint8_t level;
uint8_t metadata;
uint16_t mgmt_filter[CDP_LITE_MON_MODE_MAX];
uint16_t ctrl_filter[CDP_LITE_MON_MODE_MAX];
uint16_t data_filter[CDP_LITE_MON_MODE_MAX];
uint16_t len[CDP_LITE_MON_FRM_TYPE_MAX];
uint8_t debug;
uint8_t vdev_id;
};
/**
* cdp_lite_mon_peer_config - lite mon set peer config
* @direction: direction tx/rx
* @action: add/del
* @type: assoc/non-assoc
* @vdev_id: peer vdev id
* @mac: peer mac
*/
struct cdp_lite_mon_peer_config {
uint8_t direction;
uint8_t action;
uint8_t type;
uint8_t vdev_id;
uint8_t mac[QDF_MAC_ADDR_SIZE];
};
/**
* cdp_lite_mon_peer_info - lite mon get peer config
* @direction: direction tx/rx
* @type: assoc/non-assoc
* @count: no of peers
* @mac: peer macs
*/
struct cdp_lite_mon_peer_info {
uint8_t direction;
uint8_t type;
uint8_t count;
uint8_t mac[CDP_LITE_MON_PEER_MAX][QDF_MAC_ADDR_SIZE];
};
#endif
#endif #endif

View File

@@ -930,6 +930,42 @@ struct cdp_mon_ops {
void (*txrx_enable_mon_reap_timer)(struct cdp_soc_t *soc_hdl, void (*txrx_enable_mon_reap_timer)(struct cdp_soc_t *soc_hdl,
uint8_t pdev_id, uint8_t pdev_id,
bool enable); bool enable);
#ifdef QCA_SUPPORT_LITE_MONITOR
/* set lite monitor config */
QDF_STATUS
(*txrx_set_lite_mon_config)(
struct cdp_soc_t *soc,
struct cdp_lite_mon_filter_config *mon_config,
uint8_t pdev_id);
/* get lite monitor config */
QDF_STATUS
(*txrx_get_lite_mon_config)(
struct cdp_soc_t *soc,
struct cdp_lite_mon_filter_config *mon_config,
uint8_t pdev_id);
/* set lite monitor peer config */
QDF_STATUS
(*txrx_set_lite_mon_peer_config)(
struct cdp_soc_t *soc,
struct cdp_lite_mon_peer_config *peer_config,
uint8_t pdev_id);
/* get lite monitor peer list */
QDF_STATUS
(*txrx_get_lite_mon_peer_config)(
struct cdp_soc_t *soc,
struct cdp_lite_mon_peer_info *info,
uint8_t pdev_id);
/* get lite monitor enable/disable status */
int
(*txrx_is_lite_mon_enabled)(struct cdp_soc_t *soc,
uint8_t pdev_id,
uint8_t direction);
#endif
}; };
struct cdp_host_stats_ops { struct cdp_host_stats_ops {
@@ -1344,6 +1380,13 @@ struct ol_if_ops {
uint32_t module_id, uint32_t module_id,
uint32_t arg_count, uint32_t *arg); uint32_t arg_count, uint32_t *arg);
#ifdef QCA_SUPPORT_LITE_MONITOR
int (*config_lite_mon_peer)(struct cdp_ctrl_objmgr_psoc *psoc,
uint8_t pdev_id,
uint8_t vdev_id,
enum cdp_nac_param_cmd cmd,
uint8_t *peer_mac);
#endif
}; };
#ifdef DP_PEER_EXTENDED_API #ifdef DP_PEER_EXTENDED_API

View File

@@ -706,6 +706,8 @@ enum WDI_EVENT {
#ifdef QCA_UNDECODED_METADATA_SUPPORT #ifdef QCA_UNDECODED_METADATA_SUPPORT
WDI_EVENT_RX_PPDU_DESC_UNDECODED_METADATA, WDI_EVENT_RX_PPDU_DESC_UNDECODED_METADATA,
#endif #endif
WDI_EVENT_LITE_MON_RX,
WDI_EVENT_LITE_MON_TX,
/* End of new event items */ /* End of new event items */
WDI_EVENT_LAST WDI_EVENT_LAST
}; };

View File

@@ -1211,6 +1211,9 @@ struct dp_mon_ops monitor_ops_1_0 = {
.mon_tx_ppdu_stats_detach = NULL, .mon_tx_ppdu_stats_detach = NULL,
.mon_peer_tx_capture_filter_check = NULL, .mon_peer_tx_capture_filter_check = NULL,
#endif #endif
.mon_lite_mon_alloc = NULL,
.mon_lite_mon_dealloc = NULL,
.mon_lite_mon_vdev_delete = NULL,
}; };
struct cdp_mon_ops dp_ops_mon_1_0 = { struct cdp_mon_ops dp_ops_mon_1_0 = {
@@ -1222,6 +1225,13 @@ struct cdp_mon_ops dp_ops_mon_1_0 = {
.soc_config_full_mon_mode = dp_soc_config_full_mon_mode, .soc_config_full_mon_mode = dp_soc_config_full_mon_mode,
.get_mon_pdev_rx_stats = dp_pdev_get_rx_mon_stats, .get_mon_pdev_rx_stats = dp_pdev_get_rx_mon_stats,
.txrx_enable_mon_reap_timer = dp_enable_mon_reap_timer, .txrx_enable_mon_reap_timer = dp_enable_mon_reap_timer,
#ifdef QCA_SUPPORT_LITE_MONITOR
.txrx_set_lite_mon_config = NULL,
.txrx_get_lite_mon_config = NULL,
.txrx_set_lite_mon_peer_config = NULL,
.txrx_get_lite_mon_peer_config = NULL,
.txrx_is_lite_mon_enabled = NULL,
#endif
}; };
#ifdef QCA_MONITOR_OPS_PER_SOC_SUPPORT #ifdef QCA_MONITOR_OPS_PER_SOC_SUPPORT

View File

@@ -29,6 +29,9 @@
#include <hal_be_api_mon.h> #include <hal_be_api_mon.h>
#include <dp_be.h> #include <dp_be.h>
#include <htt_ppdu_stats.h> #include <htt_ppdu_stats.h>
#ifdef QCA_SUPPORT_LITE_MONITOR
#include "dp_lite_mon.h"
#endif
#if !defined(DISABLE_MON_CONFIG) #if !defined(DISABLE_MON_CONFIG)
@@ -1317,6 +1320,9 @@ struct dp_mon_ops monitor_ops_2_0 = {
#endif #endif
.mon_pdev_ext_init = dp_mon_pdev_ext_init_2_0, .mon_pdev_ext_init = dp_mon_pdev_ext_init_2_0,
.mon_pdev_ext_deinit = dp_mon_pdev_ext_deinit_2_0, .mon_pdev_ext_deinit = dp_mon_pdev_ext_deinit_2_0,
.mon_lite_mon_alloc = dp_lite_mon_alloc,
.mon_lite_mon_dealloc = dp_lite_mon_dealloc,
.mon_lite_mon_vdev_delete = dp_lite_mon_vdev_delete,
}; };
struct cdp_mon_ops dp_ops_mon_2_0 = { struct cdp_mon_ops dp_ops_mon_2_0 = {
@@ -1328,6 +1334,13 @@ struct cdp_mon_ops dp_ops_mon_2_0 = {
.soc_config_full_mon_mode = NULL, .soc_config_full_mon_mode = NULL,
.get_mon_pdev_rx_stats = dp_pdev_get_rx_mon_stats, .get_mon_pdev_rx_stats = dp_pdev_get_rx_mon_stats,
.txrx_enable_mon_reap_timer = dp_enable_mon_reap_timer, .txrx_enable_mon_reap_timer = dp_enable_mon_reap_timer,
#ifdef QCA_SUPPORT_LITE_MONITOR
.txrx_set_lite_mon_config = dp_lite_mon_set_config,
.txrx_get_lite_mon_config = dp_lite_mon_get_config,
.txrx_set_lite_mon_peer_config = dp_lite_mon_set_peer_config,
.txrx_get_lite_mon_peer_config = dp_lite_mon_get_peer_config,
.txrx_is_lite_mon_enabled = dp_lite_mon_is_enabled,
#endif
}; };
#ifdef QCA_MONITOR_OPS_PER_SOC_SUPPORT #ifdef QCA_MONITOR_OPS_PER_SOC_SUPPORT

View File

@@ -130,6 +130,10 @@ struct dp_mon_pdev_be {
uint16_t rx_mon_queue_depth; uint16_t rx_mon_queue_depth;
uint16_t desc_count; uint16_t desc_count;
struct dp_mon_desc *status[DP_MON_MAX_STATUS_BUF]; struct dp_mon_desc *status[DP_MON_MAX_STATUS_BUF];
#ifdef QCA_SUPPORT_LITE_MONITOR
struct dp_lite_mon_rx_config *lite_mon_rx_config;
struct dp_lite_mon_tx_config *lite_mon_tx_config;
#endif
}; };
/** /**

View File

@@ -4974,10 +4974,17 @@ QDF_STATUS dp_mon_pdev_init(struct dp_pdev *pdev)
if (dp_htt_ppdu_stats_attach(pdev) != QDF_STATUS_SUCCESS) if (dp_htt_ppdu_stats_attach(pdev) != QDF_STATUS_SUCCESS)
goto fail2; goto fail2;
if (mon_ops->mon_lite_mon_alloc) {
if (mon_ops->mon_lite_mon_alloc(pdev) != QDF_STATUS_SUCCESS) {
dp_mon_err("%pK: lite mon alloc failed", pdev);
goto fail3;
}
}
if (mon_ops->mon_rings_init) { if (mon_ops->mon_rings_init) {
if (mon_ops->mon_rings_init(pdev)) { if (mon_ops->mon_rings_init(pdev)) {
dp_mon_err("%pK: MONITOR rings setup failed", pdev); dp_mon_err("%pK: MONITOR rings setup failed", pdev);
goto fail3; goto fail4;
} }
} }
@@ -4989,7 +4996,7 @@ QDF_STATUS dp_mon_pdev_init(struct dp_pdev *pdev)
if (mon_ops->rx_mon_buffers_alloc) { if (mon_ops->rx_mon_buffers_alloc) {
if (mon_ops->rx_mon_buffers_alloc(pdev)) { if (mon_ops->rx_mon_buffers_alloc(pdev)) {
dp_mon_err("%pK: rx mon buffers alloc failed", pdev); dp_mon_err("%pK: rx mon buffers alloc failed", pdev);
goto fail4; goto fail5;
} }
} }
@@ -5004,13 +5011,15 @@ QDF_STATUS dp_mon_pdev_init(struct dp_pdev *pdev)
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
fail4: fail5:
if (mon_ops->rx_mon_desc_pool_deinit) if (mon_ops->rx_mon_desc_pool_deinit)
mon_ops->rx_mon_desc_pool_deinit(pdev); mon_ops->rx_mon_desc_pool_deinit(pdev);
if (mon_ops->mon_rings_deinit) if (mon_ops->mon_rings_deinit)
mon_ops->mon_rings_deinit(pdev); mon_ops->mon_rings_deinit(pdev);
fail4:
if (mon_ops->mon_lite_mon_dealloc)
mon_ops->mon_lite_mon_dealloc(pdev);
fail3: fail3:
dp_htt_ppdu_stats_detach(pdev); dp_htt_ppdu_stats_detach(pdev);
fail2: fail2:
@@ -5050,6 +5059,8 @@ QDF_STATUS dp_mon_pdev_deinit(struct dp_pdev *pdev)
if (mon_ops->mon_rings_deinit) if (mon_ops->mon_rings_deinit)
mon_ops->mon_rings_deinit(pdev); mon_ops->mon_rings_deinit(pdev);
dp_cal_client_detach(&mon_pdev->cal_client_ctx); dp_cal_client_detach(&mon_pdev->cal_client_ctx);
if (mon_ops->mon_lite_mon_dealloc)
mon_ops->mon_lite_mon_dealloc(pdev);
dp_htt_ppdu_stats_detach(pdev); dp_htt_ppdu_stats_detach(pdev);
qdf_spinlock_destroy(&mon_pdev->ppdu_stats_lock); qdf_spinlock_destroy(&mon_pdev->ppdu_stats_lock);
dp_neighbour_peers_detach(pdev); dp_neighbour_peers_detach(pdev);
@@ -5090,6 +5101,10 @@ QDF_STATUS dp_mon_vdev_detach(struct dp_vdev *vdev)
{ {
struct dp_mon_vdev *mon_vdev = vdev->monitor_vdev; struct dp_mon_vdev *mon_vdev = vdev->monitor_vdev;
struct dp_pdev *pdev = vdev->pdev; struct dp_pdev *pdev = vdev->pdev;
struct dp_mon_ops *mon_ops = dp_mon_ops_get(pdev->soc);
if (!mon_ops)
return QDF_STATUS_E_FAILURE;
if (!mon_vdev) if (!mon_vdev)
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
@@ -5104,6 +5119,9 @@ QDF_STATUS dp_mon_vdev_detach(struct dp_vdev *vdev)
if (pdev->monitor_pdev->mvdev == vdev) if (pdev->monitor_pdev->mvdev == vdev)
pdev->monitor_pdev->mvdev = NULL; pdev->monitor_pdev->mvdev = NULL;
if (mon_ops->mon_lite_mon_vdev_delete)
mon_ops->mon_lite_mon_vdev_delete(pdev, vdev);
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }

View File

@@ -28,6 +28,10 @@
#include "dp_tx_capture.h" #include "dp_tx_capture.h"
#endif #endif
#ifdef QCA_SUPPORT_LITE_MONITOR
#include "dp_lite_mon.h"
#endif
#define DP_INTR_POLL_TIMER_MS 5 #define DP_INTR_POLL_TIMER_MS 5
#define MON_VDEV_TIMER_INIT 0x1 #define MON_VDEV_TIMER_INIT 0x1
@@ -765,6 +769,10 @@ struct dp_mon_ops {
#endif #endif
QDF_STATUS (*mon_pdev_ext_init)(struct dp_pdev *pdev); QDF_STATUS (*mon_pdev_ext_init)(struct dp_pdev *pdev);
QDF_STATUS (*mon_pdev_ext_deinit)(struct dp_pdev *pdev); QDF_STATUS (*mon_pdev_ext_deinit)(struct dp_pdev *pdev);
QDF_STATUS (*mon_lite_mon_alloc)(struct dp_pdev *pdev);
void (*mon_lite_mon_dealloc)(struct dp_pdev *pdev);
void (*mon_lite_mon_vdev_delete)(struct dp_pdev *pdev,
struct dp_vdev *vdev);
}; };
struct dp_mon_soc { struct dp_mon_soc {
@@ -3907,6 +3915,7 @@ void dp_mon_register_feature_ops(struct dp_soc *soc)
*/ */
QDF_STATUS dp_pdev_get_rx_mon_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, QDF_STATUS dp_pdev_get_rx_mon_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
struct cdp_pdev_mon_stats *stats); struct cdp_pdev_mon_stats *stats);
/* /*
* dp_enable_mon_reap_timer() - enable/disable reap timer * dp_enable_mon_reap_timer() - enable/disable reap timer
* @soc_hdl: Datapath soc handle * @soc_hdl: Datapath soc handle
@@ -3917,4 +3926,34 @@ QDF_STATUS dp_pdev_get_rx_mon_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
*/ */
void dp_enable_mon_reap_timer(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void dp_enable_mon_reap_timer(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
bool enable); bool enable);
#ifndef QCA_SUPPORT_LITE_MONITOR
static inline int
dp_lite_mon_is_rx_enabled(struct dp_mon_pdev *mon_pdev)
{
return 0;
}
static inline int
dp_lite_mon_is_tx_enabled(struct dp_mon_pdev *mon_pdev)
{
return 0;
}
static inline QDF_STATUS
dp_lite_mon_alloc(struct dp_pdev *pdev)
{
return QDF_STATUS_SUCCESS;
}
static inline void
dp_lite_mon_dealloc(struct dp_pdev *pdev)
{
}
static inline void
dp_lite_mon_vdev_delete(struct dp_pdev *pdev, struct dp_vdev *vdev)
{
}
#endif
#endif /* _DP_MON_H_ */ #endif /* _DP_MON_H_ */

View File

@@ -285,6 +285,7 @@ typedef void (*wlan_objmgr_peer_status_handler)(
* @WLAN_MLO_MGR_ID: MLO manager reference id * @WLAN_MLO_MGR_ID: MLO manager reference id
* @WLAN_MGMT_RX_REO_ID: Management rx reorder reference id * @WLAN_MGMT_RX_REO_ID: Management rx reorder reference id
* @WLAN_MGMT_RX_REO_SIM_ID: Management rx reorder simulation reference id * @WLAN_MGMT_RX_REO_SIM_ID: Management rx reorder simulation reference id
* @WLAN_LITE_MON_ID: Lite monitor operations
* @WLAN_REF_ID_MAX: Max id used to generate ref count tracking array * @WLAN_REF_ID_MAX: Max id used to generate ref count tracking array
*/ */
/* New value added to the enum must also be reflected in function /* New value added to the enum must also be reflected in function
@@ -387,6 +388,7 @@ typedef enum {
WLAN_MGMT_RX_REO_ID = 92, WLAN_MGMT_RX_REO_ID = 92,
WLAN_MGMT_RX_REO_SIM_ID = 93, WLAN_MGMT_RX_REO_SIM_ID = 93,
WLAN_TWT_ID = 94, WLAN_TWT_ID = 94,
WLAN_LITE_MON_ID = 95,
WLAN_REF_ID_MAX, WLAN_REF_ID_MAX,
} wlan_objmgr_ref_dbgid; } wlan_objmgr_ref_dbgid;

View File

@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2016-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 * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -167,6 +168,8 @@ QDF_STATUS wmi_unified_vdev_set_neighbour_rx_cmd_send(
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
} }
qdf_export_symbol(wmi_unified_vdev_set_neighbour_rx_cmd_send);
QDF_STATUS wmi_extract_multi_vdev_restart_resp_event( QDF_STATUS wmi_extract_multi_vdev_restart_resp_event(
struct wmi_unified *wmi_handle, struct wmi_unified *wmi_handle,
void *evt_buf, void *evt_buf,