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:
Kenvish Butani
2023-08-12 00:40:52 +05:30
gecommit door Rahul Choudhary
bovenliggende 39bb6afc38
commit e617b8791c
3 gewijzigde bestanden met toevoegingen van 14 en 17 verwijderingen

Bestand weergeven

@@ -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);

Bestand weergeven

@@ -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];

Bestand weergeven

@@ -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,