Thanks Jouni & Reinette for your comments. Please find my comments inline.<br clear="all"><b style="color:rgb(102,102,102)"> </b><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> 3. If GO is not able to move the channel or the driver doesn't support the functionality, remove the P2P GO interface.<br>
> 4. If the conflicting interface is a P2P Client, disconnect & remove the client interface.<br>
<br>
</div>How about rejecting the new STA connection instead of killing existing<br>
connection? In other words, some entity above wpa_supplicant would need<br>
to kill the group first before being able to get the STA connection in<br>
such a case.<br></blockquote><div><br></div><div>Do you mean that we will keep the BSS disabled and then let the application/entity above know about the frequency conflict. Then the application would take a call whether to remove the p2p group or not. If application choose to remove p2p_group, it may need to enable the disabled BSS so that the STA connection can proceed. If this is what you meant, then i guess probably we might have to define a new event which will notify the application of the frequency conflict with enough data [the network id of the bss in conflict so that the application can enable the network blob after removing the P2P group]. Please correct me if my understanding is wrong.</div>
<div>If this is fine with you, i shall generate a new patch and send it to you.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
> diff --git a/src/drivers/driver.h b/src/drivers/driver.h<br>
<div class="im">> @@ -2483,6 +2483,17 @@ struct wpa_driver_ops {<br>
</div><div class="im">> + /**<br>
> + * go_switch_channel - Announce channel switch and migrate the GO to a<br>
> + * given frequency.<br>
> + * @priv: Private driver interface data<br>
> + * @freq: frequency in MHz<br>
> + * Returns: 0 on success, -1 on failure<br>
> + *<br>
> + * This function is used to move the GO to the legacy STA channel to avoid<br>
> + * frequency conflict in single channel concurrency.<br>
> + */<br>
> + int (*go_switch_channel)(void *priv, unsigned int freq);<br>
<br>
</div>I would assume that this could be made generic to both non-P2P AP and<br>
P2P GO, so the same could be just switch_channels instead of something<br>
P2P specific.<br></blockquote><div><br></div><div>I will update this part.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
> diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c<br>
<div class="im">> @@ -1415,6 +1416,16 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,<br>
</div><div class="im">> + /* If multichannel concurrency is not supported, check for any frequency<br>
> + * conflict and take appropriate action.<br>
> + */<br>
> + if (((freq = wpa_drv_shared_freq(wpa_s)) > 0) && (freq != params.freq) &&<br>
> + !(wpa_s->drv_flags & WPA_DRIVER_FLAGS_MULTI_CHANNEL_CONCURRENT)) {<br>
<br>
</div>I would reorder those conditions to avoid the wpa_drv_shared_freq() call<br>
is multi-channel concurrency is supported.<br></blockquote><div><br></div><div>Agreed. :)</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>- Jithu Jance.</div></div>