Search Linux Wireless

Re: [v2] rsi: add support for hardware scan offload

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sushant Kumar Mishra <sushant2k1513@xxxxxxxxx> writes:

> From: Prameela Rani Garnepudi <prameela.j04cs@xxxxxxxxx>
>
> With the current approach of scanning, roaming delays are observed.
> Firmware has support for back ground scanning. To get this advantage,
> mac80211 hardware scan is implemented, which decides type of scan to
> do based on connected state.
>
> When station is in not connected state, this returns operation not
> supported(-EPERM) to trigger software scan in mac80211. In case of
> connected state background scan will be triggered.
>
> Signed-off-by: Prameela Rani Garnepudi <prameela.j04cs@xxxxxxxxx>
> Signed-off-by: Siva Rebbagondla <siva.rebbagondla@xxxxxxxxxxxxxxxxxx>
> Signed-off-by: Sushant Kumar Mishra <sushant.mishra@xxxxxxxxxxxxxxxxxx>

This patch looks much better, thanks. But the subject should be:

[PATCH v2 2/2] rsi: add support for hardware scan offload

> +static int rsi_prepare_probe_request(struct rsi_common *common,
> +				     struct cfg80211_scan_request *scan_req,
> +				     u8 n_ssid, u8 channel, u8 *pbreq,
> +				     u16 *pbreq_len, struct ieee80211_vif *vif)
> +{
> +	struct cfg80211_ssid *ssid_info;
> +	struct ieee80211_hdr *hdr = NULL;
> +	u8 *pos;
> +
> +	if (common->priv->sc_nvifs <= 0)
> +		return -ENODEV;
> +	if (!scan_req)
> +		return -EINVAL;
> +	if (!scan_req->ssids)
> +		return -EINVAL;
> +	ssid_info = &scan_req->ssids[n_ssid];
> +	hdr = (struct ieee80211_hdr *)pbreq;
> +	hdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
> +					 IEEE80211_STYPE_PROBE_REQ);
> +	hdr->duration_id = 0x0;
> +	memset(hdr->addr1, 0xff, ETH_ALEN);
> +	memset(hdr->addr3, 0xff, ETH_ALEN);
> +	ether_addr_copy(hdr->addr2, vif->addr);
> +	hdr->seq_ctrl = 0x00;
> +	pos = (u8 *)hdr + MIN_802_11_HDR_LEN;
> +
> +	*pos++ = WLAN_EID_SSID;
> +	*pos++ = ssid_info->ssid_len;
> +	if (ssid_info->ssid_len)
> +		memcpy(pos, ssid_info->ssid, ssid_info->ssid_len);
> +	pos += ssid_info->ssid_len;
> +
> +	if (scan_req->ie_len)
> +		memcpy(pos, scan_req->ie, scan_req->ie_len);
> +	pos += scan_req->ie_len;
> +	*pbreq_len = pos - pbreq;
> +
> +	return 0;
> +}

But can't you use ieee80211_probereq_get()?

-- 
Kalle Valo



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux