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
* @reason: Reason for triggering teardown
* @reset: UMAC reset for mode1 SSR
* @standby_active: Active radio while in standby mode
*
* Return: QDF_STATUS codes
*/
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*/
/**

View File

@@ -1243,7 +1243,7 @@ QDF_STATUS target_if_mlo_ready(struct wlan_objmgr_pdev **pdev,
QDF_STATUS
target_if_mlo_teardown_req(struct wlan_objmgr_pdev *pdev,
enum wmi_mlo_teardown_reason reason,
bool reset)
bool reset, bool standby_active)
{
wmi_unified_t wmi_handle;
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.reason = reason;
params.umac_reset = reset;
params.standby_active = standby_active;
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_obj_free_work:delayed work to be queued into workqueue
* @active_work_cnt: active work counts
* @standby_active: Pdev in standby mode while power down
*/
struct wlan_objmgr_pdev {
struct wlan_chan_list *current_chan_list;
@@ -271,6 +272,9 @@ struct wlan_objmgr_pdev {
qdf_work_t peer_obj_free_work;
uint32_t active_work_cnt;
#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,
uint8_t num_pdevs);
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
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
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) {
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_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(
setup_info->pdev_list[link_idx],
reason, umac_reset);
reason, umac_reset,
temp_pdev->standby_active);
}
}
} else {
@@ -1058,7 +1060,7 @@ static void mlo_send_teardown_req(struct wlan_objmgr_psoc *psoc,
continue;
tx_ops->mops.target_if_mlo_teardown_req(
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;
enum wmi_mlo_teardown_reason reason;
bool umac_reset;
bool standby_active;
};
/** 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->erp_standby_mode = param->standby_active;
wmi_mtrace(WMI_MLO_TEARDOWN_CMDID, NO_SESSION, 0);
ret = wmi_unified_cmd_send(wmi_handle, buf, len,