brintos

brintos / linux-shallow public Read only

0
0
Text · 7.5 KiB · 4e5899d Raw
342 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/* Marvell RVU Ethernet driver3 *4 * Copyright (C) 2020 Marvell.5 *6 */7 8#ifndef OTX2_STRUCT_H9#define OTX2_STRUCT_H10 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 start_offset  : 8;240	u64 rsvd_11_8	  : 4;241	u64 rsvd_12	  : 1;242	u64 udp_csum_crt  : 1;243	u64 update64      : 1;244	u64 rsvd_15_16    : 1;245	u64 base_ns       : 32;246	u64 step_type     : 1;247	u64 rsvd_51_49    : 3;248	u64 per_lso_seg   : 1;249	u64 wmem          : 1;250	u64 dsz           : 2;251	u64 alg           : 4;252	u64 subdc         : 4;253	u64 addr; /* W1 */254};255 256enum nix_cqerrint_e {257	NIX_CQERRINT_DOOR_ERR = 0,258	NIX_CQERRINT_WR_FULL = 1,259	NIX_CQERRINT_CQE_FAULT = 2,260};261 262#define NIX_CQERRINT_BITS (BIT_ULL(NIX_CQERRINT_DOOR_ERR) | \263			   BIT_ULL(NIX_CQERRINT_CQE_FAULT))264 265enum nix_rqint_e {266	NIX_RQINT_DROP = 0,267	NIX_RQINT_RED = 1,268};269 270#define NIX_RQINT_BITS (BIT_ULL(NIX_RQINT_DROP) | BIT_ULL(NIX_RQINT_RED))271 272enum nix_sqint_e {273	NIX_SQINT_LMT_ERR = 0,274	NIX_SQINT_MNQ_ERR = 1,275	NIX_SQINT_SEND_ERR = 2,276	NIX_SQINT_SQB_ALLOC_FAIL = 3,277};278 279#define NIX_SQINT_BITS (BIT_ULL(NIX_SQINT_LMT_ERR) | \280			BIT_ULL(NIX_SQINT_MNQ_ERR) | \281			BIT_ULL(NIX_SQINT_SEND_ERR) | \282			BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL))283 284enum nix_sqoperr_e {285	NIX_SQOPERR_OOR = 0,286	NIX_SQOPERR_CTX_FAULT = 1,287	NIX_SQOPERR_CTX_POISON = 2,288	NIX_SQOPERR_DISABLED = 3,289	NIX_SQOPERR_SIZE_ERR = 4,290	NIX_SQOPERR_OFLOW = 5,291	NIX_SQOPERR_SQB_NULL = 6,292	NIX_SQOPERR_SQB_FAULT = 7,293	NIX_SQOPERR_SQE_SZ_ZERO = 8,294	NIX_SQOPERR_MAX,295};296 297enum nix_mnqerr_e {298	NIX_MNQERR_SQ_CTX_FAULT = 0,299	NIX_MNQERR_SQ_CTX_POISON = 1,300	NIX_MNQERR_SQB_FAULT = 2,301	NIX_MNQERR_SQB_POISON = 3,302	NIX_MNQERR_TOTAL_ERR = 4,303	NIX_MNQERR_LSO_ERR = 5,304	NIX_MNQERR_CQ_QUERY_ERR = 6,305	NIX_MNQERR_MAX_SQE_SIZE_ERR = 7,306	NIX_MNQERR_MAXLEN_ERR = 8,307	NIX_MNQERR_SQE_SIZEM1_ZERO = 9,308	NIX_MNQERR_MAX,309};310 311enum nix_snd_status_e {312	NIX_SND_STATUS_GOOD = 0x0,313	NIX_SND_STATUS_SQ_CTX_FAULT = 0x1,314	NIX_SND_STATUS_SQ_CTX_POISON = 0x2,315	NIX_SND_STATUS_SQB_FAULT = 0x3,316	NIX_SND_STATUS_SQB_POISON = 0x4,317	NIX_SND_STATUS_HDR_ERR = 0x5,318	NIX_SND_STATUS_EXT_ERR = 0x6,319	NIX_SND_STATUS_JUMP_FAULT = 0x7,320	NIX_SND_STATUS_JUMP_POISON = 0x8,321	NIX_SND_STATUS_CRC_ERR = 0x10,322	NIX_SND_STATUS_IMM_ERR = 0x11,323	NIX_SND_STATUS_SG_ERR = 0x12,324	NIX_SND_STATUS_MEM_ERR = 0x13,325	NIX_SND_STATUS_INVALID_SUBDC = 0x14,326	NIX_SND_STATUS_SUBDC_ORDER_ERR = 0x15,327	NIX_SND_STATUS_DATA_FAULT = 0x16,328	NIX_SND_STATUS_DATA_POISON = 0x17,329	NIX_SND_STATUS_NPC_DROP_ACTION = 0x20,330	NIX_SND_STATUS_LOCK_VIOL = 0x21,331	NIX_SND_STATUS_NPC_UCAST_CHAN_ERR = 0x22,332	NIX_SND_STATUS_NPC_MCAST_CHAN_ERR = 0x23,333	NIX_SND_STATUS_NPC_MCAST_ABORT = 0x24,334	NIX_SND_STATUS_NPC_VTAG_PTR_ERR = 0x25,335	NIX_SND_STATUS_NPC_VTAG_SIZE_ERR = 0x26,336	NIX_SND_STATUS_SEND_MEM_FAULT = 0x27,337	NIX_SND_STATUS_SEND_STATS_ERR = 0x28,338	NIX_SND_STATUS_MAX,339};340 341#endif /* OTX2_STRUCT_H */342