KSZ9567 7-port Gigabit Ethernet switch driver. More...
#include "core/net.h"#include "core/ethernet_misc.h"#include "drivers/switch/ksz9567_driver.h"#include "debug.h"Go to the source code of this file.
Macros | |
| #define | TRACE_LEVEL NIC_TRACE_LEVEL |
Functions | |
| error_t | ksz9567Init (NetInterface *interface) |
| KSZ9567 Ethernet switch initialization. More... | |
| __weak_func void | ksz9567InitHook (NetInterface *interface) |
| KSZ9567 custom configuration. More... | |
| __weak_func void | ksz9567Tick (NetInterface *interface) |
| KSZ9567 timer handler. More... | |
| void | ksz9567EnableIrq (NetInterface *interface) |
| Enable interrupts. More... | |
| void | ksz9567DisableIrq (NetInterface *interface) |
| Disable interrupts. More... | |
| __weak_func void | ksz9567EventHandler (NetInterface *interface) |
| KSZ9567 event handler. More... | |
| error_t | ksz9567TagFrame (NetInterface *interface, NetBuffer *buffer, size_t *offset, NetTxAncillary *ancillary) |
| Add tail tag to Ethernet frame. More... | |
| error_t | ksz9567UntagFrame (NetInterface *interface, uint8_t **frame, size_t *length, NetRxAncillary *ancillary) |
| Decode tail tag from incoming Ethernet frame. More... | |
| bool_t | ksz9567GetLinkState (NetInterface *interface, uint8_t port) |
| Get link state. More... | |
| uint32_t | ksz9567GetLinkSpeed (NetInterface *interface, uint8_t port) |
| Get link speed. More... | |
| NicDuplexMode | ksz9567GetDuplexMode (NetInterface *interface, uint8_t port) |
| Get duplex mode. More... | |
| __weak_func bool_t | ksz9567GetPort7LinkState (NetInterface *interface) |
| Get port 7 link state. More... | |
| __weak_func uint32_t | ksz9567GetPort7LinkSpeed (NetInterface *interface) |
| Get port 7 link speed. More... | |
| __weak_func NicDuplexMode | ksz9567GetPort7DuplexMode (NetInterface *interface) |
| Get port 7 duplex mode. More... | |
| void | ksz9567SetPortState (NetInterface *interface, uint8_t port, SwitchPortState state) |
| Set port state. More... | |
| SwitchPortState | ksz9567GetPortState (NetInterface *interface, uint8_t port) |
| Get port state. More... | |
| void | ksz9567SetAgingTime (NetInterface *interface, uint32_t agingTime) |
| Set aging time for dynamic filtering entries. More... | |
| void | ksz9567EnableIgmpSnooping (NetInterface *interface, bool_t enable) |
| Enable IGMP snooping. More... | |
| void | ksz9567EnableMldSnooping (NetInterface *interface, bool_t enable) |
| Enable MLD snooping. More... | |
| void | ksz9567EnableRsvdMcastTable (NetInterface *interface, bool_t enable) |
| Enable reserved multicast table. More... | |
| error_t | ksz9567AddStaticFdbEntry (NetInterface *interface, const SwitchFdbEntry *entry) |
| Add a new entry to the static MAC table. More... | |
| error_t | ksz9567DeleteStaticFdbEntry (NetInterface *interface, const SwitchFdbEntry *entry) |
| Remove an entry from the static MAC table. More... | |
| error_t | ksz9567GetStaticFdbEntry (NetInterface *interface, uint_t index, SwitchFdbEntry *entry) |
| Read an entry from the static MAC table. More... | |
| void | ksz9567FlushStaticFdbTable (NetInterface *interface) |
| Flush static MAC table. More... | |
| error_t | ksz9567GetDynamicFdbEntry (NetInterface *interface, uint_t index, SwitchFdbEntry *entry) |
| Read an entry from the dynamic MAC table. More... | |
| void | ksz9567FlushDynamicFdbTable (NetInterface *interface, uint8_t port) |
| Flush dynamic MAC table. More... | |
| void | ksz9567SetUnknownMcastFwdPorts (NetInterface *interface, bool_t enable, uint32_t forwardPorts) |
| Set forward ports for unknown multicast packets. More... | |
| void | ksz9567WritePhyReg (NetInterface *interface, uint8_t port, uint8_t address, uint16_t data) |
| Write PHY register. More... | |
| uint16_t | ksz9567ReadPhyReg (NetInterface *interface, uint8_t port, uint8_t address) |
| Read PHY register. More... | |
| void | ksz9567DumpPhyReg (NetInterface *interface, uint8_t port) |
| Dump PHY registers for debugging purpose. More... | |
| void | ksz9567WriteMmdReg (NetInterface *interface, uint8_t port, uint8_t devAddr, uint16_t regAddr, uint16_t data) |
| Write MMD register. More... | |
| uint16_t | ksz9567ReadMmdReg (NetInterface *interface, uint8_t port, uint8_t devAddr, uint16_t regAddr) |
| Read MMD register. More... | |
| void | ksz9567WriteSgmiiReg (NetInterface *interface, uint32_t address, uint16_t data) |
| Write SGMII register. More... | |
| uint16_t | ksz9567ReadSgmiiReg (NetInterface *interface, uint32_t address) |
| Read SGMII register. More... | |
| void | ksz9567WriteSwitchReg8 (NetInterface *interface, uint16_t address, uint8_t data) |
| Write switch register (8 bits) More... | |
| uint8_t | ksz9567ReadSwitchReg8 (NetInterface *interface, uint16_t address) |
| Read switch register (8 bits) More... | |
| void | ksz9567WriteSwitchReg16 (NetInterface *interface, uint16_t address, uint16_t data) |
| Write switch register (16 bits) More... | |
| uint16_t | ksz9567ReadSwitchReg16 (NetInterface *interface, uint16_t address) |
| Read switch register (16 bits) More... | |
| void | ksz9567WriteSwitchReg32 (NetInterface *interface, uint16_t address, uint32_t data) |
| Write switch register (32 bits) More... | |
| uint32_t | ksz9567ReadSwitchReg32 (NetInterface *interface, uint16_t address) |
| Read switch register (32 bits) More... | |
Variables | |
| const SwitchDriver | ksz9567SwitchDriver |
| KSZ9567 Ethernet switch driver. More... | |
| const uint16_t | ksz9567IngressTailTag [8] |
| Tail tag rules (host to KSZ9567) More... | |
Detailed Description
KSZ9567 7-port Gigabit Ethernet switch driver.
License
SPDX-License-Identifier: GPL-2.0-or-later
Copyright (C) 2010-2026 Oryx Embedded SARL. All rights reserved.
This file is part of CycloneTCP Open.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- Version
- 2.6.0
Definition in file ksz9567_driver.c.
Macro Definition Documentation
◆ TRACE_LEVEL
| #define TRACE_LEVEL NIC_TRACE_LEVEL |
Definition at line 32 of file ksz9567_driver.c.
Function Documentation
◆ ksz9567AddStaticFdbEntry()
| error_t ksz9567AddStaticFdbEntry | ( | NetInterface * | interface, |
| const SwitchFdbEntry * | entry | ||
| ) |
Add a new entry to the static MAC table.
- Parameters
-
[in] interface Underlying network interface [in] entry Pointer to the forwarding database entry
- Returns
- Error code
Definition at line 1087 of file ksz9567_driver.c.
◆ ksz9567DeleteStaticFdbEntry()
| error_t ksz9567DeleteStaticFdbEntry | ( | NetInterface * | interface, |
| const SwitchFdbEntry * | entry | ||
| ) |
Remove an entry from the static MAC table.
- Parameters
-
[in] interface Underlying network interface [in] entry Forwarding database entry to remove from the table
- Returns
- Error code
Definition at line 1209 of file ksz9567_driver.c.
◆ ksz9567DisableIrq()
| void ksz9567DisableIrq | ( | NetInterface * | interface | ) |
Disable interrupts.
- Parameters
-
[in] interface Underlying network interface
Definition at line 354 of file ksz9567_driver.c.
◆ ksz9567DumpPhyReg()
| void ksz9567DumpPhyReg | ( | NetInterface * | interface, |
| uint8_t | port | ||
| ) |
Dump PHY registers for debugging purpose.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
Definition at line 1704 of file ksz9567_driver.c.
◆ ksz9567EnableIgmpSnooping()
| void ksz9567EnableIgmpSnooping | ( | NetInterface * | interface, |
| bool_t | enable | ||
| ) |
Enable IGMP snooping.
- Parameters
-
[in] interface Underlying network interface [in] enable Enable or disable IGMP snooping
Definition at line 998 of file ksz9567_driver.c.
◆ ksz9567EnableIrq()
| void ksz9567EnableIrq | ( | NetInterface * | interface | ) |
Enable interrupts.
- Parameters
-
[in] interface Underlying network interface
Definition at line 344 of file ksz9567_driver.c.
◆ ksz9567EnableMldSnooping()
| void ksz9567EnableMldSnooping | ( | NetInterface * | interface, |
| bool_t | enable | ||
| ) |
Enable MLD snooping.
- Parameters
-
[in] interface Underlying network interface [in] enable Enable or disable MLD snooping
Definition at line 1028 of file ksz9567_driver.c.
◆ ksz9567EnableRsvdMcastTable()
| void ksz9567EnableRsvdMcastTable | ( | NetInterface * | interface, |
| bool_t | enable | ||
| ) |
Enable reserved multicast table.
- Parameters
-
[in] interface Underlying network interface [in] enable Enable or disable reserved group addresses
Definition at line 1058 of file ksz9567_driver.c.
◆ ksz9567EventHandler()
| __weak_func void ksz9567EventHandler | ( | NetInterface * | interface | ) |
KSZ9567 event handler.
- Parameters
-
[in] interface Underlying network interface
Definition at line 364 of file ksz9567_driver.c.
◆ ksz9567FlushDynamicFdbTable()
| void ksz9567FlushDynamicFdbTable | ( | NetInterface * | interface, |
| uint8_t | port | ||
| ) |
Flush dynamic MAC table.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
Definition at line 1542 of file ksz9567_driver.c.
◆ ksz9567FlushStaticFdbTable()
| void ksz9567FlushStaticFdbTable | ( | NetInterface * | interface | ) |
Flush static MAC table.
- Parameters
-
[in] interface Underlying network interface
Definition at line 1386 of file ksz9567_driver.c.
◆ ksz9567GetDuplexMode()
| NicDuplexMode ksz9567GetDuplexMode | ( | NetInterface * | interface, |
| uint8_t | port | ||
| ) |
Get duplex mode.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
- Returns
- Duplex mode
Definition at line 748 of file ksz9567_driver.c.
◆ ksz9567GetDynamicFdbEntry()
| error_t ksz9567GetDynamicFdbEntry | ( | NetInterface * | interface, |
| uint_t | index, | ||
| SwitchFdbEntry * | entry | ||
| ) |
Read an entry from the dynamic MAC table.
- Parameters
-
[in] interface Underlying network interface [in] index Zero-based index of the entry to read [out] entry Pointer to the forwarding database entry
- Returns
- Error code
Definition at line 1435 of file ksz9567_driver.c.
◆ ksz9567GetLinkSpeed()
| uint32_t ksz9567GetLinkSpeed | ( | NetInterface * | interface, |
| uint8_t | port | ||
| ) |
Get link speed.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
- Returns
- Link speed
Definition at line 648 of file ksz9567_driver.c.
◆ ksz9567GetLinkState()
| bool_t ksz9567GetLinkState | ( | NetInterface * | interface, |
| uint8_t | port | ||
| ) |
Get link state.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
- Returns
- Link state
Definition at line 609 of file ksz9567_driver.c.
◆ ksz9567GetPort7DuplexMode()
| __weak_func NicDuplexMode ksz9567GetPort7DuplexMode | ( | NetInterface * | interface | ) |
Get port 7 duplex mode.
- Parameters
-
[in] interface Underlying network interface
- Returns
- Duplex mode
Definition at line 842 of file ksz9567_driver.c.
◆ ksz9567GetPort7LinkSpeed()
| __weak_func uint32_t ksz9567GetPort7LinkSpeed | ( | NetInterface * | interface | ) |
Get port 7 link speed.
- Parameters
-
[in] interface Underlying network interface
- Returns
- Link speed
Definition at line 829 of file ksz9567_driver.c.
◆ ksz9567GetPort7LinkState()
| __weak_func bool_t ksz9567GetPort7LinkState | ( | NetInterface * | interface | ) |
Get port 7 link state.
- Parameters
-
[in] interface Underlying network interface
- Returns
- Link state
Definition at line 816 of file ksz9567_driver.c.
◆ ksz9567GetPortState()
| SwitchPortState ksz9567GetPortState | ( | NetInterface * | interface, |
| uint8_t | port | ||
| ) |
Get port state.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
- Returns
- Port state
Definition at line 913 of file ksz9567_driver.c.
◆ ksz9567GetStaticFdbEntry()
| error_t ksz9567GetStaticFdbEntry | ( | NetInterface * | interface, |
| uint_t | index, | ||
| SwitchFdbEntry * | entry | ||
| ) |
Read an entry from the static MAC table.
- Parameters
-
[in] interface Underlying network interface [in] index Zero-based index of the entry to read [out] entry Pointer to the forwarding database entry
- Returns
- Error code
Definition at line 1289 of file ksz9567_driver.c.
◆ ksz9567Init()
| error_t ksz9567Init | ( | NetInterface * | interface | ) |
KSZ9567 Ethernet switch initialization.
- Parameters
-
[in] interface Underlying network interface
- Returns
- Error code
Definition at line 96 of file ksz9567_driver.c.
◆ ksz9567InitHook()
| __weak_func void ksz9567InitHook | ( | NetInterface * | interface | ) |
KSZ9567 custom configuration.
- Parameters
-
[in] interface Underlying network interface
Definition at line 256 of file ksz9567_driver.c.
◆ ksz9567ReadMmdReg()
| uint16_t ksz9567ReadMmdReg | ( | NetInterface * | interface, |
| uint8_t | port, | ||
| uint8_t | devAddr, | ||
| uint16_t | regAddr | ||
| ) |
Read MMD register.
- Parameters
-
[in] interface Underlying network interface [in] port Port number [in] devAddr Device address [in] regAddr Register address
- Returns
- Register value
Definition at line 1758 of file ksz9567_driver.c.
◆ ksz9567ReadPhyReg()
| uint16_t ksz9567ReadPhyReg | ( | NetInterface * | interface, |
| uint8_t | port, | ||
| uint8_t | address | ||
| ) |
Read PHY register.
- Parameters
-
[in] interface Underlying network interface [in] port Port number [in] address PHY register address
- Returns
- Register value
Definition at line 1668 of file ksz9567_driver.c.
◆ ksz9567ReadSgmiiReg()
| uint16_t ksz9567ReadSgmiiReg | ( | NetInterface * | interface, |
| uint32_t | address | ||
| ) |
Read SGMII register.
- Parameters
-
[in] interface Underlying network interface [in] address SGMII register address
- Returns
- Register value
Definition at line 1802 of file ksz9567_driver.c.
◆ ksz9567ReadSwitchReg16()
| uint16_t ksz9567ReadSwitchReg16 | ( | NetInterface * | interface, |
| uint16_t | address | ||
| ) |
Read switch register (16 bits)
- Parameters
-
[in] interface Underlying network interface [in] address Switch register address
- Returns
- Register value
Definition at line 1953 of file ksz9567_driver.c.
◆ ksz9567ReadSwitchReg32()
| uint32_t ksz9567ReadSwitchReg32 | ( | NetInterface * | interface, |
| uint16_t | address | ||
| ) |
Read switch register (32 bits)
- Parameters
-
[in] interface Underlying network interface [in] address Switch register address
- Returns
- Register value
Definition at line 2047 of file ksz9567_driver.c.
◆ ksz9567ReadSwitchReg8()
| uint8_t ksz9567ReadSwitchReg8 | ( | NetInterface * | interface, |
| uint16_t | address | ||
| ) |
Read switch register (8 bits)
- Parameters
-
[in] interface Underlying network interface [in] address Switch register address
- Returns
- Register value
Definition at line 1862 of file ksz9567_driver.c.
◆ ksz9567SetAgingTime()
| void ksz9567SetAgingTime | ( | NetInterface * | interface, |
| uint32_t | agingTime | ||
| ) |
Set aging time for dynamic filtering entries.
- Parameters
-
[in] interface Underlying network interface [in] agingTime Aging time, in seconds
Definition at line 977 of file ksz9567_driver.c.
◆ ksz9567SetPortState()
| void ksz9567SetPortState | ( | NetInterface * | interface, |
| uint8_t | port, | ||
| SwitchPortState | state | ||
| ) |
Set port state.
- Parameters
-
[in] interface Underlying network interface [in] port Port number [in] state Port state
Definition at line 856 of file ksz9567_driver.c.
◆ ksz9567SetUnknownMcastFwdPorts()
| void ksz9567SetUnknownMcastFwdPorts | ( | NetInterface * | interface, |
| bool_t | enable, | ||
| uint32_t | forwardPorts | ||
| ) |
Set forward ports for unknown multicast packets.
- Parameters
-
[in] interface Underlying network interface [in] enable Enable or disable forwarding of unknown multicast packets [in] forwardPorts Port map
Definition at line 1589 of file ksz9567_driver.c.
◆ ksz9567TagFrame()
| error_t ksz9567TagFrame | ( | NetInterface * | interface, |
| NetBuffer * | buffer, | ||
| size_t * | offset, | ||
| NetTxAncillary * | ancillary | ||
| ) |
Add tail tag to Ethernet frame.
- Parameters
-
[in] interface Underlying network interface [in] buffer Multi-part buffer containing the payload [in,out] offset Offset to the first payload byte [in] ancillary Additional options passed to the stack along with the packet
- Returns
- Error code
Definition at line 498 of file ksz9567_driver.c.
◆ ksz9567Tick()
| __weak_func void ksz9567Tick | ( | NetInterface * | interface | ) |
KSZ9567 timer handler.
- Parameters
-
[in] interface Underlying network interface
Definition at line 266 of file ksz9567_driver.c.
◆ ksz9567UntagFrame()
| error_t ksz9567UntagFrame | ( | NetInterface * | interface, |
| uint8_t ** | frame, | ||
| size_t * | length, | ||
| NetRxAncillary * | ancillary | ||
| ) |
Decode tail tag from incoming Ethernet frame.
- Parameters
-
[in] interface Underlying network interface [in,out] frame Pointer to the received Ethernet frame [in,out] length Length of the frame, in bytes [in,out] ancillary Additional options passed to the stack along with the packet
- Returns
- Error code
Definition at line 557 of file ksz9567_driver.c.
◆ ksz9567WriteMmdReg()
| void ksz9567WriteMmdReg | ( | NetInterface * | interface, |
| uint8_t | port, | ||
| uint8_t | devAddr, | ||
| uint16_t | regAddr, | ||
| uint16_t | data | ||
| ) |
Write MMD register.
- Parameters
-
[in] interface Underlying network interface [in] port Port number [in] devAddr Device address [in] regAddr Register address [in] data Register value
Definition at line 1730 of file ksz9567_driver.c.
◆ ksz9567WritePhyReg()
| void ksz9567WritePhyReg | ( | NetInterface * | interface, |
| uint8_t | port, | ||
| uint8_t | address, | ||
| uint16_t | data | ||
| ) |
Write PHY register.
- Parameters
-
[in] interface Underlying network interface [in] port Port number [in] address PHY register address [in] data Register value
Definition at line 1634 of file ksz9567_driver.c.
◆ ksz9567WriteSgmiiReg()
| void ksz9567WriteSgmiiReg | ( | NetInterface * | interface, |
| uint32_t | address, | ||
| uint16_t | data | ||
| ) |
Write SGMII register.
- Parameters
-
[in] interface Underlying network interface [in] address SGMII register address [in] data Register value
Definition at line 1784 of file ksz9567_driver.c.
◆ ksz9567WriteSwitchReg16()
| void ksz9567WriteSwitchReg16 | ( | NetInterface * | interface, |
| uint16_t | address, | ||
| uint16_t | data | ||
| ) |
Write switch register (16 bits)
- Parameters
-
[in] interface Underlying network interface [in] address Switch register address [in] data Register value
Definition at line 1909 of file ksz9567_driver.c.
◆ ksz9567WriteSwitchReg32()
| void ksz9567WriteSwitchReg32 | ( | NetInterface * | interface, |
| uint16_t | address, | ||
| uint32_t | data | ||
| ) |
Write switch register (32 bits)
- Parameters
-
[in] interface Underlying network interface [in] address Switch register address [in] data Register value
Definition at line 2001 of file ksz9567_driver.c.
◆ ksz9567WriteSwitchReg8()
| void ksz9567WriteSwitchReg8 | ( | NetInterface * | interface, |
| uint16_t | address, | ||
| uint8_t | data | ||
| ) |
Write switch register (8 bits)
- Parameters
-
[in] interface Underlying network interface [in] address Switch register address [in] data Register value
Definition at line 1819 of file ksz9567_driver.c.
Variable Documentation
◆ ksz9567IngressTailTag
| const uint16_t ksz9567IngressTailTag[8] |
Tail tag rules (host to KSZ9567)
Definition at line 77 of file ksz9567_driver.c.
◆ ksz9567SwitchDriver
| const SwitchDriver ksz9567SwitchDriver |
