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,
|
qdf_atomic_test_and_set_bit(WDS_EXT_PEER_INIT_BIT,
|
||||||
&ta_txrx_peer->wds_ext.init);
|
&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 &&
|
||||||
DP_MOD_ID_RX);
|
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)
|
if (!ta_base_peer)
|
||||||
return;
|
return;
|
||||||
|
@@ -749,6 +749,16 @@ dp_tx_mlo_mcast_pkt_send(struct dp_vdev_be *be_vdev,
|
|||||||
nbuf_clone = nbuf;
|
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));
|
qdf_mem_zero(&msdu_info, sizeof(msdu_info));
|
||||||
dp_tx_get_queue(ptnr_vdev, nbuf_clone, &msdu_info.tx_queue);
|
dp_tx_get_queue(ptnr_vdev, nbuf_clone, &msdu_info.tx_queue);
|
||||||
msdu_info.gsn = be_vdev->seq_num;
|
msdu_info.gsn = be_vdev->seq_num;
|
||||||
|
@@ -67,6 +67,27 @@ struct ast_del_ctxt {
|
|||||||
int del_count;
|
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,
|
typedef void dp_peer_iter_func(struct dp_soc *soc, struct dp_peer *peer,
|
||||||
void *arg);
|
void *arg);
|
||||||
/**
|
/**
|
||||||
|
@@ -64,9 +64,6 @@
|
|||||||
/* disable TQM_BYPASS */
|
/* disable TQM_BYPASS */
|
||||||
#define TQM_BYPASS_WAR 0
|
#define TQM_BYPASS_WAR 0
|
||||||
|
|
||||||
/* invalid peer id for reinject*/
|
|
||||||
#define DP_INVALID_PEER 0XFFFE
|
|
||||||
|
|
||||||
#define DP_RETRY_COUNT 7
|
#define DP_RETRY_COUNT 7
|
||||||
#ifdef WLAN_PEER_JITTER
|
#ifdef WLAN_PEER_JITTER
|
||||||
#define DP_AVG_JITTER_WEIGHT_DENOM 4
|
#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
|
* Return: none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline
|
|
||||||
void dp_tx_nawds_handler(struct dp_soc *soc, struct dp_vdev *vdev,
|
void dp_tx_nawds_handler(struct dp_soc *soc, struct dp_vdev *vdev,
|
||||||
struct dp_tx_msdu_info_s *msdu_info,
|
struct dp_tx_msdu_info_s *msdu_info,
|
||||||
qdf_nbuf_t nbuf, uint16_t sa_peer_id)
|
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))
|
if (!dp_peer_is_primary_link_peer(peer))
|
||||||
continue;
|
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
|
/* Multicast packets needs to be
|
||||||
* dropped in case of intra bss forwarding
|
* dropped in case of intra bss forwarding
|
||||||
*/
|
*/
|
||||||
|
@@ -41,6 +41,12 @@
|
|||||||
|
|
||||||
#define DP_TX_MAX_NUM_FRAGS 6
|
#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
|
* DP_TX_DESC_FLAG_FRAG flags should always be defined to 0x1
|
||||||
* please do not change this flag's definition
|
* please do not change this flag's definition
|
||||||
|
Reference in New Issue
Block a user