qcacmn: Adding NAWDS support along with WDS-EXT
Adding NAWDS support along with WDS-EXT Change-Id: I19d277fa575750d3194afc9ec9af3180a8c936ad CRs-Fixed: 3406151
This commit is contained in:

committed by
Madan Koyyalamudi

parent
8f0c611fec
commit
10826afad5
@@ -111,8 +111,18 @@ static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc,
|
||||
qdf_atomic_test_and_set_bit(WDS_EXT_PEER_INIT_BIT,
|
||||
&ta_txrx_peer->wds_ext.init);
|
||||
|
||||
ta_base_peer = dp_peer_get_ref_by_id(soc, ta_txrx_peer->peer_id,
|
||||
if (qdf_unlikely(ta_txrx_peer->nawds_enabled &&
|
||||
ta_txrx_peer->mld_peer)) {
|
||||
ta_base_peer = dp_get_primary_link_peer_by_id(
|
||||
soc,
|
||||
ta_txrx_peer->peer_id,
|
||||
DP_MOD_ID_RX);
|
||||
} else {
|
||||
ta_base_peer = dp_peer_get_ref_by_id(
|
||||
soc,
|
||||
ta_txrx_peer->peer_id,
|
||||
DP_MOD_ID_RX);
|
||||
}
|
||||
|
||||
if (!ta_base_peer)
|
||||
return;
|
||||
|
@@ -749,6 +749,16 @@ dp_tx_mlo_mcast_pkt_send(struct dp_vdev_be *be_vdev,
|
||||
nbuf_clone = nbuf;
|
||||
}
|
||||
|
||||
/* NAWDS clients will accepts on 4 addr format MCAST packets
|
||||
* This will ensure to send packets in 4 addr format to NAWDS clients.
|
||||
*/
|
||||
if (qdf_unlikely(ptnr_vdev->nawds_enabled)) {
|
||||
qdf_mem_zero(&msdu_info, sizeof(msdu_info));
|
||||
dp_tx_get_queue(ptnr_vdev, nbuf_clone, &msdu_info.tx_queue);
|
||||
dp_tx_nawds_handler(ptnr_vdev->pdev->soc, ptnr_vdev,
|
||||
&msdu_info, nbuf_clone, DP_INVALID_PEER);
|
||||
}
|
||||
|
||||
qdf_mem_zero(&msdu_info, sizeof(msdu_info));
|
||||
dp_tx_get_queue(ptnr_vdev, nbuf_clone, &msdu_info.tx_queue);
|
||||
msdu_info.gsn = be_vdev->seq_num;
|
||||
|
@@ -67,6 +67,27 @@ struct ast_del_ctxt {
|
||||
int del_count;
|
||||
};
|
||||
|
||||
#ifdef QCA_SUPPORT_WDS_EXTENDED
|
||||
/**
|
||||
* dp_peer_is_wds_ext_peer() - peer is WDS_EXT peer
|
||||
*
|
||||
* @peer: DP peer context
|
||||
*
|
||||
* This API checks whether the peer is WDS_EXT peer or not
|
||||
*
|
||||
* Return: true in the wds_ext peer else flase
|
||||
*/
|
||||
static inline bool dp_peer_is_wds_ext_peer(struct dp_txrx_peer *peer)
|
||||
{
|
||||
return qdf_atomic_test_bit(WDS_EXT_PEER_INIT_BIT, &peer->wds_ext.init);
|
||||
}
|
||||
#else
|
||||
static inline bool dp_peer_is_wds_ext_peer(struct dp_txrx_peer *peer)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
typedef void dp_peer_iter_func(struct dp_soc *soc, struct dp_peer *peer,
|
||||
void *arg);
|
||||
/**
|
||||
|
@@ -64,9 +64,6 @@
|
||||
/* disable TQM_BYPASS */
|
||||
#define TQM_BYPASS_WAR 0
|
||||
|
||||
/* invalid peer id for reinject*/
|
||||
#define DP_INVALID_PEER 0XFFFE
|
||||
|
||||
#define DP_RETRY_COUNT 7
|
||||
#ifdef WLAN_PEER_JITTER
|
||||
#define DP_AVG_JITTER_WEIGHT_DENOM 4
|
||||
@@ -3154,7 +3151,6 @@ dp_tx_per_pkt_vdev_id_check(qdf_nbuf_t nbuf, struct dp_vdev *vdev)
|
||||
* Return: none
|
||||
*/
|
||||
|
||||
static inline
|
||||
void dp_tx_nawds_handler(struct dp_soc *soc, struct dp_vdev *vdev,
|
||||
struct dp_tx_msdu_info_s *msdu_info,
|
||||
qdf_nbuf_t nbuf, uint16_t sa_peer_id)
|
||||
@@ -3182,6 +3178,12 @@ void dp_tx_nawds_handler(struct dp_soc *soc, struct dp_vdev *vdev,
|
||||
if (!dp_peer_is_primary_link_peer(peer))
|
||||
continue;
|
||||
|
||||
/* In the case of wds ext peer mcast traffic will be
|
||||
* sent as part of VLAN interface
|
||||
*/
|
||||
if (dp_peer_is_wds_ext_peer(txrx_peer))
|
||||
continue;
|
||||
|
||||
/* Multicast packets needs to be
|
||||
* dropped in case of intra bss forwarding
|
||||
*/
|
||||
|
@@ -41,6 +41,12 @@
|
||||
|
||||
#define DP_TX_MAX_NUM_FRAGS 6
|
||||
|
||||
/* invalid peer id for reinject*/
|
||||
#define DP_INVALID_PEER 0XFFFE
|
||||
|
||||
void dp_tx_nawds_handler(struct dp_soc *soc, struct dp_vdev *vdev,
|
||||
struct dp_tx_msdu_info_s *msdu_info,
|
||||
qdf_nbuf_t nbuf, uint16_t sa_peer_id);
|
||||
/*
|
||||
* DP_TX_DESC_FLAG_FRAG flags should always be defined to 0x1
|
||||
* please do not change this flag's definition
|
||||
|
Reference in New Issue
Block a user