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:

committed by
Rahul Choudhary

parent
3251d2d0ad
commit
6bd218f3be
@@ -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*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -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, ¶ms);
|
return wmi_mlo_teardown_cmd_send(wmi_handle, ¶ms);
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -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,
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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,
|
||||||
|
Reference in New Issue
Block a user