AM263x MCU+ SDK  09.01.00
TI ENET LLD ethernet specific

Introduction

Files

file  cb_lld_ethernet.h
 TI ENET LLD specific network layer part.
 

Data Structures

struct  ethhdr
 Ethernet header structure. More...
 
struct  sockaddr
 Structure representing the lld_sockaddr instance. More...
 
struct  lld_ethdev_t
 Structure representing the lld_ethdev instance. More...
 
struct  cb_socket_lldcfg_update_t
 Structure representing the cb_socket_lldcfg_update instance. More...
 

Functions

struct ethhdr __attribute__ ((packed))
 
int cb_lld_init_devs_table (lld_ethdev_t *ethdevs, uint32_t ndevs, uint32_t enet_type, uint32_t instance_id)
 Initialize a LLD device table. More...
 
int cb_socket_set_lldcfg_update_cb (cb_socket_lldcfg_update_cb_t lldcfg_update_cb)
 This function sets the callback for updating LLD config parameters. It enables the user to update config parameters for the Enet LLD layer that are not supported by the CB socket. It is important to note that this function should only be called once. More...
 
int cb_lld_netdev_to_macport (const char *netdev)
 Convert net device name to mac port. More...
 
int cb_lld_sendto (CB_SOCKET_T sfd, void *sdata, int psize, int flags, const CB_SOCKADDR_LL_T *addr, int addrsize)
 Send a TX ethernet L2 packet. More...
 
int cb_lld_recv (CB_SOCKET_T sfd, void *buf, int size, int *port)
 Receive a RX ethernet L2 packet. This should be called after a rxnotify_cb is invoked. More...
 
int cb_lld_set_txnotify_cb (CB_SOCKET_T sfd, void(*txnotify_cb)(void *arg), void *arg)
 Set the TX notify callback that is invoked when an TX packet is sent successfully. More...
 
int cb_lld_set_rxnotify_cb (CB_SOCKET_T sfd, void(*rxnotify_cb)(void *arg), void *arg)
 Set the RX notify callback that is invoked when an RX packet is ready to be received. More...
 
int cb_lld_set_default_rxdata_cb (CB_SOCKET_T sfd, void(*default_rxdata_cb)(void *data, int size, int port, void *arg), void *arg)
 Set the default RX data callback that is invoked when an RX packet does not match any filters. More...
 
int cb_lld_get_type_instance (uint32_t *enet_type, uint32_t *instance_id)
 Get enet type and instance that is set via cb_lld_init_devs_table() More...
 
int cb_lld_get_netdevs (char *netdevs[], int *len)
 Get all virtual network interfaces which were defined for the TI platform. More...
 
int cb_lld_get_link_state (CB_SOCKET_T cfd, const char *dev, uint32_t *linkstate)
 get link state from device name like 'eth0' More...
 
int cb_lld_get_link_info (CB_SOCKET_T cfd, const char *dev, uint32_t *speed, uint32_t *duplex)
 get link info(speed and duplex) from device name like 'eth0' More...
 
bool cb_lld_is_rxts_inbuff (CB_SOCKET_T sfd)
 Checks the receive packet timestamping mode. More...
 

Typedefs

typedef struct lld_socket lld_socket_t
 Structure representing the lld_socket instance. More...
 
typedef int(* cb_socket_lldcfg_update_cb_t) (cb_socket_lldcfg_update_t *update_cfg)
 Callback function type for cb_socket_lldcfg_update. More...
 

Macros

#define htons   __htons
 
#define ntohs   __ntohs
 
#define htonl   __htonl
 
#define ntohl   __ntohl
 
#define ECONNREFUSED   100
 
#define MAX_NUMBER_ENET_DEVS   LLDENET_MAX_PORTS
 
#define CB_SOCKET_VALID(x)   ((x)!=NULL)
 
#define CB_SOCKET_INVALID_VALUE   NULL
 
#define CB_SOCKET_T   lld_socket_t*
 
#define CB_ETHHDR_T   struct ethhdr
 
#define CB_SOCKADDR_LL_T   struct sockaddr
 
#define CB_SOCK_SENDTO   cb_lld_sendto
 
#define CB_SOCK_CLOSE   cb_rawsock_close
 
#define CB_OPEN   open
 
#define CB_CLOSE   close
 
#define CB_WRITE   write
 
#define CB_IN_ADDR_T   void*
 
#define IFNAMSIZ   16
 
#define ETH_ALEN   6 /* Octets in one ethernet addr */
 
#define ETH_HLEN   14 /* Total octets in header. */
 
#define ETH_DATA_LEN   1500 /* Max. octets in payload */
 
#define ETH_P_8021Q   0x8100 /* 802.1Q VLAN Extended Header */
 
#define ETH_P_1588   0x88F7 /* IEEE 1588 Timesync */
 
#define ETH_P_LLDP   0x88CC /* 802.1AB LLDP */
 
#define ETH_P_TSN   0x22F0 /* TSN (IEEE 1722) packet */
 
#define ETH_P_NETLINK   0x22F1 /* A virtual prototol for netlink rawsockt on TI platforms */
 
#define CB_MAX_NETDEVNAME   IFNAMSIZ
 
#define MKPIPE(x)   (-1)
 
#define CB_LLD_MAX_ETH_FRAME_SIZE   (1522U)
 

Macro Definition Documentation

◆ htons

#define htons   __htons

◆ ntohs

#define ntohs   __ntohs

◆ htonl

#define htonl   __htonl

◆ ntohl

#define ntohl   __ntohl

◆ ECONNREFUSED

#define ECONNREFUSED   100

◆ MAX_NUMBER_ENET_DEVS

#define MAX_NUMBER_ENET_DEVS   LLDENET_MAX_PORTS

◆ CB_SOCKET_VALID

#define CB_SOCKET_VALID (   x)    ((x)!=NULL)

◆ CB_SOCKET_INVALID_VALUE

#define CB_SOCKET_INVALID_VALUE   NULL

◆ CB_SOCKET_T

#define CB_SOCKET_T   lld_socket_t*

◆ CB_ETHHDR_T

#define CB_ETHHDR_T   struct ethhdr

◆ CB_SOCKADDR_LL_T

#define CB_SOCKADDR_LL_T   struct sockaddr

◆ CB_SOCK_SENDTO

#define CB_SOCK_SENDTO   cb_lld_sendto

◆ CB_SOCK_CLOSE

#define CB_SOCK_CLOSE   cb_rawsock_close

◆ CB_OPEN

#define CB_OPEN   open

◆ CB_CLOSE

#define CB_CLOSE   close

◆ CB_WRITE

#define CB_WRITE   write

◆ CB_IN_ADDR_T

#define CB_IN_ADDR_T   void*

◆ IFNAMSIZ

#define IFNAMSIZ   16

◆ ETH_ALEN

#define ETH_ALEN   6 /* Octets in one ethernet addr */

◆ ETH_HLEN

#define ETH_HLEN   14 /* Total octets in header. */

◆ ETH_DATA_LEN

#define ETH_DATA_LEN   1500 /* Max. octets in payload */

◆ ETH_P_8021Q

#define ETH_P_8021Q   0x8100 /* 802.1Q VLAN Extended Header */

◆ ETH_P_1588

#define ETH_P_1588   0x88F7 /* IEEE 1588 Timesync */

◆ ETH_P_LLDP

#define ETH_P_LLDP   0x88CC /* 802.1AB LLDP */

◆ ETH_P_TSN

#define ETH_P_TSN   0x22F0 /* TSN (IEEE 1722) packet */

◆ ETH_P_NETLINK

#define ETH_P_NETLINK   0x22F1 /* A virtual prototol for netlink rawsockt on TI platforms */

◆ CB_MAX_NETDEVNAME

#define CB_MAX_NETDEVNAME   IFNAMSIZ

◆ MKPIPE

#define MKPIPE (   x)    (-1)

◆ CB_LLD_MAX_ETH_FRAME_SIZE

#define CB_LLD_MAX_ETH_FRAME_SIZE   (1522U)

Typedef Documentation

◆ lld_socket_t

typedef struct lld_socket lld_socket_t

Structure representing the lld_socket instance.

◆ cb_socket_lldcfg_update_cb_t

cb_socket_lldcfg_update_cb_t

Callback function type for cb_socket_lldcfg_update.

Parameters
update_cfgPointer to the cb_socket_lldcfg_update instance.
Returns
Integer value indicating the result of the callback. 0: OK, <0: error

Function Documentation

◆ __attribute__()

struct ethhdr __attribute__ ( (packed)  )

◆ cb_lld_init_devs_table()

int cb_lld_init_devs_table ( lld_ethdev_t ethdevs,
uint32_t  ndevs,
uint32_t  enet_type,
uint32_t  instance_id 
)

Initialize a LLD device table.

This function should only be called once, before calling any net functions from the combase. It is recommended to call once in the main() application, not in any TSN module source. If the ethdevs[i].srcmac is all zero, the srcmac will be alloced dynamically by the the LLD layer. Please note that ethdevs[i].netdev must point to a global memory address, not a stack memory address.

Parameters
ethdevsan arrays of ethernet devices
ndevsnumber of devices in the array
enet_typeLLD ethernet type
instance_idLLD ethernet instance ID
Returns
0: OK, <0: error, detailed error will be printed out.

◆ cb_socket_set_lldcfg_update_cb()

int cb_socket_set_lldcfg_update_cb ( cb_socket_lldcfg_update_cb_t  lldcfg_update_cb)

This function sets the callback for updating LLD config parameters. It enables the user to update config parameters for the Enet LLD layer that are not supported by the CB socket. It is important to note that this function should only be called once.

