Lennert Buytenhek
91da11f870
net: Distributed Switch Architecture protocol support
...
Distributed Switch Architecture is a protocol for managing hardware
switch chips. It consists of a set of MII management registers and
commands to configure the switch, and an ethernet header format to
signal which of the ports of the switch a packet was received from
or is intended to be sent to.
The switches that this driver supports are typically embedded in
access points and routers, and a typical setup with a DSA switch
looks something like this:
+-----------+ +-----------+
| | RGMII | |
| +-------+ +------ 1000baseT MDI ("WAN")
| | | 6-port +------ 1000baseT MDI ("LAN1")
| CPU | | ethernet +------ 1000baseT MDI ("LAN2")
| |MIImgmt| switch +------ 1000baseT MDI ("LAN3")
| +-------+ w/5 PHYs +------ 1000baseT MDI ("LAN4")
| | | |
+-----------+ +-----------+
The switch driver presents each port on the switch as a separate
network interface to Linux, polls the switch to maintain software
link state of those ports, forwards MII management interface
accesses to those network interfaces (e.g. as done by ethtool) to
the switch, and exposes the switch's hardware statistics counters
via the appropriate Linux kernel interfaces.
This initial patch supports the MII management interface register
layout of the Marvell 88E6123, 88E6161 and 88E6165 switch chips, and
supports the "Ethertype DSA" packet tagging format.
(There is no officially registered ethertype for the Ethertype DSA
packet format, so we just grab a random one. The ethertype to use
is programmed into the switch, and the switch driver uses the value
of ETH_P_EDSA for this, so this define can be changed at any time in
the future if the one we chose is allocated to another protocol or
if Ethertype DSA gets its own officially registered ethertype, and
everything will continue to work.)
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Tested-by: Nicolas Pitre <nico@marvell.com>
Tested-by: Byron Bradley <byron.bbradley@gmail.com>
Tested-by: Tim Ellis <tim.ellis@mac.com>
Tested-by: Peter van Valderen <linux@ddcrew.com>
Tested-by: Dirk Teurlings <dirk@upexia.nl>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-10-08 17:15:19 -07:00
..
9p
9p: implement proper trans module refcounting and unregistration
2008-09-24 16:22:23 -05:00
bluetooth
[Bluetooth] Reject L2CAP connections on an insecure ACL link
2008-09-09 07:19:20 +02:00
irda
pkt_sched: Add qdisc_all_tx_empty()
2008-07-08 23:00:25 -07:00
iucv
netfilter
netfilter: iptables tproxy core
2008-10-08 11:35:12 +02:00
netns
ipv6: making ip and icmp statistics per/namespace
2008-10-08 11:16:45 -07:00
phonet
Phonet: implement GPRS virtual interface over PEP socket
2008-10-05 11:16:16 -07:00
sctp
sctp: shrink sctp_tsnmap some more by removing gabs array
2008-10-08 14:19:01 -07:00
tc_act
pkt_action: add new action skbedit
2008-09-12 16:30:20 -07:00
tipc
tipc: Remove unneeded parameter to tipc_createport_raw()
2008-07-14 22:42:19 -07:00
act_api.h
addrconf.h
netns: Add network namespace argument to rt6_fill_node() and ipv6_dev_get_saddr()
2008-08-14 15:33:21 -07:00
af_rxrpc.h
af_unix.h
[PATCH] f_count may wrap around
2008-07-26 20:53:40 -04:00
ah.h
arp.h
atmclip.h
ax25.h
[AX25] ax25_ds_timer: use mod_timer instead of add_timer
2008-02-12 17:53:34 -08:00
ax88796.h
cfg80211.h
cfg80211: show interface type
2008-09-24 16:18:00 -04:00
checksum.h
cipso_ipv4.h
compat.h
net: Use standard structures for generic socket address structures.
2008-07-19 22:35:47 -07:00
datalink.h
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h
net: Distributed Switch Architecture protocol support
2008-10-08 17:15:19 -07:00
dsfield.h
dst.h
net: Kill plain NET_XMIT_BYPASS.
2008-08-04 23:04:08 -07:00
esp.h
fib_rules.h
net: add fib_rules_ops to flush_cache method
2008-07-05 19:01:28 -07:00
flow.h
ipv4: Loosen source address check on IPv4 output
2008-10-01 07:28:28 -07:00
garp.h
vlan: Add GVRP support
2008-07-05 21:26:57 -07:00
gen_stats.h
genetlink.h
netlink: Improve returned error codes
2008-06-03 16:36:54 -07:00
icmp.h
mib: put icmpmsg statistics on struct net
2008-07-18 04:04:22 -07:00
ieee80211.h
ieee80211.h: remove superfluous ETH_P_PAE definition
2008-09-30 14:07:23 -04:00
ieee80211_crypt.h
ieee80211_radiotap.h
include: use get/put_unaligned_* helpers
2008-07-25 10:53:26 -07:00
if_inet6.h
ipv6: make struct ipv6_devconf static
2008-07-22 14:21:58 -07:00
inet6_connection_sock.h
inet6_hashtables.h
inet: Don't lookup the socket if there's a socket attached to the skb
2008-10-07 12:41:01 -07:00
inet_common.h
[NETNS]: Inet control socket should not hold a namespace.
2008-04-03 14:28:30 -07:00
inet_connection_sock.h
net: more #ifdef CONFIG_COMPAT
2008-08-28 02:53:51 -07:00
inet_ecn.h
[IPV6]: Use appropriate sock tclass setting for routing lookup.
2008-04-13 23:40:51 -07:00
inet_frag.h
[NET]: Rename inet_frag.h identifiers COMPLETE, FIRST_IN, LAST_IN to INET_FRAG_*
2008-03-28 16:35:27 -07:00
inet_hashtables.h
inet: Don't lookup the socket if there's a socket attached to the skb
2008-10-07 12:41:01 -07:00
inet_sock.h
tcp: Port redirection support for TCP
2008-10-01 07:46:49 -07:00
inet_timewait_sock.h
ipv4: Implement IP_TRANSPARENT socket option
2008-10-01 07:30:02 -07:00
inetpeer.h
net: remove CVS keywords
2008-06-11 21:00:38 -07:00
ip.h
inet: cleanup of local_port_range
2008-10-08 14:18:04 -07:00
ip6_checksum.h
ip6_fib.h
[NETNS][IPV6] rt6_info - move rt6_info structure inside the namespace
2008-03-04 13:48:30 -08:00
ip6_route.h
netns: Add network namespace argument to rt6_fill_node() and ipv6_dev_get_saddr()
2008-08-14 15:33:21 -07:00
ip6_tunnel.h
net: remove CVS keywords
2008-06-11 21:00:38 -07:00
ip_fib.h
ip_vs.h
ipv4: Make inet_sock.h independent of route.h
2008-10-01 07:33:10 -07:00
ipcomp.h
ipsec: ipcomp - Merge IPComp implementations
2008-07-25 02:54:40 -07:00
ipconfig.h
net: remove CVS keywords
2008-06-11 21:00:38 -07:00
ipip.h
tunnels: Remove stat member from ip_tunnel struct.
2008-05-21 14:16:36 -07:00
ipv6.h
ipv6: making ip and icmp statistics per/namespace
2008-10-08 11:16:45 -07:00
ipx.h
iw_handler.h
wext: Emit event stream entries correctly when compat.
2008-06-16 18:50:49 -07:00
lapb.h
llc.h
[LLC]: station source mac address
2008-03-28 16:28:36 -07:00
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
[LLC]: Kill static inline llc_addrany
2008-02-29 11:46:17 -08:00
llc_pdu.h
[LLC]: skb allocation size for responses
2008-03-31 21:02:47 -07:00
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
[LLC]: skb allocation size for responses
2008-03-31 21:02:47 -07:00
mac80211.h
mac80211: add multi-rate retry support
2008-10-06 18:14:57 -04:00
mip6.h
[IPV6] MIP6: Use our standard definitions for paddings.
2008-04-12 13:43:22 +09:00
ndisc.h
ndisc: Add missing strategies for per-device retrans timer/reachable time settings.
2008-05-19 16:25:42 -07:00
neighbour.h
core: add stat to track unresolved discards in neighbor cache
2008-07-16 20:50:49 -07:00
net_namespace.h
netfilter: netns nf_conntrack: add netns boilerplate
2008-10-08 11:35:02 +02:00
netdma.h
netevent.h
netlabel.h
Audit: collect sessionid in netlink messages
2008-04-28 06:18:03 -04:00
netlink.h
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2008-10-01 06:12:56 -07:00
netrom.h
nexthop.h
p8022.h
pkt_cls.h
[PKT_SCHED]: Pass real namespace in net scheduler classifiers.
2008-03-27 16:53:37 -07:00
pkt_sched.h
pkt_sched: Remove the tx queue state check in qdisc_run()
2008-09-23 01:05:56 -07:00
protocol.h
[NETNS]: Drop packets in the non-initial namespace on the per/protocol basis.
2008-03-24 15:33:00 -07:00
psnap.h
raw.h
[RAW]: Add raw_hashinfo member on struct proto.
2008-03-22 16:56:51 -07:00
rawv6.h
red.h
request_sock.h
tcp: Fix kernel panic when calling tcp_v(4/6)_md5_do_lookup
2008-08-06 23:50:04 -07:00
rose.h
rose: improving AX25 routing frames via ROSE network
2008-06-17 17:08:32 -07:00
route.h
ipv4: Conditionally enable transparent flow flag when connecting
2008-10-01 07:35:39 -07:00
rtnetlink.h
[RTNL]: Introduce the rtnl_kill_links helper.
2008-04-16 00:46:52 -07:00
sch_generic.h
pkt_sched: Fix handling of gso skbs on requeuing
2008-10-06 09:54:39 -07:00
scm.h
slhc_vj.h
snmp.h
net: remove CVS keywords
2008-06-11 21:00:38 -07:00
sock.h
net: wrap sk->sk_backlog_rcv()
2008-10-07 14:18:42 -07:00
stp.h
net: Add STP demux layer
2008-07-05 21:25:39 -07:00
syncppp.h
Remove bogus variables from syncppp.[ch]
2008-07-23 23:00:31 +02:00
tcp.h
net: wrap sk->sk_backlog_rcv()
2008-10-07 14:18:42 -07:00
tcp_states.h
timewait_sock.h
transp_v6.h
net: change proto destroy method to return void
2008-06-14 17:04:49 -07:00
udp.h
netns: make uplitev6 mib per/namespace
2008-10-07 14:50:06 -07:00
udplite.h
[UDP]: Revert udplite and code split.
2008-03-06 16:22:02 -08:00
wext.h
wext: Dispatch and handle compat ioctls entirely in net/wireless/wext.c
2008-06-16 18:32:46 -07:00
wireless.h
cfg80211: show interface type
2008-09-24 16:18:00 -04:00
x25.h
x25device.h
xfrm.h
xfrm: MIGRATE enhancements (draft-ebalard-mext-pfkey-enhanced-migrate)
2008-10-05 13:33:42 -07:00