qcacld-3.0: Add support for sending QMI misc msg on DL deinit
Add support for sending QMI WFDS misc request to QMI server on Direct link deinit. Change-Id: I611625d83719c0f8a7dfbef1d3c8328cb618ef7f CRs-Fixed: 3454630
This commit is contained in:

committed by
Madan Koyyalamudi

orang tua
01677182ff
melakukan
7b19419ddd
@@ -669,10 +669,11 @@ QDF_STATUS dp_direct_link_init(struct wlan_dp_psoc_context *dp_ctx);
|
|||||||
/**
|
/**
|
||||||
* dp_direct_link_deinit() - De-initializes Direct Link datapath
|
* dp_direct_link_deinit() - De-initializes Direct Link datapath
|
||||||
* @dp_ctx: DP private context
|
* @dp_ctx: DP private context
|
||||||
|
* @is_ssr: true if SSR is in progress else false
|
||||||
*
|
*
|
||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
void dp_direct_link_deinit(struct wlan_dp_psoc_context *dp_ctx);
|
void dp_direct_link_deinit(struct wlan_dp_psoc_context *dp_ctx, bool is_ssr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dp_config_direct_link: Set direct link config of vdev
|
* dp_config_direct_link: Set direct link config of vdev
|
||||||
@@ -694,7 +695,7 @@ QDF_STATUS dp_direct_link_init(struct wlan_dp_psoc_context *dp_ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
void dp_direct_link_deinit(struct wlan_dp_psoc_context *dp_ctx)
|
void dp_direct_link_deinit(struct wlan_dp_psoc_context *dp_ctx, bool is_ssr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -171,9 +171,11 @@ QDF_STATUS dp_wfds_init(struct dp_direct_link_context *direct_link_ctx);
|
|||||||
/**
|
/**
|
||||||
* dp_wfds_deinit() - Deinitialize DP WFDS context
|
* dp_wfds_deinit() - Deinitialize DP WFDS context
|
||||||
* @direct_link_ctx: DP Direct Link context
|
* @direct_link_ctx: DP Direct Link context
|
||||||
|
* @is_ssr: true if SSR is in progress else false
|
||||||
*
|
*
|
||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
void dp_wfds_deinit(struct dp_direct_link_context *direct_link_ctx);
|
void dp_wfds_deinit(struct dp_direct_link_context *direct_link_ctx,
|
||||||
|
bool is_ssr);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1714,7 +1714,7 @@ QDF_STATUS dp_direct_link_init(struct wlan_dp_psoc_context *dp_ctx)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dp_direct_link_deinit(struct wlan_dp_psoc_context *dp_ctx)
|
void dp_direct_link_deinit(struct wlan_dp_psoc_context *dp_ctx, bool is_ssr)
|
||||||
{
|
{
|
||||||
if (!pld_is_direct_link_supported(dp_ctx->qdf_dev->dev))
|
if (!pld_is_direct_link_supported(dp_ctx->qdf_dev->dev))
|
||||||
return;
|
return;
|
||||||
@@ -1722,7 +1722,7 @@ void dp_direct_link_deinit(struct wlan_dp_psoc_context *dp_ctx)
|
|||||||
if (!dp_ctx->dp_direct_link_ctx)
|
if (!dp_ctx->dp_direct_link_ctx)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dp_wfds_deinit(dp_ctx->dp_direct_link_ctx);
|
dp_wfds_deinit(dp_ctx->dp_direct_link_ctx, is_ssr);
|
||||||
dp_direct_link_refill_ring_deinit(dp_ctx->dp_direct_link_ctx);
|
dp_direct_link_refill_ring_deinit(dp_ctx->dp_direct_link_ctx);
|
||||||
|
|
||||||
qdf_mem_free(dp_ctx->dp_direct_link_ctx);
|
qdf_mem_free(dp_ctx->dp_direct_link_ctx);
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -456,7 +456,7 @@ QDF_STATUS dp_wfds_new_server(void)
|
|||||||
|
|
||||||
qdf_atomic_set(&dl_wfds->wfds_state, DP_WFDS_SVC_CONNECTED);
|
qdf_atomic_set(&dl_wfds->wfds_state, DP_WFDS_SVC_CONNECTED);
|
||||||
|
|
||||||
dp_debug("Connected to WFDS QMI service, state: 0x%lx",
|
dp_debug("Connected to WFDS QMI service, state: 0x%x",
|
||||||
qdf_atomic_read(&dl_wfds->wfds_state));
|
qdf_atomic_read(&dl_wfds->wfds_state));
|
||||||
|
|
||||||
return dp_wfds_event_post(dl_wfds, DP_WFDS_NEW_SERVER, NULL);
|
return dp_wfds_event_post(dl_wfds, DP_WFDS_NEW_SERVER, NULL);
|
||||||
@@ -601,7 +601,8 @@ out:
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dp_wfds_deinit(struct dp_direct_link_context *dp_direct_link_ctx)
|
void dp_wfds_deinit(struct dp_direct_link_context *dp_direct_link_ctx,
|
||||||
|
bool is_ssr)
|
||||||
{
|
{
|
||||||
struct dp_direct_link_wfds_context *dl_wfds;
|
struct dp_direct_link_wfds_context *dl_wfds;
|
||||||
|
|
||||||
@@ -621,6 +622,11 @@ void dp_wfds_deinit(struct dp_direct_link_context *dp_direct_link_ctx)
|
|||||||
qdf_spinlock_destroy(&dl_wfds->wfds_event_list_lock);
|
qdf_spinlock_destroy(&dl_wfds->wfds_event_list_lock);
|
||||||
qdf_list_destroy(&dl_wfds->wfds_event_list);
|
qdf_list_destroy(&dl_wfds->wfds_event_list);
|
||||||
|
|
||||||
|
if (qdf_atomic_read(&dl_wfds->wfds_state) !=
|
||||||
|
DP_WFDS_SVC_DISCONNECTED)
|
||||||
|
wlan_qmi_wfds_send_misc_req_msg(dp_direct_link_ctx->dp_ctx->psoc,
|
||||||
|
is_ssr);
|
||||||
|
|
||||||
wlan_qmi_wfds_deinit(dp_direct_link_ctx->dp_ctx->psoc);
|
wlan_qmi_wfds_deinit(dp_direct_link_ctx->dp_ctx->psoc);
|
||||||
gp_dl_wfds_ctx = NULL;
|
gp_dl_wfds_ctx = NULL;
|
||||||
|
|
||||||
|
@@ -1340,10 +1340,11 @@ QDF_STATUS ucfg_dp_direct_link_init(struct wlan_objmgr_psoc *psoc);
|
|||||||
/**
|
/**
|
||||||
* ucfg_dp_direct_link_deinit() - De-initializes Direct Link datapath
|
* ucfg_dp_direct_link_deinit() - De-initializes Direct Link datapath
|
||||||
* @psoc: psoc handle
|
* @psoc: psoc handle
|
||||||
|
* @is_ssr: true if SSR is in progress else false
|
||||||
*
|
*
|
||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc);
|
void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc, bool is_ssr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_dp_wfds_handle_request_mem_ind() - Process request memory indication
|
* ucfg_dp_wfds_handle_request_mem_ind() - Process request memory indication
|
||||||
@@ -1400,7 +1401,7 @@ QDF_STATUS ucfg_dp_direct_link_init(struct wlan_objmgr_psoc *psoc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc)
|
void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc, bool is_ssr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2344,7 +2344,7 @@ QDF_STATUS ucfg_dp_direct_link_init(struct wlan_objmgr_psoc *psoc)
|
|||||||
return dp_direct_link_init(dp_ctx);
|
return dp_direct_link_init(dp_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc)
|
void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc, bool is_ssr)
|
||||||
{
|
{
|
||||||
struct wlan_dp_psoc_context *dp_ctx = dp_psoc_get_priv(psoc);
|
struct wlan_dp_psoc_context *dp_ctx = dp_psoc_get_priv(psoc);
|
||||||
|
|
||||||
@@ -2353,7 +2353,7 @@ void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dp_direct_link_deinit(dp_ctx);
|
dp_direct_link_deinit(dp_ctx, is_ssr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -224,6 +224,7 @@ struct wlan_qmi_wfds_ipcc_map_n_cfg_req_msg {
|
|||||||
* @qmi_wfds_send_req_mem_msg: Callback to send WFDS request memory message
|
* @qmi_wfds_send_req_mem_msg: Callback to send WFDS request memory message
|
||||||
* @qmi_wfds_send_ipcc_map_n_cfg_msg: Callback to send WFDS IPCC map and
|
* @qmi_wfds_send_ipcc_map_n_cfg_msg: Callback to send WFDS IPCC map and
|
||||||
* configure message
|
* configure message
|
||||||
|
* @qmi_wfds_send_misc_req_msg: Callback to send WFDS misc request message
|
||||||
*/
|
*/
|
||||||
struct wlan_qmi_psoc_callbacks {
|
struct wlan_qmi_psoc_callbacks {
|
||||||
#ifdef QMI_WFDS
|
#ifdef QMI_WFDS
|
||||||
@@ -235,6 +236,7 @@ struct wlan_qmi_psoc_callbacks {
|
|||||||
struct wlan_qmi_wfds_mem_req_msg *src_info);
|
struct wlan_qmi_wfds_mem_req_msg *src_info);
|
||||||
QDF_STATUS (*qmi_wfds_send_ipcc_map_n_cfg_msg)(
|
QDF_STATUS (*qmi_wfds_send_ipcc_map_n_cfg_msg)(
|
||||||
struct wlan_qmi_wfds_ipcc_map_n_cfg_req_msg *src_info);
|
struct wlan_qmi_wfds_ipcc_map_n_cfg_req_msg *src_info);
|
||||||
|
QDF_STATUS (*qmi_wfds_send_misc_req_msg)(bool is_ssr);
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -77,6 +77,17 @@ wlan_qmi_wfds_send_req_mem_msg(struct wlan_objmgr_psoc *psoc,
|
|||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_qmi_wfds_ipcc_map_n_cfg_msg(struct wlan_objmgr_psoc *psoc,
|
wlan_qmi_wfds_ipcc_map_n_cfg_msg(struct wlan_objmgr_psoc *psoc,
|
||||||
struct wlan_qmi_wfds_ipcc_map_n_cfg_req_msg *src_info);
|
struct wlan_qmi_wfds_ipcc_map_n_cfg_req_msg *src_info);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* wlan_qmi_wfds_send_misc_req_msg() - Send the misc req message
|
||||||
|
* to QMI server
|
||||||
|
* @psoc: PSOC handle
|
||||||
|
* @is_ssr: true if SSR is in progress else false
|
||||||
|
*
|
||||||
|
* Return: QDF status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_qmi_wfds_send_misc_req_msg(struct wlan_objmgr_psoc *psoc, bool is_ssr);
|
||||||
#else
|
#else
|
||||||
static inline
|
static inline
|
||||||
QDF_STATUS wlan_qmi_wfds_init(struct wlan_objmgr_psoc *psoc)
|
QDF_STATUS wlan_qmi_wfds_init(struct wlan_objmgr_psoc *psoc)
|
||||||
@@ -109,5 +120,11 @@ wlan_qmi_wfds_ipcc_map_n_cfg_msg(struct wlan_objmgr_psoc *psoc,
|
|||||||
{
|
{
|
||||||
return QDF_STATUS_E_NOSUPPORT;
|
return QDF_STATUS_E_NOSUPPORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline QDF_STATUS
|
||||||
|
wlan_qmi_wfds_send_misc_req_msg(struct wlan_objmgr_psoc *psoc, bool is_ssr)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_E_NOSUPPORT;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -100,6 +100,8 @@ ucfg_qmi_wfds_register_os_if_callbacks(struct wlan_qmi_psoc_context *qmi_ctx,
|
|||||||
cb_obj->qmi_wfds_send_req_mem_msg;
|
cb_obj->qmi_wfds_send_req_mem_msg;
|
||||||
qmi_ctx->qmi_cbs.qmi_wfds_send_ipcc_map_n_cfg_msg =
|
qmi_ctx->qmi_cbs.qmi_wfds_send_ipcc_map_n_cfg_msg =
|
||||||
cb_obj->qmi_wfds_send_ipcc_map_n_cfg_msg;
|
cb_obj->qmi_wfds_send_ipcc_map_n_cfg_msg;
|
||||||
|
qmi_ctx->qmi_cbs.qmi_wfds_send_misc_req_msg =
|
||||||
|
cb_obj->qmi_wfds_send_misc_req_msg;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static inline void
|
static inline void
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -103,3 +103,19 @@ wlan_qmi_wfds_ipcc_map_n_cfg_msg(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_qmi_wfds_send_misc_req_msg(struct wlan_objmgr_psoc *psoc, bool is_ssr)
|
||||||
|
{
|
||||||
|
struct wlan_qmi_psoc_context *qmi_ctx = qmi_psoc_get_priv(psoc);
|
||||||
|
|
||||||
|
if (!qmi_ctx) {
|
||||||
|
qmi_err("QMI context is NULL");
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qmi_ctx->qmi_cbs.qmi_wfds_send_misc_req_msg)
|
||||||
|
return qmi_ctx->qmi_cbs.qmi_wfds_send_misc_req_msg(is_ssr);
|
||||||
|
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user