LCOV - code coverage report
Current view: top level - zephyr/net - ethernet_mgmt.h Coverage Total Hit
Test: new.info Lines: 100.0 % 5 5
Test Date: 2025-09-05 22:20:39

            Line data    Source code
       1            1 : /*
       2              :  * Copyright (c) 2018 Intel Corporation.
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : /**
       8              :  * @file
       9              :  * @brief Ethernet Management interface public header
      10              :  */
      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
      19              : extern "C" {
      20              : #endif
      21              : 
      22              : /**
      23              :  * @brief Ethernet library
      24              :  * @defgroup ethernet_mgmt Ethernet Library
      25              :  * @since 1.12
      26              :  * @version 0.8.0
      27              :  * @ingroup networking
      28              :  * @{
      29              :  */
      30              : 
      31              : /** @cond INTERNAL_HIDDEN */
      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              : 
      40              : enum 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              : 
      62              : NET_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              : 
      67              : NET_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              : 
      72              : NET_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              : 
      77              : NET_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              : 
      82              : NET_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              : 
      87              : NET_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              : 
      92              : NET_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              : 
      97              : NET_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              : 
     102              : NET_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              : 
     107              : NET_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              : 
     112              : NET_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              : 
     117              : NET_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              : 
     122              : NET_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              : 
     127              : NET_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              : 
     132              : NET_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              : 
     137              : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_MAC_FILTER);
     138              : 
     139              : struct net_eth_addr;
     140              : struct ethernet_qav_param;
     141              : struct ethernet_qbv_param;
     142              : struct ethernet_qbu_param;
     143              : struct ethernet_txtime_param;
     144              : 
     145              : struct 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              : 
     165              : enum {
     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              : 
     174              : BUILD_ASSERT(NET_EVENT_ETHERNET_CMD_MAX <= NET_MGMT_MAX_COMMANDS,
     175              :              "Number of events in net_event_ethernet_cmd exceeds the limit");
     176              : 
     177              : enum 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              : 
     196              : struct net_if;
     197              : 
     198              : /** @endcond */
     199              : 
     200              : /**
     201              :  * @brief Raise CARRIER_ON event when Ethernet is connected.
     202              :  *
     203              :  * @param iface Ethernet network interface.
     204              :  */
     205              : #if defined(CONFIG_NET_L2_ETHERNET_MGMT)
     206            1 : void ethernet_mgmt_raise_carrier_on_event(struct net_if *iface);
     207              : #else
     208              : static inline void ethernet_mgmt_raise_carrier_on_event(struct net_if *iface)
     209              : {
     210              :         ARG_UNUSED(iface);
     211              : }
     212              : #endif
     213              : 
     214              : /**
     215              :  * @brief Raise CARRIER_OFF event when Ethernet is disconnected.
     216              :  *
     217              :  * @param iface Ethernet network interface.
     218              :  */
     219              : #if defined(CONFIG_NET_L2_ETHERNET_MGMT)
     220            1 : void ethernet_mgmt_raise_carrier_off_event(struct net_if *iface);
     221              : #else
     222              : static inline void ethernet_mgmt_raise_carrier_off_event(struct net_if *iface)
     223              : {
     224              :         ARG_UNUSED(iface);
     225              : }
     226              : #endif
     227              : 
     228              : /**
     229              :  * @brief Raise VLAN_ENABLED event when VLAN is enabled.
     230              :  *
     231              :  * @param iface Ethernet network interface.
     232              :  * @param tag VLAN tag which is enabled.
     233              :  */
     234              : #if defined(CONFIG_NET_L2_ETHERNET_MGMT)
     235            1 : void ethernet_mgmt_raise_vlan_enabled_event(struct net_if *iface, uint16_t tag);
     236              : #else
     237              : static 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              : 
     245              : /**
     246              :  * @brief Raise VLAN_DISABLED event when VLAN is disabled.
     247              :  *
     248              :  * @param iface Ethernet network interface.
     249              :  * @param tag VLAN tag which is disabled.
     250              :  */
     251              : #if defined(CONFIG_NET_L2_ETHERNET_MGMT)
     252            1 : void ethernet_mgmt_raise_vlan_disabled_event(struct net_if *iface,
     253              :                                              uint16_t tag);
     254              : #else
     255              : static 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              : 
     263              : /**
     264              :  * @}
     265              :  */
     266              : 
     267              : #ifdef __cplusplus
     268              : }
     269              : #endif
     270              : 
     271              : #endif /* ZEPHYR_INCLUDE_NET_ETHERNET_MGMT_H_ */
        

Generated by: LCOV version 2.0-1