qcacmn: Add support for mlo peer delete params
Add support for mlo peer delete params Change-Id: Ic6ef0786f73a7bb16c8a5de035b13a0a56862125 CRs-Fixed: 3188357
Этот коммит содержится в:

коммит произвёл
Madan Koyyalamudi

родитель
d58c71c6ff
Коммит
826f250128
@@ -423,6 +423,17 @@ struct peer_flush_params {
|
|||||||
uint8_t peer_mac[QDF_MAC_ADDR_SIZE];
|
uint8_t peer_mac[QDF_MAC_ADDR_SIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct peer_delete_params - peer delete cmd parameter
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @mlo_logical_link_id_bitmap: logical link id bitmap for peers
|
||||||
|
* not getting created
|
||||||
|
*/
|
||||||
|
struct peer_delete_cmd_params {
|
||||||
|
uint8_t vdev_id;
|
||||||
|
uint32_t hw_link_id_bitmap;
|
||||||
|
};
|
||||||
|
|
||||||
/* Default FILS DISCOVERY/probe response sent in period of 20TU */
|
/* Default FILS DISCOVERY/probe response sent in period of 20TU */
|
||||||
#define DEFAULT_FILS_DISCOVERY_PERIOD 20
|
#define DEFAULT_FILS_DISCOVERY_PERIOD 20
|
||||||
#define DEFAULT_PROBE_RESP_PERIOD 20
|
#define DEFAULT_PROBE_RESP_PERIOD 20
|
||||||
|
@@ -327,6 +327,8 @@ uint16_t wlan_mlo_get_pdev_hw_link_id(struct wlan_objmgr_pdev *pdev)
|
|||||||
return hw_link_id;
|
return hw_link_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qdf_export_symbol(wlan_mlo_get_pdev_hw_link_id);
|
||||||
|
|
||||||
static void wlan_pdev_hw_link_iterator(struct wlan_objmgr_psoc *psoc,
|
static void wlan_pdev_hw_link_iterator(struct wlan_objmgr_psoc *psoc,
|
||||||
void *obj, void *arg)
|
void *obj, void *arg)
|
||||||
{
|
{
|
||||||
@@ -371,6 +373,8 @@ wlan_mlo_get_pdev_by_hw_link_id(uint16_t hw_link_id,
|
|||||||
|
|
||||||
return itr.pdev;
|
return itr.pdev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qdf_export_symbol(wlan_mlo_get_pdev_by_hw_link_id);
|
||||||
#endif /*WLAN_MLO_MULTI_CHIP*/
|
#endif /*WLAN_MLO_MULTI_CHIP*/
|
||||||
|
|
||||||
void mlo_get_ml_vdev_list(struct wlan_objmgr_vdev *vdev,
|
void mlo_get_ml_vdev_list(struct wlan_objmgr_vdev *vdev,
|
||||||
|
@@ -134,6 +134,25 @@ size_t peer_assoc_t2lm_params_size(struct peer_assoc_params *req);
|
|||||||
*/
|
*/
|
||||||
uint8_t *peer_assoc_add_tid_to_link_map(uint8_t *buf_ptr,
|
uint8_t *peer_assoc_add_tid_to_link_map(uint8_t *buf_ptr,
|
||||||
struct peer_assoc_params *req);
|
struct peer_assoc_params *req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* peer_delete_mlo_params_size() - Get MLO params size in pdev delete
|
||||||
|
* @req: peer delete request params
|
||||||
|
*
|
||||||
|
* Return: size of MLO params in vdev start
|
||||||
|
*/
|
||||||
|
size_t peer_delete_mlo_params_size(struct peer_delete_cmd_params *req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* peer_delete_add_mlo_params() - Add MLO params in peer delete cmd
|
||||||
|
* @buf_ptr: pointer to peer delete cmd buffer.
|
||||||
|
* @req: ponter to peer delete request param
|
||||||
|
*
|
||||||
|
* Return: pointer to new offset of cmd buffer
|
||||||
|
*/
|
||||||
|
uint8_t *peer_delete_add_mlo_params(uint8_t *buf_ptr,
|
||||||
|
struct peer_delete_cmd_params *req);
|
||||||
|
|
||||||
/** wmi_11be_tlv_attach_tlv - Attach 11be relaated callbacks
|
/** wmi_11be_tlv_attach_tlv - Attach 11be relaated callbacks
|
||||||
* @wmi_handle: WMI handle
|
* @wmi_handle: WMI handle
|
||||||
*/
|
*/
|
||||||
@@ -229,6 +248,18 @@ static uint8_t *peer_assoc_add_tid_to_link_map(uint8_t *buf_ptr,
|
|||||||
return buf_ptr + WMI_TLV_HDR_SIZE;
|
return buf_ptr + WMI_TLV_HDR_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static size_t peer_delete_mlo_params_size(struct peer_delete_cmd_params *req)
|
||||||
|
{
|
||||||
|
return WMI_TLV_HDR_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t *peer_delete_add_mlo_params(uint8_t *buf_ptr,
|
||||||
|
struct peer_delete_cmd_params *req)
|
||||||
|
{
|
||||||
|
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
|
||||||
|
return buf_ptr + WMI_TLV_HDR_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
static void wmi_11be_attach_tlv(wmi_unified_t wmi_handle)
|
static void wmi_11be_attach_tlv(wmi_unified_t wmi_handle)
|
||||||
{ }
|
{ }
|
||||||
#endif /*WLAN_FEATURE_11BE_MLO*/
|
#endif /*WLAN_FEATURE_11BE_MLO*/
|
||||||
|
@@ -913,14 +913,14 @@ QDF_STATUS wmi_unified_sifs_trigger_send(wmi_unified_t wmi_handle,
|
|||||||
* wmi_unified_peer_delete_send() - send PEER delete command to fw
|
* wmi_unified_peer_delete_send() - send PEER delete command to fw
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
* @peer_addr: peer mac addr
|
* @peer_addr: peer mac addr
|
||||||
* @vdev_id: vdev id
|
* @param: pointer to hold peer delete parameters
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
||||||
*/
|
*/
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wmi_unified_peer_delete_send(wmi_unified_t wmi_handle,
|
wmi_unified_peer_delete_send(wmi_unified_t wmi_handle,
|
||||||
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
||||||
uint8_t vdev_id);
|
struct peer_delete_cmd_params *param);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wmi_unified_peer_flush_tids_send() - flush peer tids packets in fw
|
* wmi_unified_peer_flush_tids_send() - flush peer tids packets in fw
|
||||||
|
@@ -494,8 +494,8 @@ QDF_STATUS (*send_peer_flush_tids_cmd)(wmi_unified_t wmi,
|
|||||||
struct peer_flush_params *param);
|
struct peer_flush_params *param);
|
||||||
|
|
||||||
QDF_STATUS (*send_peer_delete_cmd)(wmi_unified_t wmi,
|
QDF_STATUS (*send_peer_delete_cmd)(wmi_unified_t wmi,
|
||||||
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
||||||
uint8_t vdev_id);
|
struct peer_delete_cmd_params *param);
|
||||||
|
|
||||||
QDF_STATUS (*send_peer_delete_all_cmd)(
|
QDF_STATUS (*send_peer_delete_all_cmd)(
|
||||||
wmi_unified_t wmi,
|
wmi_unified_t wmi,
|
||||||
|
@@ -251,6 +251,36 @@ uint8_t *peer_assoc_add_ml_partner_links(uint8_t *buf_ptr,
|
|||||||
sizeof(wmi_peer_assoc_mlo_partner_link_params));
|
sizeof(wmi_peer_assoc_mlo_partner_link_params));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t peer_delete_mlo_params_size(struct peer_delete_cmd_params *req)
|
||||||
|
{
|
||||||
|
if (!req->hw_link_id_bitmap)
|
||||||
|
return WMI_TLV_HDR_SIZE;
|
||||||
|
|
||||||
|
return sizeof(wmi_peer_delete_mlo_params) + WMI_TLV_HDR_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t *peer_delete_add_mlo_params(uint8_t *buf_ptr,
|
||||||
|
struct peer_delete_cmd_params *req)
|
||||||
|
{
|
||||||
|
wmi_peer_delete_mlo_params *mlo_params;
|
||||||
|
|
||||||
|
if (!req->hw_link_id_bitmap) {
|
||||||
|
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
|
||||||
|
return buf_ptr + WMI_TLV_HDR_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC,
|
||||||
|
sizeof(wmi_peer_delete_mlo_params));
|
||||||
|
buf_ptr += sizeof(uint32_t);
|
||||||
|
|
||||||
|
mlo_params = (wmi_peer_delete_mlo_params *)buf_ptr;
|
||||||
|
WMITLV_SET_HDR(&mlo_params->tlv_header,
|
||||||
|
WMITLV_TAG_STRUC_wmi_peer_delete_mlo_params,
|
||||||
|
WMITLV_GET_STRUCT_TLVLEN(wmi_peer_delete_mlo_params));
|
||||||
|
mlo_params->mlo_hw_link_id_bitmap = req->hw_link_id_bitmap;
|
||||||
|
return buf_ptr + sizeof(wmi_peer_delete_mlo_params);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* force_mode_host_to_fw() - translate force mode for MLO link set active
|
* force_mode_host_to_fw() - translate force mode for MLO link set active
|
||||||
* command
|
* command
|
||||||
|
@@ -162,11 +162,12 @@ wmi_unified_peer_flush_tids_send(wmi_unified_t wmi_handle,
|
|||||||
|
|
||||||
QDF_STATUS wmi_unified_peer_delete_send(wmi_unified_t wmi_handle,
|
QDF_STATUS wmi_unified_peer_delete_send(wmi_unified_t wmi_handle,
|
||||||
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
||||||
uint8_t vdev_id)
|
struct peer_delete_cmd_params *param)
|
||||||
{
|
{
|
||||||
if (wmi_handle->ops->send_peer_delete_cmd)
|
if (wmi_handle->ops->send_peer_delete_cmd)
|
||||||
return wmi_handle->ops->send_peer_delete_cmd(wmi_handle,
|
return wmi_handle->ops->send_peer_delete_cmd(
|
||||||
peer_addr, vdev_id);
|
wmi_handle,
|
||||||
|
peer_addr, param);
|
||||||
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
|
||||||
|
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. 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
|
||||||
@@ -379,7 +380,7 @@ static QDF_STATUS fake_peer_create_cmd_tlv(wmi_unified_t wmi,
|
|||||||
*/
|
*/
|
||||||
static QDF_STATUS fake_peer_delete_cmd_tlv(wmi_unified_t wmi,
|
static QDF_STATUS fake_peer_delete_cmd_tlv(wmi_unified_t wmi,
|
||||||
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
||||||
uint8_t vdev_id)
|
struct peer_delete_cmd_params *param)
|
||||||
{
|
{
|
||||||
wmi_debug("called");
|
wmi_debug("called");
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
@@ -1286,38 +1286,42 @@ static QDF_STATUS send_peer_flush_tids_cmd_tlv(wmi_unified_t wmi,
|
|||||||
* send_peer_delete_cmd_tlv() - send PEER delete command to fw
|
* send_peer_delete_cmd_tlv() - send PEER delete command to fw
|
||||||
* @wmi: wmi handle
|
* @wmi: wmi handle
|
||||||
* @peer_addr: peer mac addr
|
* @peer_addr: peer mac addr
|
||||||
* @vdev_id: vdev id
|
* @param: peer delete parameters
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS_SUCCESS for success or error code
|
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS send_peer_delete_cmd_tlv(wmi_unified_t wmi,
|
static QDF_STATUS send_peer_delete_cmd_tlv(wmi_unified_t wmi,
|
||||||
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
||||||
uint8_t vdev_id)
|
struct peer_delete_cmd_params *param)
|
||||||
{
|
{
|
||||||
wmi_peer_delete_cmd_fixed_param *cmd;
|
wmi_peer_delete_cmd_fixed_param *cmd;
|
||||||
wmi_buf_t buf;
|
wmi_buf_t buf;
|
||||||
int32_t len = sizeof(*cmd);
|
int32_t len = sizeof(*cmd);
|
||||||
|
uint8_t *buf_ptr;
|
||||||
|
|
||||||
|
len += peer_delete_mlo_params_size(param);
|
||||||
buf = wmi_buf_alloc(wmi, len);
|
buf = wmi_buf_alloc(wmi, len);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return QDF_STATUS_E_NOMEM;
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
|
||||||
cmd = (wmi_peer_delete_cmd_fixed_param *) wmi_buf_data(buf);
|
buf_ptr = (uint8_t *)wmi_buf_data(buf);
|
||||||
|
cmd = (wmi_peer_delete_cmd_fixed_param *)buf_ptr;
|
||||||
WMITLV_SET_HDR(&cmd->tlv_header,
|
WMITLV_SET_HDR(&cmd->tlv_header,
|
||||||
WMITLV_TAG_STRUC_wmi_peer_delete_cmd_fixed_param,
|
WMITLV_TAG_STRUC_wmi_peer_delete_cmd_fixed_param,
|
||||||
WMITLV_GET_STRUCT_TLVLEN
|
WMITLV_GET_STRUCT_TLVLEN
|
||||||
(wmi_peer_delete_cmd_fixed_param));
|
(wmi_peer_delete_cmd_fixed_param));
|
||||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(peer_addr, &cmd->peer_macaddr);
|
WMI_CHAR_ARRAY_TO_MAC_ADDR(peer_addr, &cmd->peer_macaddr);
|
||||||
cmd->vdev_id = vdev_id;
|
cmd->vdev_id = param->vdev_id;
|
||||||
|
buf_ptr = (uint8_t *)(((uintptr_t) cmd) + sizeof(*cmd));
|
||||||
|
buf_ptr = peer_delete_add_mlo_params(buf_ptr, param);
|
||||||
wmi_debug("peer_addr "QDF_MAC_ADDR_FMT" vdev_id %d",
|
wmi_debug("peer_addr "QDF_MAC_ADDR_FMT" vdev_id %d",
|
||||||
QDF_MAC_ADDR_REF(peer_addr), vdev_id);
|
QDF_MAC_ADDR_REF(peer_addr), param->vdev_id);
|
||||||
wmi_mtrace(WMI_PEER_DELETE_CMDID, cmd->vdev_id, 0);
|
wmi_mtrace(WMI_PEER_DELETE_CMDID, cmd->vdev_id, 0);
|
||||||
if (wmi_unified_cmd_send(wmi, buf, len, WMI_PEER_DELETE_CMDID)) {
|
if (wmi_unified_cmd_send(wmi, buf, len, WMI_PEER_DELETE_CMDID)) {
|
||||||
wmi_err("Failed to send peer delete command");
|
wmi_err("Failed to send peer delete command");
|
||||||
wmi_buf_free(buf);
|
wmi_buf_free(buf);
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ссылка в новой задаче
Block a user