Parameters
lldcfg_update_cbupdate callback
Returns
0: OK, <0: error, detailed error will be printed out.

◆ cb_lld_netdev_to_macport()

int cb_lld_netdev_to_macport ( const char *  netdev)

Convert net device name to mac port.

Parameters
netdevnet device name e.g. eth0
Returns
>=0: MAC port, <0: error, detailed error will be printed out.

◆ cb_lld_sendto()

int cb_lld_sendto ( CB_SOCKET_T  sfd,
void *  sdata,
int  psize,
int  flags,
const CB_SOCKADDR_LL_T addr,
int  addrsize 
)

Send a TX ethernet L2 packet.

Parameters
sfdsocket fd
sdataethernet L2 packet
psizepacket size
flagsit is unused now, keep it to make it compatible with POSIX sendto
addrdestination address info
addrsizeaddress size
Returns
0: OK, <0: error, detailed error will be printed out.

◆ cb_lld_recv()

int cb_lld_recv ( CB_SOCKET_T  sfd,
void *  buf,
int  size,
int *  port 
)

Receive a RX ethernet L2 packet. This should be called after a rxnotify_cb is invoked.

Parameters
sfdsocket fd
bufpacket buffer
sizebuffer size
portRX port
Returns
<0: error; 0: No data available; 0xFFFF: Unmatched data filter; >0: data len

◆ cb_lld_set_txnotify_cb()

int cb_lld_set_txnotify_cb ( CB_SOCKET_T  sfd,
void(*)(void *arg)  txnotify_cb,
void *  arg 
)

Set the TX notify callback that is invoked when an TX packet is sent successfully.

Parameters
sfdsocket fd
txnotify_cbcallback
argcallback argument
Returns
0: OK, <0: error, detailed error will be printed out

◆ cb_lld_set_rxnotify_cb()

int cb_lld_set_rxnotify_cb ( CB_SOCKET_T  sfd,
void(*)(void *arg)  rxnotify_cb,
void *  arg 
)

Set the RX notify callback that is invoked when an RX packet is ready to be received.

Parameters
sfdsocket fd
rxnotify_cbcallback
argcallback argument
Returns
0: OK, <0: error, detailed error will be printed out

◆ cb_lld_set_default_rxdata_cb()

int cb_lld_set_default_rxdata_cb ( CB_SOCKET_T  sfd,
void(*)(void *data, int size, int port, void *arg)  default_rxdata_cb,
void *  arg 
)

Set the default RX data callback that is invoked when an RX packet does not match any filters.

Parameters
sfdsocket fd
default_rxdata_cbcallback
argcallback argument
Returns
0: OK, <0: error, detailed error will be printed out

◆ cb_lld_get_type_instance()

int cb_lld_get_type_instance ( uint32_t *  enet_type,
uint32_t *  instance_id 
)

Get enet type and instance that is set via cb_lld_init_devs_table()

Parameters
enet_typeethernet type
instance_idethernet instance ID
Returns
0: OK, <0: error, detailed error will be printed out

◆ cb_lld_get_netdevs()

int cb_lld_get_netdevs ( char *  netdevs[],
int *  len 
)

Get all virtual network interfaces which were defined for the TI platform.

Parameters
netdevsan array of pointer points to the net devices acquired by this api.
lenhow many net devices are returned by this api.
Returns
0 on success; -1 on failure

◆ cb_lld_get_link_state()

int cb_lld_get_link_state ( CB_SOCKET_T  cfd,
const char *  dev,
uint32_t *  linkstate 
)

get link state from device name like 'eth0'

Parameters
cfda socket handle coressponding to the ethernet device name specified via the second argument dev
devethernet device name like 'eth0'
linkstatea pointer for storing link state value (0:down, 1:up)
Returns
0 on success, -1 on error

◆ cb_lld_get_link_info()

int cb_lld_get_link_info ( CB_SOCKET_T  cfd,
const char *  dev,
uint32_t *  speed,
uint32_t *  duplex 
)

get link info(speed and duplex) from device name like 'eth0'

Parameters
cfda socket handle coressponding to the ethernet device name specified via the second argument dev
devethenert device name like 'eth0'
speeda pointer for storing speed value (0:unknow, 10:10Mbps, 100:100Mbps, 1000:1Gbps)
duplexa pointer for storing duplex value (0:unknow, 1:Full, 2:Half)
Returns
0 on success, -1 on error

◆ cb_lld_is_rxts_inbuff()

bool cb_lld_is_rxts_inbuff ( CB_SOCKET_T  sfd)

Checks the receive packet timestamping mode.

Parameters
sfdsocket fd
Returns
true if receive time stamp is present in the packet buffer.

Variable Documentation

◆ __attribute__

HSM client / server message format struct.

UInteger224 (802.1AS, 10.3.4 time-synchronization spanning tree priority vectors )