ksz9896_driver.c
Go to the documentation of this file.
Debugging facilities.
error_t ethPadFrame(NetBuffer *buffer, size_t *length)
Ethernet frame padding.
Definition: ethernet_misc.c:147
Helper functions for Ethernet.
void ksz9896EnableMldSnooping(NetInterface *interface, bool_t enable)
Enable MLD snooping.
Definition: ksz9896_driver.c:947
uint16_t ksz9896ReadPhyReg(NetInterface *interface, uint8_t port, uint8_t address)
Read PHY register.
Definition: ksz9896_driver.c:1584
uint32_t ksz9896ReadSwitchReg32(NetInterface *interface, uint16_t address)
Read switch register (32 bits)
Definition: ksz9896_driver.c:1928
void ksz9896WriteSwitchReg32(NetInterface *interface, uint16_t address, uint32_t data)
Write switch register (32 bits)
Definition: ksz9896_driver.c:1882
void ksz9896EventHandler(NetInterface *interface)
KSZ9896 event handler.
Definition: ksz9896_driver.c:348
uint8_t ksz9896ReadSwitchReg8(NetInterface *interface, uint16_t address)
Read switch register (8 bits)
Definition: ksz9896_driver.c:1743
error_t ksz9896UntagFrame(NetInterface *interface, uint8_t **frame, size_t *length, NetRxAncillary *ancillary)
Decode tail tag from incoming Ethernet frame.
Definition: ksz9896_driver.c:532
const uint16_t ksz9896IngressTailTag[6]
Tail tag rules (host to KSZ9896)
Definition: ksz9896_driver.c:77
NicDuplexMode ksz9896GetDuplexMode(NetInterface *interface, uint8_t port)
Get duplex mode.
Definition: ksz9896_driver.c:713
error_t ksz9896GetDynamicFdbEntry(NetInterface *interface, uint_t index, SwitchFdbEntry *entry)
Read an entry from the dynamic MAC table.
Definition: ksz9896_driver.c:1354
void ksz9896FlushDynamicFdbTable(NetInterface *interface, uint8_t port)
Flush dynamic MAC table.
Definition: ksz9896_driver.c:1458
error_t ksz9896Init(NetInterface *interface)
KSZ9896 Ethernet switch initialization.
Definition: ksz9896_driver.c:94
bool_t ksz9896GetLinkState(NetInterface *interface, uint8_t port)
Get link state.
Definition: ksz9896_driver.c:584
void ksz9896EnableIgmpSnooping(NetInterface *interface, bool_t enable)
Enable IGMP snooping.
Definition: ksz9896_driver.c:917
error_t ksz9896TagFrame(NetInterface *interface, NetBuffer *buffer, size_t *offset, NetTxAncillary *ancillary)
Add tail tag to Ethernet frame.
Definition: ksz9896_driver.c:473
__weak_func void ksz9896InitHook(NetInterface *interface)
KSZ9896 custom configuration.
Definition: ksz9896_driver.c:248
uint32_t ksz9896GetLinkSpeed(NetInterface *interface, uint8_t port)
Get link speed.
Definition: ksz9896_driver.c:618
error_t ksz9896DeleteStaticFdbEntry(NetInterface *interface, const SwitchFdbEntry *entry)
Remove an entry from the static MAC table.
Definition: ksz9896_driver.c:1128
void ksz9896DumpPhyReg(NetInterface *interface, uint8_t port)
Dump PHY registers for debugging purpose.
Definition: ksz9896_driver.c:1620
void ksz9896SetAgingTime(NetInterface *interface, uint32_t agingTime)
Set aging time for dynamic filtering entries.
Definition: ksz9896_driver.c:896
void ksz9896FlushStaticFdbTable(NetInterface *interface)
Flush static MAC table.
Definition: ksz9896_driver.c:1305
void ksz9896SetPortState(NetInterface *interface, uint8_t port, SwitchPortState state)
Set port state.
Definition: ksz9896_driver.c:777
void ksz9896EnableRsvdMcastTable(NetInterface *interface, bool_t enable)
Enable reserved multicast table.
Definition: ksz9896_driver.c:977
const SwitchDriver ksz9896SwitchDriver
KSZ9896 Ethernet switch driver.
Definition: ksz9896_driver.c:45
void ksz9896WriteMmdReg(NetInterface *interface, uint8_t port, uint8_t devAddr, uint16_t regAddr, uint16_t data)
Write MMD register.
Definition: ksz9896_driver.c:1646
void ksz9896WriteSwitchReg8(NetInterface *interface, uint16_t address, uint8_t data)
Write switch register (8 bits)
Definition: ksz9896_driver.c:1700
error_t ksz9896GetStaticFdbEntry(NetInterface *interface, uint_t index, SwitchFdbEntry *entry)
Read an entry from the static MAC table.
Definition: ksz9896_driver.c:1208
SwitchPortState ksz9896GetPortState(NetInterface *interface, uint8_t port)
Get port state.
Definition: ksz9896_driver.c:833
error_t ksz9896AddStaticFdbEntry(NetInterface *interface, const SwitchFdbEntry *entry)
Add a new entry to the static MAC table.
Definition: ksz9896_driver.c:1006
uint16_t ksz9896ReadMmdReg(NetInterface *interface, uint8_t port, uint8_t devAddr, uint16_t regAddr)
Read MMD register.
Definition: ksz9896_driver.c:1674
uint16_t ksz9896ReadSwitchReg16(NetInterface *interface, uint16_t address)
Read switch register (16 bits)
Definition: ksz9896_driver.c:1834
void ksz9896SetUnknownMcastFwdPorts(NetInterface *interface, bool_t enable, uint32_t forwardPorts)
Set forward ports for unknown multicast packets.
Definition: ksz9896_driver.c:1505
void ksz9896WriteSwitchReg16(NetInterface *interface, uint16_t address, uint16_t data)
Write switch register (16 bits)
Definition: ksz9896_driver.c:1790
void ksz9896WritePhyReg(NetInterface *interface, uint8_t port, uint8_t address, uint16_t data)
Write PHY register.
Definition: ksz9896_driver.c:1550
KSZ9896 6-port Gigabit Ethernet switch driver.
#define KSZ9896_ALU_TABLE_ENTRY2_PORT_FORWARD
Definition: ksz9896_driver.h:1208
#define KSZ9896_STATIC_MCAST_TABLE_CTRL_TABLE_SELECT
Definition: ksz9896_driver.h:1193
#define KSZ9896_SWITCH_LUE_CTRL1_FLUSH_ALU_TABLE
Definition: ksz9896_driver.h:1009
#define KSZ9896_SWITCH_LUE_CTRL0_HASH_OPTION_CRC
Definition: ksz9896_driver.h:1003
#define KSZ9896_PORTn_ETH_PHY_REG(port, addr)
Definition: ksz9896_driver.h:683
#define KSZ9896_PORT6_XMII_CTRL1_IF_TYPE_RGMII
Definition: ksz9896_driver.h:1300
#define KSZ9896_MMDACR_FUNC_DATA_NO_POST_INC
Definition: ksz9896_driver.h:785
#define KSZ9896_ALU_TABLE_CTRL_VALID_ENTRY_OR_SEARCH_END
Definition: ksz9896_driver.h:1182
#define KSZ9896_UNKONWN_MULTICAST_CTRL_FWD_MAP_PORT6
Definition: ksz9896_driver.h:1070
#define KSZ9896_ALU_TABLE_CTRL_START_FINISH
Definition: ksz9896_driver.h:1180
#define KSZ9896_PORT6_XMII_CTRL1_SPEED_1000
Definition: ksz9896_driver.h:1295
#define KSZ9896_UNKONWN_MULTICAST_CTRL
Definition: ksz9896_driver.h:143
#define KSZ9896_PORT6_XMII_CTRL1_IF_TYPE
Definition: ksz9896_driver.h:1299
#define KSZ9896_GLOBAL_PORT_MIRROR_SNOOP_CTRL_IGMP_SNOOP_EN
Definition: ksz9896_driver.h:1121
#define KSZ9896_PORTn_MSTP_STATE_TRANSMIT_EN
Definition: ksz9896_driver.h:1365
#define KSZ9896_STATIC_MCAST_TABLE_CTRL_ACTION
Definition: ksz9896_driver.h:1194
#define KSZ9896_ALU_TABLE_ENTRY2_PORT4_FORWARD
Definition: ksz9896_driver.h:1211
#define KSZ9896_ALU_TABLE_ENTRY2_PORT2_FORWARD
Definition: ksz9896_driver.h:1213
#define KSZ9896_PORTn_MSTP_STATE_LEARNING_DIS
Definition: ksz9896_driver.h:1367
#define KSZ9896_SWITCH_LUE_CTRL0_AGE_COUNT_DEFAULT
Definition: ksz9896_driver.h:999
#define KSZ9896_TAIL_TAG_PORT_BLOCKING_OVERRIDE
Definition: ksz9896_driver.h:65
#define KSZ9896_STATIC_MCAST_TABLE_CTRL_TABLE_INDEX
Definition: ksz9896_driver.h:1191
#define KSZ9896_GLOBAL_PORT_MIRROR_SNOOP_CTRL
Definition: ksz9896_driver.h:189
#define KSZ9896_ALU_TABLE_ENTRY2_PORT6_FORWARD
Definition: ksz9896_driver.h:1209
#define KSZ9896_SWITCH_LUE_CTRL0_RESERVED_MCAST_LOOKUP_EN
Definition: ksz9896_driver.h:1000
#define KSZ9896_PORTn_MSTP_STATE_RECEIVE_EN
Definition: ksz9896_driver.h:1366
#define KSZ9896_SWITCH_LUE_CTRL2_FLUSH_OPTION
Definition: ksz9896_driver.h:1020
#define KSZ9896_PORT6_XMII_CTRL1_RGMII_ID_EG
Definition: ksz9896_driver.h:1297
#define KSZ9896_PORT6_XMII_CTRL0_DUPLEX
Definition: ksz9896_driver.h:1289
#define KSZ9896_SWITCH_LUE_CTRL3_AGE_PERIOD_DEFAULT
Definition: ksz9896_driver.h:1029
#define KSZ9896_UNKONWN_MULTICAST_CTRL_FWD_MAP_ALL
Definition: ksz9896_driver.h:1071
#define KSZ9896_MMD_LED_MODE_RESERVED_DEFAULT
Definition: ksz9896_driver.h:851
#define KSZ9896_SWITCH_OP_START_SWITCH
Definition: ksz9896_driver.h:989
#define KSZ9896_ALU_TABLE_ENTRY2_PORT5_FORWARD
Definition: ksz9896_driver.h:1210
#define KSZ9896_UNKONWN_MULTICAST_CTRL_FWD
Definition: ksz9896_driver.h:1063
#define KSZ9896_PORT6_XMII_CTRL1_RGMII_ID_IG
Definition: ksz9896_driver.h:1296
#define KSZ9896_TAIL_TAG_NORMAL_ADDR_LOOKUP
Definition: ksz9896_driver.h:64
#define KSZ9896_STATIC_TABLE_ENTRY2_OVERRIDE
Definition: ksz9896_driver.h:1231
#define KSZ9896_PORTn_OP_CTRL0_TAIL_TAG_EN
Definition: ksz9896_driver.h:1276
#define KSZ9896_STATIC_TABLE_ENTRY2_PORT_FORWARD
Definition: ksz9896_driver.h:1233
#define KSZ9896_ALU_TABLE_ENTRY2_PORT1_FORWARD
Definition: ksz9896_driver.h:1214
#define KSZ9896_SWITCH_MAC_CTRL0_FRAME_LEN_CHECK_EN
Definition: ksz9896_driver.h:1086
#define KSZ9896_GLOBAL_PORT_MIRROR_SNOOP_CTRL_MLD_SNOOP_EN
Definition: ksz9896_driver.h:1123
#define KSZ9896_MMD_LED_MODE_LED_MODE_TRI_COLOR_DUAL
Definition: ksz9896_driver.h:848
#define KSZ9896_ALU_TABLE_CTRL_ACTION_SEARCH
Definition: ksz9896_driver.h:1188
#define KSZ9896_STATIC_MCAST_TABLE_CTRL
Definition: ksz9896_driver.h:200
#define KSZ9896_SWITCH_LUE_CTRL1_FLUSH_MSTP_ENTRIES
Definition: ksz9896_driver.h:1010
#define KSZ9896_STATIC_MCAST_TABLE_CTRL_START_FINISH
Definition: ksz9896_driver.h:1192
#define KSZ9896_STATIC_TABLE_ENTRY1_VALID
Definition: ksz9896_driver.h:1224
#define KSZ9896_PORT6_XMII_CTRL0_SPEED_10_100
Definition: ksz9896_driver.h:1291
#define KSZ9896_SWITCH_LUE_CTRL2_FLUSH_OPTION_DYNAMIC
Definition: ksz9896_driver.h:1022
#define KSZ9896_UNKONWN_MULTICAST_CTRL_FWD_MAP
Definition: ksz9896_driver.h:1064
#define KSZ9896_ALU_TABLE_ENTRY2_PORT3_FORWARD
Definition: ksz9896_driver.h:1212
TCP/IP stack core.
size_t netBufferGetLength(const NetBuffer *buffer)
Get the actual length of a multi-part buffer.
Definition: net_mem.c:297
error_t netBufferAppend(NetBuffer *dest, const void *src, size_t length)
Append data a multi-part buffer.
Definition: net_mem.c:588
void nicNotifyLinkChange(NetInterface *interface)
Process link state change notification.
Definition: nic.c:548
void osSetEvent(OsEvent *event)
Set the specified event object to the signaled state.
Definition: os_port_chibios.c:202