brintos

brintos / linux-shallow public Read only

0
0
Text · 3.6 KiB · 83f20c3 Raw
176 lines · c
1/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */2/*3 * Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All rights reserved.4 */5 6#ifndef _EFA_ADMIN_H_7#define _EFA_ADMIN_H_8 9enum efa_admin_aq_completion_status {10	EFA_ADMIN_SUCCESS                           = 0,11	EFA_ADMIN_RESOURCE_ALLOCATION_FAILURE       = 1,12	EFA_ADMIN_BAD_OPCODE                        = 2,13	EFA_ADMIN_UNSUPPORTED_OPCODE                = 3,14	EFA_ADMIN_MALFORMED_REQUEST                 = 4,15	/* Additional status is provided in ACQ entry extended_status */16	EFA_ADMIN_ILLEGAL_PARAMETER                 = 5,17	EFA_ADMIN_UNKNOWN_ERROR                     = 6,18	EFA_ADMIN_RESOURCE_BUSY                     = 7,19};20 21struct efa_admin_aq_common_desc {22	/*23	 * 11:0 : command_id24	 * 15:12 : reserved1225	 */26	u16 command_id;27 28	/* as appears in efa_admin_aq_opcode */29	u8 opcode;30 31	/*32	 * 0 : phase33	 * 1 : ctrl_data - control buffer address valid34	 * 2 : ctrl_data_indirect - control buffer address35	 *    points to list of pages with addresses of control36	 *    buffers37	 * 7:3 : reserved338	 */39	u8 flags;40};41 42/*43 * used in efa_admin_aq_entry. Can point directly to control data, or to a44 * page list chunk. Used also at the end of indirect mode page list chunks,45 * for chaining.46 */47struct efa_admin_ctrl_buff_info {48	u32 length;49 50	struct efa_common_mem_addr address;51};52 53struct efa_admin_aq_entry {54	struct efa_admin_aq_common_desc aq_common_descriptor;55 56	union {57		u32 inline_data_w1[3];58 59		struct efa_admin_ctrl_buff_info control_buffer;60	} u;61 62	u32 inline_data_w4[12];63};64 65struct efa_admin_acq_common_desc {66	/*67	 * command identifier to associate it with the aq descriptor68	 * 11:0 : command_id69	 * 15:12 : reserved1270	 */71	u16 command;72 73	u8 status;74 75	/*76	 * 0 : phase77	 * 7:1 : reserved178	 */79	u8 flags;80 81	u16 extended_status;82 83	/*84	 * indicates to the driver which AQ entry has been consumed by the85	 * device and could be reused86	 */87	u16 sq_head_indx;88};89 90struct efa_admin_acq_entry {91	struct efa_admin_acq_common_desc acq_common_descriptor;92 93	u32 response_specific_data[14];94};95 96struct efa_admin_aenq_common_desc {97	u16 group;98 99	u16 syndrom;100 101	/*102	 * 0 : phase103	 * 7:1 : reserved - MBZ104	 */105	u8 flags;106 107	u8 reserved1[3];108 109	u32 timestamp_low;110 111	u32 timestamp_high;112};113 114struct efa_admin_aenq_entry {115	struct efa_admin_aenq_common_desc aenq_common_desc;116 117	/* command specific inline data */118	u32 inline_data_w4[12];119};120 121enum efa_admin_eqe_event_type {122	EFA_ADMIN_EQE_EVENT_TYPE_COMPLETION         = 0,123};124 125/* Completion event */126struct efa_admin_comp_event {127	/* CQ number */128	u16 cqn;129 130	/* MBZ */131	u16 reserved;132 133	/* MBZ */134	u32 reserved2;135};136 137/* Event Queue Element */138struct efa_admin_eqe {139	/*140	 * 0 : phase141	 * 8:1 : event_type - Event type142	 * 31:9 : reserved - MBZ143	 */144	u32 common;145 146	/* MBZ */147	u32 reserved;148 149	union {150		/* Event data */151		u32 event_data[2];152 153		/* Completion Event */154		struct efa_admin_comp_event comp_event;155	} u;156};157 158/* aq_common_desc */159#define EFA_ADMIN_AQ_COMMON_DESC_COMMAND_ID_MASK            GENMASK(11, 0)160#define EFA_ADMIN_AQ_COMMON_DESC_PHASE_MASK                 BIT(0)161#define EFA_ADMIN_AQ_COMMON_DESC_CTRL_DATA_MASK             BIT(1)162#define EFA_ADMIN_AQ_COMMON_DESC_CTRL_DATA_INDIRECT_MASK    BIT(2)163 164/* acq_common_desc */165#define EFA_ADMIN_ACQ_COMMON_DESC_COMMAND_ID_MASK           GENMASK(11, 0)166#define EFA_ADMIN_ACQ_COMMON_DESC_PHASE_MASK                BIT(0)167 168/* aenq_common_desc */169#define EFA_ADMIN_AENQ_COMMON_DESC_PHASE_MASK               BIT(0)170 171/* eqe */172#define EFA_ADMIN_EQE_PHASE_MASK                            BIT(0)173#define EFA_ADMIN_EQE_EVENT_TYPE_MASK                       GENMASK(8, 1)174 175#endif /* _EFA_ADMIN_H_ */176