Zephyr API Documentation 4.4.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
11
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
30
32
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_TXINJECTION_MODE,
54 NET_REQUEST_ETHERNET_CMD_GET_TXINJECTION_MODE,
55 NET_REQUEST_ETHERNET_CMD_SET_MAC_FILTER,
56};
57
58#define NET_REQUEST_ETHERNET_SET_MAC_ADDRESS \
59 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_MAC_ADDRESS)
60
61NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_MAC_ADDRESS);
62
63#define NET_REQUEST_ETHERNET_SET_QAV_PARAM \
64 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QAV_PARAM)
65
66NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QAV_PARAM);
67
68#define NET_REQUEST_ETHERNET_GET_PORTS_NUM \
69 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_PORTS_NUM)
70
71NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_PORTS_NUM);
72
73#define NET_REQUEST_ETHERNET_SET_QBV_PARAM \
74 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QBV_PARAM)
75
76NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QBV_PARAM);
77
78#define NET_REQUEST_ETHERNET_SET_QBU_PARAM \
79 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QBU_PARAM)
80
81NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QBU_PARAM);
82
83#define NET_REQUEST_ETHERNET_SET_TXTIME_PARAM \
84 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_TXTIME_PARAM)
85
86NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_TXTIME_PARAM);
87
88#define NET_REQUEST_ETHERNET_SET_PROMISC_MODE \
89 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_PROMISC_MODE)
90
91NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_PROMISC_MODE);
92
93#define NET_REQUEST_ETHERNET_GET_PRIORITY_QUEUES_NUM \
94 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_PRIORITY_QUEUES_NUM)
95
96NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_PRIORITY_QUEUES_NUM);
97
98#define NET_REQUEST_ETHERNET_GET_QAV_PARAM \
99 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QAV_PARAM)
100
101NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QAV_PARAM);
102
103#define NET_REQUEST_ETHERNET_GET_QBV_PARAM \
104 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QBV_PARAM)
105
106NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QBV_PARAM);
107
108#define NET_REQUEST_ETHERNET_GET_QBU_PARAM \
109 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QBU_PARAM)
110
111NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QBU_PARAM);
112
113#define NET_REQUEST_ETHERNET_GET_TXTIME_PARAM \
114 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_TXTIME_PARAM)
115
116NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_TXTIME_PARAM);
117
118#define NET_REQUEST_ETHERNET_SET_TXINJECTION_MODE \
119 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_TXINJECTION_MODE)
120
121NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_TXINJECTION_MODE);
122
123#define NET_REQUEST_ETHERNET_GET_TXINJECTION_MODE \
124 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_TXINJECTION_MODE)
125
126NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_TXINJECTION_MODE);
127
128#define NET_REQUEST_ETHERNET_SET_MAC_FILTER \
129 (NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_MAC_FILTER)
130
131NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_MAC_FILTER);
132
133struct net_eth_addr;
134struct ethernet_qav_param;
135struct ethernet_qbv_param;
136struct ethernet_qbu_param;
138
139struct ethernet_req_params {
140 union {
141 bool promisc_mode;
142 bool txinjection_mode;
143
144 struct net_eth_addr mac_address;
145
146 struct ethernet_qav_param qav_param;
147 struct ethernet_qbv_param qbv_param;
148 struct ethernet_qbu_param qbu_param;
149 struct ethernet_txtime_param txtime_param;
150
151 struct ethernet_filter filter;
152
153 int priority_queues_num;
154 int ports_num;
155 };
156};
157
158enum {
159 NET_EVENT_ETHERNET_CMD_CARRIER_ON_VAL,
160 NET_EVENT_ETHERNET_CMD_CARRIER_OFF_VAL,
161 NET_EVENT_ETHERNET_CMD_VLAN_TAG_ENABLED_VAL,
162 NET_EVENT_ETHERNET_CMD_VLAN_TAG_DISABLED_VAL,
163
164 NET_EVENT_ETHERNET_CMD_MAX
165};
166
167BUILD_ASSERT(NET_EVENT_ETHERNET_CMD_MAX <= NET_MGMT_MAX_COMMANDS,
168 "Number of events in net_event_ethernet_cmd exceeds the limit");
169
170enum net_event_ethernet_cmd {
171 NET_MGMT_CMD(NET_EVENT_ETHERNET_CMD_CARRIER_ON),
172 NET_MGMT_CMD(NET_EVENT_ETHERNET_CMD_CARRIER_OFF),
173 NET_MGMT_CMD(NET_EVENT_ETHERNET_CMD_VLAN_TAG_ENABLED),
174 NET_MGMT_CMD(NET_EVENT_ETHERNET_CMD_VLAN_TAG_DISABLED),
175};
176
177#define NET_EVENT_ETHERNET_CARRIER_ON \
178 (NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_CARRIER_ON)
179
180#define NET_EVENT_ETHERNET_CARRIER_OFF \
181 (NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_CARRIER_OFF)
182
183#define NET_EVENT_ETHERNET_VLAN_TAG_ENABLED \
184 (NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_VLAN_TAG_ENABLED)
185
186#define NET_EVENT_ETHERNET_VLAN_TAG_DISABLED \
187 (NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_VLAN_TAG_DISABLED)
188
189struct net_if;
190
192
198#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
200#else
201static inline void ethernet_mgmt_raise_carrier_on_event(struct net_if *iface)
202{
203 ARG_UNUSED(iface);
204}
205#endif
206
212#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
214#else
215static inline void ethernet_mgmt_raise_carrier_off_event(struct net_if *iface)
216{
217 ARG_UNUSED(iface);
218}
219#endif
220
227#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
229#else
230static inline void ethernet_mgmt_raise_vlan_enabled_event(struct net_if *iface,
231 uint16_t tag)
232{
233 ARG_UNUSED(iface);
234 ARG_UNUSED(tag);
235}
236#endif
237
244#if defined(CONFIG_NET_L2_ETHERNET_MGMT)
246 uint16_t tag);
247#else
248static inline void ethernet_mgmt_raise_vlan_disabled_event(struct net_if *iface,
249 uint16_t tag)
250{
251 ARG_UNUSED(iface);
252 ARG_UNUSED(tag);
253}
254#endif
255
259
260#ifdef __cplusplus
261}
262#endif
263
264#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:381
#define BUILD_ASSERT(EXPR, MSG...)
Definition llvm.h:51
Network Management API public header.
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Ethernet Qav specific parameters.
Definition ethernet.h:246
Ethernet Qbu specific parameters.
Definition ethernet.h:355
Ethernet Qbv specific parameters.
Definition ethernet.h:288
Ethernet TXTIME specific parameters.
Definition ethernet.h:422
Ethernet address.
Definition ethernet.h:51
Network Interface structure.
Definition net_if.h:735