Merge "qcacmn: Add logs in qdf_mem_malloc(), and qdf_mem_malloc_atomic()"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
0c999dc79c
@@ -168,6 +168,7 @@ fail:
|
|||||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_P2P_ID);
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_P2P_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
/**
|
/**
|
||||||
* wlan_p2p_lo_event_callback() - Callback for listen offload event
|
* wlan_p2p_lo_event_callback() - Callback for listen offload event
|
||||||
* @user_data: pointer to soc object
|
* @user_data: pointer to soc object
|
||||||
@@ -238,6 +239,18 @@ fail:
|
|||||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_P2P_ID);
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_P2P_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void wlan_p2p_init_lo_event(struct p2p_start_param *start_param,
|
||||||
|
struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
start_param->lo_event_cb = wlan_p2p_lo_event_callback;
|
||||||
|
start_param->lo_event_cb_data = psoc;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline void wlan_p2p_init_lo_event(struct p2p_start_param *start_param,
|
||||||
|
struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif /* FEATURE_P2P_LISTEN_OFFLOAD */
|
||||||
/**
|
/**
|
||||||
* wlan_p2p_event_callback() - Callback for P2P event
|
* wlan_p2p_event_callback() - Callback for P2P event
|
||||||
* @user_data: pointer to soc object
|
* @user_data: pointer to soc object
|
||||||
@@ -321,8 +334,7 @@ QDF_STATUS wlan_p2p_start(struct wlan_objmgr_psoc *psoc)
|
|||||||
start_param.event_cb_data = psoc;
|
start_param.event_cb_data = psoc;
|
||||||
start_param.tx_cnf_cb = wlan_p2p_action_tx_cnf_callback;
|
start_param.tx_cnf_cb = wlan_p2p_action_tx_cnf_callback;
|
||||||
start_param.tx_cnf_cb_data = psoc;
|
start_param.tx_cnf_cb_data = psoc;
|
||||||
start_param.lo_event_cb = wlan_p2p_lo_event_callback;
|
wlan_p2p_init_lo_event(&start_param, psoc);
|
||||||
start_param.lo_event_cb_data = psoc;
|
|
||||||
|
|
||||||
return ucfg_p2p_psoc_start(psoc, &start_param);
|
return ucfg_p2p_psoc_start(psoc, &start_param);
|
||||||
}
|
}
|
||||||
|
@@ -109,6 +109,9 @@ void *qdf_mem_malloc_debug(size_t size, const char *file, uint32_t line,
|
|||||||
#define qdf_mem_malloc(size) \
|
#define qdf_mem_malloc(size) \
|
||||||
qdf_mem_malloc_debug(size, __FILE__, __LINE__, QDF_RET_IP, 0)
|
qdf_mem_malloc_debug(size, __FILE__, __LINE__, QDF_RET_IP, 0)
|
||||||
|
|
||||||
|
#define qdf_mem_malloc_fl(size, func, line) \
|
||||||
|
qdf_mem_malloc_debug(size, func, line, QDF_RET_IP, 0)
|
||||||
|
|
||||||
#define qdf_mem_malloc_atomic(size) \
|
#define qdf_mem_malloc_atomic(size) \
|
||||||
qdf_mem_malloc_debug(size, __FILE__, __LINE__, QDF_RET_IP, GFP_ATOMIC)
|
qdf_mem_malloc_debug(size, __FILE__, __LINE__, QDF_RET_IP, GFP_ATOMIC)
|
||||||
/**
|
/**
|
||||||
@@ -200,8 +203,42 @@ void qdf_mem_free_consistent_debug(qdf_device_t osdev, void *dev,
|
|||||||
qdf_mem_free_consistent_debug(osdev, dev, size, vaddr, paddr, memctx, \
|
qdf_mem_free_consistent_debug(osdev, dev, size, vaddr, paddr, memctx, \
|
||||||
__FILE__, __LINE__)
|
__FILE__, __LINE__)
|
||||||
#else
|
#else
|
||||||
void *qdf_mem_malloc(qdf_size_t size);
|
|
||||||
void *qdf_mem_malloc_atomic(qdf_size_t size);
|
/**
|
||||||
|
* qdf_mem_malloc() - allocation QDF memory
|
||||||
|
* @size: Number of bytes of memory to allocate.
|
||||||
|
*
|
||||||
|
* This function will dynamicallly allocate the specified number of bytes of
|
||||||
|
* memory.
|
||||||
|
*
|
||||||
|
* Return:
|
||||||
|
* Upon successful allocate, returns a non-NULL pointer to the allocated
|
||||||
|
* memory. If this function is unable to allocate the amount of memory
|
||||||
|
* specified (for any reason) it returns NULL.
|
||||||
|
*/
|
||||||
|
#define qdf_mem_malloc(size) \
|
||||||
|
qdf_mem_malloc_fl(size, __func__, __LINE__)
|
||||||
|
|
||||||
|
void *qdf_mem_malloc_fl(qdf_size_t size, const char *func, uint32_t line);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* qdf_mem_malloc_atomic() - allocation QDF memory atomically
|
||||||
|
* @size: Number of bytes of memory to allocate.
|
||||||
|
*
|
||||||
|
* This function will dynamicallly allocate the specified number of bytes of
|
||||||
|
* memory.
|
||||||
|
*
|
||||||
|
* Return:
|
||||||
|
* Upon successful allocate, returns a non-NULL pointer to the allocated
|
||||||
|
* memory. If this function is unable to allocate the amount of memory
|
||||||
|
* specified (for any reason) it returns NULL.
|
||||||
|
*/
|
||||||
|
#define qdf_mem_malloc_atomic(size) \
|
||||||
|
qdf_mem_malloc_atomic_fl(size, __func__, __LINE__)
|
||||||
|
|
||||||
|
void *qdf_mem_malloc_atomic_fl(qdf_size_t size,
|
||||||
|
const char *func,
|
||||||
|
uint32_t line);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qdf_mem_free() - free QDF memory
|
* qdf_mem_free() - free QDF memory
|
||||||
|
@@ -1158,19 +1158,7 @@ static void qdf_mem_debug_init(void) {}
|
|||||||
|
|
||||||
static void qdf_mem_debug_exit(void) {}
|
static void qdf_mem_debug_exit(void) {}
|
||||||
|
|
||||||
/**
|
void *qdf_mem_malloc_fl(size_t size, const char *func, uint32_t line)
|
||||||
* qdf_mem_malloc() - allocation QDF memory
|
|
||||||
* @size: Number of bytes of memory to allocate.
|
|
||||||
*
|
|
||||||
* This function will dynamicallly allocate the specified number of bytes of
|
|
||||||
* memory.
|
|
||||||
*
|
|
||||||
* Return:
|
|
||||||
* Upon successful allocate, returns a non-NULL pointer to the allocated
|
|
||||||
* memory. If this function is unable to allocate the amount of memory
|
|
||||||
* specified (for any reason) it returns NULL.
|
|
||||||
*/
|
|
||||||
void *qdf_mem_malloc(size_t size)
|
|
||||||
{
|
{
|
||||||
void *ptr;
|
void *ptr;
|
||||||
|
|
||||||
@@ -1179,28 +1167,19 @@ void *qdf_mem_malloc(size_t size)
|
|||||||
return ptr;
|
return ptr;
|
||||||
|
|
||||||
ptr = kzalloc(size, qdf_mem_malloc_flags());
|
ptr = kzalloc(size, qdf_mem_malloc_flags());
|
||||||
if (!ptr)
|
if (!ptr) {
|
||||||
|
qdf_nofl_warn("Failed to malloc %zuB @ %s:%d",
|
||||||
|
size, func, line);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
qdf_mem_kmalloc_inc(ksize(ptr));
|
qdf_mem_kmalloc_inc(ksize(ptr));
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
qdf_export_symbol(qdf_mem_malloc);
|
qdf_export_symbol(qdf_mem_malloc_fl);
|
||||||
|
|
||||||
/**
|
void *qdf_mem_malloc_atomic_fl(size_t size, const char *func, uint32_t line)
|
||||||
* qdf_mem_malloc_atomic() - allocation QDF memory atomically
|
|
||||||
* @size: Number of bytes of memory to allocate.
|
|
||||||
*
|
|
||||||
* This function will dynamicallly allocate the specified number of bytes of
|
|
||||||
* memory.
|
|
||||||
*
|
|
||||||
* Return:
|
|
||||||
* Upon successful allocate, returns a non-NULL pointer to the allocated
|
|
||||||
* memory. If this function is unable to allocate the amount of memory
|
|
||||||
* specified (for any reason) it returns NULL.
|
|
||||||
*/
|
|
||||||
void *qdf_mem_malloc_atomic(size_t size)
|
|
||||||
{
|
{
|
||||||
void *ptr;
|
void *ptr;
|
||||||
|
|
||||||
@@ -1209,15 +1188,17 @@ void *qdf_mem_malloc_atomic(size_t size)
|
|||||||
return ptr;
|
return ptr;
|
||||||
|
|
||||||
ptr = kzalloc(size, GFP_ATOMIC);
|
ptr = kzalloc(size, GFP_ATOMIC);
|
||||||
if (!ptr)
|
if (!ptr) {
|
||||||
|
qdf_nofl_warn("Failed to malloc %zuB @ %s:%d",
|
||||||
|
size, func, line);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
qdf_mem_kmalloc_inc(ksize(ptr));
|
qdf_mem_kmalloc_inc(ksize(ptr));
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
qdf_export_symbol(qdf_mem_malloc_atomic_fl);
|
||||||
qdf_export_symbol(qdf_mem_malloc_atomic);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qdf_mem_free() - free QDF memory
|
* qdf_mem_free() - free QDF memory
|
||||||
|
@@ -119,6 +119,7 @@ static int target_if_radar_event_handler(
|
|||||||
struct wlan_objmgr_psoc *psoc;
|
struct wlan_objmgr_psoc *psoc;
|
||||||
struct wlan_objmgr_pdev *pdev;
|
struct wlan_objmgr_pdev *pdev;
|
||||||
struct wlan_lmac_if_dfs_rx_ops *dfs_rx_ops;
|
struct wlan_lmac_if_dfs_rx_ops *dfs_rx_ops;
|
||||||
|
struct wmi_unified *wmi_handle;
|
||||||
|
|
||||||
if (!scn || !data) {
|
if (!scn || !data) {
|
||||||
target_if_err("scn: %pK, data: %pK", scn, data);
|
target_if_err("scn: %pK, data: %pK", scn, data);
|
||||||
@@ -135,8 +136,15 @@ static int target_if_radar_event_handler(
|
|||||||
target_if_err("Invalid dfs_rx_ops: %pK", dfs_rx_ops);
|
target_if_err("Invalid dfs_rx_ops: %pK", dfs_rx_ops);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wmi_handle = get_wmi_unified_hdl_from_psoc(psoc);
|
||||||
|
if (!wmi_handle) {
|
||||||
|
target_if_err("Invalid WMI context");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
if (QDF_IS_STATUS_ERROR(wmi_extract_wlan_radar_event_info(
|
if (QDF_IS_STATUS_ERROR(wmi_extract_wlan_radar_event_info(
|
||||||
GET_WMI_HDL_FROM_PSOC(psoc), data,
|
wmi_handle, data,
|
||||||
&wlan_radar_event, datalen))) {
|
&wlan_radar_event, datalen))) {
|
||||||
target_if_err("failed to extract wlan radar event");
|
target_if_err("failed to extract wlan radar event");
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
@@ -46,6 +46,7 @@ static int target_if_dfs_cac_complete_event_handler(
|
|||||||
struct wlan_objmgr_pdev *pdev;
|
struct wlan_objmgr_pdev *pdev;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
uint32_t vdev_id = 0;
|
uint32_t vdev_id = 0;
|
||||||
|
struct wmi_unified *wmi_handle;
|
||||||
|
|
||||||
if (!scn || !data) {
|
if (!scn || !data) {
|
||||||
target_if_err("scn: %pK, data: %pK", scn, data);
|
target_if_err("scn: %pK, data: %pK", scn, data);
|
||||||
@@ -64,8 +65,14 @@ static int target_if_dfs_cac_complete_event_handler(
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wmi_extract_dfs_cac_complete_event(GET_WMI_HDL_FROM_PSOC(psoc),
|
wmi_handle = get_wmi_unified_hdl_from_psoc(psoc);
|
||||||
data, &vdev_id, datalen) != QDF_STATUS_SUCCESS) {
|
if (!wmi_handle) {
|
||||||
|
target_if_err("Invalid WMI handle");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wmi_extract_dfs_cac_complete_event(wmi_handle, data, &vdev_id,
|
||||||
|
datalen) != QDF_STATUS_SUCCESS) {
|
||||||
target_if_err("failed to extract cac complete event");
|
target_if_err("failed to extract cac complete event");
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
@@ -109,6 +116,7 @@ static int target_if_dfs_radar_detection_event_handler(
|
|||||||
struct wlan_objmgr_pdev *pdev = NULL;
|
struct wlan_objmgr_pdev *pdev = NULL;
|
||||||
struct wlan_lmac_if_dfs_rx_ops *dfs_rx_ops;
|
struct wlan_lmac_if_dfs_rx_ops *dfs_rx_ops;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
struct wmi_unified *wmi_handle;
|
||||||
|
|
||||||
if (!scn || !data) {
|
if (!scn || !data) {
|
||||||
target_if_err("scn: %pK, data: %pK", scn, data);
|
target_if_err("scn: %pK, data: %pK", scn, data);
|
||||||
@@ -127,8 +135,15 @@ static int target_if_dfs_radar_detection_event_handler(
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wmi_extract_dfs_radar_detection_event(GET_WMI_HDL_FROM_PSOC(psoc),
|
wmi_handle = get_wmi_unified_hdl_from_psoc(psoc);
|
||||||
data, &radar, datalen) != QDF_STATUS_SUCCESS) {
|
if (!wmi_handle) {
|
||||||
|
target_if_err("Invalid WMI handle");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wmi_extract_dfs_radar_detection_event(wmi_handle, data, &radar,
|
||||||
|
datalen)
|
||||||
|
!= QDF_STATUS_SUCCESS) {
|
||||||
target_if_err("failed to extract cac complete event");
|
target_if_err("failed to extract cac complete event");
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -29,13 +29,7 @@ struct wlan_objmgr_psoc;
|
|||||||
struct p2p_ps_config;
|
struct p2p_ps_config;
|
||||||
struct p2p_lo_start;
|
struct p2p_lo_start;
|
||||||
|
|
||||||
/**
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
* target_if_p2p_register_tx_ops() - Register P2P component TX OPS
|
|
||||||
* @tx_ops: lmac if transmit ops
|
|
||||||
*
|
|
||||||
* Return: None
|
|
||||||
*/
|
|
||||||
void target_if_p2p_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* target_if_p2p_register_lo_event_handler() - Register lo event handler
|
* target_if_p2p_register_lo_event_handler() - Register lo event handler
|
||||||
@@ -49,18 +43,6 @@ void target_if_p2p_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops);
|
|||||||
QDF_STATUS target_if_p2p_register_lo_event_handler(
|
QDF_STATUS target_if_p2p_register_lo_event_handler(
|
||||||
struct wlan_objmgr_psoc *psoc, void *arg);
|
struct wlan_objmgr_psoc *psoc, void *arg);
|
||||||
|
|
||||||
/**
|
|
||||||
* target_if_p2p_register_noa_event_handler() - Register noa event handler
|
|
||||||
* @psoc: soc object
|
|
||||||
* @arg: additional argument
|
|
||||||
*
|
|
||||||
* Target interface API to register P2P noa event handler.
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS_SUCCESS - in case of success
|
|
||||||
*/
|
|
||||||
QDF_STATUS target_if_p2p_register_noa_event_handler(
|
|
||||||
struct wlan_objmgr_psoc *psoc, void *arg);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* target_if_p2p_unregister_lo_event_handler() - Unregister lo event handler
|
* target_if_p2p_unregister_lo_event_handler() - Unregister lo event handler
|
||||||
* @psoc: soc object
|
* @psoc: soc object
|
||||||
@@ -73,6 +55,51 @@ QDF_STATUS target_if_p2p_register_noa_event_handler(
|
|||||||
QDF_STATUS target_if_p2p_unregister_lo_event_handler(
|
QDF_STATUS target_if_p2p_unregister_lo_event_handler(
|
||||||
struct wlan_objmgr_psoc *psoc, void *arg);
|
struct wlan_objmgr_psoc *psoc, void *arg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_p2p_lo_start() - Start listen offload
|
||||||
|
* @psoc: soc object
|
||||||
|
* @lo_start: lo start information
|
||||||
|
*
|
||||||
|
* Target interface API to start listen offload.
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS - in case of success
|
||||||
|
*/
|
||||||
|
QDF_STATUS target_if_p2p_lo_start(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct p2p_lo_start *lo_start);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_p2p_lo_stop() - Stop listen offload
|
||||||
|
* @psoc: soc object
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
*
|
||||||
|
* Target interface API to stop listen offload.
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS - in case of success
|
||||||
|
*/
|
||||||
|
QDF_STATUS target_if_p2p_lo_stop(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint32_t vdev_id);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_p2p_register_tx_ops() - Register P2P component TX OPS
|
||||||
|
* @tx_ops: lmac if transmit ops
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
void target_if_p2p_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_p2p_register_noa_event_handler() - Register noa event handler
|
||||||
|
* @psoc: soc object
|
||||||
|
* @arg: additional argument
|
||||||
|
*
|
||||||
|
* Target interface API to register P2P noa event handler.
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS - in case of success
|
||||||
|
*/
|
||||||
|
QDF_STATUS target_if_p2p_register_noa_event_handler(
|
||||||
|
struct wlan_objmgr_psoc *psoc, void *arg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* target_if_p2p_unregister_noa_event_handler() - Unregister noa event handler
|
* target_if_p2p_unregister_noa_event_handler() - Unregister noa event handler
|
||||||
* @psoc: soc object
|
* @psoc: soc object
|
||||||
@@ -97,30 +124,6 @@ QDF_STATUS target_if_p2p_unregister_noa_event_handler(
|
|||||||
QDF_STATUS target_if_p2p_set_ps(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS target_if_p2p_set_ps(struct wlan_objmgr_psoc *psoc,
|
||||||
struct p2p_ps_config *ps_config);
|
struct p2p_ps_config *ps_config);
|
||||||
|
|
||||||
/**
|
|
||||||
* target_if_p2p_lo_start() - Start listen offload
|
|
||||||
* @psoc: soc object
|
|
||||||
* @lo_start: lo start information
|
|
||||||
*
|
|
||||||
* Target interface API to start listen offload.
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS_SUCCESS - in case of success
|
|
||||||
*/
|
|
||||||
QDF_STATUS target_if_p2p_lo_start(struct wlan_objmgr_psoc *psoc,
|
|
||||||
struct p2p_lo_start *lo_start);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* target_if_p2p_lo_stop() - Stop listen offload
|
|
||||||
* @psoc: soc object
|
|
||||||
* @vdev_id: vdev id
|
|
||||||
*
|
|
||||||
* Target interface API to stop listen offload.
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS_SUCCESS - in case of success
|
|
||||||
*/
|
|
||||||
QDF_STATUS target_if_p2p_lo_stop(struct wlan_objmgr_psoc *psoc,
|
|
||||||
uint32_t vdev_id);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* target_if_p2p_set_noa() - Disable / Enable NOA
|
* target_if_p2p_set_noa() - Disable / Enable NOA
|
||||||
* @psoc: soc object
|
* @psoc: soc object
|
||||||
|
@@ -32,6 +32,18 @@ target_if_psoc_get_p2p_rx_ops(struct wlan_objmgr_psoc *psoc)
|
|||||||
return &(psoc->soc_cb.rx_ops.p2p);
|
return &(psoc->soc_cb.rx_ops.p2p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
|
static inline void
|
||||||
|
target_if_p2p_lo_register_tx_ops(struct wlan_lmac_if_p2p_tx_ops *p2p_tx_ops)
|
||||||
|
{
|
||||||
|
p2p_tx_ops->lo_start = target_if_p2p_lo_start;
|
||||||
|
p2p_tx_ops->lo_stop = target_if_p2p_lo_stop;
|
||||||
|
p2p_tx_ops->reg_lo_ev_handler =
|
||||||
|
target_if_p2p_register_lo_event_handler;
|
||||||
|
p2p_tx_ops->unreg_lo_ev_handler =
|
||||||
|
target_if_p2p_unregister_lo_event_handler;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* target_p2p_lo_event_handler() - WMI callback for lo stop event
|
* target_p2p_lo_event_handler() - WMI callback for lo stop event
|
||||||
* @scn: pointer to scn
|
* @scn: pointer to scn
|
||||||
@@ -98,6 +110,90 @@ static int target_p2p_lo_event_handler(ol_scn_t scn, uint8_t *data,
|
|||||||
return qdf_status_to_os_return(status);
|
return qdf_status_to_os_return(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS target_if_p2p_register_lo_event_handler(
|
||||||
|
struct wlan_objmgr_psoc *psoc, void *arg)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
wmi_unified_t wmi_handle = lmac_get_wmi_unified_hdl(psoc);
|
||||||
|
|
||||||
|
target_if_debug("psoc:%pK, arg:%pK", psoc, arg);
|
||||||
|
|
||||||
|
if (!wmi_handle) {
|
||||||
|
target_if_err("Invalid wmi handle");
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = wmi_unified_register_event(wmi_handle,
|
||||||
|
wmi_p2p_lo_stop_event_id,
|
||||||
|
target_p2p_lo_event_handler);
|
||||||
|
|
||||||
|
target_if_debug("wmi register lo event handle, status:%d", status);
|
||||||
|
|
||||||
|
return status == 0 ? QDF_STATUS_SUCCESS : QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS target_if_p2p_unregister_lo_event_handler(
|
||||||
|
struct wlan_objmgr_psoc *psoc, void *arg)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
wmi_unified_t wmi_handle = lmac_get_wmi_unified_hdl(psoc);
|
||||||
|
|
||||||
|
target_if_debug("psoc:%pK, arg:%pK", psoc, arg);
|
||||||
|
|
||||||
|
if (!wmi_handle) {
|
||||||
|
target_if_err("Invalid wmi handle");
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = wmi_unified_unregister_event(wmi_handle,
|
||||||
|
wmi_p2p_lo_stop_event_id);
|
||||||
|
|
||||||
|
target_if_debug("wmi unregister lo event handle, status:%d", status);
|
||||||
|
|
||||||
|
return status == 0 ? QDF_STATUS_SUCCESS : QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS target_if_p2p_lo_start(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct p2p_lo_start *lo_start)
|
||||||
|
{
|
||||||
|
wmi_unified_t wmi_handle = lmac_get_wmi_unified_hdl(psoc);
|
||||||
|
|
||||||
|
if (!wmi_handle) {
|
||||||
|
target_if_err("Invalid wmi handle");
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!lo_start) {
|
||||||
|
target_if_err("lo start parameters is null");
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
target_if_debug("psoc:%pK, vdev_id:%d", psoc, lo_start->vdev_id);
|
||||||
|
|
||||||
|
return wmi_unified_p2p_lo_start_cmd(wmi_handle, lo_start);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS target_if_p2p_lo_stop(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint32_t vdev_id)
|
||||||
|
{
|
||||||
|
wmi_unified_t wmi_handle = lmac_get_wmi_unified_hdl(psoc);
|
||||||
|
|
||||||
|
target_if_debug("psoc:%pK, vdev_id:%d", psoc, vdev_id);
|
||||||
|
|
||||||
|
if (!wmi_handle) {
|
||||||
|
target_if_err("Invalid wmi handle");
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return wmi_unified_p2p_lo_stop_cmd(wmi_handle,
|
||||||
|
(uint8_t)vdev_id);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline void
|
||||||
|
target_if_p2p_lo_register_tx_ops(struct wlan_lmac_if_p2p_tx_ops *p2p_tx_ops)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif /* FEATURE_P2P_LISTEN_OFFLOAD */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* target_p2p_noa_event_handler() - WMI callback for noa event
|
* target_p2p_noa_event_handler() - WMI callback for noa event
|
||||||
* @scn: pointer to scn
|
* @scn: pointer to scn
|
||||||
@@ -164,29 +260,6 @@ static int target_p2p_noa_event_handler(ol_scn_t scn, uint8_t *data,
|
|||||||
return qdf_status_to_os_return(status);
|
return qdf_status_to_os_return(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS target_if_p2p_register_lo_event_handler(
|
|
||||||
struct wlan_objmgr_psoc *psoc, void *arg)
|
|
||||||
{
|
|
||||||
int status;
|
|
||||||
wmi_unified_t wmi_handle = lmac_get_wmi_unified_hdl(psoc);
|
|
||||||
|
|
||||||
target_if_debug("psoc:%pK, arg:%pK", psoc, arg);
|
|
||||||
|
|
||||||
if (!wmi_handle) {
|
|
||||||
target_if_err("Invalid wmi handle");
|
|
||||||
return QDF_STATUS_E_INVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
status = wmi_unified_register_event(wmi_handle,
|
|
||||||
wmi_p2p_lo_stop_event_id,
|
|
||||||
target_p2p_lo_event_handler);
|
|
||||||
|
|
||||||
target_if_debug("wmi register lo event handle, status:%d",
|
|
||||||
status);
|
|
||||||
|
|
||||||
return status == 0 ? QDF_STATUS_SUCCESS : QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDF_STATUS target_if_p2p_register_noa_event_handler(
|
QDF_STATUS target_if_p2p_register_noa_event_handler(
|
||||||
struct wlan_objmgr_psoc *psoc, void *arg)
|
struct wlan_objmgr_psoc *psoc, void *arg)
|
||||||
{
|
{
|
||||||
@@ -210,28 +283,6 @@ QDF_STATUS target_if_p2p_register_noa_event_handler(
|
|||||||
return status == 0 ? QDF_STATUS_SUCCESS : QDF_STATUS_E_FAILURE;
|
return status == 0 ? QDF_STATUS_SUCCESS : QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS target_if_p2p_unregister_lo_event_handler(
|
|
||||||
struct wlan_objmgr_psoc *psoc, void *arg)
|
|
||||||
{
|
|
||||||
int status;
|
|
||||||
wmi_unified_t wmi_handle = lmac_get_wmi_unified_hdl(psoc);
|
|
||||||
|
|
||||||
target_if_debug("psoc:%pK, arg:%pK", psoc, arg);
|
|
||||||
|
|
||||||
if (!wmi_handle) {
|
|
||||||
target_if_err("Invalid wmi handle");
|
|
||||||
return QDF_STATUS_E_INVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
status = wmi_unified_unregister_event(wmi_handle,
|
|
||||||
wmi_p2p_lo_stop_event_id);
|
|
||||||
|
|
||||||
target_if_debug("wmi unregister lo event handle, status:%d",
|
|
||||||
status);
|
|
||||||
|
|
||||||
return status == 0 ? QDF_STATUS_SUCCESS : QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDF_STATUS target_if_p2p_unregister_noa_event_handler(
|
QDF_STATUS target_if_p2p_unregister_noa_event_handler(
|
||||||
struct wlan_objmgr_psoc *psoc, void *arg)
|
struct wlan_objmgr_psoc *psoc, void *arg)
|
||||||
{
|
{
|
||||||
@@ -297,41 +348,6 @@ QDF_STATUS target_if_p2p_set_ps(struct wlan_objmgr_psoc *psoc,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS target_if_p2p_lo_start(struct wlan_objmgr_psoc *psoc,
|
|
||||||
struct p2p_lo_start *lo_start)
|
|
||||||
{
|
|
||||||
wmi_unified_t wmi_handle = lmac_get_wmi_unified_hdl(psoc);
|
|
||||||
|
|
||||||
if (!wmi_handle) {
|
|
||||||
target_if_err("Invalid wmi handle");
|
|
||||||
return QDF_STATUS_E_INVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!lo_start) {
|
|
||||||
target_if_err("lo start parameters is null");
|
|
||||||
return QDF_STATUS_E_INVAL;
|
|
||||||
}
|
|
||||||
target_if_debug("psoc:%pK, vdev_id:%d", psoc, lo_start->vdev_id);
|
|
||||||
|
|
||||||
return wmi_unified_p2p_lo_start_cmd(wmi_handle, lo_start);
|
|
||||||
}
|
|
||||||
|
|
||||||
QDF_STATUS target_if_p2p_lo_stop(struct wlan_objmgr_psoc *psoc,
|
|
||||||
uint32_t vdev_id)
|
|
||||||
{
|
|
||||||
wmi_unified_t wmi_handle = lmac_get_wmi_unified_hdl(psoc);
|
|
||||||
|
|
||||||
target_if_debug("psoc:%pK, vdev_id:%d", psoc, vdev_id);
|
|
||||||
|
|
||||||
if (!wmi_handle) {
|
|
||||||
target_if_err("Invalid wmi handle");
|
|
||||||
return QDF_STATUS_E_INVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return wmi_unified_p2p_lo_stop_cmd(wmi_handle,
|
|
||||||
(uint8_t)vdev_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
QDF_STATUS target_if_p2p_set_noa(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS target_if_p2p_set_noa(struct wlan_objmgr_psoc *psoc,
|
||||||
uint32_t vdev_id, bool disable_noa)
|
uint32_t vdev_id, bool disable_noa)
|
||||||
{
|
{
|
||||||
@@ -363,15 +379,11 @@ void target_if_p2p_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
|
|||||||
|
|
||||||
p2p_tx_ops = &tx_ops->p2p;
|
p2p_tx_ops = &tx_ops->p2p;
|
||||||
p2p_tx_ops->set_ps = target_if_p2p_set_ps;
|
p2p_tx_ops->set_ps = target_if_p2p_set_ps;
|
||||||
p2p_tx_ops->lo_start = target_if_p2p_lo_start;
|
|
||||||
p2p_tx_ops->lo_stop = target_if_p2p_lo_stop;
|
|
||||||
p2p_tx_ops->set_noa = target_if_p2p_set_noa;
|
p2p_tx_ops->set_noa = target_if_p2p_set_noa;
|
||||||
p2p_tx_ops->reg_lo_ev_handler =
|
|
||||||
target_if_p2p_register_lo_event_handler;
|
|
||||||
p2p_tx_ops->reg_noa_ev_handler =
|
p2p_tx_ops->reg_noa_ev_handler =
|
||||||
target_if_p2p_register_noa_event_handler;
|
target_if_p2p_register_noa_event_handler;
|
||||||
p2p_tx_ops->unreg_lo_ev_handler =
|
|
||||||
target_if_p2p_unregister_lo_event_handler;
|
|
||||||
p2p_tx_ops->unreg_noa_ev_handler =
|
p2p_tx_ops->unreg_noa_ev_handler =
|
||||||
target_if_p2p_unregister_noa_event_handler;
|
target_if_p2p_unregister_noa_event_handler;
|
||||||
|
/* register P2P listen offload callbacks */
|
||||||
|
target_if_p2p_lo_register_tx_ops(p2p_tx_ops);
|
||||||
}
|
}
|
||||||
|
@@ -213,18 +213,20 @@ struct p2p_lo_start;
|
|||||||
struct wlan_lmac_if_p2p_tx_ops {
|
struct wlan_lmac_if_p2p_tx_ops {
|
||||||
QDF_STATUS (*set_ps)(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS (*set_ps)(struct wlan_objmgr_psoc *psoc,
|
||||||
struct p2p_ps_config *ps_config);
|
struct p2p_ps_config *ps_config);
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
QDF_STATUS (*lo_start)(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS (*lo_start)(struct wlan_objmgr_psoc *psoc,
|
||||||
struct p2p_lo_start *lo_start);
|
struct p2p_lo_start *lo_start);
|
||||||
QDF_STATUS (*lo_stop)(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS (*lo_stop)(struct wlan_objmgr_psoc *psoc,
|
||||||
uint32_t vdev_id);
|
uint32_t vdev_id);
|
||||||
QDF_STATUS (*set_noa)(struct wlan_objmgr_psoc *psoc,
|
|
||||||
uint32_t vdev_id, bool disable_noa);
|
|
||||||
QDF_STATUS (*reg_lo_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS (*reg_lo_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
||||||
void *arg);
|
void *arg);
|
||||||
QDF_STATUS (*reg_noa_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
|
||||||
void *arg);
|
|
||||||
QDF_STATUS (*unreg_lo_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS (*unreg_lo_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
||||||
void *arg);
|
void *arg);
|
||||||
|
#endif
|
||||||
|
QDF_STATUS (*set_noa)(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint32_t vdev_id, bool disable_noa);
|
||||||
|
QDF_STATUS (*reg_noa_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
||||||
|
void *arg);
|
||||||
QDF_STATUS (*unreg_noa_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS (*unreg_noa_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
||||||
void *arg);
|
void *arg);
|
||||||
};
|
};
|
||||||
@@ -828,8 +830,10 @@ struct p2p_lo_event;
|
|||||||
* @noa_ev_handler: function pointer to give noa event
|
* @noa_ev_handler: function pointer to give noa event
|
||||||
*/
|
*/
|
||||||
struct wlan_lmac_if_p2p_rx_ops {
|
struct wlan_lmac_if_p2p_rx_ops {
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
QDF_STATUS (*lo_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS (*lo_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
||||||
struct p2p_lo_event *event_info);
|
struct p2p_lo_event *event_info);
|
||||||
|
#endif
|
||||||
QDF_STATUS (*noa_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS (*noa_ev_handler)(struct wlan_objmgr_psoc *psoc,
|
||||||
struct p2p_noa_info *event_info);
|
struct p2p_noa_info *event_info);
|
||||||
};
|
};
|
||||||
|
@@ -292,6 +292,7 @@ static void wlan_lmac_if_umac_reg_rx_ops_register(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONVERGED_P2P_ENABLE
|
#ifdef CONVERGED_P2P_ENABLE
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
static void wlan_lmac_if_umac_rx_ops_register_p2p(
|
static void wlan_lmac_if_umac_rx_ops_register_p2p(
|
||||||
struct wlan_lmac_if_rx_ops *rx_ops)
|
struct wlan_lmac_if_rx_ops *rx_ops)
|
||||||
{
|
{
|
||||||
@@ -299,6 +300,13 @@ static void wlan_lmac_if_umac_rx_ops_register_p2p(
|
|||||||
rx_ops->p2p.noa_ev_handler = tgt_p2p_noa_event_cb;
|
rx_ops->p2p.noa_ev_handler = tgt_p2p_noa_event_cb;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
static void wlan_lmac_if_umac_rx_ops_register_p2p(
|
||||||
|
struct wlan_lmac_if_rx_ops *rx_ops)
|
||||||
|
{
|
||||||
|
rx_ops->p2p.noa_ev_handler = tgt_p2p_noa_event_cb;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
static void wlan_lmac_if_umac_rx_ops_register_p2p(
|
static void wlan_lmac_if_umac_rx_ops_register_p2p(
|
||||||
struct wlan_lmac_if_rx_ops *rx_ops)
|
struct wlan_lmac_if_rx_ops *rx_ops)
|
||||||
{
|
{
|
||||||
|
@@ -789,6 +789,20 @@ QDF_STATUS p2p_psoc_object_close(struct wlan_objmgr_psoc *soc)
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
|
static inline void p2p_init_lo_event(struct p2p_start_param *start_param,
|
||||||
|
struct p2p_start_param *req)
|
||||||
|
{
|
||||||
|
start_param->lo_event_cb = req->lo_event_cb;
|
||||||
|
start_param->lo_event_cb_data = req->lo_event_cb_data;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline void p2p_init_lo_event(struct p2p_start_param *start_param,
|
||||||
|
struct p2p_start_param *req)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
QDF_STATUS p2p_psoc_start(struct wlan_objmgr_psoc *soc,
|
QDF_STATUS p2p_psoc_start(struct wlan_objmgr_psoc *soc,
|
||||||
struct p2p_start_param *req)
|
struct p2p_start_param *req)
|
||||||
{
|
{
|
||||||
@@ -818,8 +832,7 @@ QDF_STATUS p2p_psoc_start(struct wlan_objmgr_psoc *soc,
|
|||||||
start_param->event_cb_data = req->event_cb_data;
|
start_param->event_cb_data = req->event_cb_data;
|
||||||
start_param->tx_cnf_cb = req->tx_cnf_cb;
|
start_param->tx_cnf_cb = req->tx_cnf_cb;
|
||||||
start_param->tx_cnf_cb_data = req->tx_cnf_cb_data;
|
start_param->tx_cnf_cb_data = req->tx_cnf_cb_data;
|
||||||
start_param->lo_event_cb = req->lo_event_cb;
|
p2p_init_lo_event(start_param, req);
|
||||||
start_param->lo_event_cb_data = req->lo_event_cb_data;
|
|
||||||
p2p_soc_obj->start_param = start_param;
|
p2p_soc_obj->start_param = start_param;
|
||||||
|
|
||||||
wlan_p2p_init_connection_status(p2p_soc_obj);
|
wlan_p2p_init_connection_status(p2p_soc_obj);
|
||||||
@@ -995,6 +1008,7 @@ QDF_STATUS p2p_process_evt(struct scheduler_msg *msg)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
QDF_STATUS p2p_process_lo_stop(
|
QDF_STATUS p2p_process_lo_stop(
|
||||||
struct p2p_lo_stop_event *lo_stop_event)
|
struct p2p_lo_stop_event *lo_stop_event)
|
||||||
{
|
{
|
||||||
@@ -1034,6 +1048,7 @@ QDF_STATUS p2p_process_lo_stop(
|
|||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
QDF_STATUS p2p_process_noa(struct p2p_noa_event *noa_event)
|
QDF_STATUS p2p_process_noa(struct p2p_noa_event *noa_event)
|
||||||
{
|
{
|
||||||
|
@@ -354,6 +354,7 @@ QDF_STATUS p2p_process_cmd(struct scheduler_msg *msg);
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS p2p_process_evt(struct scheduler_msg *msg);
|
QDF_STATUS p2p_process_evt(struct scheduler_msg *msg);
|
||||||
|
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
/**
|
/**
|
||||||
* p2p_process_lo_stop() - Process lo stop event
|
* p2p_process_lo_stop() - Process lo stop event
|
||||||
* @lo_stop_event: listen offload stop event information
|
* @lo_stop_event: listen offload stop event information
|
||||||
@@ -365,7 +366,13 @@ QDF_STATUS p2p_process_evt(struct scheduler_msg *msg);
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS p2p_process_lo_stop(
|
QDF_STATUS p2p_process_lo_stop(
|
||||||
struct p2p_lo_stop_event *lo_stop_event);
|
struct p2p_lo_stop_event *lo_stop_event);
|
||||||
|
#else
|
||||||
|
static inline QDF_STATUS p2p_process_lo_stop(
|
||||||
|
struct p2p_lo_stop_event *lo_stop_event)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
/**
|
/**
|
||||||
* p2p_process_noa() - Process noa event
|
* p2p_process_noa() - Process noa event
|
||||||
* @noa_event: noa event information
|
* @noa_event: noa event information
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -34,6 +34,20 @@ struct p2p_lo_event;
|
|||||||
struct mgmt_rx_event_params;
|
struct mgmt_rx_event_params;
|
||||||
enum mgmt_frame_type;
|
enum mgmt_frame_type;
|
||||||
|
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
|
|
||||||
|
/**
|
||||||
|
* tgt_p2p_lo_event_cb() - Listen offload stop request
|
||||||
|
* @psoc: soc object
|
||||||
|
* @event_info: lo stop event buffer
|
||||||
|
*
|
||||||
|
* This function gets called from target interface.
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS - in case of success
|
||||||
|
*/
|
||||||
|
QDF_STATUS tgt_p2p_lo_event_cb(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct p2p_lo_event *event_info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tgt_p2p_register_lo_ev_handler() - register lo event
|
* tgt_p2p_register_lo_ev_handler() - register lo event
|
||||||
* @psoc: soc object
|
* @psoc: soc object
|
||||||
@@ -45,17 +59,6 @@ enum mgmt_frame_type;
|
|||||||
QDF_STATUS tgt_p2p_register_lo_ev_handler(
|
QDF_STATUS tgt_p2p_register_lo_ev_handler(
|
||||||
struct wlan_objmgr_psoc *psoc);
|
struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
/**
|
|
||||||
* tgt_p2p_register_noa_ev_handler() - register noa event
|
|
||||||
* @psoc: soc object
|
|
||||||
*
|
|
||||||
* p2p tgt api to register noa event handler.
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS_SUCCESS - in case of success
|
|
||||||
*/
|
|
||||||
QDF_STATUS tgt_p2p_register_noa_ev_handler(
|
|
||||||
struct wlan_objmgr_psoc *psoc);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tgt_p2p_unregister_lo_ev_handler() - unregister lo event
|
* tgt_p2p_unregister_lo_ev_handler() - unregister lo event
|
||||||
* @psoc: soc object
|
* @psoc: soc object
|
||||||
@@ -66,6 +69,30 @@ QDF_STATUS tgt_p2p_register_noa_ev_handler(
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS tgt_p2p_unregister_lo_ev_handler(
|
QDF_STATUS tgt_p2p_unregister_lo_ev_handler(
|
||||||
struct wlan_objmgr_psoc *psoc);
|
struct wlan_objmgr_psoc *psoc);
|
||||||
|
#else
|
||||||
|
static inline QDF_STATUS tgt_p2p_register_lo_ev_handler(
|
||||||
|
struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline QDF_STATUS tgt_p2p_unregister_lo_ev_handler(
|
||||||
|
struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* tgt_p2p_register_noa_ev_handler() - register noa event
|
||||||
|
* @psoc: soc object
|
||||||
|
*
|
||||||
|
* p2p tgt api to register noa event handler.
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS - in case of success
|
||||||
|
*/
|
||||||
|
QDF_STATUS tgt_p2p_register_noa_ev_handler(
|
||||||
|
struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tgt_p2p_unregister_noa_ev_handler() - unregister noa event
|
* tgt_p2p_unregister_noa_ev_handler() - unregister noa event
|
||||||
@@ -151,16 +178,4 @@ QDF_STATUS tgt_p2p_mgmt_frame_rx_cb(struct wlan_objmgr_psoc *psoc,
|
|||||||
QDF_STATUS tgt_p2p_noa_event_cb(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS tgt_p2p_noa_event_cb(struct wlan_objmgr_psoc *psoc,
|
||||||
struct p2p_noa_info *event_info);
|
struct p2p_noa_info *event_info);
|
||||||
|
|
||||||
/**
|
|
||||||
* tgt_p2p_lo_event_cb() - Listen offload stop request
|
|
||||||
* @psoc: soc object
|
|
||||||
* @event_info: lo stop event buffer
|
|
||||||
*
|
|
||||||
* This function gets called from target interface.
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS_SUCCESS - in case of success
|
|
||||||
*/
|
|
||||||
QDF_STATUS tgt_p2p_lo_event_cb(struct wlan_objmgr_psoc *psoc,
|
|
||||||
struct p2p_lo_event *event_info);
|
|
||||||
|
|
||||||
#endif /* _WLAN_P2P_TGT_API_H_ */
|
#endif /* _WLAN_P2P_TGT_API_H_ */
|
||||||
|
@@ -110,8 +110,10 @@ struct p2p_start_param {
|
|||||||
void *event_cb_data;
|
void *event_cb_data;
|
||||||
p2p_action_tx_cnf_callback tx_cnf_cb;
|
p2p_action_tx_cnf_callback tx_cnf_cb;
|
||||||
void *tx_cnf_cb_data;
|
void *tx_cnf_cb_data;
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
p2p_lo_event_callback lo_event_cb;
|
p2p_lo_event_callback lo_event_cb;
|
||||||
void *lo_event_cb_data;
|
void *lo_event_cb_data;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -277,6 +279,7 @@ QDF_STATUS ucfg_p2p_mgmt_tx_cancel(struct wlan_objmgr_psoc *soc,
|
|||||||
QDF_STATUS ucfg_p2p_set_ps(struct wlan_objmgr_psoc *soc,
|
QDF_STATUS ucfg_p2p_set_ps(struct wlan_objmgr_psoc *soc,
|
||||||
struct p2p_ps_config *ps_config);
|
struct p2p_ps_config *ps_config);
|
||||||
|
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
/**
|
/**
|
||||||
* ucfg_p2p_lo_start() - Listen offload start request
|
* ucfg_p2p_lo_start() - Listen offload start request
|
||||||
* @soc: soc context
|
* @soc: soc context
|
||||||
@@ -301,6 +304,7 @@ QDF_STATUS ucfg_p2p_lo_start(struct wlan_objmgr_psoc *soc,
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS ucfg_p2p_lo_stop(struct wlan_objmgr_psoc *soc,
|
QDF_STATUS ucfg_p2p_lo_stop(struct wlan_objmgr_psoc *soc,
|
||||||
uint32_t vdev_id);
|
uint32_t vdev_id);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* p2p_peer_authorized() - Process peer authorized event
|
* p2p_peer_authorized() - Process peer authorized event
|
||||||
|
@@ -43,6 +43,7 @@ wlan_psoc_get_p2p_tx_ops(struct wlan_objmgr_psoc *psoc)
|
|||||||
return &(psoc->soc_cb.tx_ops.p2p);
|
return &(psoc->soc_cb.tx_ops.p2p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
QDF_STATUS tgt_p2p_register_lo_ev_handler(
|
QDF_STATUS tgt_p2p_register_lo_ev_handler(
|
||||||
struct wlan_objmgr_psoc *psoc)
|
struct wlan_objmgr_psoc *psoc)
|
||||||
{
|
{
|
||||||
@@ -58,21 +59,6 @@ QDF_STATUS tgt_p2p_register_lo_ev_handler(
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS tgt_p2p_register_noa_ev_handler(
|
|
||||||
struct wlan_objmgr_psoc *psoc)
|
|
||||||
{
|
|
||||||
struct wlan_lmac_if_p2p_tx_ops *p2p_ops;
|
|
||||||
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
|
||||||
|
|
||||||
p2p_ops = wlan_psoc_get_p2p_tx_ops(psoc);
|
|
||||||
if (p2p_ops && p2p_ops->reg_noa_ev_handler) {
|
|
||||||
status = p2p_ops->reg_noa_ev_handler(psoc, NULL);
|
|
||||||
p2p_debug("register noa event, status:%d", status);
|
|
||||||
}
|
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDF_STATUS tgt_p2p_unregister_lo_ev_handler(
|
QDF_STATUS tgt_p2p_unregister_lo_ev_handler(
|
||||||
struct wlan_objmgr_psoc *psoc)
|
struct wlan_objmgr_psoc *psoc)
|
||||||
{
|
{
|
||||||
@@ -88,6 +74,69 @@ QDF_STATUS tgt_p2p_unregister_lo_ev_handler(
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS tgt_p2p_lo_event_cb(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct p2p_lo_event *event_info)
|
||||||
|
{
|
||||||
|
struct p2p_lo_stop_event *lo_stop_event;
|
||||||
|
struct scheduler_msg msg = {0};
|
||||||
|
struct p2p_soc_priv_obj *p2p_soc_obj;
|
||||||
|
|
||||||
|
p2p_debug("soc:%pK, event_info:%pK", psoc, event_info);
|
||||||
|
|
||||||
|
if (!psoc) {
|
||||||
|
p2p_err("psoc context passed is NULL");
|
||||||
|
if (event_info)
|
||||||
|
qdf_mem_free(event_info);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
p2p_soc_obj = wlan_objmgr_psoc_get_comp_private_obj(psoc,
|
||||||
|
WLAN_UMAC_COMP_P2P);
|
||||||
|
if (!p2p_soc_obj) {
|
||||||
|
p2p_err("p2p soc object is NULL");
|
||||||
|
if (event_info)
|
||||||
|
qdf_mem_free(event_info);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!event_info) {
|
||||||
|
p2p_err("invalid lo stop event information");
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
lo_stop_event = qdf_mem_malloc(sizeof(*lo_stop_event));
|
||||||
|
if (!lo_stop_event) {
|
||||||
|
p2p_err("Failed to allocate p2p lo stop event");
|
||||||
|
qdf_mem_free(event_info);
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
lo_stop_event->p2p_soc_obj = p2p_soc_obj;
|
||||||
|
lo_stop_event->lo_event = event_info;
|
||||||
|
msg.type = P2P_EVENT_LO_STOPPED;
|
||||||
|
msg.bodyptr = lo_stop_event;
|
||||||
|
msg.callback = p2p_process_evt;
|
||||||
|
scheduler_post_msg(QDF_MODULE_ID_TARGET_IF, &msg);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif /* FEATURE_P2P_LISTEN_OFFLOAD */
|
||||||
|
|
||||||
|
QDF_STATUS tgt_p2p_register_noa_ev_handler(
|
||||||
|
struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
struct wlan_lmac_if_p2p_tx_ops *p2p_ops;
|
||||||
|
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
p2p_ops = wlan_psoc_get_p2p_tx_ops(psoc);
|
||||||
|
if (p2p_ops && p2p_ops->reg_noa_ev_handler) {
|
||||||
|
status = p2p_ops->reg_noa_ev_handler(psoc, NULL);
|
||||||
|
p2p_debug("register noa event, status:%d", status);
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS tgt_p2p_unregister_noa_ev_handler(
|
QDF_STATUS tgt_p2p_unregister_noa_ev_handler(
|
||||||
struct wlan_objmgr_psoc *psoc)
|
struct wlan_objmgr_psoc *psoc)
|
||||||
{
|
{
|
||||||
@@ -288,50 +337,3 @@ QDF_STATUS tgt_p2p_noa_event_cb(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS tgt_p2p_lo_event_cb(struct wlan_objmgr_psoc *psoc,
|
|
||||||
struct p2p_lo_event *event_info)
|
|
||||||
{
|
|
||||||
struct p2p_lo_stop_event *lo_stop_event;
|
|
||||||
struct scheduler_msg msg = {0};
|
|
||||||
struct p2p_soc_priv_obj *p2p_soc_obj;
|
|
||||||
|
|
||||||
p2p_debug("soc:%pK, event_info:%pK", psoc, event_info);
|
|
||||||
|
|
||||||
if (!psoc) {
|
|
||||||
p2p_err("psoc context passed is NULL");
|
|
||||||
if (event_info)
|
|
||||||
qdf_mem_free(event_info);
|
|
||||||
return QDF_STATUS_E_INVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
p2p_soc_obj = wlan_objmgr_psoc_get_comp_private_obj(psoc,
|
|
||||||
WLAN_UMAC_COMP_P2P);
|
|
||||||
if (!p2p_soc_obj) {
|
|
||||||
p2p_err("p2p soc object is NULL");
|
|
||||||
if (event_info)
|
|
||||||
qdf_mem_free(event_info);
|
|
||||||
return QDF_STATUS_E_INVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!event_info) {
|
|
||||||
p2p_err("invalid lo stop event information");
|
|
||||||
return QDF_STATUS_E_INVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
lo_stop_event = qdf_mem_malloc(sizeof(*lo_stop_event));
|
|
||||||
if (!lo_stop_event) {
|
|
||||||
p2p_err("Failed to allocate p2p lo stop event");
|
|
||||||
qdf_mem_free(event_info);
|
|
||||||
return QDF_STATUS_E_NOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
lo_stop_event->p2p_soc_obj = p2p_soc_obj;
|
|
||||||
lo_stop_event->lo_event = event_info;
|
|
||||||
msg.type = P2P_EVENT_LO_STOPPED;
|
|
||||||
msg.bodyptr = lo_stop_event;
|
|
||||||
msg.callback = p2p_process_evt;
|
|
||||||
scheduler_post_msg(QDF_MODULE_ID_TARGET_IF, &msg);
|
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
|
@@ -463,6 +463,7 @@ QDF_STATUS ucfg_p2p_set_ps(struct wlan_objmgr_psoc *soc,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
QDF_STATUS ucfg_p2p_lo_start(struct wlan_objmgr_psoc *soc,
|
QDF_STATUS ucfg_p2p_lo_start(struct wlan_objmgr_psoc *soc,
|
||||||
struct p2p_lo_start *p2p_lo_start)
|
struct p2p_lo_start *p2p_lo_start)
|
||||||
{
|
{
|
||||||
@@ -511,6 +512,7 @@ QDF_STATUS ucfg_p2p_lo_stop(struct wlan_objmgr_psoc *soc,
|
|||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
QDF_STATUS ucfg_p2p_set_noa(struct wlan_objmgr_psoc *soc,
|
QDF_STATUS ucfg_p2p_set_noa(struct wlan_objmgr_psoc *soc,
|
||||||
uint32_t vdev_id, bool disable_noa)
|
uint32_t vdev_id, bool disable_noa)
|
||||||
|
@@ -574,11 +574,13 @@ QDF_STATUS wmi_unified_set_p2pgo_noa_req_cmd(void *wmi_hdl,
|
|||||||
struct p2p_ps_params *noa);
|
struct p2p_ps_params *noa);
|
||||||
|
|
||||||
#ifdef CONVERGED_P2P_ENABLE
|
#ifdef CONVERGED_P2P_ENABLE
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
QDF_STATUS wmi_unified_p2p_lo_start_cmd(void *wmi_hdl,
|
QDF_STATUS wmi_unified_p2p_lo_start_cmd(void *wmi_hdl,
|
||||||
struct p2p_lo_start *param);
|
struct p2p_lo_start *param);
|
||||||
|
|
||||||
QDF_STATUS wmi_unified_p2p_lo_stop_cmd(void *wmi_hdl, uint8_t vdev_id);
|
QDF_STATUS wmi_unified_p2p_lo_stop_cmd(void *wmi_hdl, uint8_t vdev_id);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
QDF_STATUS wmi_unified_set_smps_params(void *wmi_hdl, uint8_t vdev_id,
|
QDF_STATUS wmi_unified_set_smps_params(void *wmi_hdl, uint8_t vdev_id,
|
||||||
int value);
|
int value);
|
||||||
|
@@ -343,7 +343,7 @@ QDF_STATUS (*send_set_p2pgo_oppps_req_cmd)(wmi_unified_t wmi_handle,
|
|||||||
QDF_STATUS (*send_set_p2pgo_noa_req_cmd)(wmi_unified_t wmi_handle,
|
QDF_STATUS (*send_set_p2pgo_noa_req_cmd)(wmi_unified_t wmi_handle,
|
||||||
struct p2p_ps_params *noa);
|
struct p2p_ps_params *noa);
|
||||||
|
|
||||||
#ifdef CONVERGED_P2P_ENABLE
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
QDF_STATUS (*send_p2p_lo_start_cmd)(wmi_unified_t wmi_handle,
|
QDF_STATUS (*send_p2p_lo_start_cmd)(wmi_unified_t wmi_handle,
|
||||||
struct p2p_lo_start *param);
|
struct p2p_lo_start *param);
|
||||||
|
|
||||||
@@ -1276,8 +1276,10 @@ QDF_STATUS (*extract_swba_noa_info)(wmi_unified_t wmi_handle, void *evt_buf,
|
|||||||
uint32_t idx, wmi_host_p2p_noa_info *p2p_desc);
|
uint32_t idx, wmi_host_p2p_noa_info *p2p_desc);
|
||||||
|
|
||||||
#ifdef CONVERGED_P2P_ENABLE
|
#ifdef CONVERGED_P2P_ENABLE
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
QDF_STATUS (*extract_p2p_lo_stop_ev_param)(wmi_unified_t wmi_handle,
|
QDF_STATUS (*extract_p2p_lo_stop_ev_param)(wmi_unified_t wmi_handle,
|
||||||
void *evt_buf, struct p2p_lo_event *param);
|
void *evt_buf, struct p2p_lo_event *param);
|
||||||
|
#endif
|
||||||
|
|
||||||
QDF_STATUS (*extract_p2p_noa_ev_param)(wmi_unified_t wmi_handle,
|
QDF_STATUS (*extract_p2p_noa_ev_param)(wmi_unified_t wmi_handle,
|
||||||
void *evt_buf, struct p2p_noa_info *param);
|
void *evt_buf, struct p2p_noa_info *param);
|
||||||
|
@@ -1032,7 +1032,7 @@ QDF_STATUS wmi_unified_set_p2pgo_noa_req_cmd(void *wmi_hdl,
|
|||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONVERGED_P2P_ENABLE
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
/**
|
/**
|
||||||
* wmi_unified_p2p_lo_start_cmd() - send p2p lo start request to fw
|
* wmi_unified_p2p_lo_start_cmd() - send p2p lo start request to fw
|
||||||
* @wmi_hdl: wmi handle
|
* @wmi_hdl: wmi handle
|
||||||
@@ -1073,13 +1073,13 @@ QDF_STATUS wmi_unified_p2p_lo_stop_cmd(void *wmi_hdl, uint8_t vdev_id)
|
|||||||
return QDF_STATUS_E_INVAL;
|
return QDF_STATUS_E_INVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wmi_handle->ops->send_p2p_lo_start_cmd)
|
if (wmi_handle->ops->send_p2p_lo_stop_cmd)
|
||||||
return wmi_handle->ops->send_p2p_lo_stop_cmd(wmi_handle,
|
return wmi_handle->ops->send_p2p_lo_stop_cmd(wmi_handle,
|
||||||
vdev_id);
|
vdev_id);
|
||||||
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
#endif /* End of CONVERGED_P2P_ENABLE */
|
#endif /* End of FEATURE_P2P_LISTEN_OFFLOAD*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wmi_get_temperature() - get pdev temperature req
|
* wmi_get_temperature() - get pdev temperature req
|
||||||
@@ -5791,6 +5791,7 @@ QDF_STATUS wmi_extract_swba_noa_info(void *wmi_hdl, void *evt_buf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONVERGED_P2P_ENABLE
|
#ifdef CONVERGED_P2P_ENABLE
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
/**
|
/**
|
||||||
* wmi_extract_p2p_lo_stop_ev_param() - extract p2p lo stop param from event
|
* wmi_extract_p2p_lo_stop_ev_param() - extract p2p lo stop param from event
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
@@ -5815,6 +5816,7 @@ QDF_STATUS wmi_extract_p2p_lo_stop_ev_param(void *wmi_hdl, void *evt_buf,
|
|||||||
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wmi_extract_p2p_noa_ev_param() - extract p2p noa param from event
|
* wmi_extract_p2p_noa_ev_param() - extract p2p noa param from event
|
||||||
|
@@ -3704,7 +3704,7 @@ end:
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONVERGED_P2P_ENABLE
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
/**
|
/**
|
||||||
* send_p2p_lo_start_cmd_tlv() - send p2p lo start request to fw
|
* send_p2p_lo_start_cmd_tlv() - send p2p lo start request to fw
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
@@ -3845,7 +3845,7 @@ static QDF_STATUS send_p2p_lo_stop_cmd_tlv(wmi_unified_t wmi_handle,
|
|||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
#endif /* End of CONVERGED_P2P_ENABLE */
|
#endif /* End of FEATURE_P2P_LISTEN_OFFLOAD */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* send_get_temperature_cmd_tlv() - get pdev temperature req
|
* send_get_temperature_cmd_tlv() - get pdev temperature req
|
||||||
@@ -18549,6 +18549,7 @@ static QDF_STATUS extract_p2p_noa_ev_param_tlv(
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
/**
|
/**
|
||||||
* extract_p2p_lo_stop_ev_param_tlv() - extract p2p lo stop
|
* extract_p2p_lo_stop_ev_param_tlv() - extract p2p lo stop
|
||||||
* information from event
|
* information from event
|
||||||
@@ -18585,6 +18586,7 @@ static QDF_STATUS extract_p2p_lo_stop_ev_param_tlv(
|
|||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#endif /* End of CONVERGED_P2P_ENABLE */
|
#endif /* End of CONVERGED_P2P_ENABLE */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -21959,7 +21961,7 @@ struct wmi_ops tlv_ops = {
|
|||||||
.send_get_temperature_cmd = send_get_temperature_cmd_tlv,
|
.send_get_temperature_cmd = send_get_temperature_cmd_tlv,
|
||||||
.send_set_p2pgo_oppps_req_cmd = send_set_p2pgo_oppps_req_cmd_tlv,
|
.send_set_p2pgo_oppps_req_cmd = send_set_p2pgo_oppps_req_cmd_tlv,
|
||||||
.send_set_p2pgo_noa_req_cmd = send_set_p2pgo_noa_req_cmd_tlv,
|
.send_set_p2pgo_noa_req_cmd = send_set_p2pgo_noa_req_cmd_tlv,
|
||||||
#ifdef CONVERGED_P2P_ENABLE
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
.send_p2p_lo_start_cmd = send_p2p_lo_start_cmd_tlv,
|
.send_p2p_lo_start_cmd = send_p2p_lo_start_cmd_tlv,
|
||||||
.send_p2p_lo_stop_cmd = send_p2p_lo_stop_cmd_tlv,
|
.send_p2p_lo_stop_cmd = send_p2p_lo_stop_cmd_tlv,
|
||||||
#endif
|
#endif
|
||||||
@@ -22244,8 +22246,10 @@ struct wmi_ops tlv_ops = {
|
|||||||
.extract_swba_noa_info = extract_swba_noa_info_tlv,
|
.extract_swba_noa_info = extract_swba_noa_info_tlv,
|
||||||
#ifdef CONVERGED_P2P_ENABLE
|
#ifdef CONVERGED_P2P_ENABLE
|
||||||
.extract_p2p_noa_ev_param = extract_p2p_noa_ev_param_tlv,
|
.extract_p2p_noa_ev_param = extract_p2p_noa_ev_param_tlv,
|
||||||
|
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||||
.extract_p2p_lo_stop_ev_param =
|
.extract_p2p_lo_stop_ev_param =
|
||||||
extract_p2p_lo_stop_ev_param_tlv,
|
extract_p2p_lo_stop_ev_param_tlv,
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
.extract_offchan_data_tx_compl_param =
|
.extract_offchan_data_tx_compl_param =
|
||||||
extract_offchan_data_tx_compl_param_tlv,
|
extract_offchan_data_tx_compl_param_tlv,
|
||||||
|
Reference in New Issue
Block a user