DPDK  20.08.0
rte_ecpri.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2020 Mellanox Technologies, Ltd
3  */
4 
5 #ifndef _RTE_ECPRI_H_
6 #define _RTE_ECPRI_H_
7 
8 #include <stdint.h>
9 #include <rte_byteorder.h>
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 /*
16  * eCPRI Protocol Revision 1.0, 1.1, 1.2, 2.0: 0001b
17  * Other values are reserved for future
18  */
19 #define RTE_ECPRI_REV_UP_TO_20 1
20 
21 /*
22  * eCPRI message types in specifications
23  * IWF* types will only be supported from rev.2
24  * 12-63: Reserved for future revision
25  * 64-255: Vendor Specific
26  */
27 #define RTE_ECPRI_MSG_TYPE_IQ_DATA 0
28 #define RTE_ECPRI_MSG_TYPE_BIT_SEQ 1
29 #define RTE_ECPRI_MSG_TYPE_RTC_CTRL 2
30 #define RTE_ECPRI_MSG_TYPE_GEN_DATA 3
31 #define RTE_ECPRI_MSG_TYPE_RM_ACC 4
32 #define RTE_ECPRI_MSG_TYPE_DLY_MSR 5
33 #define RTE_ECPRI_MSG_TYPE_RMT_RST 6
34 #define RTE_ECPRI_MSG_TYPE_EVT_IND 7
35 #define RTE_ECPRI_MSG_TYPE_IWF_UP 8
36 #define RTE_ECPRI_MSG_TYPE_IWF_OPT 9
37 #define RTE_ECPRI_MSG_TYPE_IWF_MAP 10
38 #define RTE_ECPRI_MSG_TYPE_IWF_DCTRL 11
39 
40 /*
41  * Event Type of Message Type #7: Event Indication
42  * 0x00: Fault(s) Indication
43  * 0x01: Fault(s) Indication Acknowledge
44  * 0x02: Notification(s) Indication
45  * 0x03: Synchronization Request
46  * 0x04: Synchronization Acknowledge
47  * 0x05: Synchronization End Indication
48  * 0x06...0xFF: Reserved
49  */
50 #define RTE_ECPRI_EVT_IND_FAULT_IND 0x00
51 #define RTE_ECPRI_EVT_IND_FAULT_ACK 0x01
52 #define RTE_ECPRI_EVT_IND_NTFY_IND 0x02
53 #define RTE_ECPRI_EVT_IND_SYNC_REQ 0x03
54 #define RTE_ECPRI_EVT_IND_SYNC_ACK 0x04
55 #define RTE_ECPRI_EVT_IND_SYNC_END 0x05
56 
62  union {
64  struct {
65 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
66  uint32_t size:16;
67  uint32_t type:8;
68  uint32_t c:1;
69  uint32_t res:3;
70  uint32_t revision:4;
71 #elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN
72  uint32_t revision:4;
73  uint32_t res:3;
74  uint32_t c:1;
75  uint32_t type:8;
76  uint32_t size:16;
77 #endif
78  };
79  };
80 };
81 
88 };
89 
96 };
97 
104 };
105 
112 };
113 
119 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
120  uint32_t ele_id:16;
121  uint32_t rr:4;
122  uint32_t rw:4;
123  uint32_t rma_id:8;
124 #elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN
125  uint32_t rma_id:8;
126  uint32_t rw:4;
127  uint32_t rr:4;
128  uint32_t ele_id:16;
129 #endif
130  uint8_t addr[6];
132 };
133 
138  uint8_t msr_id;
139  uint8_t act_type;
140 };
141 
147  uint8_t rst_op;
148 };
149 
154  uint8_t evt_id;
155  uint8_t evt_type;
156  uint8_t seq;
157  uint8_t number;
158 };
159 
165  struct rte_ecpri_common_hdr common;
166  union {
167  struct rte_ecpri_msg_iq_data type0;
168  struct rte_ecpri_msg_bit_seq type1;
169  struct rte_ecpri_msg_rtc_ctrl type2;
170  struct rte_ecpri_msg_bit_seq type3;
171  struct rte_ecpri_msg_rm_access type4;
172  struct rte_ecpri_msg_delay_measure type5;
173  struct rte_ecpri_msg_remote_reset type6;
174  struct rte_ecpri_msg_event_ind type7;
175  rte_be32_t dummy[3];
176  };
177 };
178 
179 #ifdef __cplusplus
180 }
181 #endif
182 
183 #endif /* _RTE_ECPRI_H_ */
rte_be32_t u32
Definition: rte_ecpri.h:63
uint32_t rte_be32_t
rte_be16_t seq_id
Definition: rte_ecpri.h:95
rte_be16_t seq_id
Definition: rte_ecpri.h:87
rte_be16_t pc_id
Definition: rte_ecpri.h:94
rte_be16_t pc_id
Definition: rte_ecpri.h:86
#define RTE_STD_C11
Definition: rte_common.h:40
uint16_t rte_be16_t