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
这个提交包含在:
@@ -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
|
||||
|
在新工单中引用
屏蔽一个用户