diff --git a/tc.md b/tc.md
index 9a0cc0c7551072b490c00904efb3e2be715c0f48..41166b6b78176ef85ac9a0b644c18903ba39f587 100644
--- a/tc.md
+++ b/tc.md
@@ -1,32 +1,83 @@
 # Traffic Control (náhodné poznámky)
 
+## Priority paketů
+
+### Hlavička IP
+
+- 1 byte, jeho význam se postupně mění
+- původní význam (RFC 791):
+	- 3b priorita, 3b Type of Service, 2b RFU
+	- TOS: flagy "low delay", "high throughput", "high reliability"
+	- později se TOS rozšíříl o jeden z RFU bitů: "low monetary cost"
+	- některé protokoly mají běžný TOS
+- předefinováno (RFC 2474):
+	- 6b pro DSCP (Differntiated Services Code Point) + 2b na ECN (viz níže)
+	- ECN zabírá původní 2b RFU (low monetary cost prakticky nikdo nepoužíval)
+	- DSCP má nějaké doporučené hodnoty odpovídající původním kombinacím pri+TOS,
+	  zbytek je site-local
+
+### Linux
+
+- paket má prioritu (`u32 skb->priority`)
+- může s ní manipulovat netfilter
+- u příchozích paketů se automaticky spočítá podle TOS (priority 0-7)
+- odchozí spojení: `setsockopt(SO_PRIORITY)`, na prioritu >6 je potřeba capability
+- také lze nastavit `setsockopt(IP_TOS)`, což přenastaví i prioritu
+- cgroup `net_prio` může overridovat prioritu pro procesy ve skupině
+
 ## Queueing Disciplines
 
 - ingress qdisc: může jenom klasifikovat a zahazovat pakety
 	- lze obejít přeposíláním paketů do imq (Intermediate Queueing Device)
 - egress qdisc: může i zpožďovat pakety
 
+- fronta se síťovce přiřazuje pomocí tc qdisc
+	- default: sysctl net.core.default_qdisc
+	- ale pozor, některé síťovky mají svoji qdisc (třeba mq)
+
+- fronty mohou mít třídy
+	- do tříd se rozděluje buďto automaticky nebo filtrem
+	- k třídě může být připojena další qdisc
+
 - číslování major:minor
 	- root je obvykle 1:0 (lze zkrátit na 1:)
-	- vstup do qdisc je major:0, třídy uvnitř mohou mít různé minors
+	- vstup do qdisc je major:0, třídy uvnitř mají různé minors
 
-- pfifo_fast
+### Základní qdiscs
+
+- pfifo / bfifo
+	- classless
+	- fronta s omezením velikost v paketech (pfifo) nebo bytech (bfifo)
+	- když se přeplní, zahazuje nejnovější paket (tail drop)
+- pfifo_fast (default)
 	- classless
 	- 3 bands (priority)
-	- tabulka překládající 4 bity TOS na band
+	- tabulka překládající prioritu na band
 - tbf (Token Bucket Filter)
 	- classless
 	- účtuje se v bytech
 	- limit (maximální množství dat ve frontě na tokeny)
 		- též jde zadat jako maximální latence
 	- burst (velikost kyblíku)
-	- mpu (minimální velikost paketu)
 	- rate
+	- mpu (minimální velikost paketu)
+	- cell (zaokrouhlování velikosti paketu)
+- red (Random Early Detection)
+	- classless
+	- udržuje si průměrnou velikost fronty (EWMA)
+	- podle toho upravuje pravděpodobnost označení paketu (ECN), případně zahození
+	- pozor, není to shaper, ale jen fronta
+- sfq (Stochastic Fairness Queueing)
+	- classless
+	- identifikuje flows (na základě filtru nebo hash(ipproto src+dst addr+port))
+	- round-robin přes flows
+	- hešovací funkce se randomizuje po nastavitelném intervalu (=> kolize jen krátkodobé)
+	- integrovaná RED
 - prio
 	- classful
-	- bands (priority)
-	- filtry přidělují band
+	- bands (priority), přidělují se buď filtrem, nebo se tabulkou překládá priorita paketu
 	- pro každý band další qdisc
+	- vždy odesílá band s nejvyšší prioritou, který má co odeslat
 	- příklad:
 		# tc qdisc add dev eth0 root handle 1: prio
 		## This *instantly* creates classes 1:1, 1:2, 1:3
@@ -44,10 +95,6 @@
 - mqprio
 	- jako mqueue, ale navíc umí priority
 	- až 16 traffic classes, každé přiřadíme interval HW front
-	- překlad sbk->priority na traffic class, priorita se získá z:
-		- setsockopt
-		- iptables
-		- net_prio cgroup
 	- umí HW-offloaded shaper pro každou třídu
 
 ## Filtry
@@ -58,8 +105,8 @@
 
 Nebo:
 
-	# tc filter add dev eth0 parent 10:0 protocol ip prio 1 u32 match ip dst 4.3.2.1/32 flowid 10:1
-	# tc filter add dev eth0 parent 10:0 protocol ip prio 1 u32 match ip src 1.2.3.4/32 flowid 10:1
+	# tc filter add dev eth0 protocol ip parent 10: prio 1 u32 match ip dst 4.3.2.1/32 flowid 10:1
+	# tc filter add dev eth0 protocol ip parent 10: prio 1 u32 match ip src 1.2.3.4/32 flowid 10:1
 	# tc filter add dev eth0 protocol ip parent 10: prio 2 flowid 10:2
 
 Nebo kombinace:
@@ -73,19 +120,21 @@ Nebo kombinace:
 	- příjemnější matchování podle vlastností paketů (à la xtables)
 	- též HW offloading
 - též jde klasifikovat podle fwmarků nebo routing realms (i pro zdrojové adresy!)
+- ematch (výrazy; umí i volat netfilterové podmínky a hledat v ipsetech)
+- cgroup (controller `net_cls` přiřazuje skupině class ID)
 - policing filter: umí pakety nad/pod nějakou mez průtoku/velikosti
 	- zahazovat
-	- reklasifikovat na best-effort
-	- pipe: předat další akci v pořadí
+	- reklasifikovat (znovu spustit filtr)
 - ht: hash table
-- xt: zavolá chain v xtables
-- ematch
 
 - akce:
 	- drop
 	- mirred (mirror nebo redirect na jiné zařízení)
-	- lze definovat uživatelské (tc action)
+	- xt: zavolá chain v xtables
 	- vlan (změna VLAN tagu)
+	- nat (1:1 NAT)
+	- pedit (packet editor)
+	- lze definovat uživatelské (tc action, něco jako podprogramy)
 
 ## Advanced Queue Management