qcacmn: Add support for mlo peer delete params
Add support for mlo peer delete params Change-Id: Ic6ef0786f73a7bb16c8a5de035b13a0a56862125 CRs-Fixed: 3188357
This commit is contained in:

کامیت شده توسط
Madan Koyyalamudi

والد
d58c71c6ff
کامیت
826f250128
@@ -423,6 +423,17 @@ struct peer_flush_params {
|
||||
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 */
|
||||
#define DEFAULT_FILS_DISCOVERY_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;
|
||||
}
|
||||
|
||||
qdf_export_symbol(wlan_mlo_get_pdev_hw_link_id);
|
||||
|
||||
static void wlan_pdev_hw_link_iterator(struct wlan_objmgr_psoc *psoc,
|
||||
void *obj, void *arg)
|
||||
{
|
||||
@@ -371,6 +373,8 @@ wlan_mlo_get_pdev_by_hw_link_id(uint16_t hw_link_id,
|
||||
|
||||
return itr.pdev;
|
||||
}
|
||||
|
||||
qdf_export_symbol(wlan_mlo_get_pdev_by_hw_link_id);
|
||||
#endif /*WLAN_MLO_MULTI_CHIP*/
|
||||
|
||||
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,
|
||||
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_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;
|
||||
}
|
||||
|
||||
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)
|
||||
{ }
|
||||
#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_handle: wmi handle
|
||||
* @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
|
||||
*/
|
||||
QDF_STATUS
|
||||
wmi_unified_peer_delete_send(wmi_unified_t wmi_handle,
|
||||
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
|
||||
|
@@ -494,8 +494,8 @@ QDF_STATUS (*send_peer_flush_tids_cmd)(wmi_unified_t wmi,
|
||||
struct peer_flush_params *param);
|
||||
|
||||
QDF_STATUS (*send_peer_delete_cmd)(wmi_unified_t wmi,
|
||||
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
||||
uint8_t vdev_id);
|
||||
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
||||
struct peer_delete_cmd_params *param);
|
||||
|
||||
QDF_STATUS (*send_peer_delete_all_cmd)(
|
||||
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));
|
||||
}
|
||||
|
||||
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
|
||||
* 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,
|
||||
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)
|
||||
return wmi_handle->ops->send_peer_delete_cmd(wmi_handle,
|
||||
peer_addr, vdev_id);
|
||||
return wmi_handle->ops->send_peer_delete_cmd(
|
||||
wmi_handle,
|
||||
peer_addr, param);
|
||||
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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
|
||||
* 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,
|
||||
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
|
||||
uint8_t vdev_id)
|
||||
struct peer_delete_cmd_params *param)
|
||||
{
|
||||
wmi_debug("called");
|
||||
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
|
||||
* @wmi: wmi handle
|
||||
* @peer_addr: peer mac addr
|
||||
* @vdev_id: vdev id
|
||||
* @param: peer delete parameters
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||
*/
|
||||
static QDF_STATUS send_peer_delete_cmd_tlv(wmi_unified_t wmi,
|
||||
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_buf_t buf;
|
||||
int32_t len = sizeof(*cmd);
|
||||
uint8_t *buf_ptr;
|
||||
|
||||
len += peer_delete_mlo_params_size(param);
|
||||
buf = wmi_buf_alloc(wmi, len);
|
||||
if (!buf)
|
||||
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_TAG_STRUC_wmi_peer_delete_cmd_fixed_param,
|
||||
WMITLV_GET_STRUCT_TLVLEN
|
||||
(wmi_peer_delete_cmd_fixed_param));
|
||||
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",
|
||||
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);
|
||||
if (wmi_unified_cmd_send(wmi, buf, len, WMI_PEER_DELETE_CMDID)) {
|
||||
wmi_err("Failed to send peer delete command");
|
||||
wmi_buf_free(buf);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
مرجع در شماره جدید
Block a user