qcacmn: Vdev attach changes for MLO

Add mld mac address info during datapath
vdev attach.

Change-Id: I0ea22025d19be82be0c56809871e8513c3ce7962
CRs-Fixed: 3039326
Tento commit je obsažen v:
Rakesh Pillai
2021-06-18 03:00:08 -07:00
odevzdal Madan Koyyalamudi
rodič 5c85cfb5a0
revize 32046ad850
7 změnil soubory, kde provedl 142 přidání a 67 odebrání

Zobrazit soubor

@@ -1118,6 +1118,32 @@ bool dp_rx_intrabss_fwd(struct dp_soc *soc,
struct hal_rx_msdu_metadata msdu_metadata);
#ifdef DISABLE_EAPOL_INTRABSS_FWD
#ifdef WLAN_FEATURE_11BE_MLO
static inline bool dp_nbuf_dst_addr_is_mld_addr(struct dp_vdev *vdev,
qdf_nbuf_t nbuf)
{
struct qdf_mac_addr *self_mld_mac_addr =
(struct qdf_mac_addr *)vdev->mld_mac_addr.raw;
return qdf_is_macaddr_equal(self_mld_mac_addr,
(struct qdf_mac_addr *)qdf_nbuf_data(nbuf) +
QDF_NBUF_DEST_MAC_OFFSET);
}
#else
static inline bool dp_nbuf_dst_addr_is_mld_addr(struct dp_vdev *vdev,
qdf_nbuf_t nbuf)
{
return false;
}
#endif
static inline bool dp_nbuf_dst_addr_is_self_addr(struct dp_vdev *vdev,
qdf_nbuf_t nbuf)
{
return qdf_is_macaddr_equal((struct qdf_mac_addr *)vdev->mac_addr.raw,
(struct qdf_mac_addr *)qdf_nbuf_data(nbuf) +
QDF_NBUF_DEST_MAC_OFFSET);
}
/*
* dp_rx_intrabss_eapol_drop_check() - API For EAPOL
* pkt with DA not equal to vdev mac addr, fwd is not allowed.
@@ -1134,10 +1160,8 @@ bool dp_rx_intrabss_eapol_drop_check(struct dp_soc *soc,
uint8_t *rx_tlv_hdr, qdf_nbuf_t nbuf)
{
if (qdf_unlikely(qdf_nbuf_is_ipv4_eapol_pkt(nbuf) &&
qdf_mem_cmp(qdf_nbuf_data(nbuf) +
QDF_NBUF_DEST_MAC_OFFSET,
ta_peer->vdev->mac_addr.raw,
QDF_MAC_ADDR_SIZE))) {
!(dp_nbuf_dst_addr_is_self_addr(ta_peer->vdev, nbuf) ||
dp_nbuf_dst_addr_is_mld_addr(ta_peer->vdev, nbuf)))) {
qdf_nbuf_free(nbuf);
DP_STATS_INC(soc, rx.err.intrabss_eapol_drop, 1);
return true;