libertas: remove user-specified channel list
Remove the ability to specify channels to scan via debugfs Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de> Acked-by: Dan Williams <dcbw@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
dd1d12dabf
commit
a7d0adae40
|
@ -195,8 +195,6 @@ setuserscan
|
||||||
|
|
||||||
where [ARGS]:
|
where [ARGS]:
|
||||||
|
|
||||||
chan=[chan#][band][mode] where band is [a,b,g] and mode is
|
|
||||||
blank for active or 'p' for passive
|
|
||||||
bssid=xx:xx:xx:xx:xx:xx specify a BSSID filter for the scan
|
bssid=xx:xx:xx:xx:xx:xx specify a BSSID filter for the scan
|
||||||
ssid="[SSID]" specify a SSID filter for the scan
|
ssid="[SSID]" specify a SSID filter for the scan
|
||||||
keep=[0 or 1] keep the previous scan results (1), discard (0)
|
keep=[0 or 1] keep the previous scan results (1), discard (0)
|
||||||
|
@ -204,35 +202,26 @@ setuserscan
|
||||||
type=[1,2,3] BSS type: 1 (Infra), 2(Adhoc), 3(Any)
|
type=[1,2,3] BSS type: 1 (Infra), 2(Adhoc), 3(Any)
|
||||||
|
|
||||||
Any combination of the above arguments can be supplied on the command
|
Any combination of the above arguments can be supplied on the command
|
||||||
line. If the chan token is absent, a full channel scan will be
|
line. If dur tokens are absent, the driver default setting will be used.
|
||||||
completed by the driver. If dur tokens are absent, the driver default
|
The bssid and ssid fields, if blank, will produce an unfiltered scan.
|
||||||
setting will be used. The bssid and ssid fields, if blank, will
|
The type field will default to 3 (Any) and the keep field will default
|
||||||
produce an unfiltered scan. The type field will default to 3 (Any) and
|
to 0 (Discard).
|
||||||
the keep field will default to 0 (Discard).
|
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
1) Perform an active scan on channels 1, 6, and 11 in the 'g' band:
|
1) Perform a passive scan on all channels for 20 ms per channel:
|
||||||
echo "chan=1g,6g,11g" > setuserscan
|
echo "dur=20" > setuserscan
|
||||||
|
|
||||||
2) Perform a passive scan on channel 11 for 20 ms:
|
2) Perform an active scan for a specific SSID:
|
||||||
echo "chan=11gp dur=20" > setuserscan
|
echo "ssid="TestAP"" > setuserscan
|
||||||
|
|
||||||
3) Perform an active scan on channels 1, 6, and 11; and a passive scan on
|
3) Scan all available channels (B/G, A bands) for a specific BSSID, keep
|
||||||
channel 36 in the 'a' band:
|
|
||||||
|
|
||||||
echo "chan=1g,6g,11g,36ap" > setuserscan
|
|
||||||
|
|
||||||
4) Perform an active scan on channel 6 and 36 for a specific SSID:
|
|
||||||
echo "chan=6g,36a ssid="TestAP"" > setuserscan
|
|
||||||
|
|
||||||
5) Scan all available channels (B/G, A bands) for a specific BSSID, keep
|
|
||||||
the current scan table intact, update existing or append new scan data:
|
the current scan table intact, update existing or append new scan data:
|
||||||
echo "bssid=00:50:43:20:12:82 keep=1" > setuserscan
|
echo "bssid=00:50:43:20:12:82 keep=1" > setuserscan
|
||||||
|
|
||||||
6) Scan channel 6, for all infrastructure networks.
|
4) Scan for all infrastructure networks.
|
||||||
Keep the previous scan table intact. Update any duplicate BSSID/SSID
|
Keep the previous scan table intact. Update any duplicate BSSID/SSID
|
||||||
matches with the new scan data:
|
matches with the new scan data:
|
||||||
echo "chan=6g type=1 keep=1" > setuserscan
|
echo "type=1 keep=1" > setuserscan
|
||||||
|
|
||||||
All entries in the scan table (not just the new scan data when keep=1)
|
All entries in the scan table (not just the new scan data when keep=1)
|
||||||
will be displayed upon completion by use of the getscantable ioctl.
|
will be displayed upon completion by use of the getscantable ioctl.
|
||||||
|
|
|
@ -196,43 +196,6 @@ out_unlock:
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int lbs_parse_chan(char *buf, size_t count,
|
|
||||||
struct lbs_ioctl_user_scan_cfg *scan_cfg, int dur)
|
|
||||||
{
|
|
||||||
char *start, *end, *hold, *str;
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
start = strstr(buf, "chan=");
|
|
||||||
if (!start)
|
|
||||||
return -EINVAL;
|
|
||||||
start += 5;
|
|
||||||
end = strchr(start, ' ');
|
|
||||||
if (!end)
|
|
||||||
end = buf + count;
|
|
||||||
hold = kzalloc((end - start)+1, GFP_KERNEL);
|
|
||||||
if (!hold)
|
|
||||||
return -ENOMEM;
|
|
||||||
strncpy(hold, start, end - start);
|
|
||||||
hold[(end-start)+1] = '\0';
|
|
||||||
while(hold && (str = strsep(&hold, ","))) {
|
|
||||||
int chan;
|
|
||||||
char band, passive = 0;
|
|
||||||
sscanf(str, "%d%c%c", &chan, &band, &passive);
|
|
||||||
scan_cfg->chanlist[i].channumber = chan;
|
|
||||||
scan_cfg->chanlist[i].scantype = passive ? 1 : 0;
|
|
||||||
if (band == 'b' || band == 'g')
|
|
||||||
scan_cfg->chanlist[i].radiotype = 0;
|
|
||||||
else if (band == 'a')
|
|
||||||
scan_cfg->chanlist[i].radiotype = 1;
|
|
||||||
|
|
||||||
scan_cfg->chanlist[i].scantime = dur;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
kfree(hold);
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void lbs_parse_bssid(char *buf, size_t count,
|
static void lbs_parse_bssid(char *buf, size_t count,
|
||||||
struct lbs_ioctl_user_scan_cfg *scan_cfg)
|
struct lbs_ioctl_user_scan_cfg *scan_cfg)
|
||||||
{
|
{
|
||||||
|
@ -346,7 +309,6 @@ static ssize_t lbs_setuserscan(struct file *file,
|
||||||
scan_cfg->bsstype = LBS_SCAN_BSS_TYPE_ANY;
|
scan_cfg->bsstype = LBS_SCAN_BSS_TYPE_ANY;
|
||||||
|
|
||||||
dur = lbs_parse_dur(buf, count, scan_cfg);
|
dur = lbs_parse_dur(buf, count, scan_cfg);
|
||||||
lbs_parse_chan(buf, count, scan_cfg, dur);
|
|
||||||
lbs_parse_bssid(buf, count, scan_cfg);
|
lbs_parse_bssid(buf, count, scan_cfg);
|
||||||
scan_cfg->clear_bssid = lbs_parse_clear(buf, count, "clear_bssid=");
|
scan_cfg->clear_bssid = lbs_parse_clear(buf, count, "clear_bssid=");
|
||||||
lbs_parse_ssid(buf, count, scan_cfg);
|
lbs_parse_ssid(buf, count, scan_cfg);
|
||||||
|
|
|
@ -416,11 +416,6 @@ lbs_scan_setup_scan_config(struct lbs_private *priv,
|
||||||
struct mrvlietypes_ssidparamset *pssidtlv;
|
struct mrvlietypes_ssidparamset *pssidtlv;
|
||||||
struct lbs_scan_cmd_config *pscancfgout = NULL;
|
struct lbs_scan_cmd_config *pscancfgout = NULL;
|
||||||
u8 *ptlvpos;
|
u8 *ptlvpos;
|
||||||
int chanidx;
|
|
||||||
int scantype;
|
|
||||||
int scandur;
|
|
||||||
int channel;
|
|
||||||
int radiotype;
|
|
||||||
|
|
||||||
lbs_deb_enter(LBS_DEB_SCAN);
|
lbs_deb_enter(LBS_DEB_SCAN);
|
||||||
|
|
||||||
|
@ -505,58 +500,8 @@ lbs_scan_setup_scan_config(struct lbs_private *priv,
|
||||||
*/
|
*/
|
||||||
*ppchantlvout = (struct mrvlietypes_chanlistparamset *) ptlvpos;
|
*ppchantlvout = (struct mrvlietypes_chanlistparamset *) ptlvpos;
|
||||||
|
|
||||||
if (!puserscanin || !puserscanin->chanlist[0].channumber) {
|
lbs_scan_create_channel_list(priv, pscanchanlist,
|
||||||
/* Create a default channel scan list */
|
*pfilteredscan);
|
||||||
lbs_deb_scan("creating full region channel list\n");
|
|
||||||
lbs_scan_create_channel_list(priv, pscanchanlist,
|
|
||||||
*pfilteredscan);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (chanidx = 0;
|
|
||||||
chanidx < LBS_IOCTL_USER_SCAN_CHAN_MAX
|
|
||||||
&& puserscanin->chanlist[chanidx].channumber; chanidx++) {
|
|
||||||
|
|
||||||
channel = puserscanin->chanlist[chanidx].channumber;
|
|
||||||
(pscanchanlist + chanidx)->channumber = channel;
|
|
||||||
|
|
||||||
radiotype = puserscanin->chanlist[chanidx].radiotype;
|
|
||||||
(pscanchanlist + chanidx)->radiotype = radiotype;
|
|
||||||
|
|
||||||
scantype = puserscanin->chanlist[chanidx].scantype;
|
|
||||||
|
|
||||||
if (scantype == CMD_SCAN_TYPE_PASSIVE) {
|
|
||||||
(pscanchanlist +
|
|
||||||
chanidx)->chanscanmode.passivescan = 1;
|
|
||||||
} else {
|
|
||||||
(pscanchanlist +
|
|
||||||
chanidx)->chanscanmode.passivescan = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (puserscanin->chanlist[chanidx].scantime) {
|
|
||||||
scandur = puserscanin->chanlist[chanidx].scantime;
|
|
||||||
} else {
|
|
||||||
if (scantype == CMD_SCAN_TYPE_PASSIVE) {
|
|
||||||
scandur = MRVDRV_PASSIVE_SCAN_CHAN_TIME;
|
|
||||||
} else {
|
|
||||||
scandur = MRVDRV_ACTIVE_SCAN_CHAN_TIME;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
(pscanchanlist + chanidx)->minscantime =
|
|
||||||
cpu_to_le16(scandur);
|
|
||||||
(pscanchanlist + chanidx)->maxscantime =
|
|
||||||
cpu_to_le16(scandur);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check if we are only scanning the current channel */
|
|
||||||
if ((chanidx == 1) &&
|
|
||||||
(puserscanin->chanlist[0].channumber ==
|
|
||||||
priv->adapter->curbssparams.channel)) {
|
|
||||||
*pscancurrentonly = 1;
|
|
||||||
lbs_deb_scan("scanning current channel only");
|
|
||||||
}
|
|
||||||
|
|
||||||
out:
|
out:
|
||||||
return pscancfgout;
|
return pscancfgout;
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,11 +121,6 @@ struct lbs_ioctl_user_scan_cfg {
|
||||||
|
|
||||||
/* Clear existing scan results matching this SSID */
|
/* Clear existing scan results matching this SSID */
|
||||||
u8 clear_ssid;
|
u8 clear_ssid;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Variable number (fixed maximum) of channels to scan up
|
|
||||||
*/
|
|
||||||
struct lbs_ioctl_user_scan_chan chanlist[LBS_IOCTL_USER_SCAN_CHAN_MAX];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue