From 66a3157604d905c10c3844d193badadb00f12626 Mon Sep 17 00:00:00 2001 From: Vivien Didelot Date: Wed, 5 Apr 2017 13:17:43 -0400 Subject: [PATCH 1/4] slides: add ToC at beginning of each section --- dsa-netdev-2.1.lyx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dsa-netdev-2.1.lyx b/dsa-netdev-2.1.lyx index d2063cf..63bb399 100644 --- a/dsa-netdev-2.1.lyx +++ b/dsa-netdev-2.1.lyx @@ -11,6 +11,13 @@ \setbeamercovered{transparent} % or whatever (possibly just delete it) + +\AtBeginSection[] +{ + \begin{frame} + \tableofcontents[currentsection] + \end{frame} +} \end_preamble \use_default_options false \maintain_unincluded_children false From fdac1996f0aa88bc951f2cf66192b0188cc44578 Mon Sep 17 00:00:00 2001 From: Vivien Didelot Date: Wed, 5 Apr 2017 13:19:05 -0400 Subject: [PATCH 2/4] slides: add cross-chip subsection --- DSA-drawings.odg | Bin 18868 -> 19225 bytes cross-chip.svg | 1150 ++++++++++++++++++++++++++++++++++++++++++++ dsa-netdev-2.1.lyx | 139 ++++++ 3 files changed, 1289 insertions(+) create mode 100644 cross-chip.svg diff --git a/DSA-drawings.odg b/DSA-drawings.odg index 4ef6d227f98ba0435794063f5e700b618a5c6f4a..48e1c27cbd79e9f28651077531d181322c4536e4 100644 GIT binary patch delta 17792 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 delta 17436 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 diff --git a/cross-chip.svg b/cross-chip.svg new file mode 100644 index 0000000..aa2d644 --- /dev/null +++ b/cross-chip.svg @@ -0,0 +1,1150 @@ + +image/svg+xmlSwitch 2 +Switch 1 +Switch 0 +CPU +sw0p0 +sw0p1 +sw0p2 +sw1p0 +sw1p1 +sw1p2 +sw2p1 +sw2p0 +sw2p2 +Marvell tagged frames +Bridge membership +Bridge br0 +sw2p3 +sw2p4 +sw1p3 +sw1p4 +sw0p3 +sw0p4 + \ No newline at end of file diff --git a/dsa-netdev-2.1.lyx b/dsa-netdev-2.1.lyx index 63bb399..0595d1b 100644 --- a/dsa-netdev-2.1.lyx +++ b/dsa-netdev-2.1.lyx @@ -943,6 +943,145 @@ Well defined device (Device Tree) and driver model (dsa_switch_ops) Implements switchdev_ops for supported offloads: bridge, VLAN, FDB, MDB \end_layout +\end_deeper +\begin_layout Subsection +The D in DSA +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +Cross-chip configuration +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Graphics + filename cross-chip.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 +Cross-chip configuration +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +Current behavior: +\end_layout + +\begin_layout Itemize +Interconnected switch chips create a switch fabric +\end_layout + +\begin_layout Itemize +DSA drivers manage single chip (struct dsa_switch) +\end_layout + +\begin_layout Itemize +DSA links configured to pass frames to any port +\end_layout + +\begin_layout Standard +Problem? +\end_layout + +\begin_layout Itemize +br0 bridging? Switches can potentially leak cross-chip frames! +\end_layout + +\begin_layout Itemize +br0 VLAN 42? Switch 1 won't pass traffic! +\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 +Cross-chip configuration +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +Solutions? +\end_layout + +\begin_layout Itemize +Cross-chip bridging (DONE): +\end_layout + +\begin_deeper +\begin_layout Itemize +DSA core notifies drivers about fabric bridge events (crosschip_bridge_{join,lea +ve} ops) +\end_layout + +\begin_layout Itemize +mv88e6xxx configure +\begin_inset Flex Emphasize +status open + +\begin_layout Plain Layout +Cross-chip Port Based VLAN Table +\end_layout + +\end_inset + + (PVT, Marvell specific) +\end_layout + +\end_deeper +\begin_layout Itemize +Cross-chip VLAN (WIP): +\end_layout + +\begin_deeper +\begin_layout Itemize +DSA core notifies drivers about switchdev port objects (VLAN, FDB, MDB) + so that drivers allow traffic to pass +\end_layout + +\end_deeper \end_deeper \begin_layout Section The Future From 2049d534059768ab08d97e6ddca91091ef4e9acd Mon Sep 17 00:00:00 2001 From: Vivien Didelot Date: Wed, 5 Apr 2017 13:27:34 -0400 Subject: [PATCH 3/4] slides: minor fixups Prefer Wi-Fi, Set-top box, PHYLIB and remove <80><93> special char. --- dsa-netdev-2.1.lyx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dsa-netdev-2.1.lyx b/dsa-netdev-2.1.lyx index 0595d1b..f1da512 100644 --- a/dsa-netdev-2.1.lyx +++ b/dsa-netdev-2.1.lyx @@ -351,7 +351,7 @@ Users of DSA status open \begin_layout Plain Layout -WiFi Access Point, Set Top Boxes +Wi-Fi Access Point, Set-top Boxes \end_layout \end_inset @@ -532,7 +532,7 @@ First commit, support for some Marvell SOHO switches \end_layout \begin_layout Itemize -Broadcom SF2, EEPROM, Temperature sensor, EEE, WoL, better libphy integration, +Broadcom SF2, EEPROM, Temperature sensor, EEE, WoL, better PHYLIB integration, 88E6352 \end_layout @@ -1106,7 +1106,7 @@ Multiple CPU ports \end_layout \begin_layout Itemize -Often seen in WiFi devices to double SoC <–> Switch Bandwidth +Often seen in Wi-Fi devices to double SoC <-> Switch Bandwidth \end_layout \begin_layout Itemize From 59b53e8c5efb1d23287063dc33221c74329cde0b Mon Sep 17 00:00:00 2001 From: Vivien Didelot Date: Wed, 5 Apr 2017 13:44:30 -0400 Subject: [PATCH 4/4] slides: make images fit on PDF slides --- dsa-netdev-2.1.lyx | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/dsa-netdev-2.1.lyx b/dsa-netdev-2.1.lyx index f1da512..6b99338 100644 --- a/dsa-netdev-2.1.lyx +++ b/dsa-netdev-2.1.lyx @@ -293,7 +293,7 @@ DSA in one Slide \begin_layout Frame \begin_inset Graphics filename DSA-basic.svg - scale 35 + scale 28 \end_inset @@ -331,7 +331,7 @@ The D in DSA \begin_layout Frame \begin_inset Graphics filename DSA-D-in-DSA.svg - scale 35 + scale 29 \end_inset @@ -412,7 +412,7 @@ Industrial Switches/Routers, mostly Transport Industry \align center \begin_inset Graphics filename transport-devices.jpg - scale 20 + scale 18 \end_inset @@ -487,7 +487,7 @@ Added to the kernel in 2008 \begin_inset Graphics filename dsa-activity.svg lyxscale 10 - scale 50 + scale 56 \end_inset @@ -757,19 +757,34 @@ RX: master interface netif_receive_skb() -> tag parser, slave interface selection -> netif_receive_skb \end_layout +\end_deeper \begin_layout Standard -\begin_inset Graphics - filename wireshark.png - lyxscale 50 - scale 20 +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Frame +\begin_inset Argument 4 +status open + +\begin_layout Plain Layout +The Data Plane +\end_layout \end_inset \end_layout -\end_deeper \begin_layout Frame +\begin_inset Graphics + filename wireshark.png + scale 25 + +\end_inset + \end_layout @@ -796,7 +811,7 @@ Ethernet frame processing \begin_layout Frame \begin_inset Graphics filename DSA-frame-processing.svg - scale 35 + scale 28 \end_inset @@ -826,7 +841,7 @@ Network stack flow \begin_layout Frame \begin_inset Graphics filename dsa_explained.svg - scale 35 + scale 27 \end_inset