Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

DM814x AM387x Switch Config User Guide

From Texas Instruments Wiki
Jump to: navigation, search
TIBanner.png
Ethernet Switch Config User Guide
Linux PSP
Template:PSP

Introduction

DM814x Switch can be configured in various different combination of Ethernet Packet forwarding and blocking. There is no such standard interface in Linux to configure a switch. This user guide provides an interface to configure the switch using Socket IOCTL through SIOCDEVPRIVATE command.

Switch Config Commands

Following is sample code for configuring the switch.

#include <stdio.h>
...
#include <linux/net_switch_config.h>
int main(void)
{
	struct net_switch_config cmd_struct;
	struct ifreq ifr;
	int sockfd;
	strncpy(ifr.ifr_name, "eth0", IFNAMSIZ);
	ifr.ifr_data = (char*)&cmd_struct;
	if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
		printf("Can't open the socket\n");
		return -1;
	}
	memset(&cmd_struct, 0, sizeof(struct net_switch_config));
 
	...//initialise cmd_struct with switch commands
 
	if (ioctl(sockfd, SIOCDEVPRIVATE, &ifr) < 0) {
		printf("Command failed\n");
		close(sockfd);
		return -1;
	}
	printf("command success\n");
	close(sockfd);
	return 0;
}

CONFIG_SWITCH_ADD_MULTICAST

CONFIG_SWITCH_ADD_MULTICAST is used to add a LLDP Multicast address and forward the multicast packet to the subscribed ports. If VLAN ID is greater than zero then VLAN LLDP/Multicast is added.

cmd_struct.cmd = CONFIG_SWITCH_ADD_MULTICAST

Parameter Description Range
cmd_struct.cmd_data.switchcmd.addr LLDP/Multicast Address MAC Address
cmd_struct.cmd_data.switchcmd.mem_port Member port

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 – 7
cmd_struct.cmd_data.switchcmd.vid VLAN ID 0 – 4095
cmd_struct.cmd_data.switchcmd.flag Super 0/1
cmd_struct.cmd_data.switchcmd.untag_port Multicast forward state 0 – 3


Result
ioctl call returns success or failure.


CONFIG_SWITCH_ADD_UNICAST

CONFIG_SWITCH_ADD_UNICAST is used to add a Unicast address and forward the unicast packet to that port. If VLAN ID is greater than zero then VLAN Unicast is added.

cmd_struct.cmd = CONFIG_SWITCH_ADD_UNICAST

Parameter Description Range
cmd_struct.cmd_data.switchcmd.addr Unicast Address MAC Address
cmd_struct.cmd_data.switchcmd.mem_port Port Number 0 – 2
cmd_struct.cmd_data.switchcmd.vid VLAN ID 0 – 4095
cmd_struct.cmd_data.switchcmd.blocked Blocked 0/1
cmd_struct.cmd_data.switchcmd.secure Secure Bit 0/1
cmd_struct.cmd_data.switchcmd.ageable Ageable 0/1


Result
ioctl call returns success or failure.


CONFIG_SWITCH_ADD_OUI

CONFIG_SWITCH_ADD_OUI is used to add a OUI address.

cmd_struct.cmd = CONFIG_SWITCH_ADD_OUI

Parameter Description Range
cmd_struct.cmd_data.switchcmd.addr Unicast Address MAC Address
cmd_struct.cmd_data.switchcmd.mem_port Member port

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 – 7


Result
ioctl call returns success or failure.


CONFIG_SWITCH_FIND_ADDR

CONFIG_SWITCH_FIND_ADDR is used to find a address with or without VLAN ID.

cmd_struct.cmd = CONFIG_SWITCH_FIND_ADDR

Parameter Description Range
cmd_struct.cmd_data.switchcmd.addr Unicast Address MAC Address
cmd_struct.cmd_data.switchcmd.vid VLAN ID 0 – 4095


Result
ioctl call returns success or failure.
On success cmd_struct.ret_type will hold the ALE table index

CONFIG_SWITCH_DEL_MULTICAST

CONFIG_SWITCH_DEL_MULTICAST is used to Delete a LLDP/Multicast address with or without VLAN ID.

cmd_struct.cmd = CONFIG_SWITCH_DEL_MULTICAST

Parameter Description Range
cmd_struct.cmd_data.switchcmd.addr Unicast Address MAC Address
cmd_struct.cmd_data.switchcmd.vid VLAN ID 0 – 4095
cmd_struct.cmd_data.switchcmd.mem_port Member port

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 – 7


Result
ioctl call returns success or failure.


CONFIG_SWITCH_DEL_UNICAST

CONFIG_SWITCH_DEL_UNICAST is used to Delete a Unicast address with or without VLAN ID.

cmd_struct.cmd = CONFIG_SWITCH_DEL_UNICAST

Parameter Description Range
cmd_struct.cmd_data.switchcmd.addr Unicast Address MAC Address
cmd_struct.cmd_data.switchcmd.vid VLAN ID 0 – 4095


Result
ioctl call returns success or failure.


