qcacmn: Add WMI support to send the wds AST commands to fw
Add host WMI APIs to send WMI_PEER_ADD_WDS_ENTRY_CMDID, WMI_PEER_REMOVE_WDS_ENTRY_CMDID, and WMI_PEER_UPDATE_WDS_ENTRY_CMDID to the Fw. Change-Id: I32afdac7c366b647ee3196bcb76531295e640b8b CRs-Fixed: 2997227
此提交包含在:
@@ -53,7 +53,9 @@
|
||||
#include "wmi_unified_twt_param.h"
|
||||
#include "wmi_unified_twt_api.h"
|
||||
#endif
|
||||
|
||||
#ifdef WDS_CONV_TARGET_IF_OPS_ENABLE
|
||||
#include "wmi_unified_wds_api.h"
|
||||
#endif
|
||||
#ifdef FEATURE_WLAN_EXTSCAN
|
||||
#include "wmi_unified_extscan_api.h"
|
||||
#endif
|
||||
|
@@ -61,6 +61,10 @@
|
||||
#include "wmi_unified_atf_param.h"
|
||||
#endif
|
||||
|
||||
#ifdef WDS_CONV_TARGET_IF_OPS_ENABLE
|
||||
#include "wmi_unified_wds_param.h"
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
|
||||
#include <wlan_interop_issues_ap_public_structs.h>
|
||||
#endif
|
||||
@@ -1273,7 +1277,7 @@ QDF_STATUS (*send_set_vap_dscp_tid_map_cmd)(wmi_unified_t wmi_handle,
|
||||
QDF_STATUS (*send_proxy_ast_reserve_cmd)(wmi_unified_t wmi_handle,
|
||||
struct proxy_ast_reserve_params *param);
|
||||
|
||||
#ifdef WMI_AP_SUPPORT
|
||||
#if defined(WMI_AP_SUPPORT) || defined(WDS_CONV_TARGET_IF_OPS_ENABLE)
|
||||
QDF_STATUS (*send_peer_add_wds_entry_cmd)(wmi_unified_t wmi_handle,
|
||||
struct peer_add_wds_entry_params *param);
|
||||
|
||||
@@ -1282,6 +1286,9 @@ QDF_STATUS (*send_peer_del_wds_entry_cmd)(wmi_unified_t wmi_handle,
|
||||
|
||||
QDF_STATUS (*send_peer_update_wds_entry_cmd)(wmi_unified_t wmi_handle,
|
||||
struct peer_update_wds_entry_params *param);
|
||||
#endif
|
||||
|
||||
#ifdef WMI_AP_SUPPORT
|
||||
|
||||
QDF_STATUS (*send_set_ctl_table_cmd)(wmi_unified_t wmi_handle,
|
||||
struct ctl_table_params *param);
|
||||
|
83
wmi/inc/wmi_unified_wds_api.h
一般檔案
83
wmi/inc/wmi_unified_wds_api.h
一般檔案
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
* above copyright notice and this permission notice appear in all
|
||||
* copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains the API declaration for the WDS WMI APIs.
|
||||
*/
|
||||
|
||||
#ifndef _WMI_UNIFIED_WDS_API_H_
|
||||
#define _WMI_UNIFIED_WDS_API_H_
|
||||
|
||||
#ifdef WDS_CONV_TARGET_IF_OPS_ENABLE
|
||||
#include <wmi_unified_api.h>
|
||||
#include <wmi_unified_wds_param.h>
|
||||
|
||||
/**
|
||||
* wmi_unified_peer_add_wds_entry_cmd() - WMI add wds entry cmd function
|
||||
* @wmi_hdl: handle to WMI
|
||||
* @param: pointer to hold wds entry param
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
||||
*/
|
||||
QDF_STATUS
|
||||
wmi_unified_peer_add_wds_entry_cmd(wmi_unified_t wmi_handle,
|
||||
struct peer_add_wds_entry_params *param);
|
||||
|
||||
/**
|
||||
* wmi_unified_peer_del_wds_entry_cmd() - WMI del wds entry cmd function
|
||||
* @wmi_hdl: handle to WMI
|
||||
* @param: pointer to hold wds entry param
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
||||
*/
|
||||
QDF_STATUS
|
||||
wmi_unified_peer_del_wds_entry_cmd(wmi_unified_t wmi_handle,
|
||||
struct peer_del_wds_entry_params *param);
|
||||
|
||||
/**
|
||||
* wmi_unified_update_wds_entry_cmd() - WMI update wds entry
|
||||
* cmd function
|
||||
* @wmi_hdl: handle to WMI
|
||||
* @param: pointer to hold wds entry param
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
||||
*/
|
||||
QDF_STATUS
|
||||
wmi_unified_update_wds_entry_cmd(wmi_unified_t wmi_handle,
|
||||
struct peer_update_wds_entry_params *param);
|
||||
|
||||
/**
|
||||
* wmi_wds_attach_tlv() - attach wds tlv handlers
|
||||
* @wmi_handle: wmi handle
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
void wmi_wds_attach_tlv(wmi_unified_t wmi_handle);
|
||||
#else
|
||||
/**
|
||||
* wmi_wds_attach_tlv() - attach wds tlv handlers
|
||||
* @wmi_handle: wmi handle
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
static inline void
|
||||
wmi_wds_attach_tlv(struct wmi_unified *wmi_handle)
|
||||
{
|
||||
}
|
||||
#endif /*WDS_CONV_TARGET_IF_OPS*/
|
||||
#endif /*_WMI_UNIFIED_WDS_API_H_*/
|
63
wmi/inc/wmi_unified_wds_param.h
一般檔案
63
wmi/inc/wmi_unified_wds_param.h
一般檔案
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
* above copyright notice and this permission notice appear in all
|
||||
* copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains the parameter definitions for the WDS WMI APIs.
|
||||
*/
|
||||
|
||||
#ifndef _WMI_UNIFIED_WDS_PARAM_H_
|
||||
#define _WMI_UNIFIED_WDS_PARAM_H_
|
||||
|
||||
/**
|
||||
* struct peer_add_wds_entry_params - WDS peer entry add params
|
||||
* @dest_addr: destination macaddr
|
||||
* @peer_addr: peer mac addr
|
||||
* @flags: WMI_HOST_WDS_FLAG_STATIC
|
||||
* @vdev_id: Vdev id
|
||||
*/
|
||||
struct peer_add_wds_entry_params {
|
||||
uint8_t dest_addr[QDF_MAC_ADDR_SIZE];
|
||||
uint8_t peer_addr[QDF_MAC_ADDR_SIZE];
|
||||
uint32_t flags;
|
||||
uint32_t vdev_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct peer_del_wds_entry_params - WDS peer entry del params
|
||||
* @dest_addr: destination macaddr
|
||||
* @vdev_id: Vdev id
|
||||
*/
|
||||
struct peer_del_wds_entry_params {
|
||||
uint8_t dest_addr[QDF_MAC_ADDR_SIZE];
|
||||
uint32_t vdev_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct peer_update_wds_entry_params - WDS peer entry update params
|
||||
* @dest_addr: destination macaddr
|
||||
* @peer_addr: peer mac addr
|
||||
* @flags: WMI_HOST_WDS_FLAG_STATIC
|
||||
* @vdev_id: Vdev id
|
||||
*/
|
||||
struct peer_update_wds_entry_params {
|
||||
uint8_t dest_addr[QDF_MAC_ADDR_SIZE];
|
||||
uint8_t peer_addr[QDF_MAC_ADDR_SIZE];
|
||||
uint32_t flags;
|
||||
uint32_t vdev_id;
|
||||
};
|
||||
#endif /* _WMI_UNIFIED_WDS_PARAM_H_ */
|
@@ -40,6 +40,7 @@
|
||||
#endif
|
||||
|
||||
#include "wmi_unified_twt_api.h"
|
||||
#include "wmi_unified_wds_api.h"
|
||||
|
||||
#ifdef WLAN_POLICY_MGR_ENABLE
|
||||
#include "wlan_policy_mgr_public_struct.h"
|
||||
@@ -17223,6 +17224,7 @@ void wmi_tlv_attach(wmi_unified_t wmi_handle)
|
||||
#endif
|
||||
populate_tlv_events_id(wmi_handle->wmi_events);
|
||||
populate_tlv_service(wmi_handle->services);
|
||||
wmi_wds_attach_tlv(wmi_handle);
|
||||
wmi_twt_attach_tlv(wmi_handle);
|
||||
wmi_extscan_attach_tlv(wmi_handle);
|
||||
wmi_smart_ant_attach_tlv(wmi_handle);
|
||||
|
53
wmi/src/wmi_unified_wds_api.c
一般檔案
53
wmi/src/wmi_unified_wds_api.c
一般檔案
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
* above copyright notice and this permission notice appear in all
|
||||
* copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/**
|
||||
* DOC: Implement API's specific to WDS component.
|
||||
*/
|
||||
|
||||
#include <wmi_unified_priv.h>
|
||||
#include <wmi_unified_wds_api.h>
|
||||
|
||||
QDF_STATUS
|
||||
wmi_unified_peer_add_wds_entry_cmd(wmi_unified_t wmi_hdl,
|
||||
struct peer_add_wds_entry_params *param)
|
||||
{
|
||||
if (wmi_hdl->ops->send_peer_add_wds_entry_cmd)
|
||||
return wmi_hdl->ops->send_peer_add_wds_entry_cmd(wmi_hdl,
|
||||
param);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
wmi_unified_peer_del_wds_entry_cmd(wmi_unified_t wmi_hdl,
|
||||
struct peer_del_wds_entry_params *param)
|
||||
{
|
||||
if (wmi_hdl->ops->send_peer_del_wds_entry_cmd)
|
||||
return wmi_hdl->ops->send_peer_del_wds_entry_cmd(wmi_hdl,
|
||||
param);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
wmi_unified_update_wds_entry_cmd(wmi_unified_t wmi_hdl,
|
||||
struct peer_update_wds_entry_params *param)
|
||||
{
|
||||
if (wmi_hdl->ops->send_peer_update_wds_entry_cmd)
|
||||
return wmi_hdl->ops->send_peer_update_wds_entry_cmd(wmi_hdl,
|
||||
param);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
152
wmi/src/wmi_unified_wds_tlv.c
一般檔案
152
wmi/src/wmi_unified_wds_tlv.c
一般檔案
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
* above copyright notice and this permission notice appear in all
|
||||
* copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <osdep.h>
|
||||
#include <wmi.h>
|
||||
#include <wmi_unified_priv.h>
|
||||
#include <wmi_unified_wds_api.h>
|
||||
|
||||
/**
|
||||
* send_peer_add_wds_entry_cmd_tlv() - send peer add command to fw
|
||||
* @wmi_handle: wmi handle
|
||||
* @param: pointer holding peer details
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||
*/
|
||||
static QDF_STATUS
|
||||
send_peer_add_wds_entry_cmd_tlv(wmi_unified_t wmi_handle,
|
||||
struct peer_add_wds_entry_params *param)
|
||||
{
|
||||
wmi_peer_add_wds_entry_cmd_fixed_param *cmd;
|
||||
wmi_buf_t buf;
|
||||
int len = sizeof(*cmd);
|
||||
QDF_STATUS ret;
|
||||
|
||||
buf = wmi_buf_alloc(wmi_handle, len);
|
||||
if (!buf)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
cmd = (wmi_peer_add_wds_entry_cmd_fixed_param *)wmi_buf_data(buf);
|
||||
WMITLV_SET_HDR(&cmd->tlv_header,
|
||||
WMITLV_TAG_STRUC_wmi_peer_add_wds_entry_cmd_fixed_param,
|
||||
WMITLV_GET_STRUCT_TLVLEN
|
||||
(wmi_peer_add_wds_entry_cmd_fixed_param));
|
||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(param->dest_addr, &cmd->wds_macaddr);
|
||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(param->peer_addr, &cmd->peer_macaddr);
|
||||
|
||||
cmd->flags = (param->flags & WMI_HOST_WDS_FLAG_STATIC) ?
|
||||
WMI_WDS_FLAG_STATIC : 0;
|
||||
cmd->vdev_id = param->vdev_id;
|
||||
|
||||
wmi_mtrace(WMI_PEER_ADD_WDS_ENTRY_CMDID, cmd->vdev_id, 0);
|
||||
ret = wmi_unified_cmd_send(wmi_handle, buf, len,
|
||||
WMI_PEER_ADD_WDS_ENTRY_CMDID);
|
||||
if (QDF_IS_STATUS_ERROR(ret))
|
||||
wmi_buf_free(buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* send_peer_del_wds_entry_cmd_tlv() - send peer delete command to fw
|
||||
* @wmi_handle: wmi handle
|
||||
* @param: pointer holding peer details
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||
*/
|
||||
static QDF_STATUS
|
||||
send_peer_del_wds_entry_cmd_tlv(wmi_unified_t wmi_handle,
|
||||
struct peer_del_wds_entry_params *param)
|
||||
{
|
||||
wmi_peer_remove_wds_entry_cmd_fixed_param *cmd;
|
||||
wmi_buf_t buf;
|
||||
int len = sizeof(*cmd);
|
||||
QDF_STATUS ret;
|
||||
|
||||
buf = wmi_buf_alloc(wmi_handle, len);
|
||||
if (!buf)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
cmd = (wmi_peer_remove_wds_entry_cmd_fixed_param *)wmi_buf_data(buf);
|
||||
WMITLV_SET_HDR(&cmd->tlv_header,
|
||||
WMITLV_TAG_STRUC_wmi_peer_remove_wds_entry_cmd_fixed_param,
|
||||
WMITLV_GET_STRUCT_TLVLEN
|
||||
(wmi_peer_remove_wds_entry_cmd_fixed_param));
|
||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(param->dest_addr, &cmd->wds_macaddr);
|
||||
|
||||
cmd->vdev_id = param->vdev_id;
|
||||
|
||||
wmi_mtrace(WMI_PEER_REMOVE_WDS_ENTRY_CMDID, cmd->vdev_id, 0);
|
||||
ret = wmi_unified_cmd_send(wmi_handle, buf, len,
|
||||
WMI_PEER_REMOVE_WDS_ENTRY_CMDID);
|
||||
if (QDF_IS_STATUS_ERROR(ret))
|
||||
wmi_buf_free(buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* send_peer_update_wds_entry_cmd_tlv() - send peer update command to fw
|
||||
* @wmi_handle: wmi handle
|
||||
* @param: pointer holding peer details
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||
*/
|
||||
static QDF_STATUS
|
||||
send_peer_update_wds_entry_cmd_tlv(wmi_unified_t wmi_handle,
|
||||
struct peer_update_wds_entry_params *param)
|
||||
{
|
||||
wmi_peer_update_wds_entry_cmd_fixed_param *cmd;
|
||||
wmi_buf_t buf;
|
||||
int len = sizeof(*cmd);
|
||||
QDF_STATUS ret;
|
||||
|
||||
buf = wmi_buf_alloc(wmi_handle, len);
|
||||
if (!buf)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
cmd = (wmi_peer_update_wds_entry_cmd_fixed_param *)wmi_buf_data(buf);
|
||||
WMITLV_SET_HDR(&cmd->tlv_header,
|
||||
WMITLV_TAG_STRUC_wmi_peer_update_wds_entry_cmd_fixed_param,
|
||||
WMITLV_GET_STRUCT_TLVLEN
|
||||
(wmi_peer_update_wds_entry_cmd_fixed_param));
|
||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(param->dest_addr, &cmd->wds_macaddr);
|
||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(param->peer_addr, &cmd->peer_macaddr);
|
||||
|
||||
cmd->flags = (param->flags & WMI_HOST_WDS_FLAG_STATIC) ?
|
||||
WMI_WDS_FLAG_STATIC : 0;
|
||||
cmd->vdev_id = param->vdev_id;
|
||||
|
||||
wmi_mtrace(WMI_PEER_UPDATE_WDS_ENTRY_CMDID, cmd->vdev_id, 0);
|
||||
ret = wmi_unified_cmd_send(wmi_handle, buf, len,
|
||||
WMI_PEER_UPDATE_WDS_ENTRY_CMDID);
|
||||
if (QDF_IS_STATUS_ERROR(ret))
|
||||
wmi_buf_free(buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void wmi_wds_attach_tlv(wmi_unified_t wmi_handle)
|
||||
{
|
||||
struct wmi_ops *ops = wmi_handle->ops;
|
||||
|
||||
ops->send_peer_add_wds_entry_cmd = send_peer_add_wds_entry_cmd_tlv;
|
||||
ops->send_peer_del_wds_entry_cmd = send_peer_del_wds_entry_cmd_tlv;
|
||||
ops->send_peer_update_wds_entry_cmd =
|
||||
send_peer_update_wds_entry_cmd_tlv;
|
||||
}
|
新增問題並參考
封鎖使用者