qcacld-3.0: Handle raw frames and invalid flow_idx frames

Enable handling to drop the raw Rx frames as both driver and stack
is not expected to handle them.
Handle invalid FISA flow index which is out of valid FISA flow_id range,
This can happen if we are looking at wrong or invalid TLV, in such case
it is OK deliver frame without FISA aggregation.

Change-Id: I746d4ad1ea5ba6d60cbadddb55803626abfb2868
CRs-Fixed: 2733978
This commit is contained in:
Manjunathappa Prakash 2020-07-17 14:53:59 -07:00 • committed by snandini
commit 73abd412bb
2 changed files with 9 additions and 2 deletions

1
Kbuild
View file

@ -3178,6 +3178,7 @@ cppflags-$(CONFIG_LITHIUM) += -DFEATURE_AST
cppflags-$(CONFIG_LITHIUM) += -DPEER_PROTECTED_ACCESS
cppflags-$(CONFIG_LITHIUM) += -DSERIALIZE_QUEUE_SETUP
cppflags-$(CONFIG_LITHIUM) += -DDP_RX_PKT_NO_PEER_DELIVER
cppflags-$(CONFIG_LITHIUM) += -DDP_RX_DROP_RAW_FRM
cppflags-$(CONFIG_LITHIUM) += -DFEATURE_ALIGN_STATS_FROM_DP
cppflags-$(CONFIG_LITHIUM) += -DDP_RX_SPECIAL_FRAME_NEED
cppflags-$(CONFIG_LITHIUM) += -DFEATURE_STATS_EXT_V2

View file

@ -475,8 +475,14 @@ dp_rx_get_fisa_flow(struct dp_rx_fst *fisa_hdl, struct dp_vdev *vdev,
flow_idx_valid = is_flow_idx_valid(flow_invalid, flow_timeout);
if (flow_idx_valid) {
dp_fisa_debug("flow_idx is valid 0x%x", flow_idx);
qdf_assert_always(flow_idx < fisa_hdl->max_entries);
/* If flow index is invalid, fail to get flow */
if (qdf_unlikely(flow_idx >= fisa_hdl->max_entries)) {
dp_info("flow_idx is invalid 0x%x", flow_idx);
hal_rx_dump_pkt_tlvs(hal_soc_hdl, rx_tlv_hdr,
QDF_TRACE_LEVEL_INFO_HIGH);
DP_STATS_INC(fisa_hdl, invalid_flow_index, 1);
return NULL;
}
sw_ft_entry = &sw_ft_base[flow_idx];
sw_ft_entry->vdev = vdev;