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

Commit 286b2687 authored by Varsha Mishra's avatar Varsha Mishra Committed by Madan Koyyalamudi
Browse files

qcacmn: Drop packets in wbm release ring on cce match

When cce rule gets matched, drop packets in wbm error ring.

Change-Id: Ie9ca88492e3f34156a33747a9043e13c6cde66c0
parent ace45135
Loading
Loading
Loading
Loading
+17 −0
Original line number Original line Diff line number Diff line
@@ -1158,6 +1158,23 @@ dp_rx_update_protocol_tag(struct dp_soc *soc, struct dp_vdev *vdev,
			  bool is_reo_exception, bool is_update_stats)
			  bool is_reo_exception, bool is_update_stats)
{
{
}
}

/**
 * dp_rx_err_cce_drop() - Reads CCE metadata from the RX MSDU end TLV
 *                        and returns whether cce metadata matches
 * @soc: core txrx main context
 * @vdev: vdev on which the packet is received
 * @nbuf: QDF pkt buffer on which the protocol tag should be set
 * @rx_tlv_hdr: rBbase address where the RX TLVs starts
 * Return: bool
 */
static inline bool
dp_rx_err_cce_drop(struct dp_soc *soc, struct dp_vdev *vdev,
		   qdf_nbuf_t nbuf, uint8_t *rx_tlv_hdr)
{
	return false;
}

#endif /* WLAN_SUPPORT_RX_PROTOCOL_TYPE_TAG */
#endif /* WLAN_SUPPORT_RX_PROTOCOL_TYPE_TAG */


#ifndef WLAN_SUPPORT_RX_FLOW_TAG
#ifndef WLAN_SUPPORT_RX_FLOW_TAG
+17 −0
Original line number Original line Diff line number Diff line
@@ -1283,6 +1283,23 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, qdf_nbuf_t nbuf,
			/* IEEE80211_SEQ_MAX indicates invalid start_seq */
			/* IEEE80211_SEQ_MAX indicates invalid start_seq */
	}
	}


	/*
	 * Drop packets in this path if cce_match is found. Packets will come
	 * in following path depending on whether tidQ is setup.
	 * 1. If tidQ is setup: WIFILI_HAL_RX_WBM_REO_PSH_RSN_ROUTE and
	 * cce_match = 1
	 *    Packets with WIFILI_HAL_RX_WBM_REO_PSH_RSN_ROUTE are already
	 *    dropped.
	 * 2. If tidQ is not setup: WIFILI_HAL_RX_WBM_REO_PSH_RSN_ERROR and
	 * cce_match = 1
	 *    These packets need to be dropped and should not get delivered
	 *    to stack.
	 */
	if (qdf_unlikely(dp_rx_err_cce_drop(soc, vdev, nbuf, rx_tlv_hdr))) {
		qdf_nbuf_free(nbuf);
		return QDF_STATUS_E_FAILURE;
	}

	if (qdf_unlikely(vdev->rx_decap_type == htt_cmn_pkt_type_raw)) {
	if (qdf_unlikely(vdev->rx_decap_type == htt_cmn_pkt_type_raw)) {
		qdf_nbuf_set_next(nbuf, NULL);
		qdf_nbuf_set_next(nbuf, NULL);
		dp_rx_deliver_raw(vdev, nbuf, peer);
		dp_rx_deliver_raw(vdev, nbuf, peer);