blob: 2fb57bb8e4a3551d94c87dee5d891b9c2277f088 [file] [log] [blame]
/*
* Copyright (c) 2018 Intel Corporation.
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief Ethernet Management interface public header
*/
#ifndef __ETHERNET_MGMT_H__
#define __ETHERNET_MGMT_H_
#include <net/ethernet.h>
#include <net/net_mgmt.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Ethernet library
* @defgroup ethernet_mgmt Ethernet Library
* @ingroup networking
* @{
*/
#define _NET_ETHERNET_LAYER NET_MGMT_LAYER_L2
#define _NET_ETHERNET_CODE 0x208
#define _NET_ETHERNET_BASE (NET_MGMT_IFACE_BIT | \
NET_MGMT_LAYER(_NET_ETHERNET_LAYER) | \
NET_MGMT_LAYER_CODE(_NET_ETHERNET_CODE))
#define _NET_ETHERNET_EVENT (_NET_ETHERNET_BASE | NET_MGMT_EVENT_BIT)
enum net_request_ethernet_cmd {
NET_REQUEST_ETHERNET_CMD_SET_AUTO_NEGOTIATION = 1,
NET_REQUEST_ETHERNET_CMD_SET_LINK,
NET_REQUEST_ETHERNET_CMD_SET_DUPLEX,
NET_REQUEST_ETHERNET_CMD_SET_MAC_ADDRESS,
};
#define NET_REQUEST_ETHERNET_SET_AUTO_NEGOTIATION \
(_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_AUTO_NEGOTIATION)
NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_AUTO_NEGOTIATION);
#define NET_REQUEST_ETHERNET_SET_LINK \
(_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_LINK)
NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_LINK);
#define NET_REQUEST_ETHERNET_SET_DUPLEX \
(_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_DUPLEX)
NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_DUPLEX);
#define NET_REQUEST_ETHERNET_SET_MAC_ADDRESS \
(_NET_ETHERNET_BASE | NET_REQUEST_ETHERNET_CMD_SET_MAC_ADDRESS)
NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_ETHERNET_SET_MAC_ADDRESS);
struct net_eth_addr;
struct ethernet_req_params {
union {
bool auto_negotiation;
bool full_duplex;
struct {
bool link_10bt;
bool link_100bt;
bool link_1000bt;
} l;
struct net_eth_addr mac_address;
};
};
enum net_event_ethernet_cmd {
NET_EVENT_ETHERNET_CMD_CARRIER_ON = 1,
NET_EVENT_ETHERNET_CMD_CARRIER_OFF,
};
#define NET_EVENT_ETHERNET_CARRIER_ON \
(_NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_CARRIER_ON)
#define NET_EVENT_ETHERNET_CARRIER_OFF \
(_NET_ETHERNET_EVENT | NET_EVENT_ETHERNET_CMD_CARRIER_OFF)
struct net_if;
void ethernet_mgmt_raise_carrier_on_event(struct net_if *iface);
void ethernet_mgmt_raise_carrier_off_event(struct net_if *iface);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __ETHERNET_MGMT_H__ */