Commit 8ba59716 authored by Alex Elder's avatar Alex Elder Committed by Jakub Kicinski

net: ipa: define IPA v5.0+ registers

Define some new registers that appear starting with IPA v5.0, along
with enumerated types identifying their fields.  Code that uses
these will be added by upcoming patches.

Most of the new registers are related to filter and routing tables,
and in particular, their "hashed" variant.  These tables are better
described as "cached", where a hash value determines which entries
are cached.  From now on, naming related to this functionality will
use "cache" instead of "hash", and that is reflected in these new
register names.  Some registers for managing these caches and their
contents have changed as well.

A few other new field definitions for registers (unrelated to table
caches) are also defined.
Signed-off-by: default avatarAlex Elder <elder@linaro.org>
Reviewed-by: default avatarLeon Romanovsky <leonro@nvidia.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent c84ddc11
/* SPDX-License-Identifier: GPL-2.0 */ /* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
* Copyright (C) 2018-2022 Linaro Ltd. * Copyright (C) 2018-2023 Linaro Ltd.
*/ */
#ifndef _IPA_REG_H_ #ifndef _IPA_REG_H_
#define _IPA_REG_H_ #define _IPA_REG_H_
...@@ -59,8 +59,10 @@ enum ipa_reg_id { ...@@ -59,8 +59,10 @@ enum ipa_reg_id {
SHARED_MEM_SIZE, SHARED_MEM_SIZE,
QSB_MAX_WRITES, QSB_MAX_WRITES,
QSB_MAX_READS, QSB_MAX_READS,
FILT_ROUT_HASH_EN, FILT_ROUT_HASH_EN, /* Not IPA v5.0+ */
FILT_ROUT_HASH_FLUSH, FILT_ROUT_CACHE_CFG, /* IPA v5.0+ */
FILT_ROUT_HASH_FLUSH, /* Not IPA v5.0+ */
FILT_ROUT_CACHE_FLUSH, /* IPA v5.0+ */
STATE_AGGR_ACTIVE, STATE_AGGR_ACTIVE,
IPA_BCR, /* Not IPA v4.5+ */ IPA_BCR, /* Not IPA v4.5+ */
LOCAL_PKT_PROC_CNTXT, LOCAL_PKT_PROC_CNTXT,
...@@ -95,7 +97,9 @@ enum ipa_reg_id { ...@@ -95,7 +97,9 @@ enum ipa_reg_id {
ENDP_INIT_SEQ, /* TX only */ ENDP_INIT_SEQ, /* TX only */
ENDP_STATUS, ENDP_STATUS,
ENDP_FILTER_ROUTER_HSH_CFG, /* Not IPA v4.2 */ ENDP_FILTER_ROUTER_HSH_CFG, /* Not IPA v4.2 */
/* The IRQ registers are only used for GSI_EE_AP */ ENDP_FILTER_CACHE_CFG, /* IPA v5.0+ */
ENDP_ROUTER_CACHE_CFG, /* IPA v5.0+ */
/* The IRQ registers that follow are only used for GSI_EE_AP */
IPA_IRQ_STTS, IPA_IRQ_STTS,
IPA_IRQ_EN, IPA_IRQ_EN,
IPA_IRQ_CLR, IPA_IRQ_CLR,
...@@ -251,14 +255,28 @@ enum ipa_reg_qsb_max_reads_field_id { ...@@ -251,14 +255,28 @@ enum ipa_reg_qsb_max_reads_field_id {
GEN_QMB_1_MAX_READS_BEATS, /* IPA v4.0+ */ GEN_QMB_1_MAX_READS_BEATS, /* IPA v4.0+ */
}; };
/* FILT_ROUT_CACHE_CFG register */
enum ipa_reg_filt_rout_cache_cfg_field_id {
ROUTER_CACHE_EN,
FILTER_CACHE_EN,
LOW_PRI_HASH_HIT_DISABLE,
LRU_EVICTION_THRESHOLD,
};
/* FILT_ROUT_HASH_EN and FILT_ROUT_HASH_FLUSH registers */ /* FILT_ROUT_HASH_EN and FILT_ROUT_HASH_FLUSH registers */
enum ipa_reg_rout_hash_field_id { enum ipa_reg_filt_rout_hash_field_id {
IPV6_ROUTER_HASH, IPV6_ROUTER_HASH,
IPV6_FILTER_HASH, IPV6_FILTER_HASH,
IPV4_ROUTER_HASH, IPV4_ROUTER_HASH,
IPV4_FILTER_HASH, IPV4_FILTER_HASH,
}; };
/* FILT_ROUT_CACHE_FLUSH register */
enum ipa_reg_filt_rout_cache_field_id {
ROUTER_CACHE,
FILTER_CACHE,
};
/* BCR register */ /* BCR register */
enum ipa_bcr_compat { enum ipa_bcr_compat {
BCR_CMDQ_L_LACK_ONE_ENTRY = 0x0, /* Not IPA v4.2+ */ BCR_CMDQ_L_LACK_ONE_ENTRY = 0x0, /* Not IPA v4.2+ */
...@@ -298,6 +316,7 @@ enum ipa_reg_ipa_tx_cfg_field_id { ...@@ -298,6 +316,7 @@ enum ipa_reg_ipa_tx_cfg_field_id {
DUAL_TX_ENABLE, /* v4.5+ */ DUAL_TX_ENABLE, /* v4.5+ */
SSPND_PA_NO_START_STATE, /* v4,2+, not v4.5 */ SSPND_PA_NO_START_STATE, /* v4,2+, not v4.5 */
SSPND_PA_NO_BQ_STATE, /* v4.2 only */ SSPND_PA_NO_BQ_STATE, /* v4.2 only */
HOLB_STICKY_DROP_EN, /* v5.0+ */
}; };
/* FLAVOR_0 register */ /* FLAVOR_0 register */
...@@ -333,6 +352,7 @@ enum ipa_reg_timers_pulse_gran_cfg_field_id { ...@@ -333,6 +352,7 @@ enum ipa_reg_timers_pulse_gran_cfg_field_id {
PULSE_GRAN_0, PULSE_GRAN_0,
PULSE_GRAN_1, PULSE_GRAN_1,
PULSE_GRAN_2, PULSE_GRAN_2,
PULSE_GRAN_3,
}; };
/* Values for IPA_GRAN_x fields of TIMERS_PULSE_GRAN_CFG */ /* Values for IPA_GRAN_x fields of TIMERS_PULSE_GRAN_CFG */
...@@ -415,6 +435,8 @@ enum ipa_reg_endp_init_hdr_ext_field_id { ...@@ -415,6 +435,8 @@ enum ipa_reg_endp_init_hdr_ext_field_id {
HDR_TOTAL_LEN_OR_PAD_OFFSET_MSB, /* v4.5+ */ HDR_TOTAL_LEN_OR_PAD_OFFSET_MSB, /* v4.5+ */
HDR_OFST_PKT_SIZE_MSB, /* v4.5+ */ HDR_OFST_PKT_SIZE_MSB, /* v4.5+ */
HDR_ADDITIONAL_CONST_LEN_MSB, /* v4.5+ */ HDR_ADDITIONAL_CONST_LEN_MSB, /* v4.5+ */
HDR_BYTES_TO_REMOVE_VALID, /* v5.0+ */
HDR_BYTES_TO_REMOVE, /* v5.0+ */
}; };
/* ENDP_INIT_MODE register */ /* ENDP_INIT_MODE register */
...@@ -573,6 +595,17 @@ enum ipa_reg_endp_filter_router_hsh_cfg_field_id { ...@@ -573,6 +595,17 @@ enum ipa_reg_endp_filter_router_hsh_cfg_field_id {
ROUTER_HASH_MSK_ALL, /* Bitwise OR of the above 6 fields */ ROUTER_HASH_MSK_ALL, /* Bitwise OR of the above 6 fields */
}; };
/* ENDP_FILTER_CACHE_CFG and ENDP_ROUTER_CACHE_CFG registers */
enum ipa_reg_endp_cache_cfg_field_id {
CACHE_MSK_SRC_ID,
CACHE_MSK_SRC_IP,
CACHE_MSK_DST_IP,
CACHE_MSK_SRC_PORT,
CACHE_MSK_DST_PORT,
CACHE_MSK_PROTOCOL,
CACHE_MSK_METADATA,
};
/* IPA_IRQ_STTS, IPA_IRQ_EN, and IPA_IRQ_CLR registers */ /* IPA_IRQ_STTS, IPA_IRQ_EN, and IPA_IRQ_CLR registers */
/** /**
* enum ipa_irq_id - Bit positions representing type of IPA IRQ * enum ipa_irq_id - Bit positions representing type of IPA IRQ
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment