Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 79020
b: refs/heads/master
c: a7d0ada
h: refs/heads/master
v: v3
  • Loading branch information
Holger Schurig authored and David S. Miller committed Jan 28, 2008
1 parent 68c295f commit ad76e85
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 123 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: dd1d12dabfeb123881b0c813d0b7d3585312bacd
refs/heads/master: a7d0adae40d0effc1484261a66fb703eb7e840b5
33 changes: 11 additions & 22 deletions trunk/drivers/net/wireless/libertas/README
Original file line number Diff line number Diff line change
Expand Up @@ -195,44 +195,33 @@ setuserscan

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
ssid="[SSID]" specify a SSID filter for the scan
keep=[0 or 1] keep the previous scan results (1), discard (0)
dur=[scan time] time to scan for each channel in milliseconds
type=[1,2,3] BSS type: 1 (Infra), 2(Adhoc), 3(Any)

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
completed by the driver. If dur tokens are absent, the driver default
setting will be used. The bssid and ssid fields, if blank, will
produce an unfiltered scan. The type field will default to 3 (Any) and
the keep field will default to 0 (Discard).
line. If dur tokens are absent, the driver default setting will be used.
The bssid and ssid fields, if blank, will produce an unfiltered scan.
The type field will default to 3 (Any) and the keep field will default
to 0 (Discard).

Examples:
1) Perform an active scan on channels 1, 6, and 11 in the 'g' band:
echo "chan=1g,6g,11g" > setuserscan
1) Perform a passive scan on all channels for 20 ms per channel:
echo "dur=20" > setuserscan

2) Perform a passive scan on channel 11 for 20 ms:
echo "chan=11gp dur=20" > setuserscan
2) Perform an active scan for a specific SSID:
echo "ssid="TestAP"" > setuserscan

3) Perform an active scan on channels 1, 6, and 11; and a passive scan on
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
3) 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:
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
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)
will be displayed upon completion by use of the getscantable ioctl.
Expand Down
38 changes: 0 additions & 38 deletions trunk/drivers/net/wireless/libertas/debugfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,43 +196,6 @@ static ssize_t lbs_extscan(struct file *file, const char __user *userbuf,
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,
struct lbs_ioctl_user_scan_cfg *scan_cfg)
{
Expand Down Expand Up @@ -346,7 +309,6 @@ static ssize_t lbs_setuserscan(struct file *file,
scan_cfg->bsstype = LBS_SCAN_BSS_TYPE_ANY;

dur = lbs_parse_dur(buf, count, scan_cfg);
lbs_parse_chan(buf, count, scan_cfg, dur);
lbs_parse_bssid(buf, count, scan_cfg);
scan_cfg->clear_bssid = lbs_parse_clear(buf, count, "clear_bssid=");
lbs_parse_ssid(buf, count, scan_cfg);
Expand Down
59 changes: 2 additions & 57 deletions trunk/drivers/net/wireless/libertas/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -416,11 +416,6 @@ lbs_scan_setup_scan_config(struct lbs_private *priv,
struct mrvlietypes_ssidparamset *pssidtlv;
struct lbs_scan_cmd_config *pscancfgout = NULL;
u8 *ptlvpos;
int chanidx;
int scantype;
int scandur;
int channel;
int radiotype;

lbs_deb_enter(LBS_DEB_SCAN);

Expand Down Expand Up @@ -505,58 +500,8 @@ lbs_scan_setup_scan_config(struct lbs_private *priv,
*/
*ppchantlvout = (struct mrvlietypes_chanlistparamset *) ptlvpos;

if (!puserscanin || !puserscanin->chanlist[0].channumber) {
/* Create a default channel scan list */
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");
}

lbs_scan_create_channel_list(priv, pscanchanlist,
*pfilteredscan);
out:
return pscancfgout;
}
Expand Down
5 changes: 0 additions & 5 deletions trunk/drivers/net/wireless/libertas/scan.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,11 +121,6 @@ struct lbs_ioctl_user_scan_cfg {

/* Clear existing scan results matching this 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];
};

/**
Expand Down

0 comments on commit ad76e85

Please sign in to comment.