qcacmn: Drop packets in wbm release ring on cce match

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

Change-Id: Ie9ca88492e3f34156a33747a9043e13c6cde66c0
This commit is contained in:
Varsha Mishra
2021-02-17 18:43:51 +05:30
committed by Madan Koyyalamudi
parent 70279dce34
commit 91662e68f5
2 changed files with 34 additions and 0 deletions

View File

@@ -1310,6 +1310,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

View File

@@ -1293,6 +1293,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);