CONFIG_SWITCH_ADD_VLAN

CONFIG_SWITCH_ADD_VLAN is used to add VLAN ID.

cmd_struct.cmd = CONFIG_SWITCH_ADD_VLAN

Parameter Description Range
cmd_struct.cmd_data.switchcmd.vid VLAN ID 0 – 4095
cmd_struct.cmd_data.switchcmd.mem_port Member port

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 – 7
cmd_struct.cmd_data.switchcmd.untag_port Untagged Egress port mask

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 – 7
cmd_struct.cmd_data.switchcmd.reg_multi Registered Multicast flood port mask

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 – 7
cmd_struct.cmd_data.switchcmd.unreg_multi Unknown Multicast flood port mask

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 – 7


Result
ioctl call returns success or failure.


CONFIG_SWITCH_FIND_VLAN

CONFIG_SWITCH_ADD_VLAN is used to add VLAN ID.

cmd_struct.cmd = CONFIG_SWITCH_ADD_VLAN

Parameter Description Range
cmd_struct.cmd_data.switchcmd.vid VLAN ID 0 – 4095


Result
ioctl call returns success or failure.
On success cmd_struct.ret_type will hold the ALE table index

CONFIG_SWITCH_DEL_VLAN

CONFIG_SWITCH_DEL_VLAN is used to delete VLAN ID.

cmd_struct.cmd = CONFIG_SWITCH_DEL_VLAN

Parameter Description Range
cmd_struct.cmd_data.switchcmd.vid VLAN ID 0 – 4095


Result
ioctl call returns success or failure.


CONFIG_SWITCH_SET_PORT_VLAN_CONFIG

CONFIG_SWITCH_SET_PORT_VLAN_CONFIG is used to set port VLAN ID.

cmd_struct.cmd = CONFIG_SWITCH_SET_PORT_VLAN_CONFIG

Parameter Description Range
cmd_struct.cmd_data.switchcmd.port Port number 0 - 2
cmd_struct.cmd_data.switchcmd.vid VLAN ID 0 – 4095
cmd_struct.cmd_data.switchcmd.prio_port VLAN Priority 0 – 7
cmd_struct.cmd_data.switchcmd.CFI_port VLAN CFI 0/1


Result
ioctl call returns success or failure.


CONFIG_SWITCH_TIMEOUT

CONFIG_SWITCH_TIMEOUT is used to set ALE aging timeout.

cmd_struct.cmd = CONFIG_SWITCH_TIMEOUT

Parameter Description Range
cmd_struct.cmd_data.switchcmd.ale_timeout ALE age out time Timeout in Milli second


Result
ioctl call returns success or failure.


CONFIG_SWITCH_DUMP

CONFIG_SWITCH_DUMP is used to dump ALE table.

cmd_struct.cmd = CONFIG_SWITCH_DUMP

Parameter Description Range
cmd_struct.cmd_data.switchcmd.aledump ALE index 0 - 1023


Result
ioctl call returns success or failure.
On success "cmd_struct.cmd_data.buf" holds ALE dump text.


CONFIG_SWITCH_SET_FLOW_CONTROL

CONFIG_SWITCH_SET_FLOW_CONTROL is used to set flow control of the ports.

cmd_struct.cmd = CONFIG_SWITCH_SET_FLOW_CONTROL

Parameter Description Range
cmd_struct.cmd_data.portcmd.port Port Mask

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 - 7


Result
ioctl call returns success or failure.


CONFIG_SWITCH_SET_PRIORITY_MAPPING

CONFIG_SWITCH_SET_PRIORITY_MAPPING is used to set priority mapping of the ports.

cmd_struct.cmd = CONFIG_SWITCH_SET_PRIORITY_MAPPING

Parameter Description Range
cmd_struct.cmd_data.portcmd.port Port Numnber 0 - 2
cmd_struct.cmd_data.priocmd.prio_rx Receive priority 0 - 7
cmd_struct.cmd_data.priocmd.prio_tx Transmit priority 0 - 7
cmd_struct.cmd_data.priocmd.prio_switch Switch priority 0 - 3


Result
ioctl call returns success or failure.


CONFIG_SWITCH_PORT_STATISTICS_ENABLE

CONFIG_SWITCH_PORT_STATISTICS_ENABLE is used to enable hardware statics of the ports.

cmd_struct.cmd = CONFIG_SWITCH_PORT_STATISTICS_ENABLE

Parameter Description Range
switch_config.cmd_data.switchcmd.mem_port Port Mask

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 - 7


Result
ioctl call returns success or failure.


CONFIG_SWITCH_CONFIG_DUMP

CONFIG_SWITCH_CONFIG_DUMP is used to dump the switch configuration.

cmd_struct.cmd = CONFIG_SWITCH_CONFIG_DUMP

Parameter Description Range
None - -


Result
ioctl call returns success or failure.
On success "cmd_struct.cmd_data.buf" holds Switch dump text.


CONFIG_SWITCH_RATELIMIT

CONFIG_SWITCH_RATELIMIT is used to enable/disable rate limit of the ports.

