diff --git a/DSA-D-in-DSA.svg b/DSA-D-in-DSA.svg new file mode 100644 index 0000000..2caa971 --- /dev/null +++ b/DSA-D-in-DSA.svg @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Switch 2 + + + + + + + + Switch 1 + + + + + + + + Switch 0 + + + + + + + + Ethernet MAC + + + + + + + + CPU + + + + + + + + MDIO controller + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cpu + + + + + + + + dsa + + + + + + + + dsa + + + + + + + + dsa + + + + + + + + + + + + + + + + + + + + + + + + + + eth0 + + + + + + + + + + + + + + + + + sw0p1 + + + + + + + + dsa + + + + + + + + sw0p1 + + + + + + + + sw0p2 + + + + + + + + sw0p3 + + + + + + + + sw0p4 + + + + + + + + sw0p5 + + + + + + + + sw1p0 + + + + + + + + sw1p1 + + + + + + + + sw1p2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sw2p0 + + + + + + + + sw2p1 + + + + + + + + sw2p0 + + + + + + + + sw2p2 + + + + + + + + sw2p3 + + + + + + + + sw2p4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Marvell tagged frames + + + + + + + + + + + + + + + User frames (normal, 802.1q) + + + + + + + + + + + + + + + + + + + + + + Control interface (MDIO, SPI, I2C..) + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DSA-basic.svg b/DSA-basic.svg new file mode 100644 index 0000000..bc53363 --- /dev/null +++ b/DSA-basic.svg @@ -0,0 +1,464 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ethernet switch + + + + + + + + Ethernet controller + + + + + + + + Port 0 + + + + + + + + + + + + + + + + + Port 1 + + + + + + + + Port 2 + + + + + + + + Port 8 + + + + + + + + Port 3 + + + + + + + + Port 4 + + + + + + + + Port 5 + + + + + + + + I2C controller + + + + + + + + MDIO controller + + + + + + + + SPI controller + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RJ45 + + + + + + + + RJ45 + + + + + + + + RJ45 + + + + + + + + Fiber + + + + + + + + RJ45 + + + + + + + + RGMII + + + + + + + + CPU + + + + + + + + DRAM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RGMII + + + + + + + + + + + + + + + + + RJ45 + + + + + + + + + + + + + + + + + + + + + + + + + + RJ45 + + + + + + + + + + + + + + + Data path + + + + + + + + + + + + + + + Control path + + + + + + + + \ No newline at end of file diff --git a/DSA-drawings.odg b/DSA-drawings.odg new file mode 100644 index 0000000..4ef6d22 Binary files /dev/null and b/DSA-drawings.odg differ diff --git a/DSA-frame-processing.svg b/DSA-frame-processing.svg new file mode 100644 index 0000000..8264fb5 --- /dev/null +++ b/DSA-frame-processing.svg @@ -0,0 +1,333 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MAC DA + + + + + + + + MAC SA + + + + + + + + Ether type + + + + + + + + Payload + + + + + + + + FCS + + + + + + + + MAC DA + + + + + + + + MAC SA + + + + + + + + Ether type + + + + + + + + Payload + + + + + + + + FCS + + + + + + + + Switch tag + + + + + + + + Source port + + + + + + + + Metadata + + + + + + + + Egress type + + + + + + + + + + + + + + + + + + + + + + Destination ports + + + + + + + + Metadata + + + + + + + + Ingress type + + + + + + Normal Ethernet frame + + + + + + Ingress tagged (CPU towards switch) frame + + + + + + + + MAC DA + + + + + + + + MAC SA + + + + + + + + Ether type + + + + + + + + Payload + + + + + + + + FCS + + + + + + + + Switch tag + + + + + + + + + + + + + + + + + + + + Egress tagged (switch towards CPU) frame + + + + + + + + \ No newline at end of file diff --git a/IMG_20170302_080726.jpg b/IMG_20170302_080726.jpg new file mode 100644 index 0000000..a602dae Binary files /dev/null and b/IMG_20170302_080726.jpg differ diff --git a/SYSTEMPORT_SF2_HW_view.svg b/SYSTEMPORT_SF2_HW_view.svg new file mode 100644 index 0000000..2dd5562 --- /dev/null +++ b/SYSTEMPORT_SF2_HW_view.svg @@ -0,0 +1 @@ +SWITCHPort0Port2Port1Port8(IMPorCPUport)Port7GPHYExternalswitchSYSTEMPORTMoCAHardwareviewLinuxvieweth0mocagphyrgmii_2(Port2)rgmii_1(Port1)Per-port (virtual)interfacesPhysicalnetworkinterface \ No newline at end of file diff --git a/dsa-activity.svg b/dsa-activity.svg new file mode 100644 index 0000000..db62b8f --- /dev/null +++ b/dsa-activity.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2008-11 + 2009-02 + 2009-07 + 2010-04 + 2010-12 + 2011-04 + 2011-08 + 2012-05 + 2013-01 + 2014-01 + 2014-06 + 2014-09 + 2014-12 + 2015-03 + 2015-06 + 2015-09 + 2015-12 + 2016-03 + 2016-06 + 2016-09 + 2016-12 + 0 + 1000 + 2000 + 3000 + 4000 + 5000 + 6000 + 7000 + 8000 + 9000 + DSA Activity + Year, Month + Lines Changed + \ No newline at end of file diff --git a/dsa-netdev-2.1.lyx b/dsa-netdev-2.1.lyx new file mode 100644 index 0000000..d39e2b1 --- /dev/null +++ b/dsa-netdev-2.1.lyx @@ -0,0 +1,1050 @@ +#LyX 2.2 created this file. For more info see http://www.lyx.org/ +\lyxformat 508 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass beamer +\begin_preamble +\usetheme{Warsaw} +% or ... + +\setbeamercovered{transparent} +% or whatever (possibly just delete it) +\end_preamble +\use_default_options false +\maintain_unincluded_children false +\language english +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "times" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 2 +\use_package amssymb 2 +\use_package cancel 0 +\use_package esint 0 +\use_package mathdots 1 +\use_package mathtools 0 +\use_package mhchem 1 +\use_package stackrel 0 +\use_package stmaryrd 0 +\use_package undertilde 0 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 2 +\tocdepth 2 +\paragraph_separation indent +\paragraph_indentation default +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout +Copyright 2004 by Till Tantau . + +\end_layout + +\begin_layout Plain Layout +In principle, this file can be redistributed and/or modified under the terms + of the GNU Public License, version 2. + However, this file is supposed to be a template to be modified for your + own needs. + For this reason, if you use this file as a template and not specifically + distribute it as part of a another package/program, the author grants the + extra permission to freely copy and modify this file as you see fit and + even to delete this copyright notice. + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Title +Distributed Switch Archieecture +\begin_inset Argument 1 +status open + +\begin_layout Plain Layout +DSA +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout +optional, use only with long paper titles +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subtitle +A.K.A. + DSA +\end_layout + +\begin_layout Author +Andrew Lunn +\begin_inset Flex InstituteMark +status open + +\begin_layout Plain Layout +1 +\end_layout + +\end_inset + + +\begin_inset ERT +status collapsed + +\begin_layout Plain Layout + + +\backslash +and +\end_layout + +\end_inset + + Vivien Didelot +\begin_inset Flex InstituteMark +status collapsed + +\begin_layout Plain Layout +2 +\end_layout + +\end_inset + + +\begin_inset ERT +status collapsed + +\begin_layout Plain Layout + + +\backslash +and +\end_layout + +\end_inset + + Florian Fainelli +\begin_inset Flex InstituteMark +status collapsed + +\begin_layout Plain Layout +3 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Institute +\begin_inset Flex InstituteMark +status collapsed + +\begin_layout Plain Layout +1 +\end_layout + +\end_inset + +andrew@lunn.ch +\begin_inset Newline newline +\end_inset + + +\begin_inset Flex InstituteMark +status collapsed + +\begin_layout Plain Layout +2 +\end_layout + +\end_inset + +vivien.didelot@savoirfairelinux.com +\begin_inset Newline newline +\end_inset + + +\begin_inset Flex InstituteMark +status collapsed + +\begin_layout Plain Layout +3 +\end_layout + +\end_inset + +f.fainelli@gmail.com +\end_layout + +\begin_layout Date +Netdev 2.1, 2017 +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Outline +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +\begin_inset CommandInset toc +LatexCommand tableofcontents + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Section +What is DSA? +\end_layout + +\begin_layout Subsection +DSA in one Slide +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +DSA in one Slide +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Graphics + filename DSA-basic.svg + scale 35 + +\end_inset + + +\end_layout + +\begin_layout Frame + +\end_layout + +\begin_layout Frame + +\end_layout + +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +The D in DSA +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Graphics + filename DSA-D-in-DSA.svg + scale 35 + +\end_inset + + +\end_layout + +\begin_layout Subsection +Users of DSA +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +WiFi Access Point, Set Top Boxes +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +\begin_inset Graphics + filename wnr854t_board_annotated.jpg + scale 25 + +\end_inset + +[Add B53 STP/WiFI image?] +\begin_inset Separator plain +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Frame + +\end_layout + +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Industrial Switches/Routers, mostly Transport Industry +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +\align center +\begin_inset Graphics + filename transport-devices.jpg + scale 20 + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Supported Switches +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Itemize +Marvell MV88E6xxx +\end_layout + +\begin_layout Itemize +Broadcom B53 (Roboswitch) and Star Fighter 2 +\end_layout + +\begin_layout Itemize +Qualcomm QCA8K +\end_layout + +\begin_layout Itemize +Mediatek MT7530 (reviewed) +\end_layout + +\begin_layout Itemize +WIP driver from Microchip, not yet contributed +\end_layout + +\end_deeper +\begin_layout Section +Design Goals and Paradigms +\end_layout + +\begin_layout Subsection +History +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Added to the kernel in 2008 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Graphics + filename dsa-activity.svg + lyxscale 10 + scale 50 + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +History +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Frame + +\end_layout + +\begin_deeper +\begin_layout Standard +2008 +\end_layout + +\begin_layout Itemize +First commit, support for some Marvell SOHO switches +\end_layout + +\begin_layout Standard +2009-2013 +\end_layout + +\begin_layout Itemize +Standard maintenance churn due to changing APIs +\end_layout + +\begin_layout Standard +2014 +\end_layout + +\begin_layout Itemize +Broadcom SF2, EEPROM, Temperature sensor, EEE, WoL, better libphy integration, + MV88E6352 +\end_layout + +\begin_layout Standard +2015 +\end_layout + +\begin_layout Itemize +Device tree, Hardware bridging, VLANs, Fixup module unload/load, Switch + reset via GPIO, netconsole +\end_layout + +\begin_layout Standard +2016 +\end_layout + +\begin_layout Itemize +New device tree binding, Switches as Linux devices, SPI, MMIO, Broadcom + B53, Qualcomm QCA8K, MV88E6240 +\end_layout + +\begin_layout Standard +2017 +\end_layout + +\begin_layout Itemize +MV88E6390, Second generation Starfighter 2 (BCM7278) +\end_layout + +\begin_layout Itemize +TC offloads, port mirroring +\end_layout + +\end_deeper +\begin_layout Frame + +\end_layout + +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Alternative approaches +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +OpenWrt/LEDE's swconfig: +\end_layout + +\begin_layout Itemize +Generic netlink based configuration +\end_layout + +\begin_layout Itemize +Does not make use of switch tags, uses VLAN tags for traffic segregation +\end_layout + +\begin_layout Itemize +No per-port network interfaces +\end_layout + +\begin_layout Itemize +Each switch driver is allowed to extend the control API: no consistency + across device drivers +\end_layout + +\begin_layout Itemize +Proposed as a solution in October 2013: +\begin_inset CommandInset href +LatexCommand href +target "https://lwn.net/Articles/571390/" + +\end_inset + + +\end_layout + +\begin_layout Itemize +Discussion starting point that led to switchdev! +\end_layout + +\end_deeper +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Other approaches +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +Other approaches: +\end_layout + +\begin_layout Itemize +Quick-n-dirty /proc, /sys/, debugfs, ioctl() interfaces from various SoC + vendors +\end_layout + +\begin_layout Itemize +Vendor specific and proprietary switch SDK in user space +\end_layout + +\begin_layout Itemize +Have the bootloader configure the switch! +\end_layout + +\end_deeper +\begin_layout Subsection +Design Goals +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +The Switch as a Hardware Accelerator +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +During various conference corridor side discussions around 2014 it was decided + how to model Switches +\end_layout + +\begin_layout Itemize +Switch ports are Linux network interfaces +\end_layout + +\begin_layout Itemize +Standard Linux tools used to configure interfaces, ip(8) +\end_layout + +\begin_layout Itemize +Linux bridge concept used for bridging interfaces, ip(8), bridge(8), brtctl(8) +\end_layout + +\begin_layout Itemize +Linux team/bonding concept for port trunks, +\end_layout + +\begin_layout Itemize +The switch just accelerates what Linux can already do +\end_layout + +\begin_layout Standard +DSA has been doing this since 2008! +\end_layout + +\end_deeper +\begin_layout Subsection +Paradigms +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +The Data Plane +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +DSA provides the data plane +\end_layout + +\begin_layout Itemize +Linux slave Interface for each port +\end_layout + +\begin_layout Itemize +Tagging protocols, to direct frames from the SoC to a specific port +\end_layout + +\begin_deeper +\begin_layout Itemize +Taggers for Marvell DSA & EDSA, Broadcom and Qualcom, plus generic trailer +\end_layout + +\end_deeper +\begin_layout Itemize +TX: Slave interface -> tagger -> master interface -> Switch +\end_layout + +\begin_layout Itemize +RX: master interface netif_receive_skb() -> tag parser, slave interface + selection -> netif_receive_skb +\end_layout + +\begin_layout Standard +\begin_inset Graphics + filename wireshark.png + lyxscale 50 + scale 20 + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Frame + +\end_layout + +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Network stack flow +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Graphics + filename dsa_explained.svg + scale 35 + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Ethernet frame processing +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Graphics + filename DSA-frame-processing.svg + scale 35 + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +The Control Plane +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Frame + +\end_layout + +\begin_deeper +\begin_layout Standard +About SWITCHDEV: +\end_layout + +\begin_layout Itemize +Stateless framework in the kernel under net/switchdev/ +\end_layout + +\begin_layout Itemize +Provides the control knobs within the networking stack to push offloads + towards specialized devices (switchdev_ops) +\end_layout + +\begin_layout Itemize +Provides an abstract model of objects (VLANs, FDBs, MDBs,) to be pushed + to these devices (switchdev_obj) +\end_layout + +\begin_layout Itemize +Is not a device driver model: no strict definition of what a switch device + is +\end_layout + +\begin_layout Itemize +Only operates at the network device (net_device) layer +\end_layout + +\end_deeper +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +The Control Plane +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Frame + +\end_layout + +\begin_deeper +\begin_layout Standard +DSA vs. + SWITCHDEV: +\end_layout + +\begin_layout Itemize +Stateful framework under net/dsa/ +\end_layout + +\begin_layout Itemize +Collection of vendor-specific switch tags: Marvell, Broadcom, Qualcomm, + Mediatek +\end_layout + +\begin_layout Itemize +Provides an abstracted model of a switch: dsa_switch and a collection of + switches: dsa_switch_tree +\end_layout + +\begin_layout Itemize +Binds network devices (netdev_ops), ethtool (ethtool_ops) and switch drivers + together +\end_layout + +\begin_layout Itemize +Well defined device (Device Tree) and driver model (dsa_switch_ops) +\end_layout + +\begin_layout Itemize +Implements switchdev_ops for supported offloads: bridge, VLAN, FDB, MDB +\end_layout + +\end_deeper +\begin_layout Section +The Future +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Hopefully coming soon +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +Multiple CPU ports +\end_layout + +\begin_layout Itemize +Often seen in WiFi devices to double SoC <–> Switch Bandwidth +\end_layout + +\begin_layout Itemize +Often one CPU port statically mapped to +\begin_inset Quotes eld +\end_inset + +WAN +\begin_inset Quotes erd +\end_inset + + port +\end_layout + +\begin_layout Itemize +Depends on chipset features, we can do better, load balancing +\end_layout + +\begin_layout Standard +IGMP snooping on bridges +\end_layout + +\begin_layout Standard +Better distributed switch support for Marvell devices +\end_layout + +\begin_layout Standard +Better support for Fiber interfaces +\end_layout + +\end_deeper +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Maybe Later??? +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +Microchip driver in Mainline? +\end_layout + +\begin_layout Standard +Mediatek driver? +\end_layout + +\begin_layout Standard +Team/bonding? +\end_layout + +\begin_layout Standard +TCAM support for offloading part of the firewall? +\end_layout + +\begin_layout Standard +Qualcomm Hardware NAT? +\end_layout + +\begin_layout Standard +More Vendor supported development? +\end_layout + +\end_deeper +\begin_layout Frame +Metering, broadcast storm suppression, QoS (priorities, maps) offloads again +\end_layout + +\end_body +\end_document diff --git a/dsa_explained.svg b/dsa_explained.svg new file mode 100644 index 0000000..5b82070 --- /dev/null +++ b/dsa_explained.svg @@ -0,0 +1,339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network driverRX path + + + + + + + + skb→dev = eth0 + + + + + + + + netif_receive_skb() + + + + + + + + eth_type_trans() + + + + + + + + netdev_uses_dsa()? + + + + + + + + ip_rcv() + + + + + + + + XX_tag_rcv() + + + + + + + + Switch port valid? + + + + + + + + skb→dev = sw0p0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Driver/HW layer + + + + + + + + Layer agnostic + + + + + + + + Ethernet layer + + + + + + + + Layer 3 + + + + + + + + DSA tag layer + + + + + + Discard + + + + + + Yes + + + + + + Yes + + + + + + No + + + + + + No + + + + + + + + \ No newline at end of file diff --git a/netmodules.jpg b/netmodules.jpg new file mode 100644 index 0000000..9b08aa1 Binary files /dev/null and b/netmodules.jpg differ diff --git a/transport-devices.jpg b/transport-devices.jpg new file mode 100644 index 0000000..0f1cd58 Binary files /dev/null and b/transport-devices.jpg differ diff --git a/westermo.jpg b/westermo.jpg new file mode 100644 index 0000000..9be620c Binary files /dev/null and b/westermo.jpg differ diff --git a/wireshark.png b/wireshark.png new file mode 100644 index 0000000..c364d14 Binary files /dev/null and b/wireshark.png differ diff --git a/wnr854t_board_annotated.jpg b/wnr854t_board_annotated.jpg new file mode 100644 index 0000000..6d87312 Binary files /dev/null and b/wnr854t_board_annotated.jpg differ