]> git.ipfire.org Git - thirdparty/hostap.git/blob - doc/p2p_sm.dot
wpa_supplicant: Don't return an error when successfully parsing WMM rules
[thirdparty/hostap.git] / doc / p2p_sm.dot
1 digraph p2p {
2 ranksep=.75;
3 size = "8.5,7.5";
4
5 start -> IDLE;
6 start [label="Init",shape=none];
7
8 /* Discovery: Scan followed by Find(SEARCH,LISTEN) */
9 subgraph cluster_0 {
10 label="Discovery";
11 color=lightgrey;
12 node [color=blue];
13 /* SCAN and LISTEN currently not used in the implementation */
14 SCAN [style=dotted];
15 LISTEN [style=dotted];
16
17 SCAN -> LISTEN;
18 LISTEN -> SEARCH -> LISTEN [style=dotted];
19 SEARCH -> SD_DURING_FIND [label="Peer SD capab\nand no info", weight=100];
20 SD_DURING_FIND -> SEARCH [label="RX SD Resp\nor timeout", weight=100];
21 SEARCH -> PROV_DISC_DURING_FIND [label="Prov Disc cmd\nand no Resp", weight=100];
22 PROV_DISC_DURING_FIND -> SEARCH [label="RX Prov Disc Resp\nor timeout", weight=100];
23 }
24
25 /* Group Formation */
26 subgraph cluster_1 {
27 label="Group Formation";
28 color=lightgrey;
29 node [color=green];
30
31 CONNECT -> CONNECT_LISTEN [style=dotted,weight=100];
32 CONNECT_LISTEN -> CONNECT [style=dotted,weight=100];
33 CONNECT -> WAIT_PEER_IDLE [label="RX GO Neg Resp\n(info unavail)"];
34 WAIT_PEER_IDLE -> WAIT_PEER_CONNECT [style=dotted,weight=100];
35 WAIT_PEER_CONNECT -> WAIT_PEER_IDLE [style=dotted,weight=100];
36
37 CONNECT -> GO_NEG [label="RX GO Neg Resp\n(success)", weight=10];
38 CONNECT_LISTEN -> GO_NEG [label="RX GO Neg Req or\nTX GO Neg Resp"];
39 WAIT_PEER_CONNECT -> GO_NEG [label="RX GO Neg Req"];
40 GO_NEG -> PROVISIONING [label="TX/RX GO Neg Conf"];
41 }
42
43 PROVISIONING -> IDLE [label="WPS\nsuccess"];
44
45 /* External triggers */
46 IDLE -> SCAN [label="Find cmd",weight=20];
47 IDLE -> CONNECT [label="Connect cmd",weight=20];
48 IDLE -> LISTEN_ONLY [label="Listen cmd"];
49
50 /* Timeouts */
51 /*
52 edge [color=red];
53 WAIT_PEER_IDLE -> IDLE [label="timeout", weight=0];
54 WAIT_PEER_CONNECT -> IDLE [label="timeout", weight=0];
55 CONNECT -> IDLE [label="timeout", weight=0];
56 CONNECT_LISTEN -> IDLE [label="timeout", weight=0];
57 GO_NEG -> IDLE [label="timeout", weight=0];
58 PROVISIONING -> IDLE [label="timeout", weight=0];
59 LISTEN_ONLY -> IDLE [label="timeout", weight=0];
60 SEARCH -> IDLE [label="timeout", weight=0];
61 */
62 }