WIFI P2P GO與Clien的協商流程


詳見: P2P GO Client角色的協商

示例環境:兩個P2P device,一個作為Group owner(arm 板子), 一個作為p2p client(小米9),以pbc方式連接

 

  

小結:

1. p2p建立連接的過程中,有兩個設備: P2P連接發起端/P2P連接接受端

    雙方通過協商來確定誰是Go,誰是Client

    協商過程類似於三次握手,在雙方都初始化好P2P后,讀取對方的協商信息,來確定自己的角色。

    在P2P GO/Client協商完成后,作為GO角色的設備后面就把自己切換到AP模式,而作為Client角色的設備就去連接GO的AP。

2. 在P2P連接接受端,當上層確認允許P2P連接時,會執行p2p_connect,此時會創建實際的P2P連接網口p2p-wlan0-x

3. 不同的商家實現P2P wlan口的方式不一樣,其中p2p-dev-wlan0為虛擬的網口,在P2P掃描,協商階段都是使用該網口。

    在p2p_group_add創建組后,會創建p2p-wlan0-0,他才是內核實際注冊網口,實際上P2P連接就是p2p-wlan0-0。

4. 已保存群組時的協商

   在P2P連接完成后,若P2P連接斷開后,再發起P2P連接,並不一定都需要P2P GO/Client的協商過程,這依賴雙方是否都保存有P2P連接信息。

    作為GO時保存的信息如下:  p2p_supplicant.conf中網絡節點內容

 1 network={
 2 ssid=”DIRECT-ZT-Android_7ab3”
 3 bssid=6e:fa:a7:dc:14:d6
 4 psk=”zT32EqmT”
 5 proto=RSN
 6 key_mgmt=WPA-PSK
 7 pairwise=CCMP
 8 auth_alg=OPEN
 9 mode=3
10 disabled=2
11 p2p_client_list=96:bd:db:15:b9:38
12 }
13 //ssid:GO的名稱;
14 //bssid:GO自己的mac地址;
15 //psk:GO的密碼;
16 //p2p_client_list:所連接的Client的mac地址;

作為Client時保存的信息如下:

 1 network={
 2 ssid=”DIRECT-H0-Android_dd11”
 3 bssid=96:bd:db:15:b9:38
 4 psk=03e45fa923d8fbaf
 5 proto=RSN
 6 key_mgmt=WPA-PSK
 7 pairwise=CCMP
 8 auth_alg=OPEN
 9 disabled=2
10 }
11 //ssid:所連接GO的名稱;
12 //bssid:所連接GO的mac地址;
13 //psk:所連接GO的密碼,已加密;

   Intent:作為GO的優先級

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM