Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 321a000b authored by Lior David's avatar Lior David Committed by Kalle Valo
Browse files

wil6210: support regular scan on P2P_DEVICE interface



P2P search can only run on the social channel (channel 2).
When issuing a scan request on the P2P_DEVICE interface,
driver ignored the channels argument and always performed a P2P
search.
Fix this by checking the channels argument, if it is
not specified (meaning full scan) or if a non-social channel
was specified, perform a regular scan and not a P2P search.

Signed-off-by: default avatarLior David <qca_liord@qca.qualcomm.com>
Signed-off-by: default avatarMaya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent 290206fa
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -375,8 +375,9 @@ static int wil_cfg80211_scan(struct wiphy *wiphy,
		return -EBUSY;
	}

	/* scan on P2P_DEVICE is handled as p2p search */
	if (wdev->iftype == NL80211_IFTYPE_P2P_DEVICE) {
	/* social scan on P2P_DEVICE is handled as p2p search */
	if (wdev->iftype == NL80211_IFTYPE_P2P_DEVICE &&
	    wil_p2p_is_social_scan(request)) {
		wil->scan_request = request;
		wil->radio_wdev = wdev;
		rc = wil_p2p_search(wil, request);
+6 −0
Original line number Diff line number Diff line
@@ -22,6 +22,12 @@
#define P2P_SEARCH_DURATION_MS 500
#define P2P_DEFAULT_BI 100

bool wil_p2p_is_social_scan(struct cfg80211_scan_request *request)
{
	return (request->n_channels == 1) &&
	       (request->channels[0]->hw_value == P2P_DMG_SOCIAL_CHANNEL);
}

void wil_p2p_discovery_timer_fn(ulong x)
{
	struct wil6210_priv *wil = (void *)x;
+1 −0
Original line number Diff line number Diff line
@@ -776,6 +776,7 @@ void wil_disable_irq(struct wil6210_priv *wil);
void wil_enable_irq(struct wil6210_priv *wil);

/* P2P */
bool wil_p2p_is_social_scan(struct cfg80211_scan_request *request);
void wil_p2p_discovery_timer_fn(ulong x);
int wil_p2p_search(struct wil6210_priv *wil,
		   struct cfg80211_scan_request *request);