]> git.itanic.dy.fi Git - linux-stable/commitdiff
net: ipa: define IPA v5.0+ registers
authorAlex Elder <elder@linaro.org>
Mon, 30 Jan 2023 21:01:53 +0000 (15:01 -0600)
committerJakub Kicinski <kuba@kernel.org>
Wed, 1 Feb 2023 05:45:51 +0000 (21:45 -0800)
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: Alex Elder <elder@linaro.org>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ipa/ipa_reg.h

index b1a3c2c7e1674d26be4466e2d985518a0c57c71d..82d43eca170ec2ba922e6c8f1e328062087af41f 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
 /* 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_
 #define _IPA_REG_H_
@@ -59,8 +59,10 @@ enum ipa_reg_id {
        SHARED_MEM_SIZE,
        QSB_MAX_WRITES,
        QSB_MAX_READS,
-       FILT_ROUT_HASH_EN,
-       FILT_ROUT_HASH_FLUSH,
+       FILT_ROUT_HASH_EN,                              /* Not IPA v5.0+ */
+       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,
        IPA_BCR,                                        /* Not IPA v4.5+ */
        LOCAL_PKT_PROC_CNTXT,
@@ -95,7 +97,9 @@ enum ipa_reg_id {
        ENDP_INIT_SEQ,                  /* TX only */
        ENDP_STATUS,
        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_EN,
        IPA_IRQ_CLR,
@@ -251,14 +255,28 @@ enum ipa_reg_qsb_max_reads_field_id {
        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 */
-enum ipa_reg_rout_hash_field_id {
+enum ipa_reg_filt_rout_hash_field_id {
        IPV6_ROUTER_HASH,
        IPV6_FILTER_HASH,
        IPV4_ROUTER_HASH,
        IPV4_FILTER_HASH,
 };
 
+/* FILT_ROUT_CACHE_FLUSH register */
+enum ipa_reg_filt_rout_cache_field_id {
+       ROUTER_CACHE,
+       FILTER_CACHE,
+};
+
 /* BCR register */
 enum ipa_bcr_compat {
        BCR_CMDQ_L_LACK_ONE_ENTRY               = 0x0,  /* Not IPA v4.2+ */
@@ -298,6 +316,7 @@ enum ipa_reg_ipa_tx_cfg_field_id {
        DUAL_TX_ENABLE,                                 /* v4.5+ */
        SSPND_PA_NO_START_STATE,                        /* v4,2+, not v4.5 */
        SSPND_PA_NO_BQ_STATE,                           /* v4.2 only */
+       HOLB_STICKY_DROP_EN,                            /* v5.0+ */
 };
 
 /* FLAVOR_0 register */
@@ -333,6 +352,7 @@ enum ipa_reg_timers_pulse_gran_cfg_field_id {
        PULSE_GRAN_0,
        PULSE_GRAN_1,
        PULSE_GRAN_2,
+       PULSE_GRAN_3,
 };
 
 /* Values for IPA_GRAN_x fields of TIMERS_PULSE_GRAN_CFG */
@@ -415,6 +435,8 @@ enum ipa_reg_endp_init_hdr_ext_field_id {
        HDR_TOTAL_LEN_OR_PAD_OFFSET_MSB,                /* v4.5+ */
        HDR_OFST_PKT_SIZE_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 */
@@ -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 */
 };
 
+/* 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 */
 /**
  * enum ipa_irq_id - Bit positions representing type of IPA IRQ