Zephyr Project API 4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
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
33#define NET_ETHERNET_LAYER NET_MGMT_LAYER_L2
34#define NET_ETHERNET_CODE NET_MGMT_LAYER_CODE_ETHERNET
35#define NET_ETHERNET_BASE (NET_MGMT_IFACE_BIT | \
36 NET_MGMT_LAYER(NET_ETHERNET_LAYER) | \
37 NET_MGMT_LAYER_CODE(NET_ETHERNET_CODE))
38#define NET_ETHERNET_EVENT (NET_ETHERNET_BASE | NET_MGMT_EVENT_BIT)
39
40enum net_request_ethernet_cmd {
41 NET_REQUEST_ETHERNET_CMD_SET_MAC_ADDRESS = 1,
42 NET_REQUEST_ETHERNET_CMD_SET_QAV_PARAM,
43 NET_REQUEST_ETHERNET_CMD_SET_QBV_PARAM,
44 NET_REQUEST_ETHERNET_CMD_SET_QBU_PARAM,
45 NET_REQUEST_ETHERNET_CMD_SET_TXTIME_PARAM,
46 NET_REQUEST_ETHERNET_CMD_SET_PROMISC_MODE,
47 NET_REQUEST_ETHERNET_CMD_GET_PRIORITY_QUEUES_NUM,
48 NET_REQUEST_ETHERNET_CMD_GET_QAV_PARAM,
49 NET_REQUEST_ETHERNET_CMD_GET_PORTS_NUM,
50 NET_REQUEST_ETHERNET_CMD_GET_QBV_PARAM,
51 NET_REQUEST_ETHERNET_CMD_GET_QBU_PARAM,
52 NET_REQUEST_ETHERNET_CMD_GET_TXTIME_PARAM,
53 NET_REQUEST_ETHERNET_CMD_SET_T1S_PARAM,
54 NET_REQUEST_ETHERNET_CMD_SET_TXINJECTION_MODE,
55 NET_REQUEST_ETHERNET_CMD_GET_TXINJECTION_MODE,
56 NET_REQUEST_ETHERNET_CMD_SET_MAC_FILTER,
57};
58
59#define NET_REQUEST_ETHERNET_SET_MAC_ADDRESS \
60 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_MAC_ADDRESS)
61
62NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_MAC_ADDRESS);
63
64#define NET_REQUEST_ETHERNET_SET_QAV_PARAM \
65 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QAV_PARAM)
66
67NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QAV_PARAM);
68
69#define NET_REQUEST_ETHERNET_GET_PORTS_NUM \
70 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_PORTS_NUM)
71
72NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_PORTS_NUM);
73
74#define NET_REQUEST_ETHERNET_SET_QBV_PARAM \
75 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QBV_PARAM)
76
77NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QBV_PARAM);
78
79#define NET_REQUEST_ETHERNET_SET_QBU_PARAM \
80 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QBU_PARAM)
81
82NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QBU_PARAM);
83
84#define NET_REQUEST_ETHERNET_SET_TXTIME_PARAM \
85 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_TXTIME_PARAM)
86
87NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_TXTIME_PARAM);
88
89#define NET_REQUEST_ETHERNET_SET_PROMISC_MODE \
90 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_PROMISC_MODE)
91
92NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_PROMISC_MODE);
93
94#define NET_REQUEST_ETHERNET_GET_PRIORITY_QUEUES_NUM \
95 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_PRIORITY_QUEUES_NUM)
96
97NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_PRIORITY_QUEUES_NUM);
98
99#define NET_REQUEST_ETHERNET_GET_QAV_PARAM \
100 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QAV_PARAM)
101
102NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QAV_PARAM);
103
104#define NET_REQUEST_ETHERNET_GET_QBV_PARAM \
105 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QBV_PARAM)
106
107NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QBV_PARAM);
108
109#define NET_REQUEST_ETHERNET_GET_QBU_PARAM \
110 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QBU_PARAM)
111
112NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QBU_PARAM);
113
114#define NET_REQUEST_ETHERNET_GET_TXTIME_PARAM \
115 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_TXTIME_PARAM)
116
117NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_TXTIME_PARAM);
118
119#define NET_REQUEST_ETHERNET_SET_T1S_PARAM \
120 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_T1S_PARAM)
121
122NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_T1S_PARAM);
123
124#define NET_REQUEST_ETHERNET_SET_TXINJECTION_MODE \
125 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_TXINJECTION_MODE)
126
127NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_TXINJECTION_MODE);
128
129#define NET_REQUEST_ETHERNET_GET_TXINJECTION_MODE \
130 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_TXINJECTION_MODE)
131
132NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_TXINJECTION_MODE);
133
134#define NET_REQUEST_ETHERNET_SET_MAC_FILTER \
135 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_MAC_FILTER)
136
137NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_MAC_FILTER);
138
139struct net_eth_addr;
140struct ethernet_qav_param;
141struct ethernet_qbv_param;
142struct ethernet_qbu_param;
144
145struct ethernet_req_params {
146 union {
147 bool promisc_mode;
148 bool txinjection_mode;
149
150 struct net_eth_addr mac_address;
151
152 struct ethernet_qav_param qav_param;
153 struct ethernet_qbv_param qbv_param;
154 struct ethernet_qbu_param qbu_param;
155 struct ethernet_txtime_param txtime_param;
156 struct ethernet_t1s_param t1s_param;
157
158 struct ethernet_filter filter;
159
160 int priority_queues_num;
161 int ports_num;
162 };
163};
164
165enum {
166 NET_EVENT_ETHERNET_CMD_CARRIER_ON_VAL,
167 NET_EVENT_ETHERNET_CMD_CARRIER_OFF_VAL,
168 NET_EVENT_ETHERNET_CMD_VLAN_TAG_ENABLED_VAL,
169 NET_EVENT_ETHERNET_CMD_VLAN_TAG_DISABLED_VAL,
170
171 NET_EVENT_ETHERNET_CMD_MAX
172};
173
174BUILD_ASSERT(NET_EVENT_ETHERNET_CMD_MAX <= NET_MGMT_MAX_COMMANDS,
175 "Number of events in net_event_ethernet_cmd exceeds the limit");
176
177enum net_event_ethernet_cmd {
178 NET_MGMT_CMD(NET_EVENT_ETHERNET_CMD_CARRIER_ON),
179 NET_MGMT_CMD(NET_EVENT_ETHERNET_CMD_CARRIER_OFF),
180 NET_MGMT_CMD(NET_EVENT_ETHERNET_CMD_VLAN_TAG_ENABLED),
181 NET_MGMT_CMD(NET_EVENT_ETHERNET_CMD_VLAN_TAG_DISABLED),
182};
183
184#define NET_EVENT_ETHERNET_CARRIER_ON \
185 (NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_CARRIER_ON)
186
187#define NET_EVENT_ETHERNET_CARRIER_OFF \
188 (NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_CARRIER_OFF)
189
190#define NET_EVENT_ETHERNET_VLAN_TAG_ENABLED \
191 (NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_VLAN_TAG_ENABLED)
192
193#define NET_EVENT_ETHERNET_VLAN_TAG_DISABLED \
194 (NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_VLAN_TAG_DISABLED)
195
196struct net_if;
197
205#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
207#else
208static inline void ethernet_mgmt_raise_carrier_on_event(struct net_if *iface)
209{
210 ARG_UNUSED(iface);
211}
212#endif
213
219#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
221#else
222static inline void ethernet_mgmt_raise_carrier_off_event(struct net_if *iface)
223{
224 ARG_UNUSED(iface);
225}
226#endif
227
234#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
236#else
237static inline void ethernet_mgmt_raise_vlan_enabled_event(struct net_if *iface,
238 uint16_t tag)
239{
240 ARG_UNUSED(iface);
241 ARG_UNUSED(tag);
242}
243#endif
244
251#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
253 uint16_t tag);
254#else
255static inline void ethernet_mgmt_raise_vlan_disabled_event(struct net_if *iface,
256 uint16_t tag)
257{
258 ARG_UNUSED(iface);
259 ARG_UNUSED(tag);
260}
261#endif
262
267#ifdef __cplusplus
268}
269#endif
270
271#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)
Declare a request handler function for the given network event.
Definition net_mgmt.h:129
@ NET_MGMT_CMD
Scan results available.
Definition wifi_mgmt.h:352
Network Management API public header.
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Ethernet filter description.
Definition ethernet.h:444
Ethernet Qav specific parameters.
Definition ethernet.h:286
Ethernet Qbu specific parameters.
Definition ethernet.h:395
Ethernet Qbv specific parameters.
Definition ethernet.h:328
Ethernet T1S specific parameters.
Definition ethernet.h:241
Ethernet TXTIME specific parameters.
Definition ethernet.h:462
Ethernet address.
Definition ethernet.h:55
Network Interface structure.
Definition net_if.h:726