<div><div>Sorry for a delayed reply. Please find my comments inline.</div><div class="im" style="color:rgb(80,0,80)"><br>&gt; No, this is different case. I was thinking of a case that does not have<br>&gt; any concurrency at all, i.e., just a single P2P client interface that is<br>
&gt; associated with a GO that decides to change channels. Though, maybe I<br>&gt; missed the part of shared_freq&gt;0 not hitting in this particular<br>&gt; sequence.<div><br></div></div><div>You are right. The shared_freq won&#39;t be returning a greater than zero in this case.</div>
<div class="im" style="color:rgb(80,0,80)"><div><br></div><div><br></div><div><div>&gt;&gt;     e) If the priority is not set, the default behavior is to notify the<br>&gt;&gt; upper application or framework. The supplicant<br>
&gt;&gt;         won&#39;t do any policing.<br><br></div>&gt; Hmm.. How is this different from (d) ?</div></div><div>Both d and e are handled in the same way. But just i had put mentioned it separately to indicate that both are handled. </div>
<div><br></div><div>I have took your set of patches and did the below additions and generated 4 patches.<br>1. Moved the prioritize setting to wpa_global</div><div>2. Applied the below two changes.</div><div>+++++++++++++++++++++</div>
<div><div class="im" style="color:rgb(80,0,80)"><div>&gt; Two more changes from my side which are not in the current set of patches.<br>&gt; a) I later felt that providing network_id would be better than providing<br>&gt; ssid and bssid during WPA_EVENT_FREQ_CONFLICT.<br>
&gt; +▷⋅⋅▷⋅⋅⋅▷⋅⋅⋅wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_FREQ_CONFLICT<br>&gt; +▷⋅⋅▷⋅⋅⋅▷⋅⋅⋅▷⋅⋅⋅&quot; ssid=%s bssid=&quot; MACSTR,<br>&gt; +▷⋅⋅▷⋅⋅⋅▷⋅⋅⋅▷⋅⋅⋅wpa_ssid_txt(ssid-&gt;ssid, ssid-&gt;ssid_len),<br>&gt; +▷⋅⋅▷⋅⋅⋅▷⋅⋅⋅▷⋅⋅⋅MAC2STR(wpa_s-&gt;pending_bssid));<br>
&gt;<br>&gt; changed to<br>&gt;<br>&gt; +▷⋅⋅▷⋅⋅⋅▷⋅⋅⋅wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_FREQ_CONFLICT<br>&gt; &quot; id=%d&quot;, ssid-&gt;id);.<br><br></div></div><div class="im" style="color:rgb(80,0,80)"><div>&gt; b) I have added a new reason code to P2P_GROUP_REMOVE<br>
&gt; reason=FREQ_CONFLICT. This is useful when a p2p group gets removed when STA<br>&gt; connection has more priority.<br><br></div></div>+++++++++++++++++++++ Till here ++++++++++++++</div><div><br></div><div>3. Still some things are left behind. I will work on these once the attached</div>
<div>patches are frozen.</div><div> a) supplicant gets the STA connected event while we already have a p2p</div><div class="im" style="color:rgb(80,0,80)"> connection on some other channel<br>    (roaming handled by driver/firmware).<div>
<br></div></div><div class="im"><div style> b) The concurrent-3.patch expansion [go_switch_channel].</div><div style><br></div><div style>I am splitting the reply into 4 RFC patches.</div><div style><br></div><div style>First one: </div>
<div style><br></div><div style><div><font color="#222222" face="arial, sans-serif"> [PATCH] Add an additional param to prioritize either sta or p2p</font></div><div><font color="#222222" face="arial, sans-serif"> connection to resolve conflicts arising during single</font></div>
<div><font color="#222222" face="arial, sans-serif"> channel concurrency</font></div><div><font color="#222222" face="arial, sans-serif"> Signed-hostap: Jithu Jance &lt;<a href="mailto:jithu@broadcom.com">jithu@broadcom.com</a>&gt;</font></div>
<div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">---</font></div><div><font color="#222222" face="arial, sans-serif"> wpa_supplicant/ctrl_iface.c       |   14 ++++++++++++++</font></div>
<div><font color="#222222" face="arial, sans-serif"> wpa_supplicant/wpa_supplicant.c   |   12 +++++++++++-</font></div><div><font color="#222222" face="arial, sans-serif"> wpa_supplicant/wpa_supplicant_i.h |    2 ++</font></div>
<div><font color="#222222" face="arial, sans-serif"> 3 files changed, 27 insertions(+), 1 deletions(-)</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c</font></div>
<div><font color="#222222" face="arial, sans-serif">index 11f4674..2e12845 100644</font></div><div><font color="#222222" face="arial, sans-serif">--- a/wpa_supplicant/ctrl_iface.c</font></div><div><font color="#222222" face="arial, sans-serif">+++ b/wpa_supplicant/ctrl_iface.c</font></div>
<div><font color="#222222" face="arial, sans-serif">@@ -3418,6 +3418,20 @@ static int p2p_ctrl_set(struct wpa_supplicant *wpa_s, char *cmd)</font></div><div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">                </span>return 0;</font></div>
<div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font color="#222222" face="arial, sans-serif"> </font></div><div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">        </span>if (os_strcmp(cmd, &quot;conc_priority&quot;) == 0) {</font></div>
<div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                </span>if(os_strncmp(cmd+strlen(&quot;conc_priority&quot;)+1, &quot;sta&quot;, 3) == 0)</font></div><div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                        </span>os_strncpy(wpa_s-&gt;global-&gt;conc_priority, &quot;sta&quot;, 3);</font></div>
<div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                </span>else if(os_strncmp(cmd+strlen(&quot;conc_priority&quot;)+1, &quot;p2p&quot;, 3) == 0)</font></div><div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                        </span>os_strncpy(wpa_s-&gt;global-&gt;conc_priority, &quot;p2p&quot;, 3);</font></div>
<div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                </span>else {</font></div><div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                        </span>wpa_printf(MSG_ERROR, &quot; conc_priority arg should be either sta or p2p&quot;);</font></div>
<div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                        </span>return -1;</font></div><div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div>
<div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                </span>wpa_printf(MSG_DEBUG, &quot;Single Channel Concurrency: Prioritize %s&quot;,</font></div><div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                        </span>   wpa_s-&gt;global-&gt;conc_priority);</font></div>
<div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                </span>return 0;</font></div><div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div>
<div><font color="#222222" face="arial, sans-serif">+</font></div><div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">        </span>if (os_strcmp(cmd, &quot;force_long_sd&quot;) == 0) {</font></div>
<div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">                </span>wpa_s-&gt;force_long_sd = atoi(param);</font></div><div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">                </span>return 0;</font></div>
<div><font color="#222222" face="arial, sans-serif">diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c</font></div><div><font color="#222222" face="arial, sans-serif">index fdee407..1004746 100644</font></div>
<div><font color="#222222" face="arial, sans-serif">--- a/wpa_supplicant/wpa_supplicant.c</font></div><div><font color="#222222" face="arial, sans-serif">+++ b/wpa_supplicant/wpa_supplicant.c</font></div><div><font color="#222222" face="arial, sans-serif">@@ -3152,9 +3152,19 @@ void wpas_connection_failed(struct wpa_supplicant *wpa_s, const u8 *bssid)</font></div>
<div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">                                </span>1000 * (timeout % 1000));</font></div><div><font color="#222222" face="arial, sans-serif"> }</font></div>
<div><font color="#222222" face="arial, sans-serif"> </font></div><div><font color="#222222" face="arial, sans-serif">-</font></div><div><font color="#222222" face="arial, sans-serif"> int wpas_driver_bss_selection(struct wpa_supplicant *wpa_s)</font></div>
<div><font color="#222222" face="arial, sans-serif"> {</font></div><div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">        </span>return wpa_s-&gt;conf-&gt;ap_scan == 2 ||</font></div>
<div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">                </span>(wpa_s-&gt;drv_flags &amp; WPA_DRIVER_FLAGS_BSS_SELECTION);</font></div><div><font color="#222222" face="arial, sans-serif"> }</font></div>
<div><font color="#222222" face="arial, sans-serif">+</font></div><div><font color="#222222" face="arial, sans-serif">+int wpas_is_p2p_prioritized(struct wpa_supplicant *wpa_s)</font></div><div><font color="#222222" face="arial, sans-serif">+{</font></div>
<div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">        </span>if(os_strncmp(wpa_s-&gt;global-&gt;conc_priority, &quot;p2p&quot;, 3) == 0)</font></div><div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                </span>return 1;</font></div>
<div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">        </span>else if(os_strncmp(wpa_s-&gt;global-&gt;conc_priority, &quot;sta&quot;, 3) == 0)</font></div><div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">                </span>return 0;</font></div>
<div><font color="#222222" face="arial, sans-serif">+</font></div><div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">        </span>/* IF conc_priority is not set, return -1 */</font></div>
<div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">        </span>return -1;</font></div><div><font color="#222222" face="arial, sans-serif">+}</font></div><div><font color="#222222" face="arial, sans-serif">diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h</font></div>
<div><font color="#222222" face="arial, sans-serif">index 0ba1935..2ffefde 100644</font></div><div><font color="#222222" face="arial, sans-serif">--- a/wpa_supplicant/wpa_supplicant_i.h</font></div><div><font color="#222222" face="arial, sans-serif">+++ b/wpa_supplicant/wpa_supplicant_i.h</font></div>
<div><font color="#222222" face="arial, sans-serif">@@ -228,6 +228,7 @@ struct wpa_global {</font></div><div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">        </span>int cross_connection;</font></div>
<div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">        </span>struct wpa_freq_range *p2p_disallow_freq;</font></div><div><font color="#222222" face="arial, sans-serif"> <span class="Apple-tab-span" style="white-space:pre">        </span>unsigned int num_p2p_disallow_freq;</font></div>
<div><font color="#222222" face="arial, sans-serif">+<span class="Apple-tab-span" style="white-space:pre">        </span>char conc_priority[5]; /* &quot;sta&quot; or &quot;p2p&quot; */</font></div><div><font color="#222222" face="arial, sans-serif"> };</font></div>
<div><font color="#222222" face="arial, sans-serif"> </font></div><div><font color="#222222" face="arial, sans-serif"> </font></div><div><font color="#222222" face="arial, sans-serif">@@ -612,6 +613,7 @@ void wpa_supplicant_update_config(struct wpa_supplicant *wpa_s);</font></div>
<div><font color="#222222" face="arial, sans-serif"> void wpa_supplicant_clear_status(struct wpa_supplicant *wpa_s);</font></div><div><font color="#222222" face="arial, sans-serif"> void wpas_connection_failed(struct wpa_supplicant *wpa_s, const u8 *bssid);</font></div>
<div><font color="#222222" face="arial, sans-serif"> int wpas_driver_bss_selection(struct wpa_supplicant *wpa_s);</font></div><div><font color="#222222" face="arial, sans-serif">+int wpas_is_p2p_prioritized(struct wpa_supplicant *wpa_s);</font></div>
<div><font color="#222222" face="arial, sans-serif"> </font></div><div><font color="#222222" face="arial, sans-serif"> /* events.c */</font></div><div><font color="#222222" face="arial, sans-serif"> void wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s);</font></div>
<div><font color="#222222" face="arial, sans-serif">-- </font></div><div><font color="#222222" face="arial, sans-serif">1.7.4.1</font></div><div style="font-family:arial,sans-serif;font-size:13px;color:rgb(80,0,80)"><br></div>
</div><div style><span style="color:rgb(34,34,34)"><br></span></div><div style="color:rgb(80,0,80)"><br></div></div></div><div><br></div><div><br></div><br clear="all"><b style="color:rgb(102,102,102)"> Jιтнυ נαη¢є </b><br>