Merge "qcacmn: add DP API to support RX peer meta data version update"
Este cometimento está contido em:

cometido por
Gerrit - the friendly Code Review server

cometimento
d899379898
@@ -1443,6 +1443,7 @@ enum cdp_pdev_param_type {
|
||||
* @cdp_skel_enable : Enable/Disable skeleton code for Umac reset debug
|
||||
* @cdp_drop_tx_mcast: Enable/Disable tx mcast drop
|
||||
* @cdp_vdev_tx_to_fw: Set to_fw bit for all tx packets for the vdev
|
||||
* @cdp_peer_metadata_ver: DP rx peer metadata version configuration
|
||||
*/
|
||||
typedef union cdp_config_param_t {
|
||||
/* peer params */
|
||||
@@ -1533,6 +1534,7 @@ typedef union cdp_config_param_t {
|
||||
bool cdp_umac_rst_skel;
|
||||
bool cdp_drop_tx_mcast;
|
||||
bool cdp_vdev_tx_to_fw;
|
||||
uint8_t cdp_peer_metadata_ver;
|
||||
} cdp_config_param_type;
|
||||
|
||||
/**
|
||||
@@ -1688,6 +1690,7 @@ enum cdp_vdev_param_type {
|
||||
* @CDP_UMAC_RST_SKEL_ENABLE: Enable Umac reset skeleton code for debug
|
||||
* @CDP_SAWF_STATS: set SAWF stats config
|
||||
* @CDP_UMAC_RESET_STATS: UMAC reset stats
|
||||
* @CDP_CFG_RX_PEER_METADATA_VER: RX peer metadata configuration
|
||||
*/
|
||||
enum cdp_psoc_param_type {
|
||||
CDP_ENABLE_RATE_STATS,
|
||||
@@ -1700,8 +1703,16 @@ enum cdp_psoc_param_type {
|
||||
CDP_UMAC_RST_SKEL_ENABLE,
|
||||
CDP_SAWF_STATS,
|
||||
CDP_UMAC_RESET_STATS,
|
||||
CDP_CFG_RX_PEER_METADATA_VER,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_AP_PLATFORM
|
||||
/* RX peer metadata version if v1a_v1b is supported */
|
||||
#define CDP_RX_PEER_METADATA_V1_A_B 3
|
||||
#else
|
||||
#define CDP_RX_PEER_METADATA_V1_A_B 2
|
||||
#endif
|
||||
|
||||
#define TXRX_FW_STATS_TXSTATS 1
|
||||
#define TXRX_FW_STATS_RXSTATS 2
|
||||
#define TXRX_FW_STATS_RX_RATE_INFO 3
|
||||
|
@@ -190,18 +190,25 @@ dp_rx_desc_sw_cc_check(struct dp_soc *soc,
|
||||
|
||||
#define DP_PEER_METADATA_OFFLOAD_GET_BE(_peer_metadata) (0)
|
||||
|
||||
#define HTT_RX_PEER_META_DATA_FIELD_GET(_var, _field_s, _field_m) \
|
||||
(((_var) & (_field_m)) >> (_field_s))
|
||||
|
||||
#ifdef DP_USE_REDUCED_PEER_ID_FIELD_WIDTH
|
||||
static inline uint16_t
|
||||
dp_rx_peer_metadata_peer_id_get_be(struct dp_soc *soc, uint32_t peer_metadata)
|
||||
{
|
||||
struct htt_rx_peer_metadata_v1 *metadata =
|
||||
(struct htt_rx_peer_metadata_v1 *)&peer_metadata;
|
||||
uint8_t ml_peer_valid;
|
||||
uint16_t peer_id;
|
||||
|
||||
peer_id = metadata->peer_id |
|
||||
(metadata->ml_peer_valid << soc->peer_id_shift);
|
||||
peer_id = HTT_RX_PEER_META_DATA_FIELD_GET(peer_metadata,
|
||||
soc->htt_peer_id_s,
|
||||
soc->htt_peer_id_m);
|
||||
ml_peer_valid = HTT_RX_PEER_META_DATA_FIELD_GET(
|
||||
peer_metadata,
|
||||
soc->htt_mld_peer_valid_s,
|
||||
soc->htt_mld_peer_valid_m);
|
||||
|
||||
return peer_id;
|
||||
return (peer_id | (ml_peer_valid << soc->peer_id_shift));
|
||||
}
|
||||
#else
|
||||
/* Combine ml_peer_valid and peer_id field */
|
||||
@@ -219,10 +226,10 @@ dp_rx_peer_metadata_peer_id_get_be(struct dp_soc *soc, uint32_t peer_metadata)
|
||||
static inline uint16_t
|
||||
dp_rx_peer_metadata_vdev_id_get_be(struct dp_soc *soc, uint32_t peer_metadata)
|
||||
{
|
||||
struct htt_rx_peer_metadata_v1 *metadata =
|
||||
(struct htt_rx_peer_metadata_v1 *)&peer_metadata;
|
||||
|
||||
return metadata->vdev_id;
|
||||
return HTT_RX_PEER_META_DATA_FIELD_GET(peer_metadata,
|
||||
soc->htt_vdev_id_s,
|
||||
soc->htt_vdev_id_m);
|
||||
}
|
||||
|
||||
static inline uint8_t
|
||||
|
@@ -7435,6 +7435,64 @@ dp_set_vdev_param_wrapper(struct cdp_soc_t *cdp_soc, uint8_t vdev_id,
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dp_rx_peer_metadata_ver_update() - update rx peer metadata version and
|
||||
* corresponding filed shift and mask
|
||||
* @soc: Handle to DP Soc structure
|
||||
* @peer_md_ver: RX peer metadata version value
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void
|
||||
dp_rx_peer_metadata_ver_update(struct dp_soc *soc, uint8_t peer_md_ver)
|
||||
{
|
||||
dp_info("rx_peer_metadata version %d", peer_md_ver);
|
||||
|
||||
switch (peer_md_ver) {
|
||||
case 0: /* htt_rx_peer_metadata_v0 */
|
||||
soc->htt_peer_id_s = HTT_RX_PEER_META_DATA_V0_PEER_ID_S;
|
||||
soc->htt_peer_id_m = HTT_RX_PEER_META_DATA_V0_PEER_ID_M;
|
||||
soc->htt_vdev_id_s = HTT_RX_PEER_META_DATA_V0_VDEV_ID_S;
|
||||
soc->htt_vdev_id_m = HTT_RX_PEER_META_DATA_V0_VDEV_ID_M;
|
||||
break;
|
||||
case 1: /* htt_rx_peer_metadata_v1 */
|
||||
soc->htt_peer_id_s = HTT_RX_PEER_META_DATA_V1_PEER_ID_S;
|
||||
soc->htt_peer_id_m = HTT_RX_PEER_META_DATA_V1_PEER_ID_M;
|
||||
soc->htt_vdev_id_s = HTT_RX_PEER_META_DATA_V1_VDEV_ID_S;
|
||||
soc->htt_vdev_id_m = HTT_RX_PEER_META_DATA_V1_VDEV_ID_M;
|
||||
soc->htt_mld_peer_valid_s =
|
||||
HTT_RX_PEER_META_DATA_V1_ML_PEER_VALID_S;
|
||||
soc->htt_mld_peer_valid_m =
|
||||
HTT_RX_PEER_META_DATA_V1_ML_PEER_VALID_M;
|
||||
break;
|
||||
case 2: /* htt_rx_peer_metadata_v1a */
|
||||
soc->htt_peer_id_s = HTT_RX_PEER_META_DATA_V1A_PEER_ID_S;
|
||||
soc->htt_peer_id_m = HTT_RX_PEER_META_DATA_V1A_PEER_ID_M;
|
||||
soc->htt_vdev_id_s = HTT_RX_PEER_META_DATA_V1A_VDEV_ID_S;
|
||||
soc->htt_vdev_id_m = HTT_RX_PEER_META_DATA_V1A_VDEV_ID_M;
|
||||
soc->htt_mld_peer_valid_s =
|
||||
HTT_RX_PEER_META_DATA_V1A_ML_PEER_VALID_S;
|
||||
soc->htt_mld_peer_valid_m =
|
||||
HTT_RX_PEER_META_DATA_V1A_ML_PEER_VALID_M;
|
||||
break;
|
||||
case 3: /* htt_rx_peer_metadata_v1b */
|
||||
soc->htt_peer_id_s = HTT_RX_PEER_META_DATA_V1B_PEER_ID_S;
|
||||
soc->htt_peer_id_m = HTT_RX_PEER_META_DATA_V1B_PEER_ID_M;
|
||||
soc->htt_vdev_id_s = HTT_RX_PEER_META_DATA_V1B_VDEV_ID_S;
|
||||
soc->htt_vdev_id_m = HTT_RX_PEER_META_DATA_V1B_VDEV_ID_M;
|
||||
soc->htt_mld_peer_valid_s =
|
||||
HTT_RX_PEER_META_DATA_V1B_ML_PEER_VALID_S;
|
||||
soc->htt_mld_peer_valid_m =
|
||||
HTT_RX_PEER_META_DATA_V1B_ML_PEER_VALID_M;
|
||||
break;
|
||||
default:
|
||||
dp_err("invliad rx_peer_metadata version %d", peer_md_ver);
|
||||
break;
|
||||
}
|
||||
|
||||
soc->rx_peer_metadata_ver = peer_md_ver;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_set_psoc_param: function to set parameters in psoc
|
||||
* @cdp_soc: DP soc handle
|
||||
@@ -7506,6 +7564,10 @@ dp_set_psoc_param(struct cdp_soc_t *cdp_soc,
|
||||
wlan_cfg_set_sawf_stats_config(wlan_cfg_ctx,
|
||||
val.cdp_sawf_stats);
|
||||
break;
|
||||
case CDP_CFG_RX_PEER_METADATA_VER:
|
||||
dp_rx_peer_metadata_ver_update(
|
||||
soc, val.cdp_peer_metadata_ver);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@@ -2794,6 +2794,16 @@ struct dp_soc {
|
||||
uint32_t peer_id_mask;
|
||||
#endif
|
||||
|
||||
/* rx peer metadata field shift and mask configuration */
|
||||
uint8_t htt_peer_id_s;
|
||||
uint32_t htt_peer_id_m;
|
||||
uint8_t htt_vdev_id_s;
|
||||
uint32_t htt_vdev_id_m;
|
||||
uint8_t htt_mld_peer_valid_s;
|
||||
uint32_t htt_mld_peer_valid_m;
|
||||
/* rx peer metadata version */
|
||||
uint8_t rx_peer_metadata_ver;
|
||||
|
||||
/* SoC level data path statistics */
|
||||
struct dp_soc_stats stats;
|
||||
#ifdef WLAN_SYSFS_DP_STATS
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador