LCOV - code coverage report
Current view: top level - zephyr/net - ethernet_mgmt.h Hit Total Coverage
Test: new.info Lines: 5 5 100.0 %
Date: 2024-12-22 00:14:23

          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      0x208
      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_AUTO_NEGOTIATION = 1,
      42             :         NET_REQUEST_ETHERNET_CMD_SET_LINK,
      43             :         NET_REQUEST_ETHERNET_CMD_SET_DUPLEX,
      44             :         NET_REQUEST_ETHERNET_CMD_SET_MAC_ADDRESS,
      45             :         NET_REQUEST_ETHERNET_CMD_SET_QAV_PARAM,
      46             :         NET_REQUEST_ETHERNET_CMD_SET_QBV_PARAM,
      47             :         NET_REQUEST_ETHERNET_CMD_SET_QBU_PARAM,
      48             :         NET_REQUEST_ETHERNET_CMD_SET_TXTIME_PARAM,
      49             :         NET_REQUEST_ETHERNET_CMD_SET_PROMISC_MODE,
      50             :         NET_REQUEST_ETHERNET_CMD_GET_PRIORITY_QUEUES_NUM,
      51             :         NET_REQUEST_ETHERNET_CMD_GET_QAV_PARAM,
      52             :         NET_REQUEST_ETHERNET_CMD_GET_PORTS_NUM,
      53             :         NET_REQUEST_ETHERNET_CMD_GET_QBV_PARAM,
      54             :         NET_REQUEST_ETHERNET_CMD_GET_QBU_PARAM,
      55             :         NET_REQUEST_ETHERNET_CMD_GET_TXTIME_PARAM,
      56             :         NET_REQUEST_ETHERNET_CMD_SET_T1S_PARAM,
      57             :         NET_REQUEST_ETHERNET_CMD_SET_TXINJECTION_MODE,
      58             :         NET_REQUEST_ETHERNET_CMD_GET_TXINJECTION_MODE,
      59             :         NET_REQUEST_ETHERNET_CMD_SET_MAC_FILTER,
      60             : };
      61             : 
      62             : #define NET_REQUEST_ETHERNET_SET_AUTO_NEGOTIATION                       \
      63             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_AUTO_NEGOTIATION)
      64             : 
      65             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_AUTO_NEGOTIATION);
      66             : 
      67             : #define NET_REQUEST_ETHERNET_SET_LINK                                   \
      68             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_LINK)
      69             : 
      70             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_LINK);
      71             : 
      72             : #define NET_REQUEST_ETHERNET_SET_DUPLEX                                 \
      73             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_DUPLEX)
      74             : 
      75             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_DUPLEX);
      76             : 
      77             : #define NET_REQUEST_ETHERNET_SET_MAC_ADDRESS                            \
      78             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_MAC_ADDRESS)
      79             : 
      80             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_MAC_ADDRESS);
      81             : 
      82             : #define NET_REQUEST_ETHERNET_SET_QAV_PARAM                              \
      83             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QAV_PARAM)
      84             : 
      85             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QAV_PARAM);
      86             : 
      87             : #define NET_REQUEST_ETHERNET_GET_PORTS_NUM                              \
      88             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_PORTS_NUM)
      89             : 
      90             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_PORTS_NUM);
      91             : 
      92             : #define NET_REQUEST_ETHERNET_SET_QBV_PARAM                              \
      93             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QBV_PARAM)
      94             : 
      95             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QBV_PARAM);
      96             : 
      97             : #define NET_REQUEST_ETHERNET_SET_QBU_PARAM                              \
      98             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_QBU_PARAM)
      99             : 
     100             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_QBU_PARAM);
     101             : 
     102             : #define NET_REQUEST_ETHERNET_SET_TXTIME_PARAM                           \
     103             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_TXTIME_PARAM)
     104             : 
     105             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_TXTIME_PARAM);
     106             : 
     107             : #define NET_REQUEST_ETHERNET_SET_PROMISC_MODE                           \
     108             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_PROMISC_MODE)
     109             : 
     110             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_PROMISC_MODE);
     111             : 
     112             : #define NET_REQUEST_ETHERNET_GET_PRIORITY_QUEUES_NUM                    \
     113             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_PRIORITY_QUEUES_NUM)
     114             : 
     115             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_PRIORITY_QUEUES_NUM);
     116             : 
     117             : #define NET_REQUEST_ETHERNET_GET_QAV_PARAM                              \
     118             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QAV_PARAM)
     119             : 
     120             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QAV_PARAM);
     121             : 
     122             : #define NET_REQUEST_ETHERNET_GET_QBV_PARAM                              \
     123             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QBV_PARAM)
     124             : 
     125             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QBV_PARAM);
     126             : 
     127             : #define NET_REQUEST_ETHERNET_GET_QBU_PARAM                              \
     128             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_QBU_PARAM)
     129             : 
     130             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_QBU_PARAM);
     131             : 
     132             : #define NET_REQUEST_ETHERNET_GET_TXTIME_PARAM                           \
     133             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_TXTIME_PARAM)
     134             : 
     135             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_TXTIME_PARAM);
     136             : 
     137             : #define NET_REQUEST_ETHERNET_SET_T1S_PARAM                              \
     138             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_T1S_PARAM)
     139             : 
     140             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_T1S_PARAM);
     141             : 
     142             : #define NET_REQUEST_ETHERNET_SET_TXINJECTION_MODE                               \
     143             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_TXINJECTION_MODE)
     144             : 
     145             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_TXINJECTION_MODE);
     146             : 
     147             : #define NET_REQUEST_ETHERNET_GET_TXINJECTION_MODE                               \
     148             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_GET_TXINJECTION_MODE)
     149             : 
     150             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_GET_TXINJECTION_MODE);
     151             : 
     152             : #define NET_REQUEST_ETHERNET_SET_MAC_FILTER                             \
     153             :         (_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_MAC_FILTER)
     154             : 
     155             : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_MAC_FILTER);
     156             : 
     157             : struct net_eth_addr;
     158             : struct ethernet_qav_param;
     159             : struct ethernet_qbv_param;
     160             : struct ethernet_qbu_param;
     161             : struct ethernet_txtime_param;
     162             : 
     163             : struct ethernet_req_params {
     164             :         union {
     165             :                 bool auto_negotiation;
     166             :                 bool full_duplex;
     167             :                 bool promisc_mode;
     168             :                 bool txinjection_mode;
     169             : 
     170             :                 struct {
     171             :                         bool link_10bt;
     172             :                         bool link_100bt;
     173             :                         bool link_1000bt;
     174             :                 } l;
     175             : 
     176             :                 struct net_eth_addr mac_address;
     177             : 
     178             :                 struct ethernet_qav_param qav_param;
     179             :                 struct ethernet_qbv_param qbv_param;
     180             :                 struct ethernet_qbu_param qbu_param;
     181             :                 struct ethernet_txtime_param txtime_param;
     182             :                 struct ethernet_t1s_param t1s_param;
     183             : 
     184             :                 struct ethernet_filter filter;
     185             : 
     186             :                 int priority_queues_num;
     187             :                 int ports_num;
     188             :         };
     189             : };
     190             : 
     191             : enum net_event_ethernet_cmd {
     192             :         NET_EVENT_ETHERNET_CMD_CARRIER_ON = 1,
     193             :         NET_EVENT_ETHERNET_CMD_CARRIER_OFF,
     194             :         NET_EVENT_ETHERNET_CMD_VLAN_TAG_ENABLED,
     195             :         NET_EVENT_ETHERNET_CMD_VLAN_TAG_DISABLED,
     196             : };
     197             : 
     198             : #define NET_EVENT_ETHERNET_CARRIER_ON                                   \
     199             :         (_NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_CARRIER_ON)
     200             : 
     201             : #define NET_EVENT_ETHERNET_CARRIER_OFF                                  \
     202             :         (_NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_CARRIER_OFF)
     203             : 
     204             : #define NET_EVENT_ETHERNET_VLAN_TAG_ENABLED                             \
     205             :         (_NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_VLAN_TAG_ENABLED)
     206             : 
     207             : #define NET_EVENT_ETHERNET_VLAN_TAG_DISABLED                            \
     208             :         (_NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_VLAN_TAG_DISABLED)
     209             : 
     210             : struct net_if;
     211             : 
     212             : /** @endcond */
     213             : 
     214             : /**
     215             :  * @brief Raise CARRIER_ON event when Ethernet is connected.
     216             :  *
     217             :  * @param iface Ethernet network interface.
     218             :  */
     219             : #if defined(CONFIG_NET_L2_ETHERNET_MGMT)
     220           1 : void ethernet_mgmt_raise_carrier_on_event(struct net_if *iface);
     221             : #else
     222             : static inline void ethernet_mgmt_raise_carrier_on_event(struct net_if *iface)
     223             : {
     224             :         ARG_UNUSED(iface);
     225             : }
     226             : #endif
     227             : 
     228             : /**
     229             :  * @brief Raise CARRIER_OFF event when Ethernet is disconnected.
     230             :  *
     231             :  * @param iface Ethernet network interface.
     232             :  */
     233             : #if defined(CONFIG_NET_L2_ETHERNET_MGMT)
     234           1 : void ethernet_mgmt_raise_carrier_off_event(struct net_if *iface);
     235             : #else
     236             : static inline void ethernet_mgmt_raise_carrier_off_event(struct net_if *iface)
     237             : {
     238             :         ARG_UNUSED(iface);
     239             : }
     240             : #endif
     241             : 
     242             : /**
     243             :  * @brief Raise VLAN_ENABLED event when VLAN is enabled.
     244             :  *
     245             :  * @param iface Ethernet network interface.
     246             :  * @param tag VLAN tag which is enabled.
     247             :  */
     248             : #if defined(CONFIG_NET_L2_ETHERNET_MGMT)
     249           1 : void ethernet_mgmt_raise_vlan_enabled_event(struct net_if *iface, uint16_t tag);
     250             : #else
     251             : static inline void ethernet_mgmt_raise_vlan_enabled_event(struct net_if *iface,
     252             :                                                           uint16_t tag)
     253             : {
     254             :         ARG_UNUSED(iface);
     255             :         ARG_UNUSED(tag);
     256             : }
     257             : #endif
     258             : 
     259             : /**
     260             :  * @brief Raise VLAN_DISABLED event when VLAN is disabled.
     261             :  *
     262             :  * @param iface Ethernet network interface.
     263             :  * @param tag VLAN tag which is disabled.
     264             :  */
     265             : #if defined(CONFIG_NET_L2_ETHERNET_MGMT)
     266           1 : void ethernet_mgmt_raise_vlan_disabled_event(struct net_if *iface,
     267             :                                              uint16_t tag);
     268             : #else
     269             : static inline void ethernet_mgmt_raise_vlan_disabled_event(struct net_if *iface,
     270             :                                                            uint16_t tag)
     271             : {
     272             :         ARG_UNUSED(iface);
     273             :         ARG_UNUSED(tag);
     274             : }
     275             : #endif
     276             : 
     277             : /**
     278             :  * @}
     279             :  */
     280             : 
     281             : #ifdef __cplusplus
     282             : }
     283             : #endif
     284             : 
     285             : #endif /* ZEPHYR_INCLUDE_NET_ETHERNET_MGMT_H_ */

Generated by: LCOV version 1.14