lan9646_driver.c
void nicNotifyLinkChange(NetInterface *interface)
Process link state change notification.
Definition: nic.c:601
void lan9646WriteSwitchReg16(NetInterface *interface, uint16_t address, uint16_t data)
Write switch register (16 bits)
Definition: lan9646_driver.c:2031
__weak_func void lan9646InitHook(NetInterface *interface)
LAN9646 custom configuration.
Definition: lan9646_driver.c:261
uint16_t lan9646ReadSwitchReg16(NetInterface *interface, uint16_t address)
Read switch register (16 bits)
Definition: lan9646_driver.c:2075
#define LAN9646_PORTn_XMII_CTRL1_SPEED_1000
Definition: lan9646_driver.h:1391
#define LAN9646_SGMII_CTRL_SPEED_SEL_LSB
Definition: lan9646_driver.h:879
SwitchPortState lan9646GetPortState(NetInterface *interface, uint8_t port)
Get port state.
Definition: lan9646_driver.c:1038
#define LAN9646_SGMII_AN_STATUS_LINK_SPEED_1000MBPS
Definition: lan9646_driver.h:940
#define LAN9646_ALU_TABLE_ENTRY2_PORT3_FORWARD
Definition: lan9646_driver.h:1299
void lan9646WriteSgmiiReg(NetInterface *interface, uint32_t address, uint16_t data)
Write SGMII register.
Definition: lan9646_driver.c:1906
#define LAN9646_PORTn_XMII_CTRL1_RGMII_ID_EG
Definition: lan9646_driver.h:1393
#define LAN9646_UNKONWN_MULTICAST_CTRL_FWD_MAP
Definition: lan9646_driver.h:1151
void lan9646WriteSwitchReg8(NetInterface *interface, uint16_t address, uint8_t data)
Write switch register (8 bits)
Definition: lan9646_driver.c:1941
#define LAN9646_ALU_TABLE_ENTRY2_PORT1_FORWARD
Definition: lan9646_driver.h:1301
void lan9646FlushDynamicFdbTable(NetInterface *interface, uint8_t port)
Flush dynamic MAC table.
Definition: lan9646_driver.c:1664
#define LAN9646_STATIC_TABLE_ENTRY2_OVERRIDE
Definition: lan9646_driver.h:1318
void lan9646FlushStaticFdbTable(NetInterface *interface)
Flush static MAC table.
Definition: lan9646_driver.c:1511
#define LAN9646_SWITCH_LUE_CTRL0_RESERVED_MCAST_LOOKUP_EN
Definition: lan9646_driver.h:1087
#define LAN9646_STATIC_MCAST_TABLE_CTRL_TABLE_INDEX
Definition: lan9646_driver.h:1278
#define LAN9646_ALU_TABLE_ENTRY2_PORT_FORWARD
Definition: lan9646_driver.h:1295
#define LAN9646_TAIL_TAG_NORMAL_ADDR_LOOKUP
Definition: lan9646_driver.h:65
const uint16_t lan9646IngressTailTag[8]
Tail tag rules (host to LAN9646)
Definition: lan9646_driver.c:77
error_t lan9646DeleteStaticFdbEntry(NetInterface *interface, const SwitchFdbEntry *entry)
Remove an entry from the static MAC table.
Definition: lan9646_driver.c:1334
#define LAN9646_SWITCH_LUE_CTRL2_FLUSH_OPTION
Definition: lan9646_driver.h:1107
#define LAN9646_ALU_TABLE_CTRL_ACTION_SEARCH
Definition: lan9646_driver.h:1275
#define LAN9646_ALU_TABLE_ENTRY2_PORT6_FORWARD
Definition: lan9646_driver.h:1297
#define LAN9646_SGMII_AN_STATUS_LINK_SPEED_100MBPS
Definition: lan9646_driver.h:939
#define LAN9646_STATIC_MCAST_TABLE_CTRL_START_FINISH
Definition: lan9646_driver.h:1279
void lan9646SetUnknownMcastFwdPorts(NetInterface *interface, bool_t enable, uint32_t forwardPorts)
Set forward ports for unknown multicast packets.
Definition: lan9646_driver.c:1711
error_t lan9646AddStaticFdbEntry(NetInterface *interface, const SwitchFdbEntry *entry)
Add a new entry to the static MAC table.
Definition: lan9646_driver.c:1212
error_t lan9646GetDynamicFdbEntry(NetInterface *interface, uint_t index, SwitchFdbEntry *entry)
Read an entry from the dynamic MAC table.
Definition: lan9646_driver.c:1560
#define LAN9646_PORTn_MSTP_STATE_RECEIVE_EN
Definition: lan9646_driver.h:1461
uint16_t lan9646ReadSgmiiReg(NetInterface *interface, uint32_t address)
Read SGMII register.
Definition: lan9646_driver.c:1924
__weak_func NicDuplexMode lan9646GetPort7DuplexMode(NetInterface *interface)
Get port 7 duplex mode.
Definition: lan9646_driver.c:935
#define LAN9646_UNKONWN_MULTICAST_CTRL_FWD_MAP_ALL
Definition: lan9646_driver.h:1158
#define LAN9646_UNKONWN_MULTICAST_CTRL_FWD
Definition: lan9646_driver.h:1150
uint32_t lan9646GetLinkSpeed(NetInterface *interface, uint8_t port)
Get link speed.
Definition: lan9646_driver.c:653
#define LAN9646_GLOBAL_PORT_MIRROR_SNOOP_CTRL_IGMP_SNOOP_EN
Definition: lan9646_driver.h:1208
#define LAN9646_SGMII_AN_STATUS_LINK_STATUS
Definition: lan9646_driver.h:936
#define LAN9646_PORTn_XMII_CTRL0_DUPLEX
Definition: lan9646_driver.h:1385
#define LAN9646_PORTn_XMII_CTRL0_SPEED_10_100
Definition: lan9646_driver.h:1387
uint16_t lan9646ReadPhyReg(NetInterface *interface, uint8_t port, uint8_t address)
Read PHY register.
Definition: lan9646_driver.c:1790
void lan9646EnableIgmpSnooping(NetInterface *interface, bool_t enable)
Enable IGMP snooping.
Definition: lan9646_driver.c:1123
__weak_func void lan9646EventHandler(NetInterface *interface)
LAN9646 event handler.
Definition: lan9646_driver.c:369
#define LAN9646_SWITCH_LUE_CTRL0_HASH_OPTION_CRC
Definition: lan9646_driver.h:1090
#define LAN9646_SGMII_STATUS_LINK_STATUS
Definition: lan9646_driver.h:889
#define LAN9646_SGMII_CTRL_DUPLEX_MODE
Definition: lan9646_driver.h:883
#define LAN9646_SWITCH_LUE_CTRL3_AGE_PERIOD_DEFAULT
Definition: lan9646_driver.h:1116
LAN9646 6-port Gigabit Ethernet switch driver.
NicDuplexMode lan9646GetDuplexMode(NetInterface *interface, uint8_t port)
Get duplex mode.
Definition: lan9646_driver.c:753
#define LAN9646_ALU_TABLE_CTRL_START_FINISH
Definition: lan9646_driver.h:1267
#define LAN9646_SGMII_AN_STATUS_FULL_DUPLEX
Definition: lan9646_driver.h:941
#define LAN9646_MMDACR_FUNC_DATA_NO_POST_INC
Definition: lan9646_driver.h:804
#define LAN9646_STATIC_TABLE_ENTRY2_PORT_FORWARD
Definition: lan9646_driver.h:1320
#define LAN9646_PORTn_MSTP_STATE_TRANSMIT_EN
Definition: lan9646_driver.h:1460
#define LAN9646_MMD_LED_MODE_RESERVED_DEFAULT
Definition: lan9646_driver.h:870
void lan9646SetAgingTime(NetInterface *interface, uint32_t agingTime)
Set aging time for dynamic filtering entries.
Definition: lan9646_driver.c:1102
void lan9646DumpPhyReg(NetInterface *interface, uint8_t port)
Dump PHY registers for debugging purpose.
Definition: lan9646_driver.c:1826
void lan9646WriteSwitchReg32(NetInterface *interface, uint16_t address, uint32_t data)
Write switch register (32 bits)
Definition: lan9646_driver.c:2123
void lan9646WriteMmdReg(NetInterface *interface, uint8_t port, uint8_t devAddr, uint16_t regAddr, uint16_t data)
Write MMD register.
Definition: lan9646_driver.c:1852
uint32_t lan9646ReadSwitchReg32(NetInterface *interface, uint16_t address)
Read switch register (32 bits)
Definition: lan9646_driver.c:2169
error_t ethPadFrame(NetBuffer *buffer, size_t *length)
Ethernet frame padding.
Definition: ethernet_misc.c:145
void lan9646WritePhyReg(NetInterface *interface, uint8_t port, uint8_t address, uint16_t data)
Write PHY register.
Definition: lan9646_driver.c:1756
#define LAN9646_GLOBAL_PORT_MIRROR_SNOOP_CTRL
Definition: lan9646_driver.h:202
uint8_t lan9646ReadSwitchReg8(NetInterface *interface, uint16_t address)
Read switch register (8 bits)
Definition: lan9646_driver.c:1984
#define LAN9646_ALU_TABLE_ENTRY2_PORT2_FORWARD
Definition: lan9646_driver.h:1300
size_t netBufferGetLength(const NetBuffer *buffer)
Get the actual length of a multi-part buffer.
Definition: net_mem.c:297
#define LAN9646_PORTn_ETH_PHY_REG(port, addr)
Definition: lan9646_driver.h:702
#define LAN9646_STATIC_MCAST_TABLE_CTRL_TABLE_SELECT
Definition: lan9646_driver.h:1280
void lan9646EnableMldSnooping(NetInterface *interface, bool_t enable)
Enable MLD snooping.
Definition: lan9646_driver.c:1153
error_t lan9646UntagFrame(NetInterface *interface, uint8_t **frame, size_t *length, NetRxAncillary *ancillary)
Decode tail tag from incoming Ethernet frame.
Definition: lan9646_driver.c:562
#define LAN9646_STATIC_TABLE_ENTRY1_VALID
Definition: lan9646_driver.h:1311
#define LAN9646_TAIL_TAG_PORT_BLOCKING_OVERRIDE
Definition: lan9646_driver.h:66
__weak_func uint32_t lan9646GetPort7LinkSpeed(NetInterface *interface)
Get port 7 link speed.
Definition: lan9646_driver.c:864
const SwitchDriver lan9646SwitchDriver
LAN9646 Ethernet switch driver.
Definition: lan9646_driver.c:45
#define LAN9646_STATIC_MCAST_TABLE_CTRL_ACTION
Definition: lan9646_driver.h:1281
error_t lan9646TagFrame(NetInterface *interface, NetBuffer *buffer, size_t *offset, NetTxAncillary *ancillary)
Add tail tag to Ethernet frame.
Definition: lan9646_driver.c:503
#define LAN9646_GLOBAL_PORT_MIRROR_SNOOP_CTRL_MLD_SNOOP_EN
Definition: lan9646_driver.h:1210
error_t netBufferAppend(NetBuffer *dest, const void *src, size_t length)
Append data a multi-part buffer.
Definition: net_mem.c:604
#define LAN9646_SWITCH_LUE_CTRL2_FLUSH_OPTION_DYNAMIC
Definition: lan9646_driver.h:1109
#define LAN9646_ALU_TABLE_ENTRY2_PORT7_FORWARD
Definition: lan9646_driver.h:1296
#define LAN9646_ALU_TABLE_CTRL_VALID_ENTRY_OR_SEARCH_END
Definition: lan9646_driver.h:1269
#define LAN9646_SWITCH_LUE_CTRL1_FLUSH_ALU_TABLE
Definition: lan9646_driver.h:1096
__weak_func bool_t lan9646GetPort7LinkState(NetInterface *interface)
Get port 7 link state.
Definition: lan9646_driver.c:821
error_t lan9646GetStaticFdbEntry(NetInterface *interface, uint_t index, SwitchFdbEntry *entry)
Read an entry from the static MAC table.
Definition: lan9646_driver.c:1414
#define LAN9646_PORTn_XMII_CTRL1_IF_TYPE_RGMII
Definition: lan9646_driver.h:1396
#define LAN9646_UNKONWN_MULTICAST_CTRL
Definition: lan9646_driver.h:156
#define LAN9646_SWITCH_LUE_CTRL1_FLUSH_MSTP_ENTRIES
Definition: lan9646_driver.h:1097
#define LAN9646_SGMII_AN_STATUS_LINK_SPEED_10MBPS
Definition: lan9646_driver.h:938
void osSetEvent(OsEvent *event)
Set the specified event object to the signaled state.
Definition: os_port_chibios.c:202
#define LAN9646_STATIC_MCAST_TABLE_CTRL
Definition: lan9646_driver.h:213
__weak_func void lan9646Tick(NetInterface *interface)
LAN9646 timer handler.
Definition: lan9646_driver.c:271
#define LAN9646_UNKONWN_MULTICAST_CTRL_FWD_MAP_PORT6
Definition: lan9646_driver.h:1156
#define LAN9646_PORTn_XMII_CTRL1_RGMII_ID_IG
Definition: lan9646_driver.h:1392
#define LAN9646_SGMII_AN_STATUS_LINK_SPEED
Definition: lan9646_driver.h:937
TCP/IP stack core.
#define LAN9646_SWITCH_MAC_CTRL0_FRAME_LEN_CHECK_EN
Definition: lan9646_driver.h:1173
#define LAN9646_MMD_LED_MODE_LED_MODE_TRI_COLOR_DUAL
Definition: lan9646_driver.h:867
error_t lan9646Init(NetInterface *interface)
LAN9646 Ethernet switch initialization.
Definition: lan9646_driver.c:96
#define LAN9646_PORTn_OP_CTRL0_TAIL_TAG_EN
Definition: lan9646_driver.h:1365
#define LAN9646_PORTn_XMII_CTRL1_IF_TYPE
Definition: lan9646_driver.h:1395
void lan9646EnableRsvdMcastTable(NetInterface *interface, bool_t enable)
Enable reserved multicast table.
Definition: lan9646_driver.c:1183
void lan9646SetPortState(NetInterface *interface, uint8_t port, SwitchPortState state)
Set port state.
Definition: lan9646_driver.c:981
uint16_t lan9646ReadMmdReg(NetInterface *interface, uint8_t port, uint8_t devAddr, uint16_t regAddr)
Read MMD register.
Definition: lan9646_driver.c:1880
#define LAN9646_SWITCH_LUE_CTRL0_AGE_COUNT_DEFAULT
Definition: lan9646_driver.h:1086
Helper functions for Ethernet.
#define LAN9646_SWITCH_OP_START_SWITCH
Definition: lan9646_driver.h:1076
bool_t lan9646GetLinkState(NetInterface *interface, uint8_t port)
Get link state.
Definition: lan9646_driver.c:614
#define LAN9646_ALU_TABLE_ENTRY2_PORT4_FORWARD
Definition: lan9646_driver.h:1298
Debugging facilities.
#define LAN9646_PORTn_MSTP_STATE_LEARNING_DIS
Definition: lan9646_driver.h:1462
#define LAN9646_SGMII_CTRL_SPEED_SEL_MSB
Definition: lan9646_driver.h:884
