qcacld-3.0: Update frequency for Data packets for packet capture
Update frequency in pdev for data packets for packet capture mode Change-Id: I4d766cc6dca90529f00e90fb1c197ead208b1174 CRs-Fixed: 2643541
This commit is contained in:

committed by
nshrivas

parent
23c0830279
commit
87881bd647
@@ -190,10 +190,12 @@ void pkt_capture_record_channel(struct wlan_objmgr_vdev *vdev);
|
|||||||
* pkt_capture_mon() - Wrapper function to invoke mon cb
|
* pkt_capture_mon() - Wrapper function to invoke mon cb
|
||||||
* @cb_ctx: packet capture callback context
|
* @cb_ctx: packet capture callback context
|
||||||
* @msdu: packet
|
* @msdu: packet
|
||||||
|
* @vdev: pointer to vdev
|
||||||
|
* @ch_freq: channel frequency
|
||||||
*
|
*
|
||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
void pkt_capture_mon(struct pkt_capture_cb_context *cb_ctx,
|
void pkt_capture_mon(struct pkt_capture_cb_context *cb_ctx, qdf_nbuf_t msdu,
|
||||||
qdf_nbuf_t msdu);
|
struct wlan_objmgr_vdev *vdev, uint16_t ch_freq);
|
||||||
|
|
||||||
#endif /* end of _WLAN_PKT_CAPTURE_MAIN_H_ */
|
#endif /* end of _WLAN_PKT_CAPTURE_MAIN_H_ */
|
||||||
|
@@ -41,7 +41,7 @@
|
|||||||
typedef void (*pkt_capture_mon_thread_cb)(
|
typedef void (*pkt_capture_mon_thread_cb)(
|
||||||
void *context, void *ppdev, void *monpkt,
|
void *context, void *ppdev, void *monpkt,
|
||||||
uint8_t vdev_id, uint8_t tid,
|
uint8_t vdev_id, uint8_t tid,
|
||||||
uint8_t status, bool pkt_format,
|
uint16_t status, bool pkt_format,
|
||||||
uint8_t *bssid,
|
uint8_t *bssid,
|
||||||
uint8_t tx_retry_cnt);
|
uint8_t tx_retry_cnt);
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ struct pkt_capture_mon_pkt {
|
|||||||
void *monpkt;
|
void *monpkt;
|
||||||
uint8_t vdev_id;
|
uint8_t vdev_id;
|
||||||
uint8_t tid;
|
uint8_t tid;
|
||||||
uint8_t status;
|
uint16_t status;
|
||||||
bool pkt_format;
|
bool pkt_format;
|
||||||
uint8_t bssid[QDF_MAC_ADDR_SIZE];
|
uint8_t bssid[QDF_MAC_ADDR_SIZE];
|
||||||
uint8_t tx_retry_cnt;
|
uint8_t tx_retry_cnt;
|
||||||
|
@@ -434,7 +434,7 @@ static void
|
|||||||
pkt_capture_rx_data_cb(
|
pkt_capture_rx_data_cb(
|
||||||
void *context, void *ppdev, void *nbuf_list,
|
void *context, void *ppdev, void *nbuf_list,
|
||||||
uint8_t vdev_id, uint8_t tid,
|
uint8_t vdev_id, uint8_t tid,
|
||||||
uint8_t status, bool pkt_format,
|
uint16_t status, bool pkt_format,
|
||||||
uint8_t *bssid, uint8_t tx_retry_cnt)
|
uint8_t *bssid, uint8_t tx_retry_cnt)
|
||||||
{
|
{
|
||||||
struct pkt_capture_vdev_priv *vdev_priv;
|
struct pkt_capture_vdev_priv *vdev_priv;
|
||||||
@@ -528,7 +528,7 @@ pkt_capture_rx_data_cb(
|
|||||||
*/
|
*/
|
||||||
headroom = qdf_nbuf_headroom(msdu);
|
headroom = qdf_nbuf_headroom(msdu);
|
||||||
qdf_nbuf_update_radiotap(&rx_status, msdu, headroom);
|
qdf_nbuf_update_radiotap(&rx_status, msdu, headroom);
|
||||||
pkt_capture_mon(cb_ctx, msdu);
|
pkt_capture_mon(cb_ctx, msdu, vdev, 0);
|
||||||
msdu = next_buf;
|
msdu = next_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -556,7 +556,7 @@ free_buf:
|
|||||||
static void
|
static void
|
||||||
pkt_capture_tx_data_cb(
|
pkt_capture_tx_data_cb(
|
||||||
void *context, void *ppdev, void *nbuf_list, uint8_t vdev_id,
|
void *context, void *ppdev, void *nbuf_list, uint8_t vdev_id,
|
||||||
uint8_t tid, uint8_t status, bool pkt_format,
|
uint8_t tid, uint16_t status, bool pkt_format,
|
||||||
uint8_t *bssid, uint8_t tx_retry_cnt)
|
uint8_t *bssid, uint8_t tx_retry_cnt)
|
||||||
{
|
{
|
||||||
qdf_nbuf_t msdu, next_buf;
|
qdf_nbuf_t msdu, next_buf;
|
||||||
@@ -701,7 +701,7 @@ pkt_capture_tx_data_cb(
|
|||||||
*/
|
*/
|
||||||
headroom = qdf_nbuf_headroom(msdu);
|
headroom = qdf_nbuf_headroom(msdu);
|
||||||
qdf_nbuf_update_radiotap(&tx_status, msdu, headroom);
|
qdf_nbuf_update_radiotap(&tx_status, msdu, headroom);
|
||||||
pkt_capture_mon(cb_ctx, msdu);
|
pkt_capture_mon(cb_ctx, msdu, vdev, 0);
|
||||||
msdu = next_buf;
|
msdu = next_buf;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@@ -83,6 +83,7 @@ pkt_capture_register_callbacks(struct wlan_objmgr_vdev *vdev,
|
|||||||
|
|
||||||
target_if_pkt_capture_register_tx_ops(&vdev_priv->tx_ops);
|
target_if_pkt_capture_register_tx_ops(&vdev_priv->tx_ops);
|
||||||
target_if_pkt_capture_register_rx_ops(&vdev_priv->rx_ops);
|
target_if_pkt_capture_register_rx_ops(&vdev_priv->rx_ops);
|
||||||
|
pkt_capture_record_channel(vdev);
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@@ -58,7 +58,7 @@ pkt_capture_mgmt_status_map(uint8_t status)
|
|||||||
* @nbuf_list: netbuf list
|
* @nbuf_list: netbuf list
|
||||||
* @vdev_id: vdev id for which packet is captured
|
* @vdev_id: vdev id for which packet is captured
|
||||||
* @tid: tid number
|
* @tid: tid number
|
||||||
* @status: Tx status
|
* @ch_freq: channel frequency
|
||||||
* @pkt_format: Frame format
|
* @pkt_format: Frame format
|
||||||
* @tx_retry_cnt: tx retry count
|
* @tx_retry_cnt: tx retry count
|
||||||
*
|
*
|
||||||
@@ -66,7 +66,7 @@ pkt_capture_mgmt_status_map(uint8_t status)
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
pkt_capture_mgmtpkt_cb(void *context, void *ppdev, void *nbuf_list,
|
pkt_capture_mgmtpkt_cb(void *context, void *ppdev, void *nbuf_list,
|
||||||
uint8_t vdev_id, uint8_t tid, uint8_t status,
|
uint8_t vdev_id, uint8_t tid, uint16_t ch_freq,
|
||||||
bool pkt_format, uint8_t *bssid, uint8_t tx_retry_cnt)
|
bool pkt_format, uint8_t *bssid, uint8_t tx_retry_cnt)
|
||||||
{
|
{
|
||||||
struct pkt_capture_vdev_priv *vdev_priv;
|
struct pkt_capture_vdev_priv *vdev_priv;
|
||||||
@@ -100,7 +100,7 @@ pkt_capture_mgmtpkt_cb(void *context, void *ppdev, void *nbuf_list,
|
|||||||
while (msdu) {
|
while (msdu) {
|
||||||
next_buf = qdf_nbuf_queue_next(msdu);
|
next_buf = qdf_nbuf_queue_next(msdu);
|
||||||
qdf_nbuf_set_next(msdu, NULL); /* Add NULL terminator */
|
qdf_nbuf_set_next(msdu, NULL); /* Add NULL terminator */
|
||||||
pkt_capture_mon(cb_ctx, msdu);
|
pkt_capture_mon(cb_ctx, msdu, vdev, ch_freq);
|
||||||
msdu = next_buf;
|
msdu = next_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ pkt_capture_mgmtpkt_process(struct wlan_objmgr_psoc *psoc,
|
|||||||
pkt->monpkt = nbuf;
|
pkt->monpkt = nbuf;
|
||||||
pkt->vdev_id = WLAN_INVALID_VDEV_ID;
|
pkt->vdev_id = WLAN_INVALID_VDEV_ID;
|
||||||
pkt->tid = WLAN_INVALID_TID;
|
pkt->tid = WLAN_INVALID_TID;
|
||||||
pkt->status = status;
|
pkt->status = txrx_status->chan_freq;
|
||||||
pkt->pkt_format = PKTCAPTURE_PKT_FORMAT_80211;
|
pkt->pkt_format = PKTCAPTURE_PKT_FORMAT_80211;
|
||||||
pkt_capture_indicate_monpkt(vdev, pkt);
|
pkt_capture_indicate_monpkt(vdev, pkt);
|
||||||
|
|
||||||
|
@@ -23,13 +23,19 @@
|
|||||||
#include "wlan_pkt_capture_mon_thread.h"
|
#include "wlan_pkt_capture_mon_thread.h"
|
||||||
#include <linux/kthread.h>
|
#include <linux/kthread.h>
|
||||||
#include "cds_ieee80211_common.h"
|
#include "cds_ieee80211_common.h"
|
||||||
|
#include "wlan_mgmt_txrx_utils_api.h"
|
||||||
|
#include "cdp_txrx_ctrl.h"
|
||||||
|
#include "cfg_ucfg_api.h"
|
||||||
|
|
||||||
void pkt_capture_mon(struct pkt_capture_cb_context *cb_ctx,
|
void pkt_capture_mon(struct pkt_capture_cb_context *cb_ctx, qdf_nbuf_t msdu,
|
||||||
qdf_nbuf_t msdu)
|
struct wlan_objmgr_vdev *vdev, uint16_t ch_freq)
|
||||||
{
|
{
|
||||||
struct radiotap_header *rthdr;
|
struct radiotap_header *rthdr;
|
||||||
uint8_t rtlen, type, sub_type;
|
uint8_t rtlen, type, sub_type;
|
||||||
struct ieee80211_frame *wh;
|
struct ieee80211_frame *wh;
|
||||||
|
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
|
||||||
|
struct wlan_objmgr_pdev *pdev = wlan_vdev_get_pdev(vdev);
|
||||||
|
cdp_config_param_type val;
|
||||||
|
|
||||||
rthdr = (struct radiotap_header *)qdf_nbuf_data(msdu);
|
rthdr = (struct radiotap_header *)qdf_nbuf_data(msdu);
|
||||||
rtlen = rthdr->it_len;
|
rtlen = rthdr->it_len;
|
||||||
@@ -42,6 +48,20 @@ void pkt_capture_mon(struct pkt_capture_cb_context *cb_ctx,
|
|||||||
qdf_nbuf_free(msdu);
|
qdf_nbuf_free(msdu);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((type == IEEE80211_FC0_TYPE_MGT) &&
|
||||||
|
(sub_type == MGMT_SUBTYPE_AUTH)) {
|
||||||
|
uint8_t chan = wlan_freq_to_chan(ch_freq);
|
||||||
|
|
||||||
|
val.cdp_pdev_param_monitor_chan = chan;
|
||||||
|
cdp_txrx_set_pdev_param(soc, wlan_objmgr_pdev_get_pdev_id(pdev),
|
||||||
|
CDP_MONITOR_CHANNEL, val);
|
||||||
|
|
||||||
|
val.cdp_pdev_param_mon_freq = ch_freq;
|
||||||
|
cdp_txrx_set_pdev_param(soc, wlan_objmgr_pdev_get_pdev_id(pdev),
|
||||||
|
CDP_MONITOR_FREQUENCY, val);
|
||||||
|
}
|
||||||
|
|
||||||
if (cb_ctx->mon_cb(cb_ctx->mon_ctx, msdu) != QDF_STATUS_SUCCESS) {
|
if (cb_ctx->mon_cb(cb_ctx->mon_ctx, msdu) != QDF_STATUS_SUCCESS) {
|
||||||
pkt_capture_err("Frame Rx to HDD failed");
|
pkt_capture_err("Frame Rx to HDD failed");
|
||||||
qdf_nbuf_free(msdu);
|
qdf_nbuf_free(msdu);
|
||||||
|
Reference in New Issue
Block a user