From d79e48e59b54d84d97c124b62ed6f30c60c6aece Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Fri, 8 Apr 2005 12:30:38 +0000
Subject: add SIOCSIWESSID

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@579 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 openwrt/package/openwrt/wlcompat.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

(limited to 'openwrt')

diff --git a/openwrt/package/openwrt/wlcompat.c b/openwrt/package/openwrt/wlcompat.c
index cce64e7c5..ac85da0cf 100644
--- a/openwrt/package/openwrt/wlcompat.c
+++ b/openwrt/package/openwrt/wlcompat.c
@@ -81,7 +81,7 @@ static int wlcompat_ioctl_getiwrange(struct net_device *dev,
 	range->max_pmt = 65535 * 1000;
 
 	range->txpower_capa = IW_TXPOW_MWATT;
-	
+
 	return 0;
 }
 
@@ -119,6 +119,17 @@ static int wlcompat_ioctl(struct net_device *dev,
 			memcpy(extra,ssid.SSID,ssid.SSID_len + 1);
 			break;
 		}
+		case SIOCSIWESSID:
+		{
+			wlc_ssid_t ssid;
+			memset(&ssid, 0, sizeof(ssid));
+			ssid.SSID_len = strlen(extra);
+			if (ssid.SSID_len > WLC_ESSID_MAX_SIZE)
+				ssid.SSID_len = WLC_ESSID_MAX_SIZE;
+			memcpy(ssid.SSID, extra, ssid.SSID_len);
+			wl_ioctl(dev, WLC_SET_SSID, &ssid, sizeof(ssid));
+			break;
+		}
 		case SIOCGIWRTS:
 		{
 			wl_ioctl(dev,WLC_GET_RTS,&(wrqu->rts.value),sizeof(int));
@@ -148,6 +159,11 @@ static int wlcompat_ioctl(struct net_device *dev,
 			err = wlcompat_ioctl_getiwrange(dev, extra);
 			break;
 		}
+		default:
+		{
+			err = -EINVAL;
+			break;
+		}
 	}
 	
 	return err;
@@ -180,7 +196,7 @@ static const iw_handler	 wlcompat_handler[] = {
 	NULL,			/* SIOCGIWAPLIST */
 	NULL,			/* -- hole -- */
 	NULL,			/* -- hole -- */
-	NULL,			/* SIOCSIWESSID */
+	wlcompat_ioctl,		/* SIOCSIWESSID */
 	wlcompat_ioctl,		/* SIOCGIWESSID */
 	NULL,			/* SIOCSIWNICKN */
 	NULL,			/* SIOCGIWNICKN */
-- 
cgit v1.2.3