Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 79181
b: refs/heads/master
c: 823eaa2
h: refs/heads/master
i:
  79179: 16ee534
v: v3
  • Loading branch information
David Woodhouse authored and David S. Miller committed Jan 28, 2008
1 parent 5a31591 commit 63facec
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 2 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: f5956bf1e4575175135d636db1b7f3ab950e0dc3
refs/heads/master: 823eaa2cc261e3723772aa4aaa4d76c5815b117f
53 changes: 52 additions & 1 deletion trunk/drivers/net/wireless/libertas/wext.c
Original file line number Diff line number Diff line change
Expand Up @@ -959,6 +959,57 @@ static int lbs_set_freq(struct net_device *dev, struct iw_request_info *info,
return ret;
}

static int lbs_mesh_set_freq(struct net_device *dev,
struct iw_request_info *info,
struct iw_freq *fwrq, char *extra)
{
struct lbs_private *priv = dev->priv;
struct chan_freq_power *cfp;
int ret = -EINVAL;

lbs_deb_enter(LBS_DEB_WEXT);

/* If setting by frequency, convert to a channel */
if (fwrq->e == 1) {
long f = fwrq->m / 100000;

cfp = find_cfp_by_band_and_freq(priv, 0, f);
if (!cfp) {
lbs_deb_wext("invalid freq %ld\n", f);
goto out;
}

fwrq->e = 0;
fwrq->m = (int) cfp->channel;
}

/* Setting by channel number */
if (fwrq->m > 1000 || fwrq->e > 0) {
goto out;
}

cfp = lbs_find_cfp_by_band_and_channel(priv, 0, fwrq->m);
if (!cfp) {
goto out;
}

if (fwrq->m != priv->curbssparams.channel) {
lbs_deb_wext("mesh channel change forces eth disconnect\n");
if (priv->mode == IW_MODE_INFRA)
lbs_send_deauthentication(priv);
else if (priv->mode == IW_MODE_ADHOC)
lbs_stop_adhoc_network(priv);
}
priv->curbssparams.channel = fwrq->m;
lbs_mesh_config(priv, 0);
lbs_mesh_config(priv, 1);
ret = 0;

out:
lbs_deb_leave_args(LBS_DEB_WEXT, "ret %d", ret);
return ret;
}

static int lbs_set_rate(struct net_device *dev, struct iw_request_info *info,
struct iw_param *vwrq, char *extra)
{
Expand Down Expand Up @@ -2097,7 +2148,7 @@ static const iw_handler mesh_wlan_handler[] = {
(iw_handler) lbs_get_name, /* SIOCGIWNAME */
(iw_handler) NULL, /* SIOCSIWNWID */
(iw_handler) NULL, /* SIOCGIWNWID */
(iw_handler) lbs_set_freq, /* SIOCSIWFREQ */
(iw_handler) lbs_mesh_set_freq, /* SIOCSIWFREQ */
(iw_handler) lbs_get_freq, /* SIOCGIWFREQ */
(iw_handler) NULL, /* SIOCSIWMODE */
(iw_handler) mesh_wlan_get_mode, /* SIOCGIWMODE */
Expand Down

0 comments on commit 63facec

Please sign in to comment.