}
break;
}
+ case SIOCSIWAP:
+ {
+ if (wrqu->ap_addr.sa_family != ARPHRD_ETHER)
+ return -EINVAL;
+
+ if (wl_ioctl(dev,WLC_SET_BSSID,wrqu->ap_addr.sa_data,6) < 0)
+ return -EINVAL;
+
+ break;
+ }
case SIOCGIWAP:
{
wrqu->ap_addr.sa_family = ARPHRD_ETHER;
iw_handler_get_spy, /* SIOCGIWSPY */
iw_handler_set_thrspy, /* SIOCSIWTHRSPY */
iw_handler_get_thrspy, /* SIOCGIWTHRSPY */
- NULL, /* SIOCSIWAP */
+ wlcompat_ioctl, /* SIOCSIWAP */
wlcompat_ioctl, /* SIOCGIWAP */
NULL, /* -- hole -- */
NULL, /* SIOCGIWAPLIST */
{ PRIV_SET_TXPWR_LIMIT,
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
0,
- "set_txpwr_limit"
+ "set_txpwr_force"
},
{ PRIV_GET_TXPWR_LIMIT,
0,
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
- "get_txpwr_limit"
+ "get_txpwr_force"
}
};
static int __init wlcompat_init()
{
- dev = dev_get_by_name("eth1");
+ int found = 0, i;
+ char *devname = "eth0";
+
+ while (!found && devname[3] < '3') {
+ devname[3]++;
+
+ dev = dev_get_by_name(devname);
+ if ((wl_ioctl(dev, WLC_GET_MAGIC, &i, sizeof(i)) == 0) && i == WLC_IOCTL_MAGIC)
+ found = 1;
+ }
+
+ if (!found) {
+ printk("No Broadcom devices found.\n");
+ return -ENODEV;
+ }
+
+
#ifdef DEBUG
old_ioctl = dev->do_ioctl;
dev->do_ioctl = new_ioctl;