cmd_struct.cmd = CONFIG_SWITCH_RATELIMIT

Parameter Description Range
cmd_struct.cmd_data.portcmd.enable Enable/Disable Enable - 1
Disable - 0
cmd_struct.cmd_data.portcmd.direction Transmit/Receive Transmit - 0
Receive - 1
cmd_struct.cmd_data.portcmd.port Port number 0 - 2
cmd_struct.cmd_data.portcmd.addr_type Broadcast/Multicast ADDR_TYPE_BROADCAST /
ADDR_TYPE_MULTICAST
cmd_struct.cmd_data.portcmd.limit No of Packet 0 - 255


Result
ioctl call returns success or failure.


CONFIG_SWITCH_VID_INGRESS_CHECK

CONFIG_SWITCH_VID_INGRESS_CHECK is used to set VLAN Ingress Check.

cmd_struct.cmd = CONFIG_SWITCH_VID_INGRESS_CHECK

Parameter Description Range
cmd_struct.cmd_data.portcmd.port Port number 0 - 2
cmd_struct.cmd_data.portcmd.vlan_ingress_check Ingress enable/disable Enable - 1
Disable - 0
cmd_struct.cmd_data.portcmd.drop_untagged Drop untagged enable/disabe Enable - 1
Disable - 0


Result
ioctl call returns success or failure.


CONFIG_SWITCH_ADD_UNKNOWN_VLAN_INFO

CONFIG_SWITCH_ADD_UNKNOWN_VLAN_INFO is used to set unknown VLAN Info.

cmd_struct.cmd = CONFIG_SWITCH_ADD_UNKNOWN_VLAN_INFO

Parameter Description Range
cmd_struct.cmd_data.portcmd.port Port mask

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 - 7
cmd_struct.cmd_data.portcmd.reg_multi_port_mask Registered Multicast flood port mask

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 - 7
cmd_struct.cmd_data.portcmd.unknown_reg_multi_port_mask Unknown Multicast flood port mask

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 - 7
cmd_struct.cmd_data.portcmd.unknown_vlan_member Unknown Vlan Member port mask

Bit 0 – Host port/Port 0
Bit 1 – Slave 0/Port 1
Bit 2 – Slave 1/Port 2

0 - 7


Result
ioctl call returns success or failure.


CONFIG_SWITCH_802_1

CONFIG_SWITCH_802_1 is used to enable 802.1 packet forwarding.

cmd_struct.cmd = CONFIG_SWITCH_802_1

Parameter Description Range
cmd_struct.cmd_data.portcmd.enable Drop untagged enable/disabe Enable - 1
Disable - 0


Result
ioctl call returns success or failure.


CONFIG_SWITCH_MACAUTH

CONFIG_SWITCH_MACAUTH is used to enable 802.1 packet forwarding.

cmd_struct.cmd = CONFIG_SWITCH_MACAUTH

Parameter Description Range
cmd_struct.cmd_data.portcmd.enable Drop untagged enable/disabe Enable - 1
Disable - 0


Result
ioctl call returns success or failure.


CONFIG_SWITCH_SET_PORT_CONFIG

CONFIG_SWITCH_SET_PORT_CONFIG is used to set Phy Config.

cmd_struct.cmd = CONFIG_SWITCH_SET_PORT_CONFIG

Parameter Description Range
cmd_struct.cmd_data.portcmd.port Port number 0 - 2
cmd_struct.cmd_data.portcmd.limit Speed 0 - Auto/
10/100/1000
cmd_struct.cmd_data.portcmd.direction Duplexity Full - 1
Half - 0


Result
ioctl call returns success or failure.


CONFIG_SWITCH_GET_PORT_CONFIG

CONFIG_SWITCH_GET_PORT_CONFIG is used to get Phy Config.

cmd_struct.cmd = CONFIG_SWITCH_GET_PORT_CONFIG

Parameter Description Range
cmd_struct.cmd_data.portcmd.port Port number 0 - 2


Result
ioctl call returns success or failure.
On success "cmd_struct.cmd_data.portcmd.limit" holds port speed (0 - auto/10/100/1000) and "cmd_struct.cmd_data.portcmd.direction" holds duplexity (1 - Full Duplex / 0 - Half Duplex)


CONFIG_SWITCH_PORT_STATE

CONFIG_SWITCH_PORT_STATE is used to set port status.

cmd_struct.cmd = CONFIG_SWITCH_PORT_STATE

Parameter Description Range
cmd_struct.cmd_data.portcmd.port Port number 0 - 2
cmd_struct.cmd_data.portcmd.port_state Port state PORT_STATE_DISABLED/
PORT_STATE_BLOCKED/
PORT_STATE_LEARN/
PORT_STATE_FORWARD


Result
ioctl call returns success or failure.


CONFIG_SWITCH_RESET

CONFIG_SWITCH_RESET is used to reset the switch.

cmd_struct.cmd = CONFIG_SWITCH_RESET

Parameter Description Range
None - -


Result
ioctl call returns success or failure.