浏览代码

qcacld-3.0: Get wlan op mode from vdev for pktlog

To avoid using qcacld code in cmn, when getting
wlan op mode, using op mode info from vdev rather
adapter.

Change-Id: If8432aae12800884e3a4567d99319afcdfa9d1f5
CRs-Fixed: 2412315
Jingxiang Ge 6 年之前
父节点
当前提交
bd540b1cd0
共有 4 个文件被更改,包括 56 次插入30 次删除
  1. 5 3
      core/dp/txrx/ol_rx.c
  2. 15 4
      core/dp/txrx/ol_tx_send.c
  3. 4 6
      core/wma/inc/wma.h
  4. 32 17
      core/wma/src/wma_mgmt.c

+ 5 - 3
core/dp/txrx/ol_rx.c

@@ -1541,9 +1541,9 @@ void ol_rx_pkt_dump_call(
 	ol_txrx_pdev_handle pdev;
 	struct ol_txrx_peer_t *peer = NULL;
 	ol_txrx_pktdump_cb packetdump_cb;
+	void *soc = cds_get_context(QDF_MODULE_ID_SOC);
 
 	pdev = cds_get_context(QDF_MODULE_ID_TXRX);
-
 	if (!pdev) {
 		ol_txrx_err("pdev is NULL");
 		return;
@@ -1556,8 +1556,10 @@ void ol_rx_pkt_dump_call(
 	}
 
 	packetdump_cb = pdev->ol_rx_packetdump_cb;
-	if (packetdump_cb)
-		packetdump_cb(msdu, status, peer->vdev->vdev_id, RX_DATA_PKT);
+	if (packetdump_cb &&
+	    wlan_op_mode_sta == peer->vdev->opmode)
+		packetdump_cb(soc, (struct cdp_vdev *)peer->vdev,
+			      msdu, status, RX_DATA_PKT);
 }
 #endif
 

+ 15 - 4
core/dp/txrx/ol_tx_send.c

@@ -759,7 +759,10 @@ ol_tx_completion_handler(ol_txrx_pdev_handle pdev,
 	struct ol_tx_desc_t *tx_desc;
 	uint32_t byte_cnt = 0;
 	qdf_nbuf_t netbuf;
+#if !defined(REMOVE_PKT_LOG)
 	ol_txrx_pktdump_cb packetdump_cb;
+	void *soc = cds_get_context(QDF_MODULE_ID_SOC);
+#endif
 	uint32_t is_tx_desc_freed = 0;
 	struct htt_tx_compl_ind_append_tx_tstamp *txtstamp_list = NULL;
 	u_int32_t *msg_word = (u_int32_t *)msg;
@@ -810,12 +813,15 @@ ol_tx_completion_handler(ol_txrx_pdev_handle pdev,
 						status);
 		ol_tx_update_ack_count(tx_desc, status);
 
+#if !defined(REMOVE_PKT_LOG)
 		if (tx_desc->pkt_type != OL_TX_FRM_TSO) {
 			packetdump_cb = pdev->ol_tx_packetdump_cb;
 			if (packetdump_cb)
-				packetdump_cb(netbuf, status,
-					tx_desc->vdev_id, TX_DATA_PKT);
+				packetdump_cb(soc,
+					      (struct cdp_vdev *)tx_desc->vdev,
+					      netbuf, status, TX_DATA_PKT);
 		}
+#endif
 
 		DPTRACE(qdf_dp_trace_ptr(netbuf,
 			QDF_DP_TRACE_FREE_PACKET_PTR_RECORD,
@@ -1032,7 +1038,10 @@ ol_tx_single_completion_handler(ol_txrx_pdev_handle pdev,
 {
 	struct ol_tx_desc_t *tx_desc;
 	qdf_nbuf_t netbuf;
+#if !defined(REMOVE_PKT_LOG)
 	ol_txrx_pktdump_cb packetdump_cb;
+	void *soc = cds_get_context(QDF_MODULE_ID_SOC);
+#endif
 
 	tx_desc = ol_tx_desc_find_check(pdev, tx_desc_id);
 	if (tx_desc == NULL) {
@@ -1047,10 +1056,12 @@ ol_tx_single_completion_handler(ol_txrx_pdev_handle pdev,
 	/* Do one shot statistics */
 	TXRX_STATS_UPDATE_TX_STATS(pdev, status, 1, qdf_nbuf_len(netbuf));
 
+#if !defined(REMOVE_PKT_LOG)
 	packetdump_cb = pdev->ol_tx_packetdump_cb;
 	if (packetdump_cb)
-		packetdump_cb(netbuf, status,
-			tx_desc->vdev->vdev_id, TX_MGMT_PKT);
+		packetdump_cb(soc, (struct cdp_vdev *)tx_desc->vdev,
+			      netbuf, status, TX_MGMT_PKT);
+#endif
 
 	if (OL_TX_DESC_NO_REFS(tx_desc)) {
 		ol_tx_desc_frame_free_nonstd(pdev, tx_desc,

+ 4 - 6
core/wma/inc/wma.h

@@ -425,8 +425,6 @@
 
 typedef void (*txFailIndCallback)(uint8_t *peer_mac, uint8_t seqNo);
 
-typedef void (*tp_wma_packetdump_cb)(qdf_nbuf_t netbuf,
-			uint8_t status, uint8_t vdev_id, uint8_t type);
 
 /**
  * enum wma_rx_exec_ctx - wma rx execution context
@@ -1212,8 +1210,8 @@ typedef struct {
 	bool fw_timeout_crash;
 	bool sub_20_support;
 	bool is_dfs_offloaded;
-	tp_wma_packetdump_cb wma_mgmt_tx_packetdump_cb;
-	tp_wma_packetdump_cb wma_mgmt_rx_packetdump_cb;
+	ol_txrx_pktdump_cb wma_mgmt_tx_packetdump_cb;
+	ol_txrx_pktdump_cb wma_mgmt_rx_packetdump_cb;
 	bool rcpi_enabled;
 	tSirLLStatsResults *link_stats_results;
 	uint64_t tx_fail_cnt;
@@ -1958,8 +1956,8 @@ QDF_STATUS wma_start_oem_data_req(tp_wma_handle wma_handle,
 QDF_STATUS wma_enable_disable_caevent_ind(tp_wma_handle wma_handle,
 				uint8_t val);
 void wma_register_packetdump_callback(
-		tp_wma_packetdump_cb wma_mgmt_tx_packetdump_cb,
-		tp_wma_packetdump_cb wma_mgmt_rx_packetdump_cb);
+		ol_txrx_pktdump_cb wma_mgmt_tx_packetdump_cb,
+		ol_txrx_pktdump_cb wma_mgmt_rx_packetdump_cb);
 void wma_deregister_packetdump_callback(void);
 void wma_update_sta_inactivity_timeout(tp_wma_handle wma,
 		struct sme_sta_inactivity_timeout  *sta_inactivity_timer);

+ 32 - 17
core/wma/src/wma_mgmt.c

@@ -3248,9 +3248,13 @@ static int wma_process_mgmt_tx_completion(tp_wma_handle wma_handle,
 {
 	struct wlan_objmgr_pdev *pdev;
 	qdf_nbuf_t buf = NULL;
-	uint8_t vdev_id = 0;
 	QDF_STATUS ret;
-	tp_wma_packetdump_cb packetdump_cb;
+#if !defined(REMOVE_PKT_LOG)
+	uint8_t vdev_id = 0;
+	struct cdp_vdev *txrx_vdev;
+	ol_txrx_pktdump_cb packetdump_cb;
+	void *soc = cds_get_context(QDF_MODULE_ID_SOC);
+#endif
 
 	if (wma_handle == NULL) {
 		WMA_LOGE("%s: wma handle is NULL", __func__);
@@ -3267,15 +3271,19 @@ static int wma_process_mgmt_tx_completion(tp_wma_handle wma_handle,
 	}
 
 	buf = mgmt_txrx_get_nbuf(pdev, desc_id);
-	vdev_id = mgmt_txrx_get_vdev_id(pdev, desc_id);
+
 
 	if (buf)
 		wma_mgmt_unmap_buf(wma_handle, buf);
 
+#if !defined(REMOVE_PKT_LOG)
+	vdev_id = mgmt_txrx_get_vdev_id(pdev, desc_id);
+	txrx_vdev = wma_find_vdev_by_id(wma_handle, vdev_id);
 	packetdump_cb = wma_handle->wma_mgmt_tx_packetdump_cb;
 	if (packetdump_cb)
-		packetdump_cb(buf, QDF_STATUS_SUCCESS,
-			vdev_id, TX_MGMT_PKT);
+		packetdump_cb(soc, txrx_vdev,
+			      buf, QDF_STATUS_SUCCESS, TX_MGMT_PKT);
+#endif
 
 	ret = mgmt_txrx_tx_completion_handler(pdev, desc_id, status, NULL);
 
@@ -4028,7 +4036,11 @@ int wma_form_rx_packet(qdf_nbuf_t buf,
 	int status;
 	tp_wma_handle wma_handle = (tp_wma_handle)
 				cds_get_context(QDF_MODULE_ID_WMA);
-	tp_wma_packetdump_cb packetdump_cb;
+#if !defined(REMOVE_PKT_LOG)
+	ol_txrx_pktdump_cb packetdump_cb;
+	void *soc = cds_get_context(QDF_MODULE_ID_SOC);
+	struct cdp_vdev *txrx_vdev;
+#endif
 	static uint8_t limit_prints_invalid_len = RATE_LIMIT - 1;
 	static uint8_t limit_prints_load_unload = RATE_LIMIT - 1;
 	static uint8_t limit_prints_recovery = RATE_LIMIT - 1;
@@ -4199,13 +4211,16 @@ int wma_form_rx_packet(qdf_nbuf_t buf,
 		return -EINVAL;
 	}
 
+#if !defined(REMOVE_PKT_LOG)
 	packetdump_cb = wma_handle->wma_mgmt_rx_packetdump_cb;
+	txrx_vdev = wma_find_vdev_by_id(wma_handle,
+					rx_pkt->pkt_meta.session_id);
 	if ((mgt_type == IEEE80211_FC0_TYPE_MGT &&
-			mgt_subtype != MGMT_SUBTYPE_BEACON) &&
-			packetdump_cb)
-		packetdump_cb(rx_pkt->pkt_buf, QDF_STATUS_SUCCESS,
-			rx_pkt->pkt_meta.session_id, RX_MGMT_PKT);
-
+		mgt_subtype != MGMT_SUBTYPE_BEACON) &&
+		packetdump_cb)
+		packetdump_cb(soc, txrx_vdev, rx_pkt->pkt_buf,
+			      QDF_STATUS_SUCCESS, RX_MGMT_PKT);
+#endif
 	return 0;
 }
 
@@ -4453,8 +4468,8 @@ QDF_STATUS wma_register_mgmt_frm_client(void)
 /**
  * wma_register_packetdump_callback() - stores tx and rx mgmt packet dump
  *   callback handler
- * @wma_mgmt_tx_packetdump_cb: tx mgmt packetdump cb
- * @wma_mgmt_rx_packetdump_cb: rx mgmt packetdump cb
+ * @tx_cb: tx mgmt packetdump cb
+ * @rx_cb: rx mgmt packetdump cb
  *
  * This function is used to store tx and rx mgmt. packet dump callback
  *
@@ -4462,8 +4477,8 @@ QDF_STATUS wma_register_mgmt_frm_client(void)
  *
  */
 void wma_register_packetdump_callback(
-	tp_wma_packetdump_cb wma_mgmt_tx_packetdump_cb,
-	tp_wma_packetdump_cb wma_mgmt_rx_packetdump_cb)
+	ol_txrx_pktdump_cb tx_cb,
+	ol_txrx_pktdump_cb rx_cb)
 {
 	tp_wma_handle wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
 
@@ -4472,8 +4487,8 @@ void wma_register_packetdump_callback(
 		return;
 	}
 
-	wma_handle->wma_mgmt_tx_packetdump_cb = wma_mgmt_tx_packetdump_cb;
-	wma_handle->wma_mgmt_rx_packetdump_cb = wma_mgmt_rx_packetdump_cb;
+	wma_handle->wma_mgmt_tx_packetdump_cb = tx_cb;
+	wma_handle->wma_mgmt_rx_packetdump_cb = rx_cb;
 }
 
 /**