qcacmn: Handle nawds case of intra-bss forwarding
Handle nawds case of intra-bss forwarding of multicast packets on Beryllium. Change-Id: I05ec4d937b4b97aa2c9fb325fb2b6a197968ea2a CRs-Fixed: 3103402
此提交包含在:

提交者
Madan Koyyalamudi

父節點
8aa367acfa
當前提交
223693e614
@@ -1589,6 +1589,7 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
|
||||
arch_ops->txrx_get_mon_context_size = dp_mon_get_context_size_be;
|
||||
arch_ops->dp_rx_desc_cookie_2_va =
|
||||
dp_rx_desc_cookie_2_va_be;
|
||||
arch_ops->dp_rx_intrabss_handle_nawds = dp_rx_intrabss_handle_nawds_be;
|
||||
|
||||
arch_ops->txrx_soc_attach = dp_soc_attach_be;
|
||||
arch_ops->txrx_soc_detach = dp_soc_detach_be;
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include "hal_hw_headers.h"
|
||||
#include "dp_types.h"
|
||||
#include "dp_rx.h"
|
||||
#include "dp_tx.h"
|
||||
#include "dp_be_rx.h"
|
||||
#include "dp_peer.h"
|
||||
#include "hal_rx.h"
|
||||
@@ -1373,6 +1374,48 @@ rel_da_peer:
|
||||
#endif /* WLAN_MLO_MULTI_CHIP */
|
||||
#endif /* INTRA_BSS_FWD_OFFLOAD */
|
||||
|
||||
/*
|
||||
* dp_rx_intrabss_handle_nawds_be() - Forward mcbc intrabss pkts in nawds case
|
||||
* @soc: core txrx main context
|
||||
* @ta_txrx_peer: source txrx_peer entry
|
||||
* @nbuf_copy: nbuf that has to be intrabss forwarded
|
||||
* @tid_stats: tid_stats structure
|
||||
*
|
||||
* Return: true if it is forwarded else false
|
||||
*/
|
||||
bool
|
||||
dp_rx_intrabss_handle_nawds_be(struct dp_soc *soc,
|
||||
struct dp_txrx_peer *ta_txrx_peer,
|
||||
qdf_nbuf_t nbuf_copy,
|
||||
struct cdp_tid_rx_stats *tid_stats)
|
||||
{
|
||||
if (qdf_unlikely(ta_txrx_peer->vdev->nawds_enabled)) {
|
||||
struct cdp_tx_exception_metadata tx_exc_metadata = {0};
|
||||
uint16_t len = QDF_NBUF_CB_RX_PKT_LEN(nbuf_copy);
|
||||
|
||||
tx_exc_metadata.peer_id = ta_txrx_peer->peer_id;
|
||||
tx_exc_metadata.is_intrabss_fwd = 1;
|
||||
tx_exc_metadata.tid = HTT_TX_EXT_TID_INVALID;
|
||||
if (dp_tx_send_exception((struct cdp_soc_t *)soc,
|
||||
ta_txrx_peer->vdev->vdev_id,
|
||||
nbuf_copy,
|
||||
&tx_exc_metadata)) {
|
||||
DP_PEER_PER_PKT_STATS_INC_PKT(ta_txrx_peer,
|
||||
rx.intra_bss.fail, 1,
|
||||
len);
|
||||
tid_stats->fail_cnt[INTRABSS_DROP]++;
|
||||
qdf_nbuf_free(nbuf_copy);
|
||||
} else {
|
||||
DP_PEER_PER_PKT_STATS_INC_PKT(ta_txrx_peer,
|
||||
rx.intra_bss.pkts, 1,
|
||||
len);
|
||||
tid_stats->intrabss_cnt++;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_rx_intrabss_fwd_be() - API for intrabss fwd. For EAPOL
|
||||
* pkt with DA not equal to vdev mac addr, fwd is not allowed.
|
||||
|
@@ -56,6 +56,20 @@ bool dp_rx_intrabss_fwd_be(struct dp_soc *soc,
|
||||
struct hal_rx_msdu_metadata msdu_metadata);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* dp_rx_intrabss_handle_nawds_be() - Forward mcbc intrabss pkts in nawds case
|
||||
* @soc: core txrx main context
|
||||
* @ta_txrx_peer: source txrx_peer entry
|
||||
* @nbuf_copy: nbuf that has to be intrabss forwarded
|
||||
* @tid_stats: tid_stats structure
|
||||
*
|
||||
* Return: true if it is forwarded else false
|
||||
*/
|
||||
bool
|
||||
dp_rx_intrabss_handle_nawds_be(struct dp_soc *soc, struct dp_txrx_peer *ta_peer,
|
||||
qdf_nbuf_t nbuf_copy,
|
||||
struct cdp_tid_rx_stats *tid_stats);
|
||||
|
||||
uint32_t dp_rx_process_be(struct dp_intr *int_ctx,
|
||||
hal_ring_handle_t hal_ring_hdl, uint8_t reo_ring_num,
|
||||
uint32_t quota);
|
||||
|
新增問題並參考
封鎖使用者