LAN9370 5-port 100Base-T1 Ethernet switch driver. More...
#include "core/net.h"
#include "core/ethernet_misc.h"
#include "drivers/switch/lan9370_driver.h"
#include "debug.h"
Go to the source code of this file.
Macros | |
#define | TRACE_LEVEL NIC_TRACE_LEVEL |
Functions | |
error_t | lan9370Init (NetInterface *interface) |
LAN9370 Ethernet switch initialization. More... | |
__weak_func void | lan9370InitHook (NetInterface *interface) |
LAN9370 custom configuration. More... | |
void | lan9370Tick (NetInterface *interface) |
LAN9370 timer handler. More... | |
void | lan9370EnableIrq (NetInterface *interface) |
Enable interrupts. More... | |
void | lan9370DisableIrq (NetInterface *interface) |
Disable interrupts. More... | |
void | lan9370EventHandler (NetInterface *interface) |
LAN9370 event handler. More... | |
error_t | lan9370TagFrame (NetInterface *interface, NetBuffer *buffer, size_t *offset, NetTxAncillary *ancillary) |
Add tail tag to Ethernet frame. More... | |
error_t | lan9370UntagFrame (NetInterface *interface, uint8_t **frame, size_t *length, NetRxAncillary *ancillary) |
Decode tail tag from incoming Ethernet frame. More... | |
bool_t | lan9370GetLinkState (NetInterface *interface, uint8_t port) |
Get link state. More... | |
uint32_t | lan9370GetLinkSpeed (NetInterface *interface, uint8_t port) |
Get link speed. More... | |
NicDuplexMode | lan9370GetDuplexMode (NetInterface *interface, uint8_t port) |
Get duplex mode. More... | |
void | lan9370SetPortState (NetInterface *interface, uint8_t port, SwitchPortState state) |
Set port state. More... | |
SwitchPortState | lan9370GetPortState (NetInterface *interface, uint8_t port) |
Get port state. More... | |
void | lan9370SetAgingTime (NetInterface *interface, uint32_t agingTime) |
Set aging time for dynamic filtering entries. More... | |
void | lan9370EnableIgmpSnooping (NetInterface *interface, bool_t enable) |
Enable IGMP snooping. More... | |
void | lan9370EnableMldSnooping (NetInterface *interface, bool_t enable) |
Enable MLD snooping. More... | |
void | lan9370EnableRsvdMcastTable (NetInterface *interface, bool_t enable) |
Enable reserved multicast table. More... | |
error_t | lan9370AddStaticFdbEntry (NetInterface *interface, const SwitchFdbEntry *entry) |
Add a new entry to the static MAC table. More... | |
error_t | lan9370DeleteStaticFdbEntry (NetInterface *interface, const SwitchFdbEntry *entry) |
Remove an entry from the static MAC table. More... | |
error_t | lan9370GetStaticFdbEntry (NetInterface *interface, uint_t index, SwitchFdbEntry *entry) |
Read an entry from the static MAC table. More... | |
void | lan9370FlushStaticFdbTable (NetInterface *interface) |
Flush static MAC table. More... | |
error_t | lan9370GetDynamicFdbEntry (NetInterface *interface, uint_t index, SwitchFdbEntry *entry) |
Read an entry from the dynamic MAC table. More... | |
void | lan9370FlushDynamicFdbTable (NetInterface *interface, uint8_t port) |
Flush dynamic MAC table. More... | |
void | lan9370SetUnknownMcastFwdPorts (NetInterface *interface, bool_t enable, uint32_t forwardPorts) |
Set forward ports for unknown multicast packets. More... | |
void | lan9370WritePhyReg (NetInterface *interface, uint8_t port, uint8_t address, uint16_t data) |
Write PHY register. More... | |
uint16_t | lan9370ReadPhyReg (NetInterface *interface, uint8_t port, uint8_t address) |
Read PHY register. More... | |
void | lan9370DumpPhyReg (NetInterface *interface, uint8_t port) |
Dump PHY registers for debugging purpose. More... | |
void | lan9370WriteExtReg (NetInterface *interface, uint8_t port, uint8_t bank, uint8_t addr, uint16_t data) |
Write extended register. More... | |
uint16_t | lan9370ReadExtReg (NetInterface *interface, uint8_t port, uint8_t bank, uint8_t addr) |
Read extended register. More... | |
void | lan9370WriteSwitchReg8 (NetInterface *interface, uint16_t address, uint8_t data) |
Write switch register (8 bits) More... | |
uint8_t | lan9370ReadSwitchReg8 (NetInterface *interface, uint16_t address) |
Read switch register (8 bits) More... | |
void | lan9370WriteSwitchReg16 (NetInterface *interface, uint16_t address, uint16_t data) |
Write switch register (16 bits) More... | |
uint16_t | lan9370ReadSwitchReg16 (NetInterface *interface, uint16_t address) |
Read switch register (16 bits) More... | |
void | lan9370WriteSwitchReg32 (NetInterface *interface, uint16_t address, uint32_t data) |
Write switch register (32 bits) More... | |
uint32_t | lan9370ReadSwitchReg32 (NetInterface *interface, uint16_t address) |
Read switch register (32 bits) More... | |
Variables | |
const SwitchDriver | lan9370SwitchDriver |
LAN9370 Ethernet switch driver. More... | |
const uint16_t | lan9370IngressTailTag [5] |
Tail tag rules (host to LAN9370) More... | |
Detailed Description
LAN9370 5-port 100Base-T1 Ethernet switch driver.
License
SPDX-License-Identifier: GPL-2.0-or-later
Copyright (C) 2010-2024 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.4.4
Definition in file lan9370_driver.c.
Macro Definition Documentation
◆ TRACE_LEVEL
#define TRACE_LEVEL NIC_TRACE_LEVEL |
Definition at line 32 of file lan9370_driver.c.
Function Documentation
◆ lan9370AddStaticFdbEntry()
error_t lan9370AddStaticFdbEntry | ( | 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 959 of file lan9370_driver.c.
◆ lan9370DeleteStaticFdbEntry()
error_t lan9370DeleteStaticFdbEntry | ( | 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 1080 of file lan9370_driver.c.
◆ lan9370DisableIrq()
void lan9370DisableIrq | ( | NetInterface * | interface | ) |
Disable interrupts.
- Parameters
-
[in] interface Underlying network interface
Definition at line 319 of file lan9370_driver.c.
◆ lan9370DumpPhyReg()
void lan9370DumpPhyReg | ( | NetInterface * | interface, |
uint8_t | port | ||
) |
Dump PHY registers for debugging purpose.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
Definition at line 1594 of file lan9370_driver.c.
◆ lan9370EnableIgmpSnooping()
void lan9370EnableIgmpSnooping | ( | NetInterface * | interface, |
bool_t | enable | ||
) |
Enable IGMP snooping.
- Parameters
-
[in] interface Underlying network interface [in] enable Enable or disable IGMP snooping
Definition at line 870 of file lan9370_driver.c.
◆ lan9370EnableIrq()
void lan9370EnableIrq | ( | NetInterface * | interface | ) |
Enable interrupts.
- Parameters
-
[in] interface Underlying network interface
Definition at line 309 of file lan9370_driver.c.
◆ lan9370EnableMldSnooping()
void lan9370EnableMldSnooping | ( | NetInterface * | interface, |
bool_t | enable | ||
) |
Enable MLD snooping.
- Parameters
-
[in] interface Underlying network interface [in] enable Enable or disable MLD snooping
Definition at line 900 of file lan9370_driver.c.
◆ lan9370EnableRsvdMcastTable()
void lan9370EnableRsvdMcastTable | ( | 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 930 of file lan9370_driver.c.
◆ lan9370EventHandler()
void lan9370EventHandler | ( | NetInterface * | interface | ) |
LAN9370 event handler.
- Parameters
-
[in] interface Underlying network interface
Definition at line 329 of file lan9370_driver.c.
◆ lan9370FlushDynamicFdbTable()
void lan9370FlushDynamicFdbTable | ( | NetInterface * | interface, |
uint8_t | port | ||
) |
Flush dynamic MAC table.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
Definition at line 1405 of file lan9370_driver.c.
◆ lan9370FlushStaticFdbTable()
void lan9370FlushStaticFdbTable | ( | NetInterface * | interface | ) |
Flush static MAC table.
- Parameters
-
[in] interface Underlying network interface
Definition at line 1256 of file lan9370_driver.c.
◆ lan9370GetDuplexMode()
NicDuplexMode lan9370GetDuplexMode | ( | NetInterface * | interface, |
uint8_t | port | ||
) |
Get duplex mode.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
- Returns
- Duplex mode
Definition at line 672 of file lan9370_driver.c.
◆ lan9370GetDynamicFdbEntry()
error_t lan9370GetDynamicFdbEntry | ( | 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 1304 of file lan9370_driver.c.
◆ lan9370GetLinkSpeed()
uint32_t lan9370GetLinkSpeed | ( | NetInterface * | interface, |
uint8_t | port | ||
) |
Get link speed.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
- Returns
- Link speed
Definition at line 599 of file lan9370_driver.c.
◆ lan9370GetLinkState()
bool_t lan9370GetLinkState | ( | NetInterface * | interface, |
uint8_t | port | ||
) |
Get link state.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
- Returns
- Link state
Definition at line 565 of file lan9370_driver.c.
◆ lan9370GetPortState()
SwitchPortState lan9370GetPortState | ( | NetInterface * | interface, |
uint8_t | port | ||
) |
Get port state.
- Parameters
-
[in] interface Underlying network interface [in] port Port number
- Returns
- Port state
Definition at line 782 of file lan9370_driver.c.
◆ lan9370GetStaticFdbEntry()
error_t lan9370GetStaticFdbEntry | ( | 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 1159 of file lan9370_driver.c.
◆ lan9370Init()
error_t lan9370Init | ( | NetInterface * | interface | ) |
LAN9370 Ethernet switch initialization.
- Parameters
-
[in] interface Underlying network interface
- Returns
- Error code
Definition at line 97 of file lan9370_driver.c.
◆ lan9370InitHook()
__weak_func void lan9370InitHook | ( | NetInterface * | interface | ) |
LAN9370 custom configuration.
- Parameters
-
[in] interface Underlying network interface
Definition at line 229 of file lan9370_driver.c.
◆ lan9370ReadExtReg()
uint16_t lan9370ReadExtReg | ( | NetInterface * | interface, |
uint8_t | port, | ||
uint8_t | bank, | ||
uint8_t | addr | ||
) |
Read extended register.
- Parameters
-
[in] interface Underlying network interface [in] port Port number [in] bank Register bank [in] addr Register address
- Returns
- Extended register value
Definition at line 1649 of file lan9370_driver.c.
◆ lan9370ReadPhyReg()
uint16_t lan9370ReadPhyReg | ( | 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 1544 of file lan9370_driver.c.
◆ lan9370ReadSwitchReg16()
uint16_t lan9370ReadSwitchReg16 | ( | 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 1810 of file lan9370_driver.c.
◆ lan9370ReadSwitchReg32()
uint32_t lan9370ReadSwitchReg32 | ( | 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 1904 of file lan9370_driver.c.
◆ lan9370ReadSwitchReg8()
uint8_t lan9370ReadSwitchReg8 | ( | 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 1719 of file lan9370_driver.c.
◆ lan9370SetAgingTime()
void lan9370SetAgingTime | ( | 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 845 of file lan9370_driver.c.
◆ lan9370SetPortState()
void lan9370SetPortState | ( | 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 726 of file lan9370_driver.c.
◆ lan9370SetUnknownMcastFwdPorts()
void lan9370SetUnknownMcastFwdPorts | ( | 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 1452 of file lan9370_driver.c.
◆ lan9370TagFrame()
error_t lan9370TagFrame | ( | 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 454 of file lan9370_driver.c.
◆ lan9370Tick()
void lan9370Tick | ( | NetInterface * | interface | ) |
LAN9370 timer handler.
- Parameters
-
[in] interface Underlying network interface
Definition at line 239 of file lan9370_driver.c.
◆ lan9370UntagFrame()
error_t lan9370UntagFrame | ( | 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 513 of file lan9370_driver.c.
◆ lan9370WriteExtReg()
void lan9370WriteExtReg | ( | NetInterface * | interface, |
uint8_t | port, | ||
uint8_t | bank, | ||
uint8_t | addr, | ||
uint16_t | data | ||
) |
Write extended register.
- Parameters
-
[in] interface Underlying network interface [in] port Port number [in] bank Register bank [in] addr Register address [in] data Extended register value
Definition at line 1620 of file lan9370_driver.c.
◆ lan9370WritePhyReg()
void lan9370WritePhyReg | ( | 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 1497 of file lan9370_driver.c.
◆ lan9370WriteSwitchReg16()
void lan9370WriteSwitchReg16 | ( | 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 1766 of file lan9370_driver.c.
◆ lan9370WriteSwitchReg32()
void lan9370WriteSwitchReg32 | ( | 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 1858 of file lan9370_driver.c.
◆ lan9370WriteSwitchReg8()
void lan9370WriteSwitchReg8 | ( | 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 1676 of file lan9370_driver.c.
Variable Documentation
◆ lan9370IngressTailTag
const uint16_t lan9370IngressTailTag[5] |
Tail tag rules (host to LAN9370)
Definition at line 77 of file lan9370_driver.c.
◆ lan9370SwitchDriver
const SwitchDriver lan9370SwitchDriver |