Go to the documentation of this file.
32 #define TRACE_LEVEL NIC_TRACE_LEVEL
54 #if (ETH_VLAN_SUPPORT == ENABLED)
65 if(interface->parent == NULL)
69 interface = interface->parent;
86 #if (ETH_VIRTUAL_IF_SUPPORT == ENABLED || ETH_VLAN_SUPPORT == ENABLED || \
87 ETH_PORT_TAGGING_SUPPORT == ENABLED)
94 if(interface->nicDriver != NULL || interface->parent == NULL)
98 interface = interface->parent;
115 #if (ETH_PORT_TAGGING_SUPPORT == ENABLED)
122 if(interface->port != 0 || interface->parent == NULL)
126 interface = interface->parent;
130 return interface->port;
146 #if (ETH_VLAN_SUPPORT == ENABLED)
153 if(interface->vlanId != 0 || interface->parent == NULL)
157 interface = interface->parent;
161 return interface->vlanId;
177 #if (ETH_VMAN_SUPPORT == ENABLED)
184 if(interface->vmanId != 0 || interface->parent == NULL)
188 interface = interface->parent;
192 return interface->vmanId;
209 #if (ETH_VIRTUAL_IF_SUPPORT == ENABLED || ETH_VLAN_SUPPORT == ENABLED || \
210 ETH_PORT_TAGGING_SUPPORT == ENABLED)
218 if(interface == parent)
225 if(interface->parent == NULL)
229 interface = interface->parent;
236 return (interface == parent) ?
TRUE :
FALSE;
253 if(interface->nicDriver != NULL)
256 interface->nicDriver->disableIrq(interface);
259 interface->nicDriver->tick(interface);
262 if(interface->configured)
264 interface->nicDriver->enableIrq(interface);
286 #if (TRACE_LEVEL >= TRACE_LEVEL_DEBUG)
299 if(interface->configured && interface->nicDriver != NULL)
317 interface->nicDriver->disableIrq(interface);
320 error = interface->nicDriver->sendPacket(interface, buffer, offset,
324 if(interface->configured)
326 interface->nicDriver->enableIrq(interface);
357 if(interface->nicDriver != NULL)
360 interface->nicDriver->disableIrq(interface);
363 error = interface->nicDriver->updateMacAddrFilter(interface);
366 if(interface->configured)
368 interface->nicDriver->enableIrq(interface);
400 if(interface->configured)
403 interface->nicDriver->enableIrq(interface);
410 type = interface->nicDriver->type;
412 #if (ETH_SUPPORT == ENABLED)
421 #if (PPP_SUPPORT == ENABLED)
430 #if (IPV4_SUPPORT == ENABLED)
440 #if (IPV6_SUPPORT == ENABLED)
458 #if (NET_LOOPBACK_IF_SUPPORT == ENABLED)
462 #if (IPV4_SUPPORT == ENABLED)
490 #if (IPV6_SUPPORT == ENABLED)
538 interface->nicDriver->disableIrq(interface);
561 if(physicalInterface->configured)
563 physicalInterface->nicDriver->enableIrq(physicalInterface);
578 virtualInterface->linkSpeed = interface->linkSpeed;
579 virtualInterface->duplexMode = interface->duplexMode;
582 virtualInterface->linkState = interface->linkState;
590 physicalInterface->nicDriver->disableIrq(physicalInterface);
void nicNotifyLinkChange(NetInterface *interface)
Process link state change notification.
@ ERROR_INVALID_INTERFACE
Invalid interface.
error_t nicSendPacket(NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
Send a packet to the network controller.
Structure describing a buffer that spans multiple chunks.
void ipv4ProcessPacket(NetInterface *interface, Ipv4Header *packet, size_t length, NetRxAncillary *ancillary)
Incoming IPv4 packet processing.
#define NIC_MAX_BLOCKING_TIME
#define NET_INTERFACE_COUNT
void ipv6ProcessPacket(NetInterface *interface, NetBuffer *ipPacket, size_t ipPacketOffset, NetRxAncillary *ancillary)
Incoming IPv6 packet processing.
void nicProcessPacket(NetInterface *interface, uint8_t *packet, size_t length, NetRxAncillary *ancillary)
Handle a packet received by the network controller.
#define TRACE_DEBUG_NET_BUFFER(p, b, o, n)
@ NIC_TYPE_LOOPBACK
Loopback interface.
error_t ipv4CheckDestAddr(NetInterface *interface, Ipv4Addr ipAddr)
Destination IPv4 address filtering.
Helper functions for IPv4.
NetInterface * nicGetPhysicalInterface(NetInterface *interface)
Retrieve physical interface.
void ethProcessFrame(NetInterface *interface, uint8_t *frame, size_t length, NetRxAncillary *ancillary)
Process an incoming Ethernet frame.
error_t ipv6CheckDestAddr(NetInterface *interface, const Ipv6Addr *ipAddr)
Destination IPv6 address filtering.
Helper functions for IPv6.
void pppProcessFrame(NetInterface *interface, uint8_t *frame, size_t length, NetRxAncillary *ancillary)
Process an incoming PPP frame.
size_t netBufferGetLength(const NetBuffer *buffer)
Get the actual length of a multi-part buffer.
void netProcessLinkChange(NetInterface *interface)
Process link state change event.
error_t nicUpdateMacAddrFilter(NetInterface *interface)
Configure MAC address filtering.
uint32_t systime_t
System time.
@ NIC_TYPE_PPP
PPP interface.
#define TRACE_DEBUG_ARRAY(p, a, n)
bool_t osWaitForEvent(OsEvent *event, systime_t timeout)
Wait until the specified event is in the signaled state.
Network interface controller abstraction layer.
#define macCompAddr(macAddr1, macAddr2)
#define netGetSystemTickCount()
@ NIC_TYPE_IPV4
IPv4 interface.
@ NIC_TYPE_6LOWPAN
6LoWPAN interface
void nicTick(NetInterface *interface)
Network controller timer handler.
NetInterface * nicGetLogicalInterface(NetInterface *interface)
Retrieve logical interface.
uint16_t nicGetVmanId(NetInterface *interface)
Retrieve VMAN identifier.
uint16_t nicGetVlanId(NetInterface *interface)
Retrieve VLAN identifier.
uint8_t nicGetSwitchPort(NetInterface *interface)
Retrieve switch port identifier.
bool_t nicIsParentInterface(NetInterface *interface, NetInterface *parent)
Test parent/child relationship between 2 interfaces.
const MacAddr MAC_UNSPECIFIED_ADDR
@ NIC_TYPE_ETHERNET
Ethernet interface.