qcacmn: Introduce monitor 2.0 packet processing flag

QCA_MONITOR_2_0_PKT_SUPPORT is introduced for packet
processing code.

Change-Id: Ib4de57e3e74ca9161d0cb7e3507f9c28d06b8654
CRs-Fixed: 3647037
This commit is contained in:
Amir Patel
2023-11-02 16:12:14 +05:30
committed by Ravindra Konda
parent fc3c65c255
commit 136b01ad6b
4 changed files with 961 additions and 762 deletions

View File

@@ -255,6 +255,7 @@ struct dp_mon_desc_pool {
* @rx_mon_free_queue: RxMON ppdu info free element queue * @rx_mon_free_queue: RxMON ppdu info free element queue
* @ppdu_info_lock: RxPPDU ppdu info queue lock * @ppdu_info_lock: RxPPDU ppdu info queue lock
* @rx_mon_queue_depth: RxMON queue depth * @rx_mon_queue_depth: RxMON queue depth
* @ppdu_info_cache: PPDU info cache
* @desc_count: reaped status desc count * @desc_count: reaped status desc count
* @status: reaped status buffer per ppdu * @status: reaped status buffer per ppdu
* @lite_mon_rx_config: rx litemon config * @lite_mon_rx_config: rx litemon config
@@ -263,7 +264,6 @@ struct dp_mon_desc_pool {
* @prev_rxmon_cookie: prev rxmon cookie * @prev_rxmon_cookie: prev rxmon cookie
* @prev_rxmon_pkt_desc: prev packet buff desc * @prev_rxmon_pkt_desc: prev packet buff desc
* @prev_rxmon_pkt_cookie: prev packet buff desc cookie * @prev_rxmon_pkt_cookie: prev packet buff desc cookie
* @ppdu_info_cache: PPDU info cache
* @total_free_elem: total free element in queue * @total_free_elem: total free element in queue
* @rx_tlv_logger: Rx TLV logger struct * @rx_tlv_logger: Rx TLV logger struct
*/ */
@@ -276,6 +276,7 @@ struct dp_mon_pdev_be {
struct dp_pdev_tx_monitor_be tx_monitor_be; struct dp_pdev_tx_monitor_be tx_monitor_be;
struct dp_tx_monitor_drop_stats tx_stats; struct dp_tx_monitor_drop_stats tx_stats;
#endif #endif
#if defined(WLAN_PKT_CAPTURE_RX_2_0) && defined(QCA_MONITOR_2_0_PKT_SUPPORT)
qdf_spinlock_t rx_mon_wq_lock; qdf_spinlock_t rx_mon_wq_lock;
qdf_workqueue_t *rx_mon_workqueue; qdf_workqueue_t *rx_mon_workqueue;
qdf_work_t rx_mon_work; qdf_work_t rx_mon_work;
@@ -283,6 +284,8 @@ struct dp_mon_pdev_be {
TAILQ_HEAD(, hal_rx_ppdu_info) rx_mon_queue; TAILQ_HEAD(, hal_rx_ppdu_info) rx_mon_queue;
TAILQ_HEAD(, hal_rx_ppdu_info) rx_mon_free_queue; TAILQ_HEAD(, hal_rx_ppdu_info) rx_mon_free_queue;
qdf_spinlock_t ppdu_info_lock; qdf_spinlock_t ppdu_info_lock;
qdf_kmem_cache_t ppdu_info_cache;
#endif
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];
@@ -294,7 +297,6 @@ struct dp_mon_pdev_be {
uint32_t prev_rxmon_cookie; uint32_t prev_rxmon_cookie;
void *prev_rxmon_pkt_desc; void *prev_rxmon_pkt_desc;
uint32_t prev_rxmon_pkt_cookie; uint32_t prev_rxmon_pkt_cookie;
qdf_kmem_cache_t ppdu_info_cache;
uint32_t total_free_elem; uint32_t total_free_elem;
#ifdef MONITOR_TLV_RECORDING_ENABLE #ifdef MONITOR_TLV_RECORDING_ENABLE
struct dp_mon_tlv_logger *rx_tlv_log; struct dp_mon_tlv_logger *rx_tlv_log;

File diff suppressed because it is too large Load Diff

View File

@@ -20,6 +20,7 @@
#include <qdf_nbuf_frag.h> #include <qdf_nbuf_frag.h>
#include <hal_be_api_mon.h> #include <hal_be_api_mon.h>
#include <dp_mon_2.0.h>
#define DP_RX_MON_PACKET_OFFSET 8 #define DP_RX_MON_PACKET_OFFSET 8
#define DP_RX_MON_RX_HDR_OFFSET 8 #define DP_RX_MON_RX_HDR_OFFSET 8
@@ -81,6 +82,7 @@ static inline void dp_rx_mon_ppdu_info_cache_destroy(struct dp_pdev *pdev)
static inline struct hal_rx_ppdu_info* static inline struct hal_rx_ppdu_info*
dp_rx_mon_get_ppdu_info(struct dp_mon_pdev *mon_pdev) dp_rx_mon_get_ppdu_info(struct dp_mon_pdev *mon_pdev)
{ {
qdf_mem_zero(&mon_pdev->ppdu_info, sizeof(struct hal_rx_ppdu_info));
return &mon_pdev->ppdu_info; return &mon_pdev->ppdu_info;
} }
@@ -202,6 +204,85 @@ dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
QDF_STATUS dp_rx_mon_soc_attach_2_0(struct dp_soc *soc, int lmac_id); QDF_STATUS dp_rx_mon_soc_attach_2_0(struct dp_soc *soc, int lmac_id);
void dp_rx_mon_soc_detach_2_0(struct dp_soc *soc, int lmac_id); void dp_rx_mon_soc_detach_2_0(struct dp_soc *soc, int lmac_id);
void dp_rx_mon_soc_deinit_2_0(struct dp_soc *soc, uint32_t lmac_id); void dp_rx_mon_soc_deinit_2_0(struct dp_soc *soc, uint32_t lmac_id);
#ifndef QCA_MONITOR_2_0_PKT_SUPPORT
static inline QDF_STATUS dp_rx_mon_init_wq_sm(struct dp_pdev *pdev)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS dp_rx_mon_deinit_wq_sm(struct dp_pdev *pdev)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
dp_rx_mon_add_ppdu_info_to_wq(struct dp_pdev *pdev,
struct hal_rx_ppdu_info *ppdu_info)
{
return QDF_STATUS_SUCCESS;
}
static inline int
dp_rx_mon_flush_packet_tlv(struct dp_pdev *pdev, void *buf, uint16_t end_offset,
union dp_mon_desc_list_elem_t **desc_list,
union dp_mon_desc_list_elem_t **tail)
{
return 0;
}
static inline void
dp_rx_mon_handle_rx_hdr(struct dp_pdev *pdev,
struct hal_rx_ppdu_info *ppdu_info,
void *status_frag)
{
}
static inline uint16_t
dp_rx_mon_handle_mon_buf_addr(struct dp_pdev *pdev,
struct hal_rx_ppdu_info *ppdu_info,
union dp_mon_desc_list_elem_t **desc_list,
union dp_mon_desc_list_elem_t **tail)
{
return 0;
}
static inline void
dp_rx_mon_handle_msdu_end(struct dp_pdev *pdev,
struct hal_rx_ppdu_info *ppdu_info)
{
}
static inline void
dp_rx_mon_reset_mpdu_q(struct hal_rx_ppdu_info *ppdu_info)
{
}
static inline void
dp_rx_mon_handle_mpdu_start(struct hal_rx_ppdu_info *ppdu_info)
{
}
static inline void
dp_rx_mon_handle_mpdu_end(struct hal_rx_ppdu_info *ppdu_info)
{
}
static inline QDF_STATUS
dp_rx_mon_nbuf_add_rx_frag(qdf_nbuf_t nbuf, qdf_frag_t *frag,
uint16_t frag_len, uint16_t offset,
uint16_t buf_size, bool frag_ref)
{
return 0;
}
static inline void
dp_rx_mon_pf_tag_to_buf_headroom_2_0(void *nbuf,
struct hal_rx_ppdu_info *ppdu_info,
struct dp_pdev *pdev, struct dp_soc *soc)
{
}
#endif
#else #else
static inline QDF_STATUS dp_mon_pdev_ext_init_2_0(struct dp_pdev *pdev) static inline QDF_STATUS dp_mon_pdev_ext_init_2_0(struct dp_pdev *pdev)
{ {

View File

@@ -1311,16 +1311,16 @@ struct hal_rx_ppdu_info {
struct hal_rx_mon_mpdu_info mpdu_info[HAL_MAX_UL_MU_USERS]; struct hal_rx_mon_mpdu_info mpdu_info[HAL_MAX_UL_MU_USERS];
/* placeholder to hold packet buffer info */ /* placeholder to hold packet buffer info */
struct hal_mon_packet_info packet_info; struct hal_mon_packet_info packet_info;
#ifdef WLAN_PKT_CAPTURE_RX_2_0 #if defined(WLAN_PKT_CAPTURE_RX_2_0) && defined(QCA_MONITOR_2_0_PKT_SUPPORT)
/* per user per MPDU queue */ /* per user per MPDU queue */
qdf_nbuf_queue_t mpdu_q[HAL_MAX_UL_MU_USERS]; qdf_nbuf_queue_t mpdu_q[HAL_MAX_UL_MU_USERS];
#endif
/* ppdu info list element */ /* ppdu info list element */
TAILQ_ENTRY(hal_rx_ppdu_info) ppdu_list_elem; TAILQ_ENTRY(hal_rx_ppdu_info) ppdu_list_elem;
/* ppdu info free list element */ /* ppdu info free list element */
TAILQ_ENTRY(hal_rx_ppdu_info) ppdu_free_list_elem; TAILQ_ENTRY(hal_rx_ppdu_info) ppdu_free_list_elem;
/* placeholder to track if RX_HDR is received */ /* placeholder to track if RX_HDR is received */
uint8_t rx_hdr_rcvd[HAL_MAX_UL_MU_USERS]; uint8_t rx_hdr_rcvd[HAL_MAX_UL_MU_USERS];
#endif
/* Per user BAR and NDPA bit flag */ /* Per user BAR and NDPA bit flag */
struct hal_rx_user_ctrl_frm_info ctrl_frm_info[HAL_MAX_UL_MU_USERS]; struct hal_rx_user_ctrl_frm_info ctrl_frm_info[HAL_MAX_UL_MU_USERS];
/* PPDU end user stats count */ /* PPDU end user stats count */