staging: r8712u: Sets to SSID, and to AP MAC#, can now be done when the interface...
authorAli Bahar <ali@internetdog.org>
Tue, 12 Jul 2011 15:10:55 +0000 (23:10 +0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 23 Aug 2011 19:24:31 +0000 (12:24 -0700)
The original Realtek code assumed that ioctl Sets get done after the
interface is Up. This included the set to Essid and to the AP MAC#;
and it fit Realtek's installation procedure. But there is no such
necessity for the adapter, and no stated requirement found
elsewhere. Also, wireless drivers typically permit this.

A typical error message used to be:
Error for wireless request "Set ESSID" (8B1A) :
    SET failed on device wlan0 ; Operation not permitted.

Signed-off-by: Ali Bahar <ali@internetDog.org>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/rtl8712/drv_types.h
drivers/staging/rtl8712/rtl871x_ioctl_linux.c

index 4f380a64aa85018bf6dbb983697b8049f50d06fc..c5303c3fda145e932f6f149442ad66c25bb68c4a 100644 (file)
@@ -117,6 +117,11 @@ struct dvobj_priv {
        struct usb_device *pusbdev;
 };
 
+/**
+ * struct _adapter - the main adapter structure for this device.
+ *
+ * bup: True indicates that the interface is Up.
+ */
 struct _adapter {
        struct  dvobj_priv dvobjpriv;
        struct  mlme_priv mlmepriv;
index 40e6b5cc412d4dea8b3bc12eed4646842741b97b..59bdab105334ea700c0a3cc9cb40e9367aa73b50 100644 (file)
@@ -975,6 +975,13 @@ static int r871x_wx_set_priv(struct net_device *dev,
  * s2. set_802_11_authentication_mode()
  * s3. set_802_11_encryption_mode()
  * s4. set_802_11_bssid()
+ *
+ * This function intends to handle the Set AP command, which specifies the
+ * MAC# of a preferred Access Point.
+ * Currently, the request comes via Wireless Extensions' SIOCSIWAP ioctl.
+ *
+ * For this operation to succeed, there is no need for the interface to be Up.
+ *
  */
 static int r8711_wx_set_wap(struct net_device *dev,
                         struct iw_request_info *info,
@@ -992,8 +999,6 @@ static int r8711_wx_set_wap(struct net_device *dev,
        struct wlan_network *pnetwork = NULL;
        enum NDIS_802_11_AUTHENTICATION_MODE    authmode;
 
-       if (padapter->bup == false)
-               return -1;
        if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == true)
                return -1;
        if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == true)
@@ -1074,6 +1079,14 @@ static int r871x_wx_set_mlme(struct net_device *dev,
        return ret;
 }
 
+/**
+ *
+ * This function intends to handle the Set Scan command.
+ * Currently, the request comes via Wireless Extensions' SIOCSIWSCAN ioctl.
+ *
+ * For this operation to succeed, the interface is brought Up beforehand.
+ *
+ */
 static int r8711_wx_set_scan(struct net_device *dev,
                        struct iw_request_info *a,
                        union iwreq_data *wrqu, char *extra)
@@ -1169,6 +1182,12 @@ static int r8711_wx_get_scan(struct net_device *dev,
  * s2. set_802_11_authenticaion_mode()
  * s3. set_802_11_encryption_mode()
  * s4. set_802_11_ssid()
+ *
+ * This function intends to handle the Set ESSID command.
+ * Currently, the request comes via the Wireless Extensions' SIOCSIWESSID ioctl.
+ *
+ * For this operation to succeed, there is no need for the interface to be Up.
+ *
  */
 static int r8711_wx_set_essid(struct net_device *dev,
                                struct iw_request_info *a,
@@ -1184,8 +1203,6 @@ static int r8711_wx_set_essid(struct net_device *dev,
        struct list_head *phead;
        u32 len;
 
-       if (padapter->bup == false)
-               return -1;
        if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
                return -1;
        if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))