Parcourir la source

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
Vulupala Shashank Reddy il y a 5 ans
Parent
commit
87881bd647

+ 4 - 2
components/pkt_capture/core/inc/wlan_pkt_capture_main.h

@@ -190,10 +190,12 @@ void pkt_capture_record_channel(struct wlan_objmgr_vdev *vdev);
  * pkt_capture_mon() - Wrapper function to invoke mon cb
  * @cb_ctx: packet capture callback context
  * @msdu: packet
+ * @vdev: pointer to vdev
+ * @ch_freq: channel frequency
  *
  * Return: None
  */
-void pkt_capture_mon(struct pkt_capture_cb_context *cb_ctx,
-		     qdf_nbuf_t msdu);
+void pkt_capture_mon(struct pkt_capture_cb_context *cb_ctx, qdf_nbuf_t msdu,
+		     struct wlan_objmgr_vdev *vdev, uint16_t ch_freq);
 
 #endif /* end of _WLAN_PKT_CAPTURE_MAIN_H_ */

+ 2 - 2
components/pkt_capture/core/inc/wlan_pkt_capture_mon_thread.h

@@ -41,7 +41,7 @@
 typedef void (*pkt_capture_mon_thread_cb)(
 			void *context, void *ppdev, void *monpkt,
 			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);
 
@@ -66,7 +66,7 @@ struct pkt_capture_mon_pkt {
 	void *monpkt;
 	uint8_t vdev_id;
 	uint8_t tid;
-	uint8_t status;
+	uint16_t status;
 	bool pkt_format;
 	uint8_t bssid[QDF_MAC_ADDR_SIZE];
 	uint8_t tx_retry_cnt;

+ 4 - 4
components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c

@@ -434,7 +434,7 @@ static void
 pkt_capture_rx_data_cb(
 		void *context, void *ppdev, void *nbuf_list,
 		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)
 {
 	struct pkt_capture_vdev_priv *vdev_priv;
@@ -528,7 +528,7 @@ pkt_capture_rx_data_cb(
 		 */
 		headroom = qdf_nbuf_headroom(msdu);
 		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;
 	}
 
@@ -556,7 +556,7 @@ free_buf:
 static void
 pkt_capture_tx_data_cb(
 		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)
 {
 	qdf_nbuf_t msdu, next_buf;
@@ -701,7 +701,7 @@ pkt_capture_tx_data_cb(
 		 */
 		headroom = qdf_nbuf_headroom(msdu);
 		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;
 	}
 	return;

+ 1 - 0
components/pkt_capture/core/src/wlan_pkt_capture_main.c

@@ -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_rx_ops(&vdev_priv->rx_ops);
+	pkt_capture_record_channel(vdev);
 
 	return QDF_STATUS_SUCCESS;
 }

+ 4 - 4
components/pkt_capture/core/src/wlan_pkt_capture_mgmt_txrx.c

@@ -58,7 +58,7 @@ pkt_capture_mgmt_status_map(uint8_t status)
  * @nbuf_list: netbuf list
  * @vdev_id: vdev id for which packet is captured
  * @tid:  tid number
- * @status: Tx status
+ * @ch_freq: channel frequency
  * @pkt_format: Frame format
  * @tx_retry_cnt: tx retry count
  *
@@ -66,7 +66,7 @@ pkt_capture_mgmt_status_map(uint8_t status)
  */
 static void
 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)
 {
 	struct pkt_capture_vdev_priv *vdev_priv;
@@ -100,7 +100,7 @@ pkt_capture_mgmtpkt_cb(void *context, void *ppdev, void *nbuf_list,
 	while (msdu) {
 		next_buf = qdf_nbuf_queue_next(msdu);
 		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;
 	}
 
@@ -158,7 +158,7 @@ pkt_capture_mgmtpkt_process(struct wlan_objmgr_psoc *psoc,
 	pkt->monpkt = nbuf;
 	pkt->vdev_id = WLAN_INVALID_VDEV_ID;
 	pkt->tid = WLAN_INVALID_TID;
-	pkt->status = status;
+	pkt->status = txrx_status->chan_freq;
 	pkt->pkt_format = PKTCAPTURE_PKT_FORMAT_80211;
 	pkt_capture_indicate_monpkt(vdev, pkt);
 

+ 22 - 2
components/pkt_capture/core/src/wlan_pkt_capture_mon_thread.c

@@ -23,13 +23,19 @@
 #include "wlan_pkt_capture_mon_thread.h"
 #include <linux/kthread.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,
-		     qdf_nbuf_t msdu)
+void pkt_capture_mon(struct pkt_capture_cb_context *cb_ctx, qdf_nbuf_t msdu,
+		     struct wlan_objmgr_vdev *vdev, uint16_t ch_freq)
 {
 	struct radiotap_header *rthdr;
 	uint8_t rtlen, type, sub_type;
 	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);
 	rtlen = rthdr->it_len;
@@ -42,6 +48,20 @@ void pkt_capture_mon(struct pkt_capture_cb_context *cb_ctx,
 		qdf_nbuf_free(msdu);
 		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) {
 		pkt_capture_err("Frame Rx to HDD failed");
 		qdf_nbuf_free(msdu);