dpdk/drivers/net/octeontx/base/octeontx_pki_var.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: BSD-3-Clause
   2 * Copyright(c) 2017 Cavium, Inc
   3 */
   4
   5#ifndef __OCTEONTX_PKI_VAR_H__
   6#define __OCTEONTX_PKI_VAR_H__
   7
   8#include <rte_byteorder.h>
   9
  10#define OCTTX_PACKET_WQE_SKIP                   128
  11#define OCTTX_PACKET_FIRST_SKIP_MAXREGVAL       496
  12#define OCTTX_PACKET_FIRST_SKIP_MAXLEN          512
  13#define OCTTX_PACKET_FIRST_SKIP_ADJUST(x)                               \
  14                (RTE_MIN(x, OCTTX_PACKET_FIRST_SKIP_MAXREGVAL))
  15#define OCTTX_PACKET_FIRST_SKIP_SUM(p)                                  \
  16                                (OCTTX_PACKET_WQE_SKIP                  \
  17                                + rte_pktmbuf_priv_size(p)              \
  18                                + RTE_PKTMBUF_HEADROOM)
  19#define OCTTX_PACKET_FIRST_SKIP(p)                                      \
  20        OCTTX_PACKET_FIRST_SKIP_ADJUST(OCTTX_PACKET_FIRST_SKIP_SUM(p))
  21#define OCTTX_PACKET_LATER_SKIP         128
  22
  23/* WQE descriptor */
  24typedef union octtx_wqe_s {
  25        uint64_t        w[6];
  26
  27        struct {
  28#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
  29                struct {
  30                        uint64_t        pknd : 6;
  31                        uint64_t        rsvd0 : 10;
  32                        uint64_t        style : 8;
  33                        uint64_t        bufs : 8;
  34                        uint64_t        chan : 12;
  35                        uint64_t        apad : 3;
  36                        uint64_t        rsvd1 : 1;
  37                        uint64_t        aura : 12;
  38                        uint64_t        rsvd2 : 4;
  39                } w0;
  40
  41                struct {
  42                        uint64_t        tag :   32;
  43                        uint64_t        tt :    2;
  44                        uint64_t        grp :   10;
  45                        uint64_t        rsvd0 : 2;
  46                        uint64_t        rsvd1 : 2;
  47                        uint64_t        len :   16;
  48                } w1;
  49
  50                struct {
  51                        uint64_t        op_code : 8;
  52                        uint64_t        err_lev : 3;
  53                        uint64_t        raw     : 1;
  54                        uint64_t        l2m     : 1;
  55                        uint64_t        l2b     : 1;
  56                        uint64_t        l3m     : 1;
  57                        uint64_t        l3b     : 1;
  58                        uint64_t        l3fr    : 1;
  59                        uint64_t        pf1     : 1;
  60                        uint64_t        pf2     : 1;
  61                        uint64_t        pf3     : 1;
  62                        uint64_t        pf4     : 1;
  63                        uint64_t        sh      : 1;
  64                        uint64_t        vs      : 1;
  65                        uint64_t        vv      : 1;
  66                        uint64_t        rsvd0   : 8;
  67                        uint64_t        lae     : 1;
  68                        uint64_t        lbty    : 5;
  69                        uint64_t        lcty    : 5;
  70                        uint64_t        ldty    : 5;
  71                        uint64_t        lety    : 5;
  72                        uint64_t        lfty    : 5;
  73                        uint64_t        lgty    : 5;
  74                        uint64_t        sw      : 1;
  75                } w2;
  76
  77                struct {
  78                        uint64_t        addr;   /* Byte addr of start-of-pkt */
  79                } w3;
  80
  81                struct {
  82                        uint64_t        laptr : 8;
  83                        uint64_t        lbptr : 8;
  84                        uint64_t        lcptr : 8;
  85                        uint64_t        ldprt : 8;
  86                        uint64_t        leptr : 8;
  87                        uint64_t        lfptr : 8;
  88                        uint64_t        lgptr : 8;
  89                        uint64_t        vlptr : 8;
  90                } w4;
  91
  92                struct {
  93                        uint64_t        rsvd0 : 47;
  94                        uint64_t        dwd : 1;
  95                        uint64_t        size : 16;
  96                } w5;
  97#else
  98                struct {
  99                        uint64_t        rsvd2 : 4;
 100                        uint64_t        aura : 12;
 101                        uint64_t        rsvd1 : 1;
 102                        uint64_t        apad : 3;
 103                        uint64_t        chan : 12;
 104                        uint64_t        bufs : 8;
 105                        uint64_t        style : 8;
 106                        uint64_t        rsvd0 : 10;
 107                        uint64_t        pknd : 6;
 108                } w0;
 109
 110                struct {
 111                        uint64_t        len :   16;
 112                        uint64_t        rsvd1 : 2;
 113                        uint64_t        rsvd0 : 2;
 114                        uint64_t        grp :   10;
 115                        uint64_t        tt :    2;
 116                        uint64_t        tag :   32;
 117                } w1;
 118
 119                struct {
 120                        uint64_t        sw      : 1;
 121                        uint64_t        lgty    : 5;
 122                        uint64_t        lfty    : 5;
 123                        uint64_t        lety    : 5;
 124                        uint64_t        ldty    : 5;
 125                        uint64_t        lcty    : 5;
 126                        uint64_t        lbty    : 5;
 127                        uint64_t        lae     : 1;
 128                        uint64_t        rsvd0   : 8;
 129                        uint64_t        vv      : 1;
 130                        uint64_t        vs      : 1;
 131                        uint64_t        sh      : 1;
 132                        uint64_t        pf4     : 1;
 133                        uint64_t        pf3     : 1;
 134                        uint64_t        pf2     : 1;
 135                        uint64_t        pf1     : 1;
 136                        uint64_t        l3fr    : 1;
 137                        uint64_t        l3b     : 1;
 138                        uint64_t        l3m     : 1;
 139                        uint64_t        l2b     : 1;
 140                        uint64_t        l2m     : 1;
 141                        uint64_t        raw     : 1;
 142        uint64_t        err_lev : 3;
 143                        uint64_t        op_code : 8;
 144                } w2;
 145
 146                struct {
 147                        uint64_t        addr;   /* Byte addr of start-of-pkt */
 148                } w3;
 149
 150                struct {
 151                        uint64_t        vlptr : 8;
 152                        uint64_t        lgptr : 8;
 153                        uint64_t        lfptr : 8;
 154                        uint64_t        leptr : 8;
 155                        uint64_t        ldprt : 8;
 156                        uint64_t        lcptr : 8;
 157                        uint64_t        lbptr : 8;
 158                        uint64_t        laptr : 8;
 159                } w4;
 160#endif
 161        } s;
 162
 163} __rte_packed octtx_wqe_t;
 164
 165enum occtx_pki_ltype_e {
 166        OCCTX_PKI_LTYPE_NONE            = 0,
 167        OCCTX_PKI_LTYPE_ENET            = 1,
 168        OCCTX_PKI_LTYPE_VLAN            = 2,
 169        OCCTX_PKI_LTYPE_SNAP_PAYLD      = 5,
 170        OCCTX_PKI_LTYPE_ARP             = 6,
 171        OCCTX_PKI_LTYPE_RARP            = 7,
 172        OCCTX_PKI_LTYPE_IP4             = 8,
 173        OCCTX_PKI_LTYPE_IP4_OPT         = 9,
 174        OCCTX_PKI_LTYPE_IP6             = 0xa,
 175        OCCTX_PKI_LTYPE_IP6_OPT         = 0xb,
 176        OCCTX_PKI_LTYPE_IPSEC_ESP       = 0xc,
 177        OCCTX_PKI_LTYPE_IPFRAG          = 0xd,
 178        OCCTX_PKI_LTYPE_IPCOMP          = 0xe,
 179        OCCTX_PKI_LTYPE_TCP             = 0x10,
 180        OCCTX_PKI_LTYPE_UDP             = 0x11,
 181        OCCTX_PKI_LTYPE_SCTP            = 0x12,
 182        OCCTX_PKI_LTYPE_UDP_VXLAN       = 0x13,
 183        OCCTX_PKI_LTYPE_GRE             = 0x14,
 184        OCCTX_PKI_LTYPE_NVGRE           = 0x15,
 185        OCCTX_PKI_LTYPE_GTP             = 0x16,
 186        OCCTX_PKI_LTYPE_UDP_GENEVE      = 0x17,
 187        OCCTX_PKI_LTYPE_SW28            = 0x1c,
 188        OCCTX_PKI_LTYPE_SW29            = 0x1d,
 189        OCCTX_PKI_LTYPE_SW30            = 0x1e,
 190        OCCTX_PKI_LTYPE_SW31            = 0x1f,
 191        OCCTX_PKI_LTYPE_LAST
 192};
 193
 194enum lc_type_e {
 195        LC_NONE         = OCCTX_PKI_LTYPE_NONE,
 196        LC_IPV4         = OCCTX_PKI_LTYPE_IP4,
 197        LC_IPV4_OPT     = OCCTX_PKI_LTYPE_IP4_OPT,
 198        LC_IPV6         = OCCTX_PKI_LTYPE_IP6,
 199        LC_IPV6_OPT     = OCCTX_PKI_LTYPE_IP6_OPT,
 200};
 201
 202enum le_type_e {
 203        LE_NONE         = OCCTX_PKI_LTYPE_NONE,
 204};
 205
 206enum lf_type_e {
 207        LF_NONE         = OCCTX_PKI_LTYPE_NONE,
 208        LF_IPSEC_ESP    = OCCTX_PKI_LTYPE_IPSEC_ESP,
 209        LF_IPFRAG       = OCCTX_PKI_LTYPE_IPFRAG,
 210        LF_IPCOMP       = OCCTX_PKI_LTYPE_IPCOMP,
 211        LF_TCP          = OCCTX_PKI_LTYPE_TCP,
 212        LF_UDP          = OCCTX_PKI_LTYPE_UDP,
 213        LF_GRE          = OCCTX_PKI_LTYPE_GRE,
 214        LF_UDP_GENEVE   = OCCTX_PKI_LTYPE_UDP_GENEVE,
 215        LF_UDP_VXLAN    = OCCTX_PKI_LTYPE_UDP_VXLAN,
 216        LF_NVGRE        = OCCTX_PKI_LTYPE_NVGRE,
 217};
 218
 219/* Word 0 of HW segment buflink structure */
 220typedef union octtx_pki_buflink_w0_u {
 221        uint64_t v;
 222        struct {
 223                uint64_t        size:16;
 224                uint64_t        rsvd1:15;
 225                uint64_t        invfree:1;
 226                /** Aura number of the next segment */
 227                uint64_t        aura:16;
 228                uint64_t        sw:9;
 229                uint64_t        later_invfree:1;
 230                uint64_t        rsvd2:5;
 231                /** 1 if aura number is set */
 232                uint64_t        has_aura:1;
 233        } s;
 234} octtx_pki_buflink_w0_t;
 235
 236/* Word 1 of HW segment buflink structure */
 237typedef union octtx_pki_buflink_w1_u {
 238        uint64_t v;
 239        struct {
 240                uint64_t        addr;
 241        } s;
 242} octtx_pki_buflink_w1_t;
 243
 244/* HW structure linking packet segments into singly linked list */
 245typedef struct octtx_pki_buflink_s {
 246        octtx_pki_buflink_w0_t    w0; /* Word 0 of the buflink */
 247        octtx_pki_buflink_w1_t    w1; /* Word 1 of the buflink */
 248} octtx_pki_buflink_t;
 249
 250#endif /* __OCTEONTX_PKI_VAR_H__ */
 251