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:
Yeshwanth Sriram Guntuka
2023-04-04 10:54:28 +05:30
committed by Madan Koyyalamudi
orang tua 01677182ff
melakukan 7b19419ddd
10 mengubah file dengan 64 tambahan dan 17 penghapusan

Melihat File

@@ -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)
{ {
} }

Melihat File

@@ -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

Melihat File

@@ -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);

Melihat File

@@ -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;

Melihat File

@@ -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)
{ {
} }

Melihat File

@@ -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

Melihat File

@@ -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

Melihat File

@@ -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

Melihat File

@@ -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

Melihat File

@@ -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;
}