13#ifndef ZEPHYR_INCLUDE_NET_ETHERNET_H_
14#define ZEPHYR_INCLUDE_NET_ETHERNET_H_
29#if defined(CONFIG_NET_DSA)
33#if defined(CONFIG_NET_ETHERNET_BRIDGE)
48#define NET_ETH_ADDR_LEN 6U
57#define NET_ETH_HDR(pkt) ((struct net_eth_hdr *)net_pkt_data(pkt))
59#define NET_ETH_PTYPE_CAN 0x000C
60#define NET_ETH_PTYPE_CANFD 0x000D
61#define NET_ETH_PTYPE_HDLC 0x0019
62#define NET_ETH_PTYPE_ARP 0x0806
63#define NET_ETH_PTYPE_IP 0x0800
64#define NET_ETH_PTYPE_TSN 0x22f0
65#define NET_ETH_PTYPE_IPV6 0x86dd
66#define NET_ETH_PTYPE_VLAN 0x8100
67#define NET_ETH_PTYPE_PTP 0x88f7
68#define NET_ETH_PTYPE_LLDP 0x88cc
69#define NET_ETH_PTYPE_ALL 0x0003
70#define NET_ETH_PTYPE_ECAT 0x88a4
71#define NET_ETH_PTYPE_EAPOL 0x888e
72#define NET_ETH_PTYPE_IEEE802154 0x00F6
74#if !defined(ETH_P_ALL)
75#define ETH_P_ALL NET_ETH_PTYPE_ALL
78#define ETH_P_IP NET_ETH_PTYPE_IP
80#if !defined(ETH_P_ARP)
81#define ETH_P_ARP NET_ETH_PTYPE_ARP
83#if !defined(ETH_P_IPV6)
84#define ETH_P_IPV6 NET_ETH_PTYPE_IPV6
86#if !defined(ETH_P_8021Q)
87#define ETH_P_8021Q NET_ETH_PTYPE_VLAN
89#if !defined(ETH_P_TSN)
90#define ETH_P_TSN NET_ETH_PTYPE_TSN
92#if !defined(ETH_P_ECAT)
93#define ETH_P_ECAT NET_ETH_PTYPE_ECAT
95#if !defined(ETH_P_IEEE802154)
96#define ETH_P_IEEE802154 NET_ETH_PTYPE_IEEE802154
98#if !defined(ETH_P_CAN)
99#define ETH_P_CAN NET_ETH_PTYPE_CAN
101#if !defined(ETH_P_CANFD)
102#define ETH_P_CANFD NET_ETH_PTYPE_CANFD
104#if !defined(ETH_P_HDLC)
105#define ETH_P_HDLC NET_ETH_PTYPE_HDLC
110#define NET_ETH_MINIMAL_FRAME_SIZE 60
111#define NET_ETH_MTU 1500
115#if defined(CONFIG_NET_VLAN)
116#define _NET_ETH_MAX_HDR_SIZE (sizeof(struct net_eth_vlan_hdr))
118#define _NET_ETH_MAX_HDR_SIZE (sizeof(struct net_eth_hdr))
121#define _NET_ETH_MAX_FRAME_SIZE (NET_ETH_MTU + _NET_ETH_MAX_HDR_SIZE)
126#if defined(CONFIG_NET_DSA)
127#define NET_ETH_MAX_FRAME_SIZE (_NET_ETH_MAX_FRAME_SIZE + DSA_TAG_SIZE)
128#define NET_ETH_MAX_HDR_SIZE (_NET_ETH_MAX_HDR_SIZE + DSA_TAG_SIZE)
130#define NET_ETH_MAX_FRAME_SIZE (_NET_ETH_MAX_FRAME_SIZE)
131#define NET_ETH_MAX_HDR_SIZE (_NET_ETH_MAX_HDR_SIZE)
134#define NET_ETH_VLAN_HDR_SIZE 4
206enum ethernet_config_type {
207 ETHERNET_CONFIG_TYPE_AUTO_NEG,
208 ETHERNET_CONFIG_TYPE_LINK,
209 ETHERNET_CONFIG_TYPE_DUPLEX,
210 ETHERNET_CONFIG_TYPE_MAC_ADDRESS,
211 ETHERNET_CONFIG_TYPE_QAV_PARAM,
212 ETHERNET_CONFIG_TYPE_QBV_PARAM,
213 ETHERNET_CONFIG_TYPE_QBU_PARAM,
214 ETHERNET_CONFIG_TYPE_TXTIME_PARAM,
215 ETHERNET_CONFIG_TYPE_PROMISC_MODE,
216 ETHERNET_CONFIG_TYPE_PRIORITY_QUEUES_NUM,
217 ETHERNET_CONFIG_TYPE_FILTER,
218 ETHERNET_CONFIG_TYPE_PORTS_NUM,
219 ETHERNET_CONFIG_TYPE_T1S_PARAM,
220 ETHERNET_CONFIG_TYPE_TXINJECTION_MODE,
223enum ethernet_qav_param_type {
224 ETHERNET_QAV_PARAM_TYPE_DELTA_BANDWIDTH,
225 ETHERNET_QAV_PARAM_TYPE_IDLE_SLOPE,
226 ETHERNET_QAV_PARAM_TYPE_OPER_IDLE_SLOPE,
227 ETHERNET_QAV_PARAM_TYPE_TRAFFIC_CLASS,
228 ETHERNET_QAV_PARAM_TYPE_STATUS,
231enum ethernet_t1s_param_type {
232 ETHERNET_T1S_PARAM_TYPE_PLCA_CONFIG,
240 enum ethernet_t1s_param_type
type;
287 enum ethernet_qav_param_type
type;
304enum ethernet_qbv_param_type {
305 ETHERNET_QBV_PARAM_TYPE_STATUS,
306 ETHERNET_QBV_PARAM_TYPE_GATE_CONTROL_LIST,
307 ETHERNET_QBV_PARAM_TYPE_GATE_CONTROL_LIST_LEN,
308 ETHERNET_QBV_PARAM_TYPE_TIME,
311enum ethernet_qbv_state_type {
312 ETHERNET_QBV_STATE_TYPE_ADMIN,
313 ETHERNET_QBV_STATE_TYPE_OPER,
316enum ethernet_gate_state_operation {
317 ETHERNET_SET_GATE_STATE,
318 ETHERNET_SET_AND_HOLD_MAC_STATE,
319 ETHERNET_SET_AND_RELEASE_MAC_STATE,
329 enum ethernet_qbv_param_type
type;
373enum ethernet_qbu_param_type {
374 ETHERNET_QBU_PARAM_TYPE_STATUS,
375 ETHERNET_QBU_PARAM_TYPE_RELEASE_ADVANCE,
376 ETHERNET_QBU_PARAM_TYPE_HOLD_ADVANCE,
377 ETHERNET_QBU_PARAM_TYPE_PREEMPTION_STATUS_TABLE,
380 ETHERNET_QBR_PARAM_TYPE_LINK_PARTNER_STATUS,
381 ETHERNET_QBR_PARAM_TYPE_ADDITIONAL_FRAGMENT_SIZE,
384enum ethernet_qbu_preempt_status {
385 ETHERNET_QBU_STATUS_EXPRESS,
386 ETHERNET_QBU_STATUS_PREEMPTABLE
396 enum ethernet_qbu_param_type
type;
405 enum ethernet_qbu_preempt_status
424enum ethernet_filter_type {
425 ETHERNET_FILTER_TYPE_SRC_MAC_ADDRESS,
426 ETHERNET_FILTER_TYPE_DST_MAC_ADDRESS,
443 enum ethernet_filter_type
type;
452enum ethernet_txtime_param_type {
453 ETHERNET_TXTIME_PARAM_TYPE_ENABLE_QUEUES,
461 enum ethernet_txtime_param_type
type;
470struct ethernet_config {
472 bool auto_negotiation;
475 bool txinjection_mode;
491 int priority_queues_num;
512#if defined(CONFIG_NET_STATISTICS_ETHERNET)
527 enum ethernet_config_type type,
528 const struct ethernet_config *config);
532 enum ethernet_config_type type,
533 struct ethernet_config *config);
540#if defined(CONFIG_NET_VLAN)
541 int (*vlan_setup)(
const struct device *dev,
struct net_if *iface,
546#if defined(CONFIG_PTP_CLOCK)
547 const struct device *(*get_ptp_clock)(
const struct device *dev);
559BUILD_ASSERT(offsetof(
struct ethernet_api, iface_api) == 0);
567struct ethernet_vlan {
575#if defined(CONFIG_NET_VLAN_COUNT)
576#define NET_VLAN_MAX_COUNT CONFIG_NET_VLAN_COUNT
580#define NET_VLAN_MAX_COUNT 1
619struct ethernet_context {
625#if defined(CONFIG_NET_ETHERNET_BRIDGE)
626 struct eth_bridge_iface_context bridge;
635 struct k_work carrier_work;
640#if defined(CONFIG_NET_LLDP)
649#if defined(CONFIG_NET_L2_PTP)
657#if defined(CONFIG_NET_DSA)
667 struct dsa_context *dsa_ctx;
674 bool is_net_carrier_up : 1;
688void ethernet_init(
struct net_if *iface);
690#define ETHERNET_L2_CTX_TYPE struct ethernet_context
695struct net_eth_vlan_hdr {
716 if (addr->
addr[0] == 0xff &&
717 addr->
addr[1] == 0xff &&
718 addr->
addr[2] == 0xff &&
719 addr->
addr[3] == 0xff &&
720 addr->
addr[4] == 0xff &&
721 addr->
addr[5] == 0xff) {
737 if (addr->
addr[0] == 0x00 &&
738 addr->
addr[1] == 0x00 &&
739 addr->
addr[2] == 0x00 &&
740 addr->
addr[3] == 0x00 &&
741 addr->
addr[4] == 0x00 &&
742 addr->
addr[5] == 0x00) {
758#if defined(CONFIG_NET_IPV6)
759 if (addr->
addr[0] == 0x33 &&
760 addr->
addr[1] == 0x33) {
765#if defined(CONFIG_NET_IPV4)
766 if (addr->
addr[0] == 0x01 &&
767 addr->
addr[1] == 0x00 &&
768 addr->
addr[2] == 0x5e) {
785 return addr->
addr[0] & 0x01;
809#if defined(CONFIG_NET_GPTP) || defined(CONFIG_NET_LLDP)
810 if (addr->
addr[0] == 0x01 &&
811 addr->
addr[1] == 0x80 &&
812 addr->
addr[2] == 0xc2 &&
813 addr->
addr[3] == 0x00 &&
814 addr->
addr[4] == 0x00 &&
815 addr->
addr[5] == 0x0e) {
834#if defined(CONFIG_NET_GPTP)
835 if (addr->
addr[0] == 0x01 &&
836 addr->
addr[1] == 0x1b &&
837 addr->
addr[2] == 0x19 &&
838 addr->
addr[3] == 0x00 &&
839 addr->
addr[4] == 0x00 &&
840 addr->
addr[5] == 0x00) {
903#if defined(CONFIG_NET_VLAN)
923#if defined(CONFIG_NET_VLAN)
946#if defined(CONFIG_NET_VLAN)
966#if defined(CONFIG_NET_VLAN)
988#if defined(CONFIG_NET_VLAN)
1013#if defined(CONFIG_NET_VLAN)
1034#if defined(CONFIG_NET_VLAN)
1052#if defined(CONFIG_NET_VLAN)
1065#if !defined(CONFIG_ETH_DRIVER_RAW_MODE)
1067#define Z_ETH_NET_DEVICE_INIT_INSTANCE(node_id, dev_id, name, instance, \
1068 init_fn, pm, data, config, prio, \
1070 Z_NET_DEVICE_INIT_INSTANCE(node_id, dev_id, name, instance, \
1071 init_fn, pm, data, config, prio, \
1073 NET_L2_GET_CTX_TYPE(ETHERNET_L2), mtu)
1077#define Z_ETH_NET_DEVICE_INIT_INSTANCE(node_id, dev_id, name, instance, \
1078 init_fn, pm, data, config, prio, \
1080 Z_DEVICE_STATE_DEFINE(dev_id); \
1081 Z_DEVICE_DEFINE(node_id, dev_id, name, init_fn, pm, data, \
1082 config, POST_KERNEL, prio, api, \
1083 &Z_DEVICE_STATE_NAME(dev_id));
1087#define Z_ETH_NET_DEVICE_INIT(node_id, dev_id, name, init_fn, pm, data, \
1088 config, prio, api, mtu) \
1089 Z_ETH_NET_DEVICE_INIT_INSTANCE(node_id, dev_id, name, 0, \
1090 init_fn, pm, data, config, prio, \
1112#define ETH_NET_DEVICE_INIT(dev_id, name, init_fn, pm, data, config, \
1114 Z_ETH_NET_DEVICE_INIT(DT_INVALID_NODE, dev_id, name, init_fn, \
1115 pm, data, config, prio, api, mtu)
1139#define ETH_NET_DEVICE_INIT_INSTANCE(dev_id, name, instance, init_fn, \
1140 pm, data, config, prio, api, mtu) \
1141 Z_ETH_NET_DEVICE_INIT_INSTANCE(DT_INVALID_NODE, dev_id, name, \
1142 instance, init_fn, pm, data, \
1143 config, prio, api, mtu)
1161#define ETH_NET_DEVICE_DT_DEFINE(node_id, init_fn, pm, data, config, \
1163 Z_ETH_NET_DEVICE_INIT(node_id, Z_DEVICE_DT_DEV_ID(node_id), \
1164 DEVICE_DT_NAME(node_id), init_fn, pm, \
1165 data, config, prio, api, mtu)
1176#define ETH_NET_DEVICE_DT_INST_DEFINE(inst, ...) \
1177 ETH_NET_DEVICE_DT_DEFINE(DT_DRV_INST(inst), __VA_ARGS__)
1228 enum ethernet_filter_type type,
bool enable);
1237#if defined(CONFIG_PTP_CLOCK)
1266#if defined(CONFIG_NET_L2_PTP)
1283#if defined(CONFIG_NET_L2_PTP)
1302 const struct ethernet_context *ctx = (
struct ethernet_context *)
1316#include <syscalls/ethernet.h>
long atomic_t
Definition: atomic_types.h:15
DSA definitions and handlers.
Ethernet Bridge public header file.
VLAN specific definitions.
enum net_verdict(* dsa_net_recv_cb_t)(struct net_if *iface, struct net_pkt *pkt)
DSA (MGMT) Receive packet callback.
Definition: dsa.h:72
int(* dsa_send_t)(const struct device *dev, struct net_pkt *pkt)
Pointer to master interface send function.
Definition: dsa.h:98
static struct net_if * net_eth_get_vlan_main(struct net_if *iface)
Return main network interface that is attached to this VLAN tag.
Definition: ethernet.h:992
ethernet_if_types
Types of Ethernet L2.
Definition: ethernet.h:432
static void net_eth_set_ptp_port(struct net_if *iface, int port)
Set PTP port number attached to this interface.
Definition: ethernet.h:1286
static int net_eth_vlan_enable(struct net_if *iface, uint16_t tag)
Add VLAN tag to the interface.
Definition: ethernet.h:906
static bool net_eth_is_addr_multicast(struct net_eth_addr *addr)
Check if the Ethernet MAC address is a multicast address.
Definition: ethernet.h:756
static int net_eth_get_ptp_port(struct net_if *iface)
Return PTP port number attached to this interface.
Definition: ethernet.h:1269
static const struct device * net_eth_get_ptp_clock(struct net_if *iface)
Return PTP clock that is tied to this ethernet network interface.
Definition: ethernet.h:1240
#define NET_ETH_ADDR_LEN
Ethernet MAC address length.
Definition: ethernet.h:48
int net_eth_promisc_mode(struct net_if *iface, bool enable)
Set promiscuous mode either ON or OFF.
void net_eth_carrier_off(struct net_if *iface)
Inform ethernet L2 driver that ethernet carrier was lost.
static uint16_t net_eth_get_vlan_tag(struct net_if *iface)
Return VLAN tag specified to network interface.
Definition: ethernet.h:949
static bool net_eth_type_is_wifi(struct net_if *iface)
Check if the Ethernet L2 network interface can perform Wi-Fi.
Definition: ethernet.h:1300
static bool net_eth_is_addr_broadcast(struct net_eth_addr *addr)
Check if the Ethernet MAC address is a broadcast address.
Definition: ethernet.h:714
static bool net_eth_get_vlan_status(struct net_if *iface)
Get VLAN status for a given network interface (enabled or not).
Definition: ethernet.h:1037
static bool net_eth_is_addr_group(struct net_eth_addr *addr)
Check if the Ethernet MAC address is a group address.
Definition: ethernet.h:783
const struct device * net_eth_get_ptp_clock_by_index(int index)
Return PTP clock that is tied to this ethernet network interface index.
static bool net_eth_is_addr_unspecified(struct net_eth_addr *addr)
Check if the Ethernet MAC address is unspecified.
Definition: ethernet.h:735
static bool net_eth_is_vlan_interface(struct net_if *iface)
Check if the given interface is a VLAN interface.
Definition: ethernet.h:1055
ethernet_hw_caps
Ethernet hardware capabilities.
Definition: ethernet.h:139
int net_eth_mac_filter(struct net_if *iface, struct net_eth_addr *mac, enum ethernet_filter_type type, bool enable)
Set or unset HW filtering for MAC address mac.
void net_eth_ipv6_mcast_to_mac_addr(const struct in6_addr *ipv6_addr, struct net_eth_addr *mac_addr)
Convert IPv6 multicast address to Ethernet address.
static enum ethernet_hw_caps net_eth_get_hw_capabilities(struct net_if *iface)
Return ethernet device hardware capability information.
Definition: ethernet.h:883
static int net_eth_vlan_disable(struct net_if *iface, uint16_t tag)
Remove VLAN tag from the interface.
Definition: ethernet.h:926
void net_eth_carrier_on(struct net_if *iface)
Inform ethernet L2 driver that ethernet carrier is detected.
static bool net_eth_is_vlan_enabled(struct ethernet_context *ctx, struct net_if *iface)
Check if there are any VLAN interfaces enabled to this specific Ethernet network interface.
Definition: ethernet.h:1017
static struct net_if * net_eth_get_vlan_iface(struct net_if *iface, uint16_t tag)
Return network interface related to this VLAN tag.
Definition: ethernet.h:970
void net_eth_ipv4_mcast_to_mac_addr(const struct in_addr *ipv4_addr, struct net_eth_addr *mac_addr)
Convert IPv4 multicast address to Ethernet address.
const struct net_eth_addr * net_eth_broadcast_addr(void)
Return Ethernet broadcast address.
static bool net_eth_is_addr_lldp_multicast(struct net_eth_addr *addr)
Check if the Ethernet MAC address is a LLDP multicast address.
Definition: ethernet.h:807
static bool net_eth_is_addr_ptp_multicast(struct net_eth_addr *addr)
Check if the Ethernet MAC address is a PTP multicast address.
Definition: ethernet.h:832
static bool net_eth_is_addr_valid(struct net_eth_addr *addr)
Check if the Ethernet MAC address is valid.
Definition: ethernet.h:795
int net_eth_txinjection_mode(struct net_if *iface, bool enable)
Set TX-Injection mode either ON or OFF.
@ L2_ETH_IF_TYPE_ETHERNET
IEEE 802.3 Ethernet (default)
Definition: ethernet.h:434
@ L2_ETH_IF_TYPE_WIFI
IEEE 802.11 Wi-Fi.
Definition: ethernet.h:437
@ ETHERNET_HW_VLAN
VLAN supported.
Definition: ethernet.h:147
@ ETHERNET_PRIORITY_QUEUES
Priority queues available.
Definition: ethernet.h:174
@ ETHERNET_DUPLEX_SET
Changing duplex (half/full) supported.
Definition: ethernet.h:162
@ ETHERNET_HW_VLAN_TAG_STRIP
VLAN Tag stripping.
Definition: ethernet.h:183
@ ETHERNET_LINK_10BASE_T
10 Mbits link supported
Definition: ethernet.h:153
@ ETHERNET_HW_FILTERING
MAC address filtering supported.
Definition: ethernet.h:177
@ ETHERNET_PTP
IEEE 802.1AS (gPTP) clock supported.
Definition: ethernet.h:165
@ ETHERNET_QBU
IEEE 802.1Qbu (frame preemption) supported.
Definition: ethernet.h:195
@ ETHERNET_LINK_100BASE_T
100 Mbits link supported
Definition: ethernet.h:156
@ ETHERNET_DSA_MASTER_PORT
DSA switch master port.
Definition: ethernet.h:189
@ ETHERNET_DSA_SLAVE_PORT
DSA switch slave port.
Definition: ethernet.h:186
@ ETHERNET_TXINJECTION_MODE
TX-Injection supported.
Definition: ethernet.h:201
@ ETHERNET_QAV
IEEE 802.1Qav (credit-based shaping) supported.
Definition: ethernet.h:168
@ ETHERNET_HW_RX_CHKSUM_OFFLOAD
RX Checksum offloading supported for all of IPv4, UDP, TCP.
Definition: ethernet.h:144
@ ETHERNET_LINK_1000BASE_T
1 Gbits link supported
Definition: ethernet.h:159
@ ETHERNET_LLDP
Link Layer Discovery Protocol supported.
Definition: ethernet.h:180
@ ETHERNET_AUTO_NEGOTIATION_SET
Enabling/disabling auto negotiation supported.
Definition: ethernet.h:150
@ ETHERNET_TXTIME
TXTIME supported.
Definition: ethernet.h:198
@ ETHERNET_QBV
IEEE 802.1Qbv (scheduled traffic) supported.
Definition: ethernet.h:192
@ ETHERNET_PROMISC_MODE
Promiscuous mode supported.
Definition: ethernet.h:171
@ ETHERNET_HW_TX_CHKSUM_OFFLOAD
TX Checksum offloading supported for all of IPv4, UDP, TCP.
Definition: ethernet.h:141
enum net_verdict(* net_lldp_recv_cb_t)(struct net_if *iface, struct net_pkt *pkt)
LLDP Receive packet callback.
Definition: lldp.h:213
static void * net_if_l2_data(struct net_if *iface)
Get a pointer to the interface L2 private data.
Definition: net_if.h:923
static const struct device * net_if_get_device(struct net_if *iface)
Get an network interface's device.
Definition: net_if.h:938
net_l2_flags
L2 flags.
Definition: net_l2.h:34
struct _snode sys_snode_t
Single-linked list node structure.
Definition: slist.h:39
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition: util_macro.h:44
#define EINVAL
Invalid argument.
Definition: errno.h:61
#define ENODEV
No such device.
Definition: errno.h:58
#define NET_VLAN_TAG_UNSPEC
Unspecified VLAN tag value.
Definition: ethernet_vlan.h:30
LLDP definitions and handler.
Public API for network interface.
IPv6 and IPv4 definitions.
Network packet buffer descriptor API.
flags
Definition: parser.h:96
Public functions for the Precision Time Protocol time specification.
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
__INT64_TYPE__ int64_t
Definition: stdint.h:75
Runtime device structure (in ROM) per driver instance.
Definition: device.h:399
const void * api
Address of the API structure exposed by the device instance.
Definition: device.h:405
Ethernet L2 API operations.
Definition: ethernet.h:501
struct net_if_api iface_api
The net_if_api must be placed in first position in this struct so that we are compatible with network...
Definition: ethernet.h:506
int(* start)(const struct device *dev)
Collect optional ethernet specific statistics.
Definition: ethernet.h:517
int(* get_config)(const struct device *dev, enum ethernet_config_type type, struct ethernet_config *config)
Get hardware specific configuration.
Definition: ethernet.h:531
int(* stop)(const struct device *dev)
Stop the device.
Definition: ethernet.h:520
enum ethernet_hw_caps(* get_capabilities)(const struct device *dev)
Get the device capabilities.
Definition: ethernet.h:523
int(* send)(const struct device *dev, struct net_pkt *pkt)
The IP stack will call this function when a VLAN tag is enabled or disabled.
Definition: ethernet.h:551
int(* set_config)(const struct device *dev, enum ethernet_config_type type, const struct ethernet_config *config)
Set specific hardware configuration.
Definition: ethernet.h:526
Ethernet filter description.
Definition: ethernet.h:441
struct net_eth_addr mac_address
MAC address to filter.
Definition: ethernet.h:445
bool set
Set (true) or unset (false) the filter.
Definition: ethernet.h:447
enum ethernet_filter_type type
Type of filter.
Definition: ethernet.h:443
Ethernet LLDP specific parameters.
Definition: ethernet.h:586
const uint8_t * optional_du
LLDP Data Unit optional TLVs for the interface.
Definition: ethernet.h:594
sys_snode_t node
Used for track timers.
Definition: ethernet.h:588
net_lldp_recv_cb_t cb
LLDP RX callback function.
Definition: ethernet.h:609
size_t optional_len
Length of the optional Data Unit TLVs.
Definition: ethernet.h:597
struct net_if * iface
Network interface that has LLDP supported.
Definition: ethernet.h:600
const struct net_lldpdu * lldpdu
LLDP Data Unit mandatory TLVs for the interface.
Definition: ethernet.h:591
uint32_t tx_timer_timeout
LLDP TX timeout.
Definition: ethernet.h:606
int64_t tx_timer_start
LLDP TX timer start time.
Definition: ethernet.h:603
Ethernet Qav specific parameters.
Definition: ethernet.h:283
bool enabled
True if Qav is enabled for queue.
Definition: ethernet.h:290
unsigned int oper_idle_slope
Oper Idle Slope (bits per second)
Definition: ethernet.h:296
enum ethernet_qav_param_type type
Type of Qav parameter.
Definition: ethernet.h:287
unsigned int traffic_class
Traffic class the queue is bound to.
Definition: ethernet.h:298
int queue_id
ID of the priority queue to use.
Definition: ethernet.h:285
unsigned int idle_slope
Idle Slope (bits per second)
Definition: ethernet.h:294
unsigned int delta_bandwidth
Delta Bandwidth (percentage of bandwidth)
Definition: ethernet.h:292
Ethernet Qbu specific parameters.
Definition: ethernet.h:392
enum ethernet_qbu_preempt_status frame_preempt_statuses[NET_TC_TX_COUNT]
sequence of framePreemptionAdminStatus values
Definition: ethernet.h:405
uint32_t release_advance
Release advance (nanoseconds)
Definition: ethernet.h:402
enum ethernet_qbu_param_type type
Type of Qbu parameter.
Definition: ethernet.h:396
uint32_t hold_advance
Hold advance (nanoseconds)
Definition: ethernet.h:399
bool enabled
True if Qbu is enabled or not.
Definition: ethernet.h:409
bool link_partner_status
Link partner status (from Qbr)
Definition: ethernet.h:412
int port_id
Port id.
Definition: ethernet.h:394
uint8_t additional_fragment_size
Additional fragment size (from Qbr).
Definition: ethernet.h:418
Ethernet Qbv specific parameters.
Definition: ethernet.h:325
int port_id
Port id.
Definition: ethernet.h:327
bool enabled
True if Qbv is enabled or not.
Definition: ethernet.h:334
struct ethernet_qbv_param::@290::@292 gate_control
Gate control information.
enum ethernet_qbv_param_type type
Type of Qbv parameter.
Definition: ethernet.h:329
uint16_t row
Gate control list row.
Definition: ethernet.h:348
enum ethernet_qbv_state_type state
What state (Admin/Oper) parameters are these.
Definition: ethernet.h:331
bool gate_status[NET_TC_TX_COUNT]
True = open, False = closed.
Definition: ethernet.h:339
struct net_ptp_extended_time base_time
Base time.
Definition: ethernet.h:360
uint32_t extension_time
Extension time (nanoseconds)
Definition: ethernet.h:366
enum ethernet_gate_state_operation operation
GateState operation.
Definition: ethernet.h:342
uint32_t time_interval
Time interval ticks (nanoseconds)
Definition: ethernet.h:345
struct net_ptp_time cycle_time
Cycle time.
Definition: ethernet.h:363
uint32_t gate_control_list_len
Number of entries in gate control list.
Definition: ethernet.h:352
Ethernet T1S specific parameters.
Definition: ethernet.h:238
uint8_t burst_count
T1S PLCA burst count range: 0x0 to 0xFF.
Definition: ethernet.h:273
struct ethernet_t1s_param::@285::@287 plca
PLCA is the Physical Layer (PHY) Collision Avoidance technique employed with multidrop 10Base-T1S sta...
uint8_t node_count
T1S PLCA node count range: 1 to 255.
Definition: ethernet.h:271
uint8_t to_timer
T1S PLCA TO value.
Definition: ethernet.h:277
uint8_t burst_timer
T1S PLCA burst timer.
Definition: ethernet.h:275
uint8_t node_id
T1S PLCA node id range: 0 to 254.
Definition: ethernet.h:269
enum ethernet_t1s_param_type type
Type of T1S parameter.
Definition: ethernet.h:240
bool enable
T1S PLCA enabled.
Definition: ethernet.h:267
Ethernet TXTIME specific parameters.
Definition: ethernet.h:459
bool enable_txtime
Enable or disable TXTIME per queue.
Definition: ethernet.h:465
int queue_id
Queue number for configuring TXTIME.
Definition: ethernet.h:463
enum ethernet_txtime_param_type type
Type of TXTIME parameter.
Definition: ethernet.h:461
IPv6 address struct.
Definition: net_ip.h:139
IPv4 address struct.
Definition: net_ip.h:151
A structure used to submit work.
Definition: kernel.h:3875
Ethernet address.
Definition: ethernet.h:51
uint8_t addr[6U]
Buffer storing the address.
Definition: ethernet.h:52
Network Interface structure.
Definition: net_if.h:675
LLDP Data Unit (LLDPDU) shall contain the following ordered TLVs as stated in "8.2 LLDPDU format" fro...
Definition: lldp.h:167
Network packet.
Definition: net_pkt.h:67
Generalized Precision Time Protocol Extended Timestamp format.
Definition: ptp_time.h:152
(Generalized) Precision Time Protocol Timestamp format.
Definition: ptp_time.h:109
All Ethernet specific statistics.
Definition: net_stats.h:523