qcacmn: Add Mcast Seq num in MLO dev ctx
Move multicast sequence number field from dp_vdev_be to MLO device context struct. Change-Id: I28c3a9f4480a5da5b622f9dd2a070ac25b9b6e5b CRs-Fixed: 3586918
This commit is contained in:

committed by
Rahul Choudhary

parent
39bb6afc38
commit
e617b8791c
@@ -915,7 +915,6 @@ dp_mlo_mcast_init(struct dp_soc *soc, struct dp_vdev *vdev)
|
||||
struct dp_vdev_be *be_vdev = dp_get_be_vdev_from_dp_vdev(vdev);
|
||||
|
||||
be_vdev->mcast_primary = false;
|
||||
be_vdev->seq_num = 0;
|
||||
|
||||
hal_tx_mcast_mlo_reinject_routing_set(
|
||||
soc->hal_soc,
|
||||
@@ -933,7 +932,6 @@ dp_mlo_mcast_deinit(struct dp_soc *soc, struct dp_vdev *vdev)
|
||||
{
|
||||
struct dp_vdev_be *be_vdev = dp_get_be_vdev_from_dp_vdev(vdev);
|
||||
|
||||
be_vdev->seq_num = 0;
|
||||
be_vdev->mcast_primary = false;
|
||||
vdev->mlo_vdev = 0;
|
||||
}
|
||||
@@ -2904,6 +2902,7 @@ QDF_STATUS dp_mlo_dev_ctxt_create(struct cdp_soc_t *soc_hdl,
|
||||
qdf_mem_set(mlo_dev_ctxt->bridge_vdev,
|
||||
WLAN_MAX_MLO_CHIPS * WLAN_MAX_MLO_LINKS_PER_SOC,
|
||||
CDP_INVALID_VDEV_ID);
|
||||
mlo_dev_ctxt->seq_num = 0;
|
||||
|
||||
/* Add mlo_dev_ctxt to the global DP MLO list */
|
||||
qdf_spin_lock_bh(&mlo_dev_obj->mlo_dev_list_lock);
|
||||
|
@@ -410,7 +410,6 @@ struct dp_pdev_be {
|
||||
* @partner_vdev_list: partner list used for Intra-BSS
|
||||
* @bridge_vdev_list: partner bridge vdev list
|
||||
* @mlo_stats: structure to hold stats for mlo unmapped peers
|
||||
* @seq_num: DP MLO seq number
|
||||
* @mcast_primary: MLO Mcast primary vdev
|
||||
* @mlo_dev_ctxt: MLO device context pointer
|
||||
*/
|
||||
@@ -424,7 +423,6 @@ struct dp_vdev_be {
|
||||
struct cdp_vdev_stats mlo_stats;
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
#ifdef WLAN_MCAST_MLO
|
||||
uint16_t seq_num;
|
||||
bool mcast_primary;
|
||||
#endif
|
||||
#endif
|
||||
@@ -446,6 +444,7 @@ struct dp_vdev_be {
|
||||
* @is_bridge_vdev_present: flag to check if bridge vdev is present
|
||||
* @vdev_list_lock: lock to protect vdev list
|
||||
* @vdev_count: number of elements in the vdev list
|
||||
* @seq_num: DP MLO multicast sequence number
|
||||
* @ref_cnt: reference count
|
||||
* @mod_refs: module reference count
|
||||
* @ref_delete_pending: flag to monitor last ref delete
|
||||
@@ -460,6 +459,7 @@ struct dp_mlo_dev_ctxt {
|
||||
bool is_bridge_vdev_present;
|
||||
qdf_spinlock_t vdev_list_lock;
|
||||
uint16_t vdev_count;
|
||||
uint16_t seq_num;
|
||||
#endif
|
||||
qdf_atomic_t ref_cnt;
|
||||
qdf_atomic_t mod_refs[DP_MOD_ID_MAX];
|
||||
|
@@ -599,8 +599,7 @@ dp_tx_mlo_mcast_multipass_send(struct dp_vdev_be *be_vdev,
|
||||
}
|
||||
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;
|
||||
be_ptnr_vdev->seq_num = be_vdev->seq_num;
|
||||
msdu_info.gsn = be_vdev->mlo_dev_ctxt->seq_num;
|
||||
|
||||
if (ptr->vlan_id == MULTIPASS_WITH_VLAN_ID) {
|
||||
msdu_info.tid = HTT_TX_EXT_TID_INVALID;
|
||||
@@ -705,10 +704,10 @@ dp_tx_mlo_mcast_multipass_handler(struct dp_soc *soc,
|
||||
/* send frame on mcast primary vdev */
|
||||
dp_tx_mlo_mcast_multipass_send(be_vdev, vdev, &mpass_buf_copy);
|
||||
|
||||
if (qdf_unlikely(be_vdev->seq_num > MAX_GSN_NUM))
|
||||
be_vdev->seq_num = 0;
|
||||
if (qdf_unlikely(be_vdev->mlo_dev_ctxt->seq_num > MAX_GSN_NUM))
|
||||
be_vdev->mlo_dev_ctxt->seq_num = 0;
|
||||
else
|
||||
be_vdev->seq_num++;
|
||||
be_vdev->mlo_dev_ctxt->seq_num++;
|
||||
}
|
||||
|
||||
dp_mlo_iter_ptnr_vdev(be_soc, be_vdev,
|
||||
@@ -716,10 +715,10 @@ dp_tx_mlo_mcast_multipass_handler(struct dp_soc *soc,
|
||||
&mpass_buf, DP_MOD_ID_TX, DP_LINK_VDEV_ITER);
|
||||
dp_tx_mlo_mcast_multipass_send(be_vdev, vdev, &mpass_buf);
|
||||
|
||||
if (qdf_unlikely(be_vdev->seq_num > MAX_GSN_NUM))
|
||||
be_vdev->seq_num = 0;
|
||||
if (qdf_unlikely(be_vdev->mlo_dev_ctxt->seq_num > MAX_GSN_NUM))
|
||||
be_vdev->mlo_dev_ctxt->seq_num = 0;
|
||||
else
|
||||
be_vdev->seq_num++;
|
||||
be_vdev->mlo_dev_ctxt->seq_num++;
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -771,8 +770,7 @@ dp_tx_mlo_mcast_pkt_send(struct dp_vdev_be *be_vdev,
|
||||
|
||||
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;
|
||||
be_ptnr_vdev->seq_num = be_vdev->seq_num;
|
||||
msdu_info.gsn = be_vdev->mlo_dev_ctxt->seq_num;
|
||||
|
||||
DP_STATS_INC(ptnr_vdev, tx_i.mlo_mcast.send_pkt_count, 1);
|
||||
nbuf_clone = dp_tx_send_msdu_single(
|
||||
@@ -815,10 +813,10 @@ void dp_tx_mlo_mcast_handler_be(struct dp_soc *soc,
|
||||
/* send frame on mcast primary vdev */
|
||||
dp_tx_mlo_mcast_pkt_send(be_vdev, vdev, nbuf);
|
||||
|
||||
if (qdf_unlikely(be_vdev->seq_num > MAX_GSN_NUM))
|
||||
be_vdev->seq_num = 0;
|
||||
if (qdf_unlikely(be_vdev->mlo_dev_ctxt->seq_num > MAX_GSN_NUM))
|
||||
be_vdev->mlo_dev_ctxt->seq_num = 0;
|
||||
else
|
||||
be_vdev->seq_num++;
|
||||
be_vdev->mlo_dev_ctxt->seq_num++;
|
||||
}
|
||||
|
||||
bool dp_tx_mlo_is_mcast_primary_be(struct dp_soc *soc,
|
||||
|
Reference in New Issue
Block a user