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
This commit is contained in:

committad av
Madan Koyyalamudi

förälder
370e3bd4e9
incheckning
f420dce004
@@ -803,6 +803,16 @@ struct frame_pn_params {
|
|||||||
uint8_t prev_pn[WLAN_MGMT_TXRX_HOST_MAX_PN_LEN];
|
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
|
* struct mgmt_rx_event_params - host mgmt header params
|
||||||
* @chan_freq: channel frequency on which this frame is received
|
* @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)
|
* (win specific, will be removed in phase 4)
|
||||||
* @reo_params: Pointer to MGMT Rx REO params
|
* @reo_params: Pointer to MGMT Rx REO params
|
||||||
* @pn_params: Frame PN params
|
* @pn_params: Frame PN params
|
||||||
|
* @ext_params: Extended params
|
||||||
*/
|
*/
|
||||||
struct mgmt_rx_event_params {
|
struct mgmt_rx_event_params {
|
||||||
uint32_t chan_freq;
|
uint32_t chan_freq;
|
||||||
@@ -847,6 +858,7 @@ struct mgmt_rx_event_params {
|
|||||||
struct mgmt_rx_reo_params *reo_params;
|
struct mgmt_rx_reo_params *reo_params;
|
||||||
#endif
|
#endif
|
||||||
struct frame_pn_params pn_params;
|
struct frame_pn_params pn_params;
|
||||||
|
struct mgmt_rx_event_ext_params *ext_params;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef WLAN_MGMT_RX_REO_SUPPORT
|
#ifdef WLAN_MGMT_RX_REO_SUPPORT
|
||||||
@@ -867,14 +879,25 @@ struct mgmt_rx_event_params *alloc_mgmt_rx_event_params(void)
|
|||||||
return NULL;
|
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;
|
return rx_params;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
free_mgmt_rx_event_params(struct mgmt_rx_event_params *rx_params)
|
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->reo_params);
|
||||||
|
}
|
||||||
|
|
||||||
qdf_mem_free(rx_params);
|
qdf_mem_free(rx_params);
|
||||||
}
|
}
|
||||||
@@ -888,10 +911,25 @@ struct mgmt_rx_event_params *alloc_mgmt_rx_event_params(void)
|
|||||||
if (!rx_params)
|
if (!rx_params)
|
||||||
return NULL;
|
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;
|
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
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -2916,6 +2916,18 @@ QDF_STATUS
|
|||||||
wmi_extract_mgmt_rx_params(wmi_unified_t wmi_handle, void *evt_buf,
|
wmi_extract_mgmt_rx_params(wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
struct mgmt_rx_event_params *hdr, uint8_t **bufp);
|
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
|
#ifdef WLAN_MGMT_RX_REO_SUPPORT
|
||||||
/**
|
/**
|
||||||
* wmi_extract_mgmt_rx_fw_consumed() - extract MGMT Rx FW consumed event
|
* wmi_extract_mgmt_rx_fw_consumed() - extract MGMT Rx FW consumed event
|
||||||
|
@@ -2899,6 +2899,10 @@ QDF_STATUS
|
|||||||
void *evt_buf,
|
void *evt_buf,
|
||||||
struct wmi_host_pdev_set_halphy_cal_event *param);
|
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
|
#ifdef WLAN_MGMT_RX_REO_SUPPORT
|
||||||
QDF_STATUS (*extract_mgmt_rx_fw_consumed)(wmi_unified_t wmi_handle,
|
QDF_STATUS (*extract_mgmt_rx_fw_consumed)(wmi_unified_t wmi_handle,
|
||||||
void *evt_buf,
|
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;
|
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
|
#ifdef WLAN_MGMT_RX_REO_SUPPORT
|
||||||
QDF_STATUS wmi_extract_mgmt_rx_fw_consumed(wmi_unified_t wmi_handle,
|
QDF_STATUS wmi_extract_mgmt_rx_fw_consumed(wmi_unified_t wmi_handle,
|
||||||
void *evt_buf,
|
void *evt_buf,
|
||||||
|
@@ -11596,6 +11596,48 @@ static QDF_STATUS extract_mgmt_rx_params_tlv(wmi_unified_t wmi_handle,
|
|||||||
return QDF_STATUS_SUCCESS;
|
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
|
#ifdef WLAN_MGMT_RX_REO_SUPPORT
|
||||||
/**
|
/**
|
||||||
* extract_mgmt_rx_fw_consumed_tlv() - extract MGMT Rx FW consumed event
|
* 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 =
|
||||||
extract_pktlog_decode_info_event_tlv,
|
extract_pktlog_decode_info_event_tlv,
|
||||||
.extract_pdev_telemetry_stats = extract_pdev_telemetry_stats_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
|
#ifdef WLAN_FEATURE_11BE_MLO
|
||||||
|
Referens i nytt ärende
Block a user