cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

otx2_struct.h (5945B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* Marvell RVU Ethernet driver
      3 *
      4 * Copyright (C) 2020 Marvell.
      5 *
      6 */
      7
      8#ifndef OTX2_STRUCT_H
      9#define OTX2_STRUCT_H
     10
     11/* NIX WQE/CQE size 128 byte or 512 byte */
     12enum nix_cqesz_e {
     13	NIX_XQESZ_W64 = 0x0,
     14	NIX_XQESZ_W16 = 0x1,
     15};
     16
     17enum nix_sqes_e {
     18	NIX_SQESZ_W16 = 0x0,
     19	NIX_SQESZ_W8 = 0x1,
     20};
     21
     22enum nix_send_ldtype {
     23	NIX_SEND_LDTYPE_LDD  = 0x0,
     24	NIX_SEND_LDTYPE_LDT  = 0x1,
     25	NIX_SEND_LDTYPE_LDWB = 0x2,
     26};
     27
     28/* CSUM offload */
     29enum nix_sendl3type {
     30	NIX_SENDL3TYPE_NONE = 0x0,
     31	NIX_SENDL3TYPE_IP4 = 0x2,
     32	NIX_SENDL3TYPE_IP4_CKSUM = 0x3,
     33	NIX_SENDL3TYPE_IP6 = 0x4,
     34};
     35
     36enum nix_sendl4type {
     37	NIX_SENDL4TYPE_NONE,
     38	NIX_SENDL4TYPE_TCP_CKSUM,
     39	NIX_SENDL4TYPE_SCTP_CKSUM,
     40	NIX_SENDL4TYPE_UDP_CKSUM,
     41};
     42
     43/* NIX wqe/cqe types */
     44enum nix_xqe_type {
     45	NIX_XQE_TYPE_INVALID   = 0x0,
     46	NIX_XQE_TYPE_RX        = 0x1,
     47	NIX_XQE_TYPE_RX_IPSECS = 0x2,
     48	NIX_XQE_TYPE_RX_IPSECH = 0x3,
     49	NIX_XQE_TYPE_RX_IPSECD = 0x4,
     50	NIX_XQE_TYPE_SEND      = 0x8,
     51};
     52
     53/* NIX CQE/SQE subdescriptor types */
     54enum nix_subdc {
     55	NIX_SUBDC_NOP  = 0x0,
     56	NIX_SUBDC_EXT  = 0x1,
     57	NIX_SUBDC_CRC  = 0x2,
     58	NIX_SUBDC_IMM  = 0x3,
     59	NIX_SUBDC_SG   = 0x4,
     60	NIX_SUBDC_MEM  = 0x5,
     61	NIX_SUBDC_JUMP = 0x6,
     62	NIX_SUBDC_WORK = 0x7,
     63	NIX_SUBDC_SOD  = 0xf,
     64};
     65
     66/* Algorithm for nix_sqe_mem_s header (value of the `alg` field) */
     67enum nix_sendmemalg {
     68	NIX_SENDMEMALG_E_SET       = 0x0,
     69	NIX_SENDMEMALG_E_SETTSTMP  = 0x1,
     70	NIX_SENDMEMALG_E_SETRSLT   = 0x2,
     71	NIX_SENDMEMALG_E_ADD       = 0x8,
     72	NIX_SENDMEMALG_E_SUB       = 0x9,
     73	NIX_SENDMEMALG_E_ADDLEN    = 0xa,
     74	NIX_SENDMEMALG_E_SUBLEN    = 0xb,
     75	NIX_SENDMEMALG_E_ADDMBUF   = 0xc,
     76	NIX_SENDMEMALG_E_SUBMBUF   = 0xd,
     77	NIX_SENDMEMALG_E_ENUM_LAST = 0xe,
     78};
     79
     80/* NIX CQE header structure */
     81struct nix_cqe_hdr_s {
     82	u64 flow_tag              : 32;
     83	u64 q                     : 20;
     84	u64 reserved_52_57        : 6;
     85	u64 node                  : 2;
     86	u64 cqe_type              : 4;
     87};
     88
     89/* NIX CQE RX parse structure */
     90struct nix_rx_parse_s {
     91	u64 chan         : 12;
     92	u64 desc_sizem1  : 5;
     93	u64 rsvd_17      : 1;
     94	u64 express      : 1;
     95	u64 wqwd         : 1;
     96	u64 errlev       : 4;
     97	u64 errcode      : 8;
     98	u64 latype       : 4;
     99	u64 lbtype       : 4;
    100	u64 lctype       : 4;
    101	u64 ldtype       : 4;
    102	u64 letype       : 4;
    103	u64 lftype       : 4;
    104	u64 lgtype       : 4;
    105	u64 lhtype       : 4;
    106	u64 pkt_lenm1    : 16; /* W1 */
    107	u64 l2m          : 1;
    108	u64 l2b          : 1;
    109	u64 l3m          : 1;
    110	u64 l3b          : 1;
    111	u64 vtag0_valid  : 1;
    112	u64 vtag0_gone   : 1;
    113	u64 vtag1_valid  : 1;
    114	u64 vtag1_gone   : 1;
    115	u64 pkind        : 6;
    116	u64 rsvd_95_94   : 2;
    117	u64 vtag0_tci    : 16;
    118	u64 vtag1_tci    : 16;
    119	u64 laflags      : 8; /* W2 */
    120	u64 lbflags      : 8;
    121	u64 lcflags      : 8;
    122	u64 ldflags      : 8;
    123	u64 leflags      : 8;
    124	u64 lfflags      : 8;
    125	u64 lgflags      : 8;
    126	u64 lhflags      : 8;
    127	u64 eoh_ptr      : 8; /* W3 */
    128	u64 wqe_aura     : 20;
    129	u64 pb_aura      : 20;
    130	u64 match_id     : 16;
    131	u64 laptr        : 8; /* W4 */
    132	u64 lbptr        : 8;
    133	u64 lcptr        : 8;
    134	u64 ldptr        : 8;
    135	u64 leptr        : 8;
    136	u64 lfptr        : 8;
    137	u64 lgptr        : 8;
    138	u64 lhptr        : 8;
    139	u64 vtag0_ptr    : 8; /* W5 */
    140	u64 vtag1_ptr    : 8;
    141	u64 flow_key_alg : 5;
    142	u64 rsvd_359_341 : 19;
    143	u64 color	 : 2;
    144	u64 rsvd_383_362 : 22;
    145	u64 rsvd_447_384;     /* W6 */
    146};
    147
    148/* NIX CQE RX scatter/gather subdescriptor structure */
    149struct nix_rx_sg_s {
    150	u64 seg_size   : 16; /* W0 */
    151	u64 seg2_size  : 16;
    152	u64 seg3_size  : 16;
    153	u64 segs       : 2;
    154	u64 rsvd_59_50 : 10;
    155	u64 subdc      : 4;
    156	u64 seg_addr;
    157	u64 seg2_addr;
    158	u64 seg3_addr;
    159};
    160
    161struct nix_send_comp_s {
    162	u64 status	: 8;
    163	u64 sqe_id	: 16;
    164	u64 rsvd_24_63	: 40;
    165};
    166
    167struct nix_cqe_rx_s {
    168	struct nix_cqe_hdr_s  hdr;
    169	struct nix_rx_parse_s parse;
    170	struct nix_rx_sg_s sg;
    171};
    172
    173struct nix_cqe_tx_s {
    174	struct nix_cqe_hdr_s  hdr;
    175	struct nix_send_comp_s comp;
    176};
    177
    178/* NIX SQE header structure */
    179struct nix_sqe_hdr_s {
    180	u64 total		: 18; /* W0 */
    181	u64 reserved_18		: 1;
    182	u64 df			: 1;
    183	u64 aura		: 20;
    184	u64 sizem1		: 3;
    185	u64 pnc			: 1;
    186	u64 sq			: 20;
    187	u64 ol3ptr		: 8; /* W1 */
    188	u64 ol4ptr		: 8;
    189	u64 il3ptr		: 8;
    190	u64 il4ptr		: 8;
    191	u64 ol3type		: 4;
    192	u64 ol4type		: 4;
    193	u64 il3type		: 4;
    194	u64 il4type		: 4;
    195	u64 sqe_id		: 16;
    196
    197};
    198
    199/* NIX send extended header subdescriptor structure */
    200struct nix_sqe_ext_s {
    201	u64 lso_mps       : 14; /* W0 */
    202	u64 lso           : 1;
    203	u64 tstmp         : 1;
    204	u64 lso_sb        : 8;
    205	u64 lso_format    : 5;
    206	u64 rsvd_31_29    : 3;
    207	u64 shp_chg       : 9;
    208	u64 shp_dis       : 1;
    209	u64 shp_ra        : 2;
    210	u64 markptr       : 8;
    211	u64 markform      : 7;
    212	u64 mark_en       : 1;
    213	u64 subdc         : 4;
    214	u64 vlan0_ins_ptr : 8; /* W1 */
    215	u64 vlan0_ins_tci : 16;
    216	u64 vlan1_ins_ptr : 8;
    217	u64 vlan1_ins_tci : 16;
    218	u64 vlan0_ins_ena : 1;
    219	u64 vlan1_ins_ena : 1;
    220	u64 init_color    : 2;
    221	u64 rsvd_127_116  : 12;
    222};
    223
    224struct nix_sqe_sg_s {
    225	u64 seg1_size	: 16;
    226	u64 seg2_size	: 16;
    227	u64 seg3_size	: 16;
    228	u64 segs	: 2;
    229	u64 rsvd_54_50	: 5;
    230	u64 i1		: 1;
    231	u64 i2		: 1;
    232	u64 i3		: 1;
    233	u64 ld_type	: 2;
    234	u64 subdc	: 4;
    235};
    236
    237/* NIX send memory subdescriptor structure */
    238struct nix_sqe_mem_s {
    239	u64 offset        : 16; /* W0 */
    240	u64 rsvd_51_16    : 36;
    241	u64 per_lso_seg   : 1;
    242	u64 wmem          : 1;
    243	u64 dsz           : 2;
    244	u64 alg           : 4;
    245	u64 subdc         : 4;
    246	u64 addr; /* W1 */
    247};
    248
    249enum nix_cqerrint_e {
    250	NIX_CQERRINT_DOOR_ERR = 0,
    251	NIX_CQERRINT_WR_FULL = 1,
    252	NIX_CQERRINT_CQE_FAULT = 2,
    253};
    254
    255#define NIX_CQERRINT_BITS (BIT_ULL(NIX_CQERRINT_DOOR_ERR) | \
    256			   BIT_ULL(NIX_CQERRINT_CQE_FAULT))
    257
    258enum nix_rqint_e {
    259	NIX_RQINT_DROP = 0,
    260	NIX_RQINT_RED = 1,
    261};
    262
    263#define NIX_RQINT_BITS (BIT_ULL(NIX_RQINT_DROP) | BIT_ULL(NIX_RQINT_RED))
    264
    265enum nix_sqint_e {
    266	NIX_SQINT_LMT_ERR = 0,
    267	NIX_SQINT_MNQ_ERR = 1,
    268	NIX_SQINT_SEND_ERR = 2,
    269	NIX_SQINT_SQB_ALLOC_FAIL = 3,
    270};
    271
    272#define NIX_SQINT_BITS (BIT_ULL(NIX_SQINT_LMT_ERR) | \
    273			BIT_ULL(NIX_SQINT_MNQ_ERR) | \
    274			BIT_ULL(NIX_SQINT_SEND_ERR) | \
    275			BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL))
    276
    277#endif /* OTX2_STRUCT_H */