diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h index 8668f2f33b..5ae0a6bea5 100644 --- a/dp/inc/cdp_txrx_ops.h +++ b/dp/inc/cdp_txrx_ops.h @@ -1140,7 +1140,11 @@ struct ol_if_ops { uint8_t *dest_macaddr, uint8_t *peer_macaddr, uint32_t flags); - + int + (*pdev_update_lmac_n_target_pdev_id)(struct cdp_ctrl_objmgr_psoc *psoc, + uint8_t *pdev_id, + uint8_t *lmac_id, + uint8_t *target_pdev_id); bool (*is_roam_inprogress)(uint32_t vdev_id); enum QDF_GLOBAL_MODE (*get_con_mode)(void); /* TODO: Add any other control path calls required to OL_IF/WMA layer */ diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 1b7b12a0d3..f83d248354 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -9218,7 +9218,8 @@ dp_soc_map_pdev_to_lmac struct dp_pdev *pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id); struct dp_vdev *vdev = NULL; - int hw_pdev_id; + uint8_t hw_pdev_id, mac_id; + int nss_config = wlan_cfg_get_dp_soc_nss_cfg(soc->wlan_cfg_ctx); if (qdf_unlikely(!pdev)) return QDF_STATUS_E_FAILURE; @@ -9241,6 +9242,21 @@ dp_soc_map_pdev_to_lmac dp_get_target_pdev_id_for_host_pdev_id(soc, pdev->pdev_id); + if (mode_change) { + /* + * When NSS offload is enabled, send pdev_id->lmac_id + * and pdev_id to hw_pdev_id to NSS FW + */ + if (nss_config) { + mac_id = pdev->lmac_id; + if (soc->cdp_soc.ol_ops->pdev_update_lmac_n_target_pdev_id) + soc->cdp_soc.ol_ops-> + pdev_update_lmac_n_target_pdev_id( + soc->ctrl_psoc, + &pdev_id, &mac_id, &hw_pdev_id); + } + } + qdf_spin_lock_bh(&pdev->vdev_list_lock); TAILQ_FOREACH(vdev, &pdev->vdev_list, vdev_list_elem) { HTT_TX_TCL_METADATA_PDEV_ID_SET(vdev->htt_tcl_metadata,