Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
net
ethernet
ti
cpsw_ale.h
Go to the documentation of this file.
1
/*
2
* Texas Instruments 3-Port Ethernet Switch Address Lookup Engine APIs
3
*
4
* Copyright (C) 2012 Texas Instruments
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License as
8
* published by the Free Software Foundation version 2.
9
*
10
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
11
* kind, whether express or implied; without even the implied warranty
12
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*/
15
#ifndef __TI_CPSW_ALE_H__
16
#define __TI_CPSW_ALE_H__
17
18
struct
cpsw_ale_params
{
19
struct
device
*
dev
;
20
void
__iomem
*
ale_regs
;
21
unsigned
long
ale_ageout
;
/* in secs */
22
unsigned
long
ale_entries
;
23
unsigned
long
ale_ports
;
24
};
25
26
struct
cpsw_ale
{
27
struct
cpsw_ale_params
params
;
28
struct
timer_list
timer
;
29
unsigned
long
ageout
;
30
};
31
32
enum
cpsw_ale_control
{
33
/* global */
34
ALE_ENABLE
,
35
ALE_CLEAR
,
36
ALE_AGEOUT
,
37
ALE_VLAN_NOLEARN
,
38
ALE_NO_PORT_VLAN
,
39
ALE_OUI_DENY
,
40
ALE_BYPASS
,
41
ALE_RATE_LIMIT_TX
,
42
ALE_VLAN_AWARE
,
43
ALE_AUTH_ENABLE
,
44
ALE_RATE_LIMIT
,
45
/* port controls */
46
ALE_PORT_STATE
,
47
ALE_PORT_DROP_UNTAGGED
,
48
ALE_PORT_DROP_UNKNOWN_VLAN
,
49
ALE_PORT_NOLEARN
,
50
ALE_PORT_UNKNOWN_VLAN_MEMBER
,
51
ALE_PORT_UNKNOWN_MCAST_FLOOD
,
52
ALE_PORT_UNKNOWN_REG_MCAST_FLOOD
,
53
ALE_PORT_UNTAGGED_EGRESS
,
54
ALE_PORT_BCAST_LIMIT
,
55
ALE_PORT_MCAST_LIMIT
,
56
ALE_NUM_CONTROLS
,
57
};
58
59
enum
cpsw_ale_port_state
{
60
ALE_PORT_STATE_DISABLE
= 0x00,
61
ALE_PORT_STATE_BLOCK
= 0x01,
62
ALE_PORT_STATE_LEARN
= 0x02,
63
ALE_PORT_STATE_FORWARD
= 0x03,
64
};
65
66
/* ALE unicast entry flags - passed into cpsw_ale_add_ucast() */
67
#define ALE_SECURE 1
68
#define ALE_BLOCKED 2
69
70
#define ALE_MCAST_FWD 0
71
#define ALE_MCAST_BLOCK_LEARN_FWD 1
72
#define ALE_MCAST_FWD_LEARN 2
73
#define ALE_MCAST_FWD_2 3
74
75
struct
cpsw_ale
*
cpsw_ale_create
(
struct
cpsw_ale_params
*
params
);
76
int
cpsw_ale_destroy
(
struct
cpsw_ale
*ale);
77
78
void
cpsw_ale_start
(
struct
cpsw_ale
*ale);
79
void
cpsw_ale_stop
(
struct
cpsw_ale
*ale);
80
81
int
cpsw_ale_set_ageout
(
struct
cpsw_ale
*ale,
int
ageout
);
82
int
cpsw_ale_flush
(
struct
cpsw_ale
*ale,
int
port_mask);
83
int
cpsw_ale_add_ucast
(
struct
cpsw_ale
*ale,
u8
*
addr
,
int
port
,
int
flags
);
84
int
cpsw_ale_del_ucast
(
struct
cpsw_ale
*ale,
u8
*
addr
,
int
port
);
85
int
cpsw_ale_add_mcast
(
struct
cpsw_ale
*ale,
u8
*
addr
,
int
port_mask,
86
int
super,
int
mcast_state
);
87
int
cpsw_ale_del_mcast
(
struct
cpsw_ale
*ale,
u8
*
addr
,
int
port_mask);
88
89
int
cpsw_ale_control_get
(
struct
cpsw_ale
*ale,
int
port
,
int
control
);
90
int
cpsw_ale_control_set
(
struct
cpsw_ale
*ale,
int
port
,
91
int
control
,
int
value
);
92
93
#endif
Generated on Thu Jan 10 2013 14:05:52 for Linux Kernel by
1.8.2