modify SIOCSIWAP call to associate with a specific bssid when in managed mode
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 24 May 2005 15:23:45 +0000 (15:23 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 24 May 2005 15:23:45 +0000 (15:23 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@1051 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/openwrt/wlcompat.c

index 01bfb0b..d010e2b 100644 (file)
@@ -314,10 +314,15 @@ static int wlcompat_ioctl(struct net_device *dev,
                }
                case SIOCSIWAP:
                {
+                       int ap = 0;
+                       
                        if (wrqu->ap_addr.sa_family != ARPHRD_ETHER)
                                return -EINVAL;
 
-                       if (wl_ioctl(dev,WLC_SET_BSSID,wrqu->ap_addr.sa_data,6) < 0)
+                       if (wl_ioctl(dev, WLC_GET_AP, &ap, sizeof(ap)) < 0)
+                               return -EINVAL;
+                       
+                       if (wl_ioctl(dev, (ap ? WLC_SET_BSSID : WLC_REASSOC), wrqu->ap_addr.sa_data, 6) < 0)
                                return -EINVAL;
 
                        break;