![]() |
ETHFW API Guide
|
Ethernet Firmware also provides support to enable VEPA (Virtual Ethernet Port Aggregator) functionality in Jacinto devices with CPSW capable of multihost data flow. Multihost is a CPSW ALE feature that enables packets to be sent and received on host port, which is mandatory for VEPA.
The VEPA implementation allocates a secondary RX flow exclusively for broadcast and registered multicast packets to be routed to. This flow is in addition to the RX flows used by Ethernet Firmware to receive all other traffic (i.e. TCP/IP, gPTP).
Ethernet Firmware server registers multicast MAC addresses that need to be forwarded to remote clients. These multicast addresses are added to an internal VEPA table, which can be printed for debug purpose. An ALE policer entry is also added for each multicast address in the table so that when multicast packets arrive at any of the MAC ports configured in non MAC-only mode, they are routed to its dedicated flow, allocated at init time.
When a multicast packet whose MAC address is registered in the VEPA table, it will be passed to a VEPA specific handle function, which then calls EthFwVepa_sendRaw() to send a copy of the multicast packets to all relevant remote cores.
Data Structures | |
struct | EthFwVepa_Cfg |
Ethernet Firmware VEPA configuration. More... | |
Functions | |
uint32_t | EthFwVepa_setPacketDuplicationFlowIdx (uint32_t flowIdx) |
Sets packet duplication flow. More... | |
void | EthFwVepa_clearPacketDuplicationFlowIdx (void) |
Clear packet duplication flow. More... | |
int32_t | EthFwVepa_sendRaw (struct netif *netif, struct pbuf *pbuf, struct eth_addr *ethSrcAddr, struct eth_addr *ethDstAddr) |
Sends pbuf to all the required virtual switch ports after inserting their corresponding private VLAN. More... | |
uint32_t EthFwVepa_setPacketDuplicationFlowIdx | ( | uint32_t | flowIdx | ) |
Sets packet duplication flow.
flowIdx | RX flow idx to be set |
void EthFwVepa_clearPacketDuplicationFlowIdx | ( | void | ) |
Clear packet duplication flow.
int32_t EthFwVepa_sendRaw | ( | struct netif * | netif, |
struct pbuf * | pbuf, | ||
struct eth_addr * | ethSrcAddr, | ||
struct eth_addr * | ethDstAddr | ||
) |
Sends pbuf to all the required virtual switch ports after inserting their corresponding private VLAN.
netif | Enet netif on which packet received |
pbuf | Pointer to the data buffer received |
ethSrcAddr | Source MAC address |
ethDstAddr | Destination MAC address |