qcacmn: Send standby pdev info to FW

Send standby pdev/radio which is expected to be up while
in powersave mode to FW, to switch master control for
timers.

Change-Id: I4b48d93859359d1b6aee0b9993fd1bd3bff863f2
CRs-Fixed: 3621705
This commit is contained in:
Surya Prakash Raajen
2023-09-21 14:18:37 +05:30
committed by Rahul Choudhary
parent 3251d2d0ad
commit 6bd218f3be
7 changed files with 19 additions and 7 deletions

View File

@@ -3013,11 +3013,13 @@ QDF_STATUS target_if_mlo_ready(struct wlan_objmgr_pdev **pdev,
* @pdev: Pointer to pdev object * @pdev: Pointer to pdev object
* @reason: Reason for triggering teardown * @reason: Reason for triggering teardown
* @reset: UMAC reset for mode1 SSR * @reset: UMAC reset for mode1 SSR
* @standby_active: Active radio while in standby mode
* *
* Return: QDF_STATUS codes * Return: QDF_STATUS codes
*/ */
QDF_STATUS target_if_mlo_teardown_req(struct wlan_objmgr_pdev *pdev, QDF_STATUS target_if_mlo_teardown_req(struct wlan_objmgr_pdev *pdev,
uint32_t reason, bool reset); uint32_t reason, bool reset,
bool standby_active);
#endif /*WLAN_FEATURE_11BE_MLO && WLAN_MLO_MULTI_CHIP*/ #endif /*WLAN_FEATURE_11BE_MLO && WLAN_MLO_MULTI_CHIP*/
/** /**

View File

@@ -1243,7 +1243,7 @@ QDF_STATUS target_if_mlo_ready(struct wlan_objmgr_pdev **pdev,
QDF_STATUS QDF_STATUS
target_if_mlo_teardown_req(struct wlan_objmgr_pdev *pdev, target_if_mlo_teardown_req(struct wlan_objmgr_pdev *pdev,
enum wmi_mlo_teardown_reason reason, enum wmi_mlo_teardown_reason reason,
bool reset) bool reset, bool standby_active)
{ {
wmi_unified_t wmi_handle; wmi_unified_t wmi_handle;
struct wmi_mlo_teardown_params params = {0}; struct wmi_mlo_teardown_params params = {0};
@@ -1255,6 +1255,7 @@ target_if_mlo_teardown_req(struct wlan_objmgr_pdev *pdev,
params.pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev); params.pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev);
params.reason = reason; params.reason = reason;
params.umac_reset = reset; params.umac_reset = reset;
params.standby_active = standby_active;
return wmi_mlo_teardown_cmd_send(wmi_handle, &params); return wmi_mlo_teardown_cmd_send(wmi_handle, &params);
} }

View File

@@ -254,6 +254,7 @@ struct wlan_objmgr_pdev_objmgr {
* @peer_free_list: list to hold freed peer * @peer_free_list: list to hold freed peer
* @peer_obj_free_work:delayed work to be queued into workqueue * @peer_obj_free_work:delayed work to be queued into workqueue
* @active_work_cnt: active work counts * @active_work_cnt: active work counts
* @standby_active: Pdev in standby mode while power down
*/ */
struct wlan_objmgr_pdev { struct wlan_objmgr_pdev {
struct wlan_chan_list *current_chan_list; struct wlan_chan_list *current_chan_list;
@@ -271,6 +272,9 @@ struct wlan_objmgr_pdev {
qdf_work_t peer_obj_free_work; qdf_work_t peer_obj_free_work;
uint32_t active_work_cnt; uint32_t active_work_cnt;
#endif #endif
#ifdef WLAN_MLO_MULTI_CHIP
bool standby_active;
#endif
}; };
/* /*

View File

@@ -592,7 +592,8 @@ struct wlan_lmac_if_mlme_tx_ops {
QDF_STATUS (*target_if_mlo_ready)(struct wlan_objmgr_pdev **pdev, QDF_STATUS (*target_if_mlo_ready)(struct wlan_objmgr_pdev **pdev,
uint8_t num_pdevs); uint8_t num_pdevs);
QDF_STATUS (*target_if_mlo_teardown_req)(struct wlan_objmgr_pdev *pdev, QDF_STATUS (*target_if_mlo_teardown_req)(struct wlan_objmgr_pdev *pdev,
uint32_t grp_id, bool reset); uint32_t grp_id, bool reset,
bool standby_active);
#endif #endif
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
QDF_STATUS (*vdev_send_set_mac_addr)(struct qdf_mac_addr mac_addr, QDF_STATUS (*vdev_send_set_mac_addr)(struct qdf_mac_addr mac_addr,

View File

@@ -1042,13 +1042,15 @@ static void mlo_send_teardown_req(struct wlan_objmgr_psoc *psoc,
if (tx_ops && tx_ops->mops.target_if_mlo_teardown_req) { if (tx_ops && tx_ops->mops.target_if_mlo_teardown_req) {
mlo_info( mlo_info(
"Trigger Teardown with Pdev %d Psoc id %d link idx %d Umac reset %d for Mode 1", "Trigger Teardown with Pdev id: %d Psoc id: %d link idx: %d Umac reset: %d Standby Active: %d",
wlan_objmgr_pdev_get_pdev_id(temp_pdev), wlan_objmgr_pdev_get_pdev_id(temp_pdev),
wlan_psoc_get_id(wlan_pdev_get_psoc(temp_pdev)), wlan_psoc_get_id(wlan_pdev_get_psoc(temp_pdev)),
link_idx, umac_reset); link_idx, umac_reset,
temp_pdev->standby_active);
tx_ops->mops.target_if_mlo_teardown_req( tx_ops->mops.target_if_mlo_teardown_req(
setup_info->pdev_list[link_idx], setup_info->pdev_list[link_idx],
reason, umac_reset); reason, umac_reset,
temp_pdev->standby_active);
} }
} }
} else { } else {
@@ -1058,7 +1060,7 @@ static void mlo_send_teardown_req(struct wlan_objmgr_psoc *psoc,
continue; continue;
tx_ops->mops.target_if_mlo_teardown_req( tx_ops->mops.target_if_mlo_teardown_req(
setup_info->pdev_list[link_idx], setup_info->pdev_list[link_idx],
reason, 0); reason, 0, 0);
} }
} }
} }

View File

@@ -66,6 +66,7 @@ struct wmi_mlo_teardown_params {
uint32_t pdev_id; uint32_t pdev_id;
enum wmi_mlo_teardown_reason reason; enum wmi_mlo_teardown_reason reason;
bool umac_reset; bool umac_reset;
bool standby_active;
}; };
/** enum wmi_mlo_setup_status - Status code in WMI MLO setup completion event /** enum wmi_mlo_setup_status - Status code in WMI MLO setup completion event

View File

@@ -2285,6 +2285,7 @@ QDF_STATUS mlo_teardown_cmd_send_tlv(struct wmi_unified *wmi_handle,
} }
cmd->trigger_umac_reset = param->umac_reset; cmd->trigger_umac_reset = param->umac_reset;
cmd->erp_standby_mode = param->standby_active;
wmi_mtrace(WMI_MLO_TEARDOWN_CMDID, NO_SESSION, 0); wmi_mtrace(WMI_MLO_TEARDOWN_CMDID, NO_SESSION, 0);
ret = wmi_unified_cmd_send(wmi_handle, buf, len, ret = wmi_unified_cmd_send(wmi_handle, buf, len,