DPDK  21.05.0
rte_ecpri.h
Go to the documentation of this file.
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 
17 #include <stdint.h>
18 #include <rte_byteorder.h>
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 /*
25  * eCPRI Protocol Revision 1.0, 1.1, 1.2, 2.0: 0001b
26  * Other values are reserved for future
27  */
28 #define RTE_ECPRI_REV_UP_TO_20 1
29 
30 /*
31  * eCPRI message types in specifications
32  * IWF* types will only be supported from rev.2
33  * 12-63: Reserved for future revision
34  * 64-255: Vendor Specific
35  */
36 #define RTE_ECPRI_MSG_TYPE_IQ_DATA 0
37 #define RTE_ECPRI_MSG_TYPE_BIT_SEQ 1
38 #define RTE_ECPRI_MSG_TYPE_RTC_CTRL 2
39 #define RTE_ECPRI_MSG_TYPE_GEN_DATA 3
40 #define RTE_ECPRI_MSG_TYPE_RM_ACC 4
41 #define RTE_ECPRI_MSG_TYPE_DLY_MSR 5
42 #define RTE_ECPRI_MSG_TYPE_RMT_RST 6
43 #define RTE_ECPRI_MSG_TYPE_EVT_IND 7
44 #define RTE_ECPRI_MSG_TYPE_IWF_UP 8
45 #define RTE_ECPRI_MSG_TYPE_IWF_OPT 9
46 #define RTE_ECPRI_MSG_TYPE_IWF_MAP 10
47 #define RTE_ECPRI_MSG_TYPE_IWF_DCTRL 11
48 
49 /*
50  * Event Type of Message Type #7: Event Indication
51  * 0x00: Fault(s) Indication
52  * 0x01: Fault(s) Indication Acknowledge
53  * 0x02: Notification(s) Indication
54  * 0x03: Synchronization Request
55  * 0x04: Synchronization Acknowledge
56  * 0x05: Synchronization End Indication
57  * 0x06...0xFF: Reserved
58  */
59 #define RTE_ECPRI_EVT_IND_FAULT_IND 0x00
60 #define RTE_ECPRI_EVT_IND_FAULT_ACK 0x01
61 #define RTE_ECPRI_EVT_IND_NTFY_IND 0x02
62 #define RTE_ECPRI_EVT_IND_SYNC_REQ 0x03
63 #define RTE_ECPRI_EVT_IND_SYNC_ACK 0x04
64 #define RTE_ECPRI_EVT_IND_SYNC_END 0x05
65 
71  union {
73  struct {
74 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
75  uint32_t size:16;
76  uint32_t type:8;
77  uint32_t c:1;
78  uint32_t res:3;
79  uint32_t revision:4;
80 #elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN
81  uint32_t revision:4;
82  uint32_t res:3;
83  uint32_t c:1;
84  uint32_t type:8;
85  uint32_t size:16;
86 #endif
87  };
88  };
89 };
90 
97 };
98 
105 };
106 
113 };
114 
121 };
122 
128 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
129  uint32_t ele_id:16;
130  uint32_t rr:4;
131  uint32_t rw:4;
132  uint32_t rma_id:8;
133 #elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN
134  uint32_t rma_id:8;
135  uint32_t rw:4;
136  uint32_t rr:4;
137  uint32_t ele_id:16;
138 #endif
139  uint8_t addr[6];
141 };
142 
147  uint8_t msr_id;
148  uint8_t act_type;
149 };
150 
156  uint8_t rst_op;
157 };
158 
163  uint8_t evt_id;
164  uint8_t evt_type;
165  uint8_t seq;
166  uint8_t number;
167 };
168 
174  struct rte_ecpri_common_hdr common;
175  union {
176  struct rte_ecpri_msg_iq_data type0;
177  struct rte_ecpri_msg_bit_seq type1;
178  struct rte_ecpri_msg_rtc_ctrl type2;
179  struct rte_ecpri_msg_gen_data type3;
180  struct rte_ecpri_msg_rm_access type4;
181  struct rte_ecpri_msg_delay_measure type5;
182  struct rte_ecpri_msg_remote_reset type6;
183  struct rte_ecpri_msg_event_ind type7;
184  rte_be32_t dummy[3];
185  };
186 };
187 
188 #ifdef __cplusplus
189 }
190 #endif
191 
192 #endif /* _RTE_ECPRI_H_ */
rte_be32_t u32
Definition: rte_ecpri.h:72
uint32_t rte_be32_t
rte_be16_t seq_id
Definition: rte_ecpri.h:96
rte_be16_t pc_id
Definition: rte_ecpri.h:95
#define RTE_STD_C11
Definition: rte_common.h:42
uint16_t rte_be16_t