Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f4a0128 authored by Surabhi Vishnoi's avatar Surabhi Vishnoi Committed by Gerrit - the friendly Code Review server
Browse files

qcacld-3.0: Deliver tx offload mgmt pkts based on filter

Deliver tx offload management to mon interface in packet capture
mode based on config filters added by vendor command.

Change-Id: Id60529b963e3021d7744858980b316b546606550
CRs-Fixed: 3045460
parent c28d3506
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -230,6 +230,14 @@ void pkt_capture_mon(struct pkt_capture_cb_context *cb_ctx, qdf_nbuf_t msdu,
QDF_STATUS pkt_capture_set_filter(struct pkt_capture_frame_filter frame_filter,
				  struct wlan_objmgr_vdev *vdev);

/**
 * pkt_capture_is_tx_mgmt_enable - Check if tx mgmt frames enabled
 * @pdev: pointer to pdev
 *
 * Return: bool
 */
bool pkt_capture_is_tx_mgmt_enable(struct wlan_objmgr_pdev *pdev);

#ifdef WLAN_FEATURE_PKT_CAPTURE_V2
/**
 * pkt_capture_get_pktcap_mode_v2 - Get packet capture mode
+24 −0
Original line number Diff line number Diff line
@@ -651,6 +651,30 @@ enum pkt_capture_mode pkt_capture_get_mode(struct wlan_objmgr_psoc *psoc)
	return psoc_priv->cfg_param.pkt_capture_mode;
}

bool pkt_capture_is_tx_mgmt_enable(struct wlan_objmgr_pdev *pdev)
{
	struct pkt_psoc_priv *psoc_priv;
	struct wlan_objmgr_psoc *psoc;

	psoc = wlan_pdev_get_psoc(pdev);
	if (!psoc) {
		pkt_capture_err("psoc is NULL");
		return false;
	}

	psoc_priv = pkt_capture_psoc_get_priv(psoc);
	if (!psoc_priv) {
		pkt_capture_err("psoc priv is NULL");
		return false;
	}

	if (!(psoc_priv->frame_filter.mgmt_tx_frame_filter &
	    PKT_CAPTURE_MGMT_FRAME_TYPE_ALL))
		return false;

	return true;
}

QDF_STATUS
pkt_capture_register_callbacks(struct wlan_objmgr_vdev *vdev,
			       QDF_STATUS (*mon_cb)(void *, qdf_nbuf_t),
+6 −3
Original line number Diff line number Diff line
@@ -229,9 +229,12 @@ ucfg_pkt_capture_process_mgmt_tx_data(struct wlan_objmgr_pdev *pdev,
				      qdf_nbuf_t nbuf,
				      uint8_t status)
{
	if (pkt_capture_is_tx_mgmt_enable(pdev))
		return pkt_capture_process_mgmt_tx_data(
						pdev, params, nbuf,
						pkt_capture_mgmt_status_map(status));

	return QDF_STATUS_SUCCESS;
}

void