qcacmn: Handle raw frames and invalid flow_idx stats

Make sure to drop the raw Rx frames as both driver and stack
are not expected to handle them.
Add counter for invalid fisa flow_idx packet received.

Change-Id: I5107c554b8ce6a9a7973f2aeca44bb0f360dc2df
CRs-Fixed: 2733981
This commit is contained in:
Jinwei Chen
2020-07-16 16:37:34 +08:00
committed by snandini
parent b6130d4eb6
commit 87d4f73245
4 changed files with 104 additions and 62 deletions

View File

@@ -1918,6 +1918,31 @@ void dp_rx_set_hdr_pad(qdf_nbuf_t nbuf, uint32_t l3_padding)
}
#endif
#ifdef DP_RX_DROP_RAW_FRM
/**
* dp_rx_is_raw_frame_dropped() - if raw frame nbuf, free and drop
* @nbuf: pkt skb pointer
*
* Return: true - raw frame, dropped
* false - not raw frame, do nothing
*/
static inline
bool dp_rx_is_raw_frame_dropped(qdf_nbuf_t nbuf)
{
if (qdf_nbuf_is_raw_frame(nbuf)) {
qdf_nbuf_free(nbuf);
return true;
}
return false;
}
#else
static inline
bool dp_rx_is_raw_frame_dropped(qdf_nbuf_t nbuf)
{
return false;
}
#endif
/**
* dp_rx_process() - Brain of the Rx processing functionality
@@ -2253,6 +2278,12 @@ done:
nbuf = nbuf_head;
while (nbuf) {
next = nbuf->next;
if (qdf_unlikely(dp_rx_is_raw_frame_dropped(nbuf))) {
nbuf = next;
DP_STATS_INC(soc, rx.err.raw_frm_drop, 1);
continue;
}
rx_tlv_hdr = qdf_nbuf_data(nbuf);
vdev_id = QDF_NBUF_CB_RX_VDEV_ID(nbuf);