The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_inline.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* SPDX-License-Identifier: BSD-3-Clause */
    2 /* Copyright(c) 2007-2022 Intel Corporation */
    3 /* $FreeBSD$ */
    4 #ifndef ADF_C4XXX_INLINE_H_
    5 #define ADF_C4XXX_INLINE_H_
    6 
    7 /* Inline register addresses in SRAM BAR */
    8 #define ARAM_CSR_BAR_OFFSET 0x100000
    9 #define ADF_C4XXX_REG_SA_CTRL_LOCK (ARAM_CSR_BAR_OFFSET + 0x00)
   10 #define ADF_C4XXX_REG_SA_SCRATCH_0 (ARAM_CSR_BAR_OFFSET + 0x04)
   11 #define ADF_C4XXX_REG_SA_SCRATCH_2 (ARAM_CSR_BAR_OFFSET + 0x0C)
   12 #define ADF_C4XXX_REG_SA_ENTRY_CTRL (ARAM_CSR_BAR_OFFSET + 0x18)
   13 #define ADF_C4XXX_REG_SA_DB_CTRL (ARAM_CSR_BAR_OFFSET + 0x1C)
   14 #define ADF_C4XXX_REG_SA_REMAP (ARAM_CSR_BAR_OFFSET + 0x20)
   15 #define ADF_C4XXX_REG_SA_INLINE_CAPABILITY (ARAM_CSR_BAR_OFFSET + 0x24)
   16 #define ADF_C4XXX_REG_SA_INLINE_ENABLE (ARAM_CSR_BAR_OFFSET + 0x28)
   17 #define ADF_C4XXX_REG_SA_LINK_UP (ARAM_CSR_BAR_OFFSET + 0x2C)
   18 #define ADF_C4XXX_REG_SA_FUNC_LIMITS (ARAM_CSR_BAR_OFFSET + 0x38)
   19 
   20 #define ADF_C4XXX_SADB_SIZE_BIT BIT(24)
   21 #define ADF_C4XXX_SADB_SIZE_IN_WORDS(accel_dev)                                \
   22         ((accel_dev)->aram_info->sadb_region_size / 32)
   23 #define ADF_C4XXX_DEFAULT_MAX_CHAIN_LEN 0
   24 #define ADF_C4XXX_DEFAULT_LIMIT_CHAIN_LEN 0
   25 /* SADB CTRL register bit offsets */
   26 #define ADF_C4XXX_SADB_BIT_OFFSET 6
   27 #define ADF_C4XXX_MAX_CHAIN_LEN_BIT_OFFS 1
   28 
   29 #define ADF_C4XXX_SADB_REG_VALUE(accel_dev)                                    \
   30         ((ADF_C4XXX_SADB_SIZE_IN_WORDS(accel_dev)                              \
   31           << ADF_C4XXX_SADB_BIT_OFFSET) |                                      \
   32          (ADF_C4XXX_DEFAULT_MAX_CHAIN_LEN                                      \
   33           << ADF_C4XXX_MAX_CHAIN_LEN_BIT_OFFS) |                               \
   34          (ADF_C4XXX_DEFAULT_LIMIT_CHAIN_LEN))
   35 
   36 #define ADF_C4XXX_INLINE_INGRESS_OFFSET 0x0
   37 #define ADF_C4XXX_INLINE_EGRESS_OFFSET 0x1000
   38 
   39 /* MAC_CFG register access related definitions */
   40 #define ADF_C4XXX_STATS_REQUEST_ENABLED BIT(16)
   41 #define ADF_C4XXX_STATS_REQUEST_DISABLED ~BIT(16)
   42 #define ADF_C4XXX_UNLOCK true
   43 #define ADF_C4XXX_LOCK false
   44 
   45 /* MAC IP register access related definitions */
   46 #define ADF_C4XXX_MAC_STATS_READY BIT(0)
   47 #define ADF_C4XXX_MAX_NUM_STAT_READY_READS 10
   48 #define ADF_C4XXX_MAC_STATS_POLLING_INTERVAL 100
   49 #define ADF_C4XXX_MAC_ERROR_TX_UNDERRUN BIT(6)
   50 #define ADF_C4XXX_MAC_ERROR_TX_FCS BIT(7)
   51 #define ADF_C4XXX_MAC_ERROR_TX_DATA_CORRUPT BIT(8)
   52 #define ADF_C4XXX_MAC_ERROR_RX_OVERRUN BIT(9)
   53 #define ADF_C4XXX_MAC_ERROR_RX_RUNT BIT(10)
   54 #define ADF_C4XXX_MAC_ERROR_RX_UNDERSIZE BIT(11)
   55 #define ADF_C4XXX_MAC_ERROR_RX_JABBER BIT(12)
   56 #define ADF_C4XXX_MAC_ERROR_RX_OVERSIZE BIT(13)
   57 #define ADF_C4XXX_MAC_ERROR_RX_FCS BIT(14)
   58 #define ADF_C4XXX_MAC_ERROR_RX_FRAME BIT(15)
   59 #define ADF_C4XXX_MAC_ERROR_RX_CODE BIT(16)
   60 #define ADF_C4XXX_MAC_ERROR_RX_PREAMBLE BIT(17)
   61 #define ADF_C4XXX_MAC_RX_LINK_UP BIT(21)
   62 #define ADF_C4XXX_MAC_INVALID_SPEED BIT(31)
   63 #define ADF_C4XXX_MAC_PIA_RX_FIFO_OVERRUN (1ULL << 32)
   64 #define ADF_C4XXX_MAC_PIA_TX_FIFO_OVERRUN (1ULL << 33)
   65 #define ADF_C4XXX_MAC_PIA_TX_FIFO_UNDERRUN (1ULL << 34)
   66 
   67 /* 64-bit inline control registers. It will require
   68  * adding ADF_C4XXX_INLINE_INGRESS_OFFSET to the address for ingress
   69  * direction or ADF_C4XXX_INLINE_EGRESS_OFFSET to the address for
   70  * egress direction
   71  */
   72 #define ADF_C4XXX_MAC_IP 0x8
   73 #define ADF_C4XXX_MAC_CFG 0x18
   74 #define ADF_C4XXX_MAC_PIA_CFG 0xA0
   75 
   76 /* Default MAC_CFG value
   77  * - MAC_LINKUP_ENABLE = 1
   78  * - MAX_FRAME_LENGTH = 0x2600
   79  */
   80 #define ADF_C4XXX_MAC_CFG_VALUE 0x00000000FA0C2600
   81 
   82 /* Bit definitions for MAC_PIA_CFG register */
   83 #define ADF_C4XXX_ONPI_ENABLE BIT(0)
   84 #define ADF_C4XXX_XOFF_ENABLE BIT(10)
   85 
   86 /* New default value for MAC_PIA_CFG register */
   87 #define ADF_C4XXX_MAC_PIA_CFG_VALUE                                            \
   88         (ADF_C4XXX_XOFF_ENABLE | ADF_C4XXX_ONPI_ENABLE)
   89 
   90 /* 64-bit Inline statistics registers. It will require
   91  * adding ADF_C4XXX_INLINE_INGRESS_OFFSET to the address for ingress
   92  * direction or ADF_C4XXX_INLINE_EGRESS_OFFSET to the address for
   93  * egress direction
   94  */
   95 #define ADF_C4XXX_MAC_STAT_TX_OCTET 0x100
   96 #define ADF_C4XXX_MAC_STAT_TX_FRAME 0x110
   97 #define ADF_C4XXX_MAC_STAT_TX_BAD_FRAME 0x118
   98 #define ADF_C4XXX_MAC_STAT_TX_FCS_ERROR 0x120
   99 #define ADF_C4XXX_MAC_STAT_TX_64 0x130
  100 #define ADF_C4XXX_MAC_STAT_TX_65 0x138
  101 #define ADF_C4XXX_MAC_STAT_TX_128 0x140
  102 #define ADF_C4XXX_MAC_STAT_TX_256 0x148
  103 #define ADF_C4XXX_MAC_STAT_TX_512 0x150
  104 #define ADF_C4XXX_MAC_STAT_TX_1024 0x158
  105 #define ADF_C4XXX_MAC_STAT_TX_1519 0x160
  106 #define ADF_C4XXX_MAC_STAT_TX_JABBER 0x168
  107 #define ADF_C4XXX_MAC_STAT_RX_OCTET 0x200
  108 #define ADF_C4XXX_MAC_STAT_RX_FRAME 0x210
  109 #define ADF_C4XXX_MAC_STAT_RX_BAD_FRAME 0x218
  110 #define ADF_C4XXX_MAC_STAT_RX_FCS_ERROR 0x220
  111 #define ADF_C4XXX_MAC_STAT_RX_64 0x250
  112 #define ADF_C4XXX_MAC_STAT_RX_65 0x258
  113 #define ADF_C4XXX_MAC_STAT_RX_128 0x260
  114 #define ADF_C4XXX_MAC_STAT_RX_256 0x268
  115 #define ADF_C4XXX_MAC_STAT_RX_512 0x270
  116 #define ADF_C4XXX_MAC_STAT_RX_1024 0x278
  117 #define ADF_C4XXX_MAC_STAT_RX_1519 0x280
  118 #define ADF_C4XXX_MAC_STAT_RX_OVERSIZE 0x288
  119 #define ADF_C4XXX_MAC_STAT_RX_JABBER 0x290
  120 
  121 /* 32-bit Inline statistics registers. It will require
  122  * adding ADF_C4XXX_INLINE_INGRESS_OFFSET to the address for ingress
  123  * direction or ADF_C4XXX_INLINE_EGRESS_OFFSET to the address for
  124  * egress direction
  125  */
  126 #define ADF_C4XXX_IC_PAR_IPSEC_DESC_COUNT 0xBC0
  127 #define ADF_C4XXX_IC_PAR_MIXED_DESC_COUNT 0xBC4
  128 #define ADF_C4XXX_IC_PAR_FULLY_CLEAR_DESC_COUNT 0xBC8
  129 #define ADF_C4XXX_IC_PAR_CLR_COUNT 0xBCC
  130 #define ADF_C4XXX_IC_CTPB_PKT_COUNT 0xDF4
  131 #define ADF_C4XXX_RB_DATA_COUNT 0xDF8
  132 #define ADF_C4XXX_IC_CLEAR_DESC_COUNT 0xDFC
  133 #define ADF_C4XXX_IC_IPSEC_DESC_COUNT 0xE00
  134 
  135 /* REG_CMD_DIS_MISC bit definitions */
  136 #define ADF_C4XXX_BYTE_SWAP_ENABLE BIT(0)
  137 #define ADF_C4XXX_REG_CMD_DIS_MISC_DEFAULT_VALUE (ADF_C4XXX_BYTE_SWAP_ENABLE)
  138 
  139 /* Command Dispatch Misc Register */
  140 #define ADF_C4XXX_INGRESS_CMD_DIS_MISC (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0x8A8)
  141 
  142 #define ADF_C4XXX_EGRESS_CMD_DIS_MISC (ADF_C4XXX_INLINE_EGRESS_OFFSET + 0x8A8)
  143 
  144 /* Congestion management threshold registers */
  145 #define ADF_C4XXX_NEXT_FCTHRESH_OFFSET 4
  146 
  147 /* Number of congestion management domains */
  148 #define ADF_C4XXX_NUM_CONGEST_DOMAINS 8
  149 
  150 #define ADF_C4XXX_BB_FCHTHRESH_OFFSET 0xB78
  151 
  152 /* IC_BB_FCHTHRESH registers */
  153 #define ADF_C4XXX_ICI_BB_FCHTHRESH_OFFSET                                      \
  154         (ADF_C4XXX_INLINE_INGRESS_OFFSET + ADF_C4XXX_BB_FCHTHRESH_OFFSET)
  155 
  156 #define ADF_C4XXX_ICE_BB_FCHTHRESH_OFFSET                                      \
  157         (ADF_C4XXX_INLINE_EGRESS_OFFSET + ADF_C4XXX_BB_FCHTHRESH_OFFSET)
  158 
  159 #define ADF_C4XXX_WR_ICI_BB_FCHTHRESH(csr_base_addr, index, value)             \
  160         ADF_CSR_WR(csr_base_addr,                                              \
  161                    (ADF_C4XXX_ICI_BB_FCHTHRESH_OFFSET +                        \
  162                     (index)*ADF_C4XXX_NEXT_FCTHRESH_OFFSET),                   \
  163                    value)
  164 
  165 #define ADF_C4XXX_WR_ICE_BB_FCHTHRESH(csr_base_addr, index, value)             \
  166         ADF_CSR_WR(csr_base_addr,                                              \
  167                    (ADF_C4XXX_ICE_BB_FCHTHRESH_OFFSET +                        \
  168                     (index)*ADF_C4XXX_NEXT_FCTHRESH_OFFSET),                   \
  169                    value)
  170 
  171 #define ADF_C4XXX_BB_FCLTHRESH_OFFSET 0xB98
  172 
  173 /* IC_BB_FCLTHRESH registers */
  174 #define ADF_C4XXX_ICI_BB_FCLTHRESH_OFFSET                                      \
  175         (ADF_C4XXX_INLINE_INGRESS_OFFSET + ADF_C4XXX_BB_FCLTHRESH_OFFSET)
  176 
  177 #define ADF_C4XXX_ICE_BB_FCLTHRESH_OFFSET                                      \
  178         (ADF_C4XXX_INLINE_EGRESS_OFFSET + ADF_C4XXX_BB_FCLTHRESH_OFFSET)
  179 
  180 #define ADF_C4XXX_WR_ICI_BB_FCLTHRESH(csr_base_addr, index, value)             \
  181         ADF_CSR_WR(csr_base_addr,                                              \
  182                    (ADF_C4XXX_ICI_BB_FCLTHRESH_OFFSET +                        \
  183                     (index)*ADF_C4XXX_NEXT_FCTHRESH_OFFSET),                   \
  184                    value)
  185 
  186 #define ADF_C4XXX_WR_ICE_BB_FCLTHRESH(csr_base_addr, index, value)             \
  187         ADF_CSR_WR(csr_base_addr,                                              \
  188                    (ADF_C4XXX_ICE_BB_FCLTHRESH_OFFSET +                        \
  189                     (index)*ADF_C4XXX_NEXT_FCTHRESH_OFFSET),                   \
  190                    value)
  191 
  192 #define ADF_C4XXX_BB_BEHTHRESH_OFFSET 0xBB8
  193 #define ADF_C4XXX_BB_BELTHRESH_OFFSET 0xBBC
  194 #define ADF_C4XXX_BEWIP_THRESH_OFFSET 0xDEC
  195 #define ADF_C4XXX_CTPB_THRESH_OFFSET 0xDE8
  196 #define ADF_C4XXX_CIRQ_OFFSET 0xDE4
  197 #define ADF_C4XXX_Q2MEMAP_OFFSET 0xC04
  198 
  199 /* IC_BB_BEHTHRESH register */
  200 #define ADF_C4XXX_ICI_BB_BEHTHRESH_OFFSET                                      \
  201         (ADF_C4XXX_INLINE_INGRESS_OFFSET + ADF_C4XXX_BB_BEHTHRESH_OFFSET)
  202 
  203 #define ADF_C4XXX_ICE_BB_BEHTHRESH_OFFSET                                      \
  204         (ADF_C4XXX_INLINE_EGRESS_OFFSET + ADF_C4XXX_BB_BEHTHRESH_OFFSET)
  205 
  206 /* IC_BB_BELTHRESH register */
  207 #define ADF_C4XXX_ICI_BB_BELTHRESH_OFFSET                                      \
  208         (ADF_C4XXX_INLINE_INGRESS_OFFSET + ADF_C4XXX_BB_BELTHRESH_OFFSET)
  209 
  210 #define ADF_C4XXX_ICE_BB_BELTHRESH_OFFSET                                      \
  211         (ADF_C4XXX_INLINE_EGRESS_OFFSET + ADF_C4XXX_BB_BELTHRESH_OFFSET)
  212 
  213 /* IC_BEWIP_THRESH register */
  214 #define ADF_C4XXX_ICI_BEWIP_THRESH_OFFSET                                      \
  215         (ADF_C4XXX_INLINE_INGRESS_OFFSET + ADF_C4XXX_BEWIP_THRESH_OFFSET)
  216 
  217 #define ADF_C4XXX_ICE_BEWIP_THRESH_OFFSET                                      \
  218         (ADF_C4XXX_INLINE_EGRESS_OFFSET + ADF_C4XXX_BEWIP_THRESH_OFFSET)
  219 
  220 /* IC_CTPB_THRESH register */
  221 #define ADF_C4XXX_ICI_CTPB_THRESH_OFFSET                                       \
  222         (ADF_C4XXX_INLINE_INGRESS_OFFSET + ADF_C4XXX_CTPB_THRESH_OFFSET)
  223 
  224 #define ADF_C4XXX_ICE_CTPB_THRESH_OFFSET                                       \
  225         (ADF_C4XXX_INLINE_EGRESS_OFFSET + ADF_C4XXX_CTPB_THRESH_OFFSET)
  226 
  227 /* ADF_C4XXX_ICI_CIRQ_OFFSET */
  228 #define ADF_C4XXX_ICI_CIRQ_OFFSET                                              \
  229         (ADF_C4XXX_INLINE_INGRESS_OFFSET + ADF_C4XXX_CIRQ_OFFSET)
  230 
  231 #define ADF_C4XXX_ICE_CIRQ_OFFSET                                              \
  232         (ADF_C4XXX_INLINE_EGRESS_OFFSET + ADF_C4XXX_CIRQ_OFFSET)
  233 
  234 /* IC_Q2MEMAP register */
  235 #define ADF_C4XXX_ICI_Q2MEMAP_OFFSET                                           \
  236         (ADF_C4XXX_INLINE_INGRESS_OFFSET + ADF_C4XXX_Q2MEMAP_OFFSET)
  237 
  238 #define ADF_C4XXX_ICE_Q2MEMAP_OFFSET                                           \
  239         (ADF_C4XXX_INLINE_EGRESS_OFFSET + ADF_C4XXX_Q2MEMAP_OFFSET)
  240 
  241 #define ADF_C4XXX_NEXT_Q2MEMAP_OFFSET 4
  242 #define ADF_C4XXX_NUM_Q2MEMAP_REGISTERS 8
  243 
  244 #define ADF_C4XXX_WR_CSR_ICI_Q2MEMAP(csr_base_addr, index, value)              \
  245         ADF_CSR_WR(csr_base_addr,                                              \
  246                    (ADF_C4XXX_ICI_Q2MEMAP_OFFSET +                             \
  247                     (index)*ADF_C4XXX_NEXT_Q2MEMAP_OFFSET),                    \
  248                    value)
  249 
  250 #define ADF_C4XXX_WR_CSR_ICE_Q2MEMAP(csr_base_addr, index, value)              \
  251         ADF_CSR_WR(csr_base_addr,                                              \
  252                    (ADF_C4XXX_ICE_Q2MEMAP_OFFSET +                             \
  253                     (index)*ADF_C4XXX_NEXT_Q2MEMAP_OFFSET),                    \
  254                    value)
  255 
  256 /* IC_PARSE_CTRL register */
  257 #define ADF_C4XXX_DEFAULT_KEY_LENGTH 21
  258 #define ADF_C4XXX_DEFAULT_REL_ABS_OFFSET 1
  259 #define ADF_C4XXX_DEFAULT_NUM_TUPLES 4
  260 #define ADF_C4XXX_IC_PARSE_CTRL_OFFSET_DEFAULT_VALUE                           \
  261         ((ADF_C4XXX_DEFAULT_KEY_LENGTH << 4) |                                 \
  262          (ADF_C4XXX_DEFAULT_REL_ABS_OFFSET << 3) |                             \
  263          (ADF_C4XXX_DEFAULT_NUM_TUPLES))
  264 
  265 /* Configuration parsing register definitions */
  266 #define ADF_C4XXX_IC_PARSE_CTRL_OFFSET (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB00)
  267 
  268 /* Fixed data parsing register */
  269 #define ADF_C4XXX_IC_PARSE_FIXED_DATA(i)                                       \
  270         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB04 + ((i)*4))
  271 #define ADF_C4XXX_DEFAULT_IC_PARSE_FIXED_DATA_0 0x32
  272 
  273 /* Fixed length parsing register */
  274 #define ADF_C4XXX_IC_PARSE_FIXED_LENGTH                                        \
  275         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB14)
  276 #define ADF_C4XXX_DEFAULT_IC_PARSE_FIXED_LEN 0x0
  277 
  278 /* IC_PARSE_IPV4 offset and length registers */
  279 #define ADF_C4XXX_IC_PARSE_IPV4_OFFSET_0                                       \
  280         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB18)
  281 #define ADF_C4XXX_IC_PARSE_IPV4_OFFSET_1                                       \
  282         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB1C)
  283 #define ADF_C4XXX_IC_PARSE_IPV4_OFFSET_2                                       \
  284         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB20)
  285 #define ADF_C4XXX_IC_PARSE_IPV4_OFFSET_3                                       \
  286         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB24)
  287 #define ADF_C4XXX_IC_PARSE_IPV4_OFFSET_4                                       \
  288         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB28)
  289 #define ADF_C4XXX_IC_PARSE_IPV4_OFFSET_5                                       \
  290         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB2C)
  291 
  292 #define ADF_C4XXX_IC_PARSE_IPV4_LENGTH_0                                       \
  293         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB30)
  294 #define ADF_C4XXX_IC_PARSE_IPV4_LENGTH_1                                       \
  295         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB34)
  296 #define ADF_C4XXX_IC_PARSE_IPV4_LENGTH_2                                       \
  297         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB38)
  298 #define ADF_C4XXX_IC_PARSE_IPV4_LENGTH_3                                       \
  299         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB3C)
  300 #define ADF_C4XXX_IC_PARSE_IPV4_LENGTH_4                                       \
  301         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB40)
  302 #define ADF_C4XXX_IC_PARSE_IPV4_LENGTH_5                                       \
  303         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB44)
  304 
  305 #define ADF_C4XXX_IPV4_OFFSET_0_PARSER_BASE 0x1
  306 #define ADF_C4XXX_IPV4_OFFSET_0_OFFSET 0x0
  307 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV4_OFFS_0_VALUE                           \
  308         ((ADF_C4XXX_IPV4_OFFSET_0_PARSER_BASE << 29) |                         \
  309          ADF_C4XXX_IPV4_OFFSET_0_OFFSET)
  310 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV4_LEN_0_VALUE 0
  311 
  312 #define ADF_C4XXX_IPV4_OFFSET_1_PARSER_BASE 0x2
  313 #define ADF_C4XXX_IPV4_OFFSET_1_OFFSET 0x0
  314 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV4_OFFS_1_VALUE                           \
  315         ((ADF_C4XXX_IPV4_OFFSET_1_PARSER_BASE << 29) |                         \
  316          ADF_C4XXX_IPV4_OFFSET_1_OFFSET)
  317 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV4_LEN_1_VALUE 3
  318 
  319 #define ADF_C4XXX_IPV4_OFFSET_2_PARSER_BASE 0x4
  320 #define ADF_C4XXX_IPV4_OFFSET_2_OFFSET 0x10
  321 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV4_OFFS_2_VALUE                           \
  322         ((ADF_C4XXX_IPV4_OFFSET_2_PARSER_BASE << 29) |                         \
  323          ADF_C4XXX_IPV4_OFFSET_2_OFFSET)
  324 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV4_LEN_2_VALUE 3
  325 
  326 #define ADF_C4XXX_IPV4_OFFSET_3_PARSER_BASE 0x0
  327 #define ADF_C4XXX_IPV4_OFFSET_3_OFFSET 0x0
  328 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV4_OFFS_3_VALUE                           \
  329         ((ADF_C4XXX_IPV4_OFFSET_3_PARSER_BASE << 29) |                         \
  330          ADF_C4XXX_IPV4_OFFSET_3_OFFSET)
  331 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV4_LEN_3_VALUE 0
  332 
  333 /* IC_PARSE_IPV6 offset and length registers */
  334 #define ADF_C4XXX_IC_PARSE_IPV6_OFFSET_0                                       \
  335         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB48)
  336 #define ADF_C4XXX_IC_PARSE_IPV6_OFFSET_1                                       \
  337         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB4C)
  338 #define ADF_C4XXX_IC_PARSE_IPV6_OFFSET_2                                       \
  339         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB50)
  340 #define ADF_C4XXX_IC_PARSE_IPV6_OFFSET_3                                       \
  341         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB54)
  342 #define ADF_C4XXX_IC_PARSE_IPV6_OFFSET_4                                       \
  343         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB58)
  344 #define ADF_C4XXX_IC_PARSE_IPV6_OFFSET_5                                       \
  345         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB5C)
  346 
  347 #define ADF_C4XXX_IC_PARSE_IPV6_LENGTH_0                                       \
  348         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB60)
  349 #define ADF_C4XXX_IC_PARSE_IPV6_LENGTH_1                                       \
  350         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB64)
  351 #define ADF_C4XXX_IC_PARSE_IPV6_LENGTH_2                                       \
  352         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB68)
  353 #define ADF_C4XXX_IC_PARSE_IPV6_LENGTH_3                                       \
  354         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB6C)
  355 #define ADF_C4XXX_IC_PARSE_IPV6_LENGTH_4                                       \
  356         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB70)
  357 #define ADF_C4XXX_IC_PARSE_IPV6_LENGTH_5                                       \
  358         (ADF_C4XXX_INLINE_INGRESS_OFFSET + 0xB74)
  359 
  360 #define ADF_C4XXX_IPV6_OFFSET_0_PARSER_BASE 0x1
  361 #define ADF_C4XXX_IPV6_OFFSET_0_OFFSET 0x0
  362 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV6_OFFS_0_VALUE                           \
  363         ((ADF_C4XXX_IPV6_OFFSET_0_PARSER_BASE << 29) |                         \
  364          (ADF_C4XXX_IPV6_OFFSET_0_OFFSET))
  365 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV6_LEN_0_VALUE 0
  366 
  367 #define ADF_C4XXX_IPV6_OFFSET_1_PARSER_BASE 0x2
  368 #define ADF_C4XXX_IPV6_OFFSET_1_OFFSET 0x0
  369 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV6_OFFS_1_VALUE                           \
  370         ((ADF_C4XXX_IPV6_OFFSET_1_PARSER_BASE << 29) |                         \
  371          (ADF_C4XXX_IPV6_OFFSET_1_OFFSET))
  372 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV6_LEN_1_VALUE 3
  373 
  374 #define ADF_C4XXX_IPV6_OFFSET_2_PARSER_BASE 0x4
  375 #define ADF_C4XXX_IPV6_OFFSET_2_OFFSET 0x18
  376 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV6_OFFS_2_VALUE                           \
  377         ((ADF_C4XXX_IPV6_OFFSET_2_PARSER_BASE << 29) |                         \
  378          (ADF_C4XXX_IPV6_OFFSET_2_OFFSET))
  379 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV6_LEN_2_VALUE 0xF
  380 
  381 #define ADF_C4XXX_IPV6_OFFSET_3_PARSER_BASE 0x0
  382 #define ADF_C4XXX_IPV6_OFFSET_3_OFFSET 0x0
  383 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV6_OFFS_3_VALUE                           \
  384         ((ADF_C4XXX_IPV6_OFFSET_3_PARSER_BASE << 29) |                         \
  385          (ADF_C4XXX_IPV6_OFFSET_3_OFFSET))
  386 #define ADF_C4XXX_DEFAULT_IC_PARSE_IPV6_LEN_3_VALUE 0x0
  387 
  388 /* error notification configuration registers */
  389 
  390 #define ADF_C4XXX_IC_CD_RF_PARITY_ERR_0 0xA00
  391 #define ADF_C4XXX_IC_CD_RF_PARITY_ERR_1 0xA04
  392 #define ADF_C4XXX_IC_CD_RF_PARITY_ERR_2 0xA08
  393 #define ADF_C4XXX_IC_CD_RF_PARITY_ERR_3 0xA0C
  394 #define ADF_C4XXX_IC_CD_CERR 0xA10
  395 #define ADF_C4XXX_IC_CD_UERR 0xA14
  396 
  397 #define ADF_C4XXX_IC_INLN_RF_PARITY_ERR_0 0xF00
  398 #define ADF_C4XXX_IC_INLN_RF_PARITY_ERR_1 0xF04
  399 #define ADF_C4XXX_IC_INLN_RF_PARITY_ERR_2 0xF08
  400 #define ADF_C4XXX_IC_INLN_RF_PARITY_ERR_3 0xF0C
  401 #define ADF_C4XXX_IC_INLN_RF_PARITY_ERR_4 0xF10
  402 #define ADF_C4XXX_IC_INLN_RF_PARITY_ERR_5 0xF14
  403 #define ADF_C4XXX_IC_PARSER_CERR 0xF18
  404 #define ADF_C4XXX_IC_PARSER_UERR 0xF1C
  405 #define ADF_C4XXX_IC_CTPB_CERR 0xF28
  406 #define ADF_C4XXX_IC_CTPB_UERR 0xF2C
  407 #define ADF_C4XXX_IC_CPPM_ERR_STAT 0xF3C
  408 #define ADF_C4XXX_IC_CONGESTION_MGMT_INT 0xF58
  409 
  410 #define ADF_C4XXX_IC_CPPT_ERR_STAT 0x704
  411 #define ADF_C4XXX_IC_MAC_IM 0x10
  412 
  413 #define ADF_C4XXX_CD_RF_PARITY_ERR_0_VAL 0x22222222
  414 #define ADF_C4XXX_CD_RF_PARITY_ERR_1_VAL 0x22222323
  415 #define ADF_C4XXX_CD_RF_PARITY_ERR_2_VAL 0x00022222
  416 #define ADF_C4XXX_CD_RF_PARITY_ERR_3_VAL 0x00000000
  417 #define ADF_C4XXX_CD_UERR_VAL 0x00000008
  418 #define ADF_C4XXX_CD_CERR_VAL 0x00000008
  419 #define ADF_C4XXX_PARSER_UERR_VAL 0x00100008
  420 #define ADF_C4XXX_PARSER_CERR_VAL 0x00000008
  421 #define ADF_C4XXX_INLN_RF_PARITY_ERR_0_VAL 0x33333333
  422 #define ADF_C4XXX_INLN_RF_PARITY_ERR_1_VAL 0x33333333
  423 #define ADF_C4XXX_INLN_RF_PARITY_ERR_2_VAL 0x33333333
  424 #define ADF_C4XXX_INLN_RF_PARITY_ERR_3_VAL 0x22222222
  425 #define ADF_C4XXX_INLN_RF_PARITY_ERR_4_VAL 0x22222222
  426 #define ADF_C4XXX_INLN_RF_PARITY_ERR_5_VAL 0x00333232
  427 #define ADF_C4XXX_CTPB_UERR_VAL 0x00000008
  428 #define ADF_C4XXX_CTPB_CERR_VAL 0x00000008
  429 #define ADF_C4XXX_CPPM_ERR_STAT_VAL 0x00007000
  430 #define ADF_C4XXX_CPPT_ERR_STAT_VAL 0x000001C0
  431 #define ADF_C4XXX_CONGESTION_MGMT_INI_VAL 0x00000001
  432 #define ADF_C4XXX_MAC_IM_VAL 0x000000087FDC003E
  433 
  434 /* parser ram ecc uerr */
  435 #define ADF_C4XXX_PARSER_UERR_INTR BIT(0)
  436 /* multiple err */
  437 #define ADF_C4XXX_PARSER_MUL_UERR_INTR BIT(18)
  438 #define ADF_C4XXX_PARSER_DESC_UERR_INTR_ENA BIT(20)
  439 
  440 #define ADF_C4XXX_RF_PAR_ERR_BITS 32
  441 #define ADF_C4XXX_MAX_STR_LEN 64
  442 #define RF_PAR_MUL_MAP(bit_num) (((bit_num)-2) / 4)
  443 #define RF_PAR_MAP(bit_num) (((bit_num)-3) / 4)
  444 
  445 /* cd rf parity error
  446  * BIT(2) rf parity mul 0
  447  * BIT(3) rf parity 0
  448  * BIT(10) rf parity mul 2
  449  * BIT(11) rf parity 2
  450  */
  451 #define ADF_C4XXX_CD_RF_PAR_ERR_1_INTR (BIT(2) | BIT(3) | BIT(10) | BIT(11))
  452 
  453 /* inln rf parity error
  454  * BIT(2) rf parity mul 0
  455  * BIT(3) rf parity 0
  456  * BIT(6) rf parity mul 1
  457  * BIT(7) rf parity 1
  458  * BIT(10) rf parity mul 2
  459  * BIT(11) rf parity 2
  460  * BIT(14) rf parity mul 3
  461  * BIT(15) rf parity 3
  462  * BIT(18) rf parity mul 4
  463  * BIT(19) rf parity 4
  464  * BIT(22) rf parity mul 5
  465  * BIT(23) rf parity 5
  466  * BIT(26) rf parity mul 6
  467  * BIT(27) rf parity 6
  468  * BIT(30) rf parity mul 7
  469  * BIT(31) rf parity 7
  470  */
  471 #define ADF_C4XXX_INLN_RF_PAR_ERR_0_INTR                                       \
  472         (BIT(2) | BIT(3) | BIT(6) | BIT(7) | BIT(10) | BIT(11) | BIT(14) |     \
  473          BIT(15) | BIT(18) | BIT(19) | BIT(22) | BIT(23) | BIT(26) | BIT(27) | \
  474          BIT(30) | BIT(31))
  475 #define ADF_C4XXX_INLN_RF_PAR_ERR_1_INTR ADF_C4XXX_INLN_RF_PAR_ERR_0_INTR
  476 #define ADF_C4XXX_INLN_RF_PAR_ERR_2_INTR ADF_C4XXX_INLN_RF_PAR_ERR_0_INTR
  477 #define ADF_C4XXX_INLN_RF_PAR_ERR_5_INTR                                       \
  478         (BIT(6) | BIT(7) | BIT(14) | BIT(15) | BIT(18) | BIT(19) | BIT(22) |   \
  479          BIT(23))
  480 
  481 /* Congestion mgmt events */
  482 #define ADF_C4XXX_CONGESTION_MGMT_CTPB_GLOBAL_CROSSED BIT(1)
  483 #define ADF_C4XXX_CONGESTION_MGMT_XOFF_CIRQ_OUT BIT(2)
  484 #define ADF_C4XXX_CONGESTION_MGMT_XOFF_CIRQ_IN BIT(3)
  485 
  486 /* AEAD algorithm definitions in REG_SA_SCRATCH[0] register.
  487  * Bits<6:5> are reserved for expansion.
  488  */
  489 #define AES128_GCM BIT(0)
  490 #define AES192_GCM BIT(1)
  491 #define AES256_GCM BIT(2)
  492 #define AES128_CCM BIT(3)
  493 #define CHACHA20_POLY1305 BIT(4)
  494 /* Cipher algorithm definitions in REG_SA_SCRATCH[0] register
  495  * Bit<15> is reserved for expansion.
  496  */
  497 #define CIPHER_NULL BIT(7)
  498 #define AES128_CBC BIT(8)
  499 #define AES192_CBC BIT(9)
  500 #define AES256_CBC BIT(10)
  501 #define AES128_CTR BIT(11)
  502 #define AES192_CTR BIT(12)
  503 #define AES256_CTR BIT(13)
  504 #define _3DES_CBC BIT(14)
  505 /* Authentication algorithm definitions in REG_SA_SCRATCH[0] register
  506  * Bits<25:30> are reserved for expansion.
  507  */
  508 #define HMAC_MD5_96 BIT(16)
  509 #define HMAC_SHA1_96 BIT(17)
  510 #define HMAC_SHA256_128 BIT(18)
  511 #define HMAC_SHA384_192 BIT(19)
  512 #define HMAC_SHA512_256 BIT(20)
  513 #define AES_GMAC_AES_128 BIT(21)
  514 #define AES_XCBC_MAC_96 BIT(22)
  515 #define AES_CMAC_96 BIT(23)
  516 #define AUTH_NULL BIT(24)
  517 
  518 /* Algo group0:DEFAULT */
  519 #define ADF_C4XXX_DEFAULT_SUPPORTED_ALGORITHMS                                 \
  520         (AES128_GCM |                                                          \
  521          (AES192_GCM | AES256_GCM | AES128_CCM | CHACHA20_POLY1305) |          \
  522          (CIPHER_NULL | AES128_CBC | AES192_CBC | AES256_CBC) |                \
  523          (AES128_CTR | AES192_CTR | AES256_CTR | _3DES_CBC) |                  \
  524          (HMAC_MD5_96 | HMAC_SHA1_96 | HMAC_SHA256_128) |                      \
  525          (HMAC_SHA384_192 | HMAC_SHA512_256 | AES_GMAC_AES_128) |              \
  526          (AES_XCBC_MAC_96 | AES_CMAC_96 | AUTH_NULL))
  527 
  528 /* Algo group1 */
  529 #define ADF_C4XXX_SUPPORTED_ALGORITHMS_GROUP1                                  \
  530         (AES128_GCM | (AES256_GCM | CHACHA20_POLY1305))
  531 
  532 /* Supported crypto offload features in REG_SA_SCRATCH[2] register */
  533 #define ADF_C4XXX_IPSEC_ESP BIT(0)
  534 #define ADF_C4XXX_IPSEC_AH BIT(1)
  535 #define ADF_C4XXX_UDP_ENCAPSULATION BIT(2)
  536 #define ADF_C4XXX_IPSEC_TUNNEL_MODE BIT(3)
  537 #define ADF_C4XXX_IPSEC_TRANSPORT_MODE BIT(4)
  538 #define ADF_C4XXX_IPSEC_EXT_SEQ_NUM BIT(5)
  539 
  540 #define ADF_C4XXX_DEFAULT_CY_OFFLOAD_FEATURES                                  \
  541         (ADF_C4XXX_IPSEC_ESP |                                                 \
  542          (ADF_C4XXX_UDP_ENCAPSULATION | ADF_C4XXX_IPSEC_TUNNEL_MODE) |         \
  543          (ADF_C4XXX_IPSEC_TRANSPORT_MODE | ADF_C4XXX_IPSEC_EXT_SEQ_NUM))
  544 
  545 /* REG_SA_CTRL_LOCK default value */
  546 #define ADF_C4XXX_DEFAULT_SA_CTRL_LOCKOUT BIT(0)
  547 
  548 /* SA ENTRY CTRL default values */
  549 #define ADF_C4XXX_DEFAULT_LU_KEY_LEN 21
  550 
  551 /* Sa size for algo group0 */
  552 #define ADF_C4XXX_DEFAULT_SA_SIZE 6
  553 
  554 /* Sa size for algo group1 */
  555 #define ADF_C4XXX_ALGO_GROUP1_SA_SIZE 2
  556 
  557 /* SA size is based on 32byte granularity
  558  * A value of zero indicates an SA size of 32 bytes
  559  */
  560 #define ADF_C4XXX_SA_SIZE_IN_BYTES(sa_size) (((sa_size) + 1) * 32)
  561 
  562 /* SA ENTRY CTRL register bit offsets */
  563 #define ADF_C4XXX_LU_KEY_LEN_BIT_OFFSET 5
  564 
  565 /* REG_SA_FUNC_LIMITS default value */
  566 #define ADF_C4XXX_FUNC_LIMIT(accel_dev, sa_size)                               \
  567         (ADF_C4XXX_SADB_SIZE_IN_WORDS(accel_dev) / ((sa_size) + 1))
  568 
  569 /* REG_SA_INLINE_ENABLE bit definition */
  570 #define ADF_C4XXX_INLINE_ENABLED BIT(0)
  571 
  572 /* REG_SA_INLINE_CAPABILITY bit definitions */
  573 #define ADF_C4XXX_INLINE_INGRESS_ENABLE BIT(0)
  574 #define ADF_C4XXX_INLINE_EGRESS_ENABLE BIT(1)
  575 #define ADF_C4XXX_INLINE_CAPABILITIES                                          \
  576         (ADF_C4XXX_INLINE_INGRESS_ENABLE | ADF_C4XXX_INLINE_EGRESS_ENABLE)
  577 
  578 /* Congestion management profile information */
  579 enum congest_mngt_profile_info {
  580         CIRQ_CFG_1 = 0,
  581         CIRQ_CFG_2,
  582         CIRQ_CFG_3,
  583         BEST_EFFORT_SINGLE_QUEUE,
  584         BEST_EFFORT_8_QUEUES,
  585 };
  586 
  587 /* IPsec Algo Group */
  588 enum ipsec_algo_group_info {
  589         IPSEC_DEFAUL_ALGO_GROUP = 0,
  590         IPSEC_ALGO_GROUP1,
  591         IPSEC_ALGO_GROUP_DELIMITER
  592 };
  593 
  594 int get_congestion_management_profile(struct adf_accel_dev *accel_dev,
  595                                       u8 *profile);
  596 int c4xxx_init_congestion_management(struct adf_accel_dev *accel_dev);
  597 int c4xxx_init_debugfs_inline_dir(struct adf_accel_dev *accel_dev);
  598 void c4xxx_exit_debugfs_inline_dir(struct adf_accel_dev *accel_dev);
  599 #endif /* ADF_C4XXX_INLINE_H_ */

Cache object: 5a7fd9cb602083926d47157ed7f5e9a9


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.