Zephyr API Documentation  3.6.0
A Scalable Open Source RTOS
3.6.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ethernet_mgmt.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Intel Corporation.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12#ifndef ZEPHYR_INCLUDE_NET_ETHERNET_MGMT_H_
13#define ZEPHYR_INCLUDE_NET_ETHERNET_MGMT_H_
14
15#include <zephyr/net/ethernet.h>
16#include <zephyr/net/net_mgmt.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
31#define _NET_ETHERNET_LAYER NET_MGMT_LAYER_L2
32#define _NET_ETHERNET_CODE 0x208
33#define _NET_ETHERNET_BASE (NET_MGMT_IFACE_BIT | \
34 NET_MGMT_LAYER(_NET_ETHERNET_LAYER) | \
35 NET_MGMT_LAYER_CODE(_NET_ETHERNET_CODE))
36#define _NET_ETHERNET_EVENT (_NET_ETHERNET_BASE | NET_MGMT_EVENT_BIT)
37
38enum net_request_ethernet_cmd {
39 NET_REQUEST_ETHERNET_CMD_SET_AUTO_NEGOTIATION = 1,
40 NET_REQUEST_ETHERNET_CMD_SET_LINK,
41 NET_REQUEST_ETHERNET_CMD_SET_DUPLEX,
42 NET_REQUEST_ETHERNET_CMD_SET_MAC_ADDRESS,
43 NET_REQUEST_ETHERNET_CMD_SET_QAV_PARAM,
44 NET_REQUEST_ETHERNET_CMD_SET_QBV_PARAM,
45 NET_REQUEST_ETHERNET_CMD_SET_QBU_PARAM,
46 NET_REQUEST_ETHERNET_CMD_SET_TXTIME_PARAM,
47 NET_REQUEST_ETHERNET_CMD_SET_PROMISC_MODE,
48 NET_REQUEST_ETHERNET_CMD_GET_PRIORITY_QUEUES_NUM,
49 NET_REQUEST_ETHERNET_CMD_GET_QAV_PARAM,
50 NET_REQUEST_ETHERNET_CMD_GET_PORTS_NUM,
51 NET_REQUEST_ETHERNET_CMD_GET_QBV_PARAM,
52 NET_REQUEST_ETHERNET_CMD_GET_QBU_PARAM,
53 NET_REQUEST_ETHERNET_CMD_GET_TXTIME_PARAM,
54 NET_REQUEST_ETHERNET_CMD_SET_T1S_PARAM,
55 NET_REQUEST_ETHERNET_CMD_SET_TXINJECTION_MODE,
56 NET_REQUEST_ETHERNET_CMD_GET_TXINJECTION_MODE,
57};
58
59#define NET_REQUEST_ETHERNET_SET_AUTO_NEGOTIATION \
60 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_AUTO_NEGOTIATION)
61
62NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_AUTO_NEGOTIATION);
63
64#define NET_REQUEST_ETHERNET_SET_LINK \
65 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_LINK)
66
67NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_LINK);
68
69#define NET_REQUEST_ETHERNET_SET_DUPLEX \
70 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_DUPLEX)
71
72NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_DUPLEX);
73
74#define NET_REQUEST_ETHERNET_SET_MAC_ADDRESS \
75 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_MAC_ADDRESS)
76
77NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_MAC_ADDRESS);
78
79#define NET_REQUEST_ETHERNET_SET_QAV_PARAM \
80 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QAV_PARAM)
81
82NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QAV_PARAM);
83
84#define NET_REQUEST_ETHERNET_GET_PORTS_NUM \
85 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_PORTS_NUM)
86
87NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_PORTS_NUM);
88
89#define NET_REQUEST_ETHERNET_SET_QBV_PARAM \
90 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QBV_PARAM)
91
92NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QBV_PARAM);
93
94#define NET_REQUEST_ETHERNET_SET_QBU_PARAM \
95 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QBU_PARAM)
96
97NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QBU_PARAM);
98
99#define NET_REQUEST_ETHERNET_SET_TXTIME_PARAM \
100 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_TXTIME_PARAM)
101
102NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_TXTIME_PARAM);
103
104#define NET_REQUEST_ETHERNET_SET_PROMISC_MODE \
105 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_PROMISC_MODE)
106
107NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_PROMISC_MODE);
108
109#define NET_REQUEST_ETHERNET_GET_PRIORITY_QUEUES_NUM \
110 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_PRIORITY_QUEUES_NUM)
111
112NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_PRIORITY_QUEUES_NUM);
113
114#define NET_REQUEST_ETHERNET_GET_QAV_PARAM \
115 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QAV_PARAM)
116
117NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QAV_PARAM);
118
119#define NET_REQUEST_ETHERNET_GET_QBV_PARAM \
120 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QBV_PARAM)
121
122NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QBV_PARAM);
123
124#define NET_REQUEST_ETHERNET_GET_QBU_PARAM \
125 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QBU_PARAM)
126
127NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QBU_PARAM);
128
129#define NET_REQUEST_ETHERNET_GET_TXTIME_PARAM \
130 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_TXTIME_PARAM)
131
132NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_TXTIME_PARAM);
133
134#define NET_REQUEST_ETHERNET_SET_T1S_PARAM \
135 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_T1S_PARAM)
136
137NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_T1S_PARAM);
138
139#define NET_REQUEST_ETHERNET_SET_TXINJECTION_MODE \
140 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_TXINJECTION_MODE)
141
142NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_TXINJECTION_MODE);
143
144#define NET_REQUEST_ETHERNET_GET_TXINJECTION_MODE \
145 (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_TXINJECTION_MODE)
146
147NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_TXINJECTION_MODE);
148
149struct net_eth_addr;
150struct ethernet_qav_param;
151struct ethernet_qbv_param;
152struct ethernet_qbu_param;
154
155struct ethernet_req_params {
156 union {
157 bool auto_negotiation;
158 bool full_duplex;
159 bool promisc_mode;
160 bool txinjection_mode;
161
162 struct {
163 bool link_10bt;
164 bool link_100bt;
165 bool link_1000bt;
166 } l;
167
168 struct net_eth_addr mac_address;
169
170 struct ethernet_qav_param qav_param;
171 struct ethernet_qbv_param qbv_param;
172 struct ethernet_qbu_param qbu_param;
173 struct ethernet_txtime_param txtime_param;
174 struct ethernet_t1s_param t1s_param;
175
176 int priority_queues_num;
177 int ports_num;
178 };
179};
180
181enum net_event_ethernet_cmd {
182 NET_EVENT_ETHERNET_CMD_CARRIER_ON = 1,
183 NET_EVENT_ETHERNET_CMD_CARRIER_OFF,
184 NET_EVENT_ETHERNET_CMD_VLAN_TAG_ENABLED,
185 NET_EVENT_ETHERNET_CMD_VLAN_TAG_DISABLED,
186};
187
188#define NET_EVENT_ETHERNET_CARRIER_ON \
189 (_NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_CARRIER_ON)
190
191#define NET_EVENT_ETHERNET_CARRIER_OFF \
192 (_NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_CARRIER_OFF)
193
194#define NET_EVENT_ETHERNET_VLAN_TAG_ENABLED \
195 (_NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_VLAN_TAG_ENABLED)
196
197#define NET_EVENT_ETHERNET_VLAN_TAG_DISABLED \
198 (_NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_VLAN_TAG_DISABLED)
199
200struct net_if;
201
209#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
211#else
212static inline void ethernet_mgmt_raise_carrier_on_event(struct net_if *iface)
213{
214 ARG_UNUSED(iface);
215}
216#endif
217
223#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
225#else
226static inline void ethernet_mgmt_raise_carrier_off_event(struct net_if *iface)
227{
228 ARG_UNUSED(iface);
229}
230#endif
231
238#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
240#else
241static inline void ethernet_mgmt_raise_vlan_enabled_event(struct net_if *iface,
242 uint16_t tag)
243{
244 ARG_UNUSED(iface);
245 ARG_UNUSED(tag);
246}
247#endif
248
255#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
257 uint16_t tag);
258#else
259static inline void ethernet_mgmt_raise_vlan_disabled_event(struct net_if *iface,
260 uint16_t tag)
261{
262 ARG_UNUSED(iface);
263 ARG_UNUSED(tag);
264}
265#endif
266
271#ifdef __cplusplus
272}
273#endif
274
275#endif /* ZEPHYR_INCLUDE_NET_ETHERNET_MGMT_H_ */
Ethernet.
void ethernet_mgmt_raise_carrier_off_event(struct net_if *iface)
Raise CARRIER_OFF event when Ethernet is disconnected.
void ethernet_mgmt_raise_carrier_on_event(struct net_if *iface)
Raise CARRIER_ON event when Ethernet is connected.
void ethernet_mgmt_raise_vlan_disabled_event(struct net_if *iface, uint16_t tag)
Raise VLAN_DISABLED event when VLAN is disabled.
void ethernet_mgmt_raise_vlan_enabled_event(struct net_if *iface, uint16_t tag)
Raise VLAN_ENABLED event when VLAN is enabled.
#define NET_MGMT_DEFINE_REQUEST_HANDLER(_mgmt_request)
Definition: net_mgmt.h:96
Network Management API public header.
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
Definition: ethernet.h:262
Definition: ethernet.h:367
Definition: ethernet.h:303
Definition: ethernet.h:219
Definition: ethernet.h:434
Network Interface structure.
Definition: net_if.h:615