qcacmn: Add support for noACK frames
Intercept monitor destination path for NDPA frames, use it to generate noack frames for tx capture. Change-Id: Ia54196bd84729a7863954b6deec7e02b52f23556 CRs-Fixed: 2605672
This commit is contained in:
@@ -28,6 +28,29 @@
|
|||||||
#include "dp_rx_mon.h"
|
#include "dp_rx_mon.h"
|
||||||
#include "wlan_cfg.h"
|
#include "wlan_cfg.h"
|
||||||
#include "dp_internal.h"
|
#include "dp_internal.h"
|
||||||
|
#ifdef WLAN_TX_PKT_CAPTURE_ENH
|
||||||
|
#include "dp_rx_mon_feature.h"
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
dp_handle_tx_capture(struct dp_soc *soc, struct dp_pdev *pdev,
|
||||||
|
qdf_nbuf_t mon_mpdu)
|
||||||
|
{
|
||||||
|
struct hal_rx_ppdu_info *ppdu_info = &pdev->ppdu_info;
|
||||||
|
|
||||||
|
if (pdev->tx_capture_enabled != CDP_TX_ENH_CAPTURE_DISABLED &&
|
||||||
|
ppdu_info->sw_frame_group_id == HAL_MPDU_SW_FRAME_GROUP_CTRL_NDPA)
|
||||||
|
dp_handle_tx_capture_from_dest(soc, pdev, mon_mpdu);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
static inline void
|
||||||
|
dp_handle_tx_capture(struct dp_soc *soc, struct dp_pdev *pdev,
|
||||||
|
qdf_nbuf_t mon_mpdu)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* The maxinum buffer length allocated for radio tap */
|
/* The maxinum buffer length allocated for radio tap */
|
||||||
#define MAX_MONITOR_HEADER (512)
|
#define MAX_MONITOR_HEADER (512)
|
||||||
@@ -963,6 +986,8 @@ QDF_STATUS dp_rx_mon_deliver(struct dp_soc *soc, uint32_t mac_id,
|
|||||||
pdev->ppdu_info.rx_status.chan_noise_floor =
|
pdev->ppdu_info.rx_status.chan_noise_floor =
|
||||||
pdev->chan_noise_floor;
|
pdev->chan_noise_floor;
|
||||||
|
|
||||||
|
dp_handle_tx_capture(soc, pdev, mon_mpdu);
|
||||||
|
|
||||||
if (!qdf_nbuf_update_radiotap(&pdev->ppdu_info.rx_status,
|
if (!qdf_nbuf_update_radiotap(&pdev->ppdu_info.rx_status,
|
||||||
mon_mpdu,
|
mon_mpdu,
|
||||||
qdf_nbuf_headroom(mon_mpdu))) {
|
qdf_nbuf_headroom(mon_mpdu))) {
|
||||||
|
@@ -1191,6 +1191,7 @@ hal_rx_msdu_start_toeplitz_get(uint8_t *buf)
|
|||||||
* @ HAL_MPDU_SW_FRAME_GROUP_MGMT: management frame
|
* @ HAL_MPDU_SW_FRAME_GROUP_MGMT: management frame
|
||||||
* @ HAL_MPDU_SW_FRAME_GROUP_MGMT_PROBE_REQ: probe req frame
|
* @ HAL_MPDU_SW_FRAME_GROUP_MGMT_PROBE_REQ: probe req frame
|
||||||
* @ HAL_MPDU_SW_FRAME_GROUP_CTRL: control frame
|
* @ HAL_MPDU_SW_FRAME_GROUP_CTRL: control frame
|
||||||
|
* @ HAL_MPDU_SW_FRAME_GROUP_CTRL_NDPA: NDPA frame
|
||||||
* @ HAL_MPDU_SW_FRAME_GROUP_CTRL_BAR: BAR frame
|
* @ HAL_MPDU_SW_FRAME_GROUP_CTRL_BAR: BAR frame
|
||||||
* @ HAL_MPDU_SW_FRAME_GROUP_CTRL_RTS: RTS frame
|
* @ HAL_MPDU_SW_FRAME_GROUP_CTRL_RTS: RTS frame
|
||||||
* @ HAL_MPDU_SW_FRAME_GROUP_UNSUPPORTED: unsupported
|
* @ HAL_MPDU_SW_FRAME_GROUP_UNSUPPORTED: unsupported
|
||||||
@@ -1205,6 +1206,7 @@ enum hal_rx_mpdu_info_sw_frame_group_id_type {
|
|||||||
HAL_MPDU_SW_FRAME_GROUP_MGMT_PROBE_REQ = 8,
|
HAL_MPDU_SW_FRAME_GROUP_MGMT_PROBE_REQ = 8,
|
||||||
HAL_MPDU_SW_FRAME_GROUP_MGMT_BEACON = 12,
|
HAL_MPDU_SW_FRAME_GROUP_MGMT_BEACON = 12,
|
||||||
HAL_MPDU_SW_FRAME_GROUP_CTRL = 20,
|
HAL_MPDU_SW_FRAME_GROUP_CTRL = 20,
|
||||||
|
HAL_MPDU_SW_FRAME_GROUP_CTRL_NDPA = 25,
|
||||||
HAL_MPDU_SW_FRAME_GROUP_CTRL_BAR = 28,
|
HAL_MPDU_SW_FRAME_GROUP_CTRL_BAR = 28,
|
||||||
HAL_MPDU_SW_FRAME_GROUP_CTRL_RTS = 31,
|
HAL_MPDU_SW_FRAME_GROUP_CTRL_RTS = 31,
|
||||||
HAL_MPDU_SW_FRAME_GROUP_UNSUPPORTED = 36,
|
HAL_MPDU_SW_FRAME_GROUP_UNSUPPORTED = 36,
|
||||||
|
Reference in New Issue
Block a user