qcacmn: Drop mpdus received on non-monitor PMAC

Currently the monitor mode filter settings are set
for both the PMAC. Hence it is possible that the
non-monitor PMAC (the PMAC on which monitor vdev
is not running), can receive packets and forward them
to the monitor destination ring.

The above scenario will lead to a ppdu_id mismatch
when reaping the monitor status ring and comparing
the ppdu_id in status ring with the one in monitor
destination ring, since monitor status ring will
have ppdu_id from the PMAC on which monitor vdev is
running, whereas monitor destination ring will have
packets from both the PMAC.

In order to mitigate the above issue, detect the
packets in the monitor destination ring, which are
not from the PMAC where monitor vdev is running, and
drop them.

Change-Id: I32392ceeadffd9cb7a4dd76336004a9dcbb99404
CRs-Fixed: 3318036
Esse commit está contido em:
Rakesh Pillai
2022-10-21 07:34:46 -07:00
commit de Madan Koyyalamudi
commit f533809136
4 arquivos alterados com 208 adições e 0 exclusões

Ver arquivo

@@ -2039,6 +2039,17 @@ hal_get_tsf_time_kiwi(hal_soc_handle_t hal_soc_hdl, uint32_t tsf_id,
}
#endif
static QDF_STATUS hal_rx_reo_ent_get_src_link_id_kiwi(hal_rxdma_desc_t rx_desc,
uint8_t *src_link_id)
{
struct reo_entrance_ring *reo_ent_desc =
(struct reo_entrance_ring *)rx_desc;
*src_link_id = reo_ent_desc->src_link_id;
return QDF_STATUS_SUCCESS;
}
static void hal_hw_txrx_ops_attach_kiwi(struct hal_soc *hal_soc)
{
/* init and setup */
@@ -2290,6 +2301,8 @@ static void hal_hw_txrx_ops_attach_kiwi(struct hal_soc *hal_soc)
hal_soc->ops->hal_tx_vdev_mcast_ctrl_set =
hal_tx_vdev_mcast_ctrl_set_be;
hal_soc->ops->hal_get_tsf_time = hal_get_tsf_time_kiwi;
hal_soc->ops->hal_rx_reo_ent_get_src_link_id =
hal_rx_reo_ent_get_src_link_id_kiwi;
};
struct hal_hw_srng_config hw_srng_table_kiwi[] = {