qcacmn: Placeholder for peer mesh latency changes
Add support to update per peer latency parameter from datapath Change-Id: I1096374ebd3aeb5dc11759f1512cdee744e170c6
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2011-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2011-2021 The Linux Foundation. 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
|
||||||
@@ -1106,6 +1106,8 @@ enum cdp_pdev_param_type {
|
|||||||
* @cdp_vdev_param_drop_unenc: set drop unencrypted flag
|
* @cdp_vdev_param_drop_unenc: set drop unencrypted flag
|
||||||
* @cdp_vdev_param_hlos_tid_override: set hlos tid override
|
* @cdp_vdev_param_hlos_tid_override: set hlos tid override
|
||||||
* @cdp_vdev_param_peer_authorize: set peer authorize
|
* @cdp_vdev_param_peer_authorize: set peer authorize
|
||||||
|
* @cdp_vdev_param_peer_tid_latency_enable: set peer tid latency enable flag
|
||||||
|
* @cdp_vdev_param_mesh_tid: config tatency tid on vdev
|
||||||
*
|
*
|
||||||
* @cdp_pdev_param_dbg_snf: Enable debug sniffer feature
|
* @cdp_pdev_param_dbg_snf: Enable debug sniffer feature
|
||||||
* @cdp_pdev_param_bpr_enable: Enable bcast probe feature
|
* @cdp_pdev_param_bpr_enable: Enable bcast probe feature
|
||||||
@@ -1173,6 +1175,8 @@ typedef union cdp_config_param_t {
|
|||||||
uint8_t cdp_vdev_param_hlos_tid_override;
|
uint8_t cdp_vdev_param_hlos_tid_override;
|
||||||
bool cdp_vdev_param_wds_ext;
|
bool cdp_vdev_param_wds_ext;
|
||||||
uint8_t cdp_vdev_param_peer_authorize;
|
uint8_t cdp_vdev_param_peer_authorize;
|
||||||
|
uint8_t cdp_vdev_param_peer_tid_latency_enable;
|
||||||
|
uint8_t cdp_vdev_param_mesh_tid;
|
||||||
|
|
||||||
/* pdev params */
|
/* pdev params */
|
||||||
bool cdp_pdev_param_cptr_latcy;
|
bool cdp_pdev_param_cptr_latcy;
|
||||||
@@ -1285,6 +1289,8 @@ enum cdp_pdev_bpr_param {
|
|||||||
* @CDP_ENABLE_HLOS_TID_OVERRIDE: set hlos tid override flag
|
* @CDP_ENABLE_HLOS_TID_OVERRIDE: set hlos tid override flag
|
||||||
* @CDP_CFG_WDS_EXT: enable/disable wds ext feature
|
* @CDP_CFG_WDS_EXT: enable/disable wds ext feature
|
||||||
* @CDP_ENABLE_PEER_AUTHORIZE: enable peer authorize flag
|
* @CDP_ENABLE_PEER_AUTHORIZE: enable peer authorize flag
|
||||||
|
* @CDP_ENABLE_PEER_TID_LATENCY: set peer tid latency enable flag
|
||||||
|
* @CDP_SET_VAP_MESH_TID : Set latency tid in vap
|
||||||
*/
|
*/
|
||||||
enum cdp_vdev_param_type {
|
enum cdp_vdev_param_type {
|
||||||
CDP_ENABLE_NAWDS,
|
CDP_ENABLE_NAWDS,
|
||||||
@@ -1316,6 +1322,10 @@ enum cdp_vdev_param_type {
|
|||||||
CDP_CFG_WDS_EXT,
|
CDP_CFG_WDS_EXT,
|
||||||
#endif /* QCA_SUPPORT_WDS_EXTENDED */
|
#endif /* QCA_SUPPORT_WDS_EXTENDED */
|
||||||
CDP_ENABLE_PEER_AUTHORIZE,
|
CDP_ENABLE_PEER_AUTHORIZE,
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
CDP_ENABLE_PEER_TID_LATENCY,
|
||||||
|
CDP_SET_VAP_MESH_TID,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
57
dp/inc/cdp_txrx_mesh_latency.h
Normal file
57
dp/inc/cdp_txrx_mesh_latency.h
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2020-2021 The Linux Foundation. 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
|
||||||
|
* above copyright notice and this permission notice appear in all
|
||||||
|
* copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||||
|
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||||
|
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||||
|
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||||
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file cdp_txrx_mesh_latency.h
|
||||||
|
* @brief Define the host data path MESH latency API functions
|
||||||
|
* called by the host control SW and the OS interface module
|
||||||
|
*/
|
||||||
|
#ifndef _CDP_TXRX_MESH_LATENCY_H_
|
||||||
|
#define _CDP_TXRX_MESH_LATENCY_H_
|
||||||
|
#include "cdp_txrx_handle.h"
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
/**
|
||||||
|
* @brief find MSCS enabled peer for this mac address and validate priority
|
||||||
|
* @details
|
||||||
|
* This function updates per peer per TID mesh latency related parameters.
|
||||||
|
*
|
||||||
|
* @param dest_mac - destination mac address
|
||||||
|
* @param service_interval - Service Interval per tid
|
||||||
|
* @param burst_size - Burst size per tid
|
||||||
|
* @param priority - user priority combination of tid and msdu queue
|
||||||
|
* #add_or_sub - indicates to add or substract latency parameter
|
||||||
|
* @return - 0 for non error case, -1 for failure
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
cdp_mesh_latency_update_peer_parameter(ol_txrx_soc_handle soc,
|
||||||
|
uint8_t *dest_mac, uint32_t service_interval,
|
||||||
|
uint32_t burst_size, uint16_t priority, uint8_t add_or_sub)
|
||||||
|
{
|
||||||
|
if (!soc || !soc->ops || !soc->ops->mesh_latency_ops) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (soc->ops->mesh_latency_ops->mesh_latency_update_peer_parameter)
|
||||||
|
return soc->ops->mesh_latency_ops->
|
||||||
|
mesh_latency_update_peer_parameter(soc,
|
||||||
|
dest_mac, service_interval,
|
||||||
|
burst_size, priority, add_or_sub);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
@@ -1153,6 +1153,13 @@ struct ol_if_ops {
|
|||||||
uint16_t peer_id, uint8_t vdev_id,
|
uint16_t peer_id, uint8_t vdev_id,
|
||||||
uint8_t *peer_macaddr);
|
uint8_t *peer_macaddr);
|
||||||
#endif /* QCA_SUPPORT_WDS_EXTENDED */
|
#endif /* QCA_SUPPORT_WDS_EXTENDED */
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
QDF_STATUS(*peer_update_mesh_latency_params)(
|
||||||
|
struct cdp_ctrl_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id, uint8_t *peer_mac, uint8_t tid,
|
||||||
|
uint32_t service_interval, uint32_t burst_size,
|
||||||
|
uint8_t add_or_sub, uint8_t ac);
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef DP_PEER_EXTENDED_API
|
#ifdef DP_PEER_EXTENDED_API
|
||||||
@@ -1710,6 +1717,20 @@ struct cdp_mscs_ops {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
/**
|
||||||
|
* struct cdp_mesh_latency_ops - data path ops for Mesh latency
|
||||||
|
* @mesh_latency_update_peer_parameter:
|
||||||
|
*/
|
||||||
|
struct cdp_mesh_latency_ops {
|
||||||
|
QDF_STATUS (*mesh_latency_update_peer_parameter)(
|
||||||
|
struct cdp_soc_t *soc,
|
||||||
|
uint8_t *dest_mac, uint32_t service_interval,
|
||||||
|
uint32_t burst_size, uint16_t priority,
|
||||||
|
uint8_t add_or_sub);
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
struct cdp_ops {
|
struct cdp_ops {
|
||||||
struct cdp_cmn_ops *cmn_drv_ops;
|
struct cdp_cmn_ops *cmn_drv_ops;
|
||||||
struct cdp_ctrl_ops *ctrl_ops;
|
struct cdp_ctrl_ops *ctrl_ops;
|
||||||
@@ -1748,6 +1769,9 @@ struct cdp_ops {
|
|||||||
#ifdef WLAN_SUPPORT_MSCS
|
#ifdef WLAN_SUPPORT_MSCS
|
||||||
struct cdp_mscs_ops *mscs_ops;
|
struct cdp_mscs_ops *mscs_ops;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
struct cdp_mesh_latency_ops *mesh_latency_ops;
|
||||||
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@@ -71,6 +71,9 @@ cdp_dump_flow_pool_info(struct cdp_soc_t *soc)
|
|||||||
#ifdef WLAN_SUPPORT_MSCS
|
#ifdef WLAN_SUPPORT_MSCS
|
||||||
#include "dp_mscs.h"
|
#include "dp_mscs.h"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
#include "dp_mesh_latency.h"
|
||||||
|
#endif
|
||||||
#ifdef ATH_SUPPORT_IQUE
|
#ifdef ATH_SUPPORT_IQUE
|
||||||
#include "dp_txrx_me.h"
|
#include "dp_txrx_me.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -9133,6 +9136,16 @@ static QDF_STATUS dp_get_vdev_param(struct cdp_soc_t *cdp_soc, uint8_t vdev_id,
|
|||||||
val->cdp_vdev_param_peer_authorize =
|
val->cdp_vdev_param_peer_authorize =
|
||||||
vdev->peer_authorize;
|
vdev->peer_authorize;
|
||||||
break;
|
break;
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
case CDP_ENABLE_PEER_TID_LATENCY:
|
||||||
|
val->cdp_vdev_param_peer_tid_latency_enable =
|
||||||
|
vdev->peer_tid_latency_enabled;
|
||||||
|
break;
|
||||||
|
case CDP_SET_VAP_MESH_TID:
|
||||||
|
val->cdp_vdev_param_mesh_tid =
|
||||||
|
vdev->mesh_tid_latency_config.latency_tid;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
dp_cdp_err("%pk: param value %d is wrong\n",
|
dp_cdp_err("%pk: param value %d is wrong\n",
|
||||||
soc, param);
|
soc, param);
|
||||||
@@ -9263,6 +9276,20 @@ dp_set_vdev_param(struct cdp_soc_t *cdp_soc, uint8_t vdev_id,
|
|||||||
case CDP_ENABLE_PEER_AUTHORIZE:
|
case CDP_ENABLE_PEER_AUTHORIZE:
|
||||||
vdev->peer_authorize = val.cdp_vdev_param_peer_authorize;
|
vdev->peer_authorize = val.cdp_vdev_param_peer_authorize;
|
||||||
break;
|
break;
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
case CDP_ENABLE_PEER_TID_LATENCY:
|
||||||
|
dp_info("vdev_id %d enable peer tid latency %d", vdev_id,
|
||||||
|
val.cdp_vdev_param_peer_tid_latency_enable);
|
||||||
|
vdev->peer_tid_latency_enabled =
|
||||||
|
val.cdp_vdev_param_peer_tid_latency_enable;
|
||||||
|
break;
|
||||||
|
case CDP_SET_VAP_MESH_TID:
|
||||||
|
dp_info("vdev_id %d enable peer tid latency %d", vdev_id,
|
||||||
|
val.cdp_vdev_param_mesh_tid);
|
||||||
|
vdev->mesh_tid_latency_config.latency_tid
|
||||||
|
= val.cdp_vdev_param_mesh_tid;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -11388,6 +11415,13 @@ static struct cdp_mscs_ops dp_ops_mscs = {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
static struct cdp_mesh_latency_ops dp_ops_mesh_latency = {
|
||||||
|
.mesh_latency_update_peer_parameter =
|
||||||
|
dp_mesh_latency_update_peer_parameter,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FEATURE_RUNTIME_PM
|
#ifdef FEATURE_RUNTIME_PM
|
||||||
/**
|
/**
|
||||||
* dp_runtime_suspend() - ensure DP is ready to runtime suspend
|
* dp_runtime_suspend() - ensure DP is ready to runtime suspend
|
||||||
@@ -12069,6 +12103,9 @@ static struct cdp_ops dp_txrx_ops = {
|
|||||||
#ifdef WLAN_SUPPORT_MSCS
|
#ifdef WLAN_SUPPORT_MSCS
|
||||||
.mscs_ops = &dp_ops_mscs,
|
.mscs_ops = &dp_ops_mscs,
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
.mesh_latency_ops = &dp_ops_mesh_latency,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -2592,6 +2592,15 @@ struct dp_vdev {
|
|||||||
qdf_atomic_t ref_cnt;
|
qdf_atomic_t ref_cnt;
|
||||||
qdf_atomic_t mod_refs[DP_MOD_ID_MAX];
|
qdf_atomic_t mod_refs[DP_MOD_ID_MAX];
|
||||||
uint8_t num_latency_critical_conn;
|
uint8_t num_latency_critical_conn;
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
uint8_t peer_tid_latency_enabled;
|
||||||
|
/* tid latency configuration parameters */
|
||||||
|
struct {
|
||||||
|
uint32_t service_interval;
|
||||||
|
uint32_t burst_size;
|
||||||
|
uint8_t latency_tid;
|
||||||
|
} mesh_tid_latency_config;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -2712,6 +2721,26 @@ struct dp_wds_ext_peer {
|
|||||||
};
|
};
|
||||||
#endif /* QCA_SUPPORT_WDS_EXTENDED */
|
#endif /* QCA_SUPPORT_WDS_EXTENDED */
|
||||||
|
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
/*Advanced Mesh latency feature based macros */
|
||||||
|
/*
|
||||||
|
* struct dp_peer_mesh_latency parameter - Mesh latency related
|
||||||
|
* parameters. This data is updated per peer per TID based on
|
||||||
|
* the flow tuple classification in external rule database
|
||||||
|
* during packet processing.
|
||||||
|
* @service_interval - Service interval associated with TID
|
||||||
|
* @burst_size - Burst size additive over multiple flows
|
||||||
|
* @ac - custom ac derived from service interval
|
||||||
|
* @msduq - MSDU queue number within TID
|
||||||
|
*/
|
||||||
|
struct dp_peer_mesh_latency_parameter {
|
||||||
|
uint32_t service_interval;
|
||||||
|
uint32_t burst_size;
|
||||||
|
uint8_t ac;
|
||||||
|
uint8_t msduq;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Peer structure for data path state */
|
/* Peer structure for data path state */
|
||||||
struct dp_peer {
|
struct dp_peer {
|
||||||
/* VDEV to which this peer is associated */
|
/* VDEV to which this peer is associated */
|
||||||
@@ -2837,6 +2866,9 @@ struct dp_peer {
|
|||||||
struct dp_wds_ext_peer wds_ext;
|
struct dp_wds_ext_peer wds_ext;
|
||||||
ol_txrx_rx_fp osif_rx;
|
ol_txrx_rx_fp osif_rx;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef WLAN_SUPPORT_MESH_LATENCY
|
||||||
|
struct dp_peer_mesh_latency_parameter mesh_latency_params[DP_MAX_TIDS];
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user