qcacmn: Add wmi changes to extract addba window size from mgmt tlv

Add wmi changes to extract addba window size from mgmt tlv

CRs-Fixed: 3156291
Change-Id: I09891ef15942d3a7d594dfa839b758a9d4a5ba78
这个提交包含在:
Aakanksha Doda
2022-05-20 11:35:30 +05:30
提交者 Madan Koyyalamudi
父节点 370e3bd4e9
当前提交 f420dce004
修改 5 个文件,包含 110 行新增2 行删除

查看文件

@@ -803,6 +803,16 @@ struct frame_pn_params {
uint8_t prev_pn[WLAN_MGMT_TXRX_HOST_MAX_PN_LEN];
};
/**
* struct mgmt_rx_event_ext_params - Host mgmt extended params
* @ba_win_size: Block-Ack window size
* @reo_win_size: Reo win size
*/
struct mgmt_rx_event_ext_params {
uint16_t ba_win_size;
uint16_t reo_win_size;
};
/**
* struct mgmt_rx_event_params - host mgmt header params
* @chan_freq: channel frequency on which this frame is received
@@ -827,6 +837,7 @@ struct frame_pn_params {
* (win specific, will be removed in phase 4)
* @reo_params: Pointer to MGMT Rx REO params
* @pn_params: Frame PN params
* @ext_params: Extended params
*/
struct mgmt_rx_event_params {
uint32_t chan_freq;
@@ -847,6 +858,7 @@ struct mgmt_rx_event_params {
struct mgmt_rx_reo_params *reo_params;
#endif
struct frame_pn_params pn_params;
struct mgmt_rx_event_ext_params *ext_params;
};
#ifdef WLAN_MGMT_RX_REO_SUPPORT
@@ -867,14 +879,25 @@ struct mgmt_rx_event_params *alloc_mgmt_rx_event_params(void)
return NULL;
}
rx_params->ext_params =
qdf_mem_malloc(sizeof(struct mgmt_rx_event_ext_params));
if (!rx_params->ext_params) {
qdf_mem_free(rx_params->reo_params);
qdf_mem_free(rx_params);
return NULL;
}
return rx_params;
}
static inline void
free_mgmt_rx_event_params(struct mgmt_rx_event_params *rx_params)
{
if (rx_params)
if (rx_params) {
qdf_mem_free(rx_params->ext_params);
qdf_mem_free(rx_params->reo_params);
}
qdf_mem_free(rx_params);
}
@@ -888,10 +911,25 @@ struct mgmt_rx_event_params *alloc_mgmt_rx_event_params(void)
if (!rx_params)
return NULL;
rx_params->ext_params =
qdf_mem_malloc(sizeof(struct mgmt_rx_event_ext_params));
if (!rx_params->ext_params) {
qdf_mem_free(rx_params);
return NULL;
}
return rx_params;
}
#define free_mgmt_rx_event_params(rx_params) qdf_mem_free((rx_params))
static inline void
free_mgmt_rx_event_params(struct mgmt_rx_event_params *rx_params)
{
if (rx_params)
qdf_mem_free(rx_params->ext_params);
qdf_mem_free(rx_params);
}
#endif
/**

查看文件

@@ -2916,6 +2916,18 @@ QDF_STATUS
wmi_extract_mgmt_rx_params(wmi_unified_t wmi_handle, void *evt_buf,
struct mgmt_rx_event_params *hdr, uint8_t **bufp);
/**
* wmi_extract_mgmt_rx_ext_params() - extract extended rx params from event
* @wmi_handle: wmi handle
* @evt_buf: pointer to event buffer
* @params: Pointer to hold ext params
*
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
*/
QDF_STATUS
wmi_extract_mgmt_rx_ext_params(wmi_unified_t wmi_handle, void *evt_buf,
struct mgmt_rx_event_ext_params *params);
#ifdef WLAN_MGMT_RX_REO_SUPPORT
/**
* wmi_extract_mgmt_rx_fw_consumed() - extract MGMT Rx FW consumed event

查看文件

@@ -2899,6 +2899,10 @@ QDF_STATUS
void *evt_buf,
struct wmi_host_pdev_set_halphy_cal_event *param);
QDF_STATUS (*extract_mgmt_rx_ext_params)(wmi_unified_t wmi_handle,
void *evt_buf,
struct mgmt_rx_event_ext_params *params);
#ifdef WLAN_MGMT_RX_REO_SUPPORT
QDF_STATUS (*extract_mgmt_rx_fw_consumed)(wmi_unified_t wmi_handle,
void *evt_buf,

查看文件

@@ -2045,6 +2045,17 @@ wmi_extract_mgmt_rx_params(wmi_unified_t wmi_handle, void *evt_buf,
return QDF_STATUS_E_FAILURE;
}
QDF_STATUS
wmi_extract_mgmt_rx_ext_params(wmi_unified_t wmi_handle, void *evt_buf,
struct mgmt_rx_event_ext_params *params)
{
if (wmi_handle->ops->extract_mgmt_rx_ext_params)
return wmi_handle->ops->extract_mgmt_rx_ext_params(
wmi_handle, evt_buf, params);
return QDF_STATUS_E_FAILURE;
}
#ifdef WLAN_MGMT_RX_REO_SUPPORT
QDF_STATUS wmi_extract_mgmt_rx_fw_consumed(wmi_unified_t wmi_handle,
void *evt_buf,

查看文件

@@ -11596,6 +11596,48 @@ static QDF_STATUS extract_mgmt_rx_params_tlv(wmi_unified_t wmi_handle,
return QDF_STATUS_SUCCESS;
}
static QDF_STATUS extract_mgmt_rx_ext_params_tlv(wmi_unified_t wmi_handle,
void *evt_buf, struct mgmt_rx_event_ext_params *ext_params)
{
WMI_MGMT_RX_EVENTID_param_tlvs *param_tlvs;
wmi_mgmt_rx_params_ext *ext_params_tlv;
wmi_mgmt_rx_hdr *ev_hdr;
param_tlvs = (WMI_MGMT_RX_EVENTID_param_tlvs *) evt_buf;
if (!param_tlvs) {
wmi_err("param_tlvs is NULL");
return QDF_STATUS_E_INVAL;
}
ev_hdr = param_tlvs->hdr;
if (!ev_hdr) {
wmi_err("Rx event is NULL");
return QDF_STATUS_E_INVAL;
}
ext_params_tlv = param_tlvs->mgmt_rx_params_ext;
if (ext_params_tlv) {
ext_params->ba_win_size = WMI_RX_PARAM_EXT_BA_WIN_SIZE_GET(
ext_params_tlv->mgmt_rx_params_ext_dword1);
if (ext_params->ba_win_size > 1024) {
wmi_err("ba win size from TLV is Invalid");
return QDF_STATUS_E_INVAL;
}
ext_params->reo_win_size = WMI_RX_PARAM_EXT_REO_WIN_SIZE_GET(
ext_params_tlv->mgmt_rx_params_ext_dword1);
if (ext_params->reo_win_size > 2048) {
wmi_err("reo win size from TLV is Invalid");
return QDF_STATUS_E_INVAL;
}
} else {
ext_params->ba_win_size = 0;
ext_params->reo_win_size = 0;
}
return QDF_STATUS_SUCCESS;
}
#ifdef WLAN_MGMT_RX_REO_SUPPORT
/**
* extract_mgmt_rx_fw_consumed_tlv() - extract MGMT Rx FW consumed event
@@ -18344,6 +18386,7 @@ struct wmi_ops tlv_ops = {
.extract_pktlog_decode_info_event =
extract_pktlog_decode_info_event_tlv,
.extract_pdev_telemetry_stats = extract_pdev_telemetry_stats_tlv,
.extract_mgmt_rx_ext_params = extract_mgmt_rx_ext_params_tlv,
};
#ifdef WLAN_FEATURE_11BE_MLO