]> err.no Git - linux-2.6/blobdiff - drivers/net/wireless/prism54/isl_ioctl.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
[linux-2.6] / drivers / net / wireless / prism54 / isl_ioctl.c
index df1594ea942cd2c802d3a7dd854a90dc76899644..5b375b289036fe8d5f9ed2f5dd8fd73325831725 100644 (file)
@@ -165,7 +165,7 @@ prism54_update_stats(struct work_struct *work)
        struct obj_bss bss, *bss2;
        union oid_res_t r;
 
-       down(&priv->stats_sem);
+       mutex_lock(&priv->stats_lock);
 
 /* Noise floor.
  * I'm not sure if the unit is dBm.
@@ -207,7 +207,7 @@ prism54_update_stats(struct work_struct *work)
        mgt_get_request(priv, DOT11_OID_MPDUTXFAILED, 0, NULL, &r);
        priv->local_iwstatistics.discard.retries = r.u;
 
-       up(&priv->stats_sem);
+       mutex_unlock(&priv->stats_lock);
 
        return;
 }
@@ -218,12 +218,12 @@ prism54_get_wireless_stats(struct net_device *ndev)
        islpci_private *priv = netdev_priv(ndev);
 
        /* If the stats are being updated return old data */
-       if (down_trylock(&priv->stats_sem) == 0) {
+       if (mutex_trylock(&priv->stats_lock)) {
                memcpy(&priv->iwstatistics, &priv->local_iwstatistics,
                       sizeof (struct iw_statistics));
                /* They won't be marked updated for the next time */
                priv->local_iwstatistics.qual.updated = 0;
-               up(&priv->stats_sem);
+               mutex_unlock(&priv->stats_lock);
        } else
                priv->iwstatistics.qual.updated = 0;
 
@@ -1186,7 +1186,7 @@ prism54_get_encode(struct net_device *ndev, struct iw_request_info *info,
        rvalue |= mgt_get_request(priv, DOT11_OID_DEFKEYID, 0, NULL, &r);
        devindex = r.u;
        /* Now get the key, return it */
-       if ((index < 0) || (index > 3))
+       if (index == -1 || index > 3)
                /* no index provided, use the current one */
                index = devindex;
        rvalue |= mgt_get_request(priv, DOT11_OID_DEFKEYX, index, NULL, &r);
@@ -2081,6 +2081,7 @@ link_changed(struct net_device *ndev, u32 bitrate)
        islpci_private *priv = netdev_priv(ndev);
 
        if (bitrate) {
+               netif_carrier_on(ndev);
                if (priv->iw_mode == IW_MODE_INFRA) {
                        union iwreq_data uwrq;
                        prism54_get_wap(ndev, NULL, (struct sockaddr *) &uwrq,
@@ -2089,8 +2090,10 @@ link_changed(struct net_device *ndev, u32 bitrate)
                } else
                        send_simple_event(netdev_priv(ndev),
                                          "Link established");
-       } else
+       } else {
+               netif_carrier_off(ndev);
                send_simple_event(netdev_priv(ndev), "Link lost");
+       }
 }
 
 /* Beacon/ProbeResp payload header */
@@ -2114,7 +2117,7 @@ prism54_wpa_bss_ie_add(islpci_private *priv, u8 *bssid,
        if (wpa_ie_len > MAX_WPA_IE_LEN)
                wpa_ie_len = MAX_WPA_IE_LEN;
 
-       down(&priv->wpa_sem);
+       mutex_lock(&priv->wpa_lock);
 
        /* try to use existing entry */
        list_for_each(ptr, &priv->bss_wpa_list) {
@@ -2165,7 +2168,7 @@ prism54_wpa_bss_ie_add(islpci_private *priv, u8 *bssid,
                kfree(bss);
        }
 
-       up(&priv->wpa_sem);
+       mutex_unlock(&priv->wpa_lock);
 }
 
 static size_t
@@ -2175,7 +2178,7 @@ prism54_wpa_bss_ie_get(islpci_private *priv, u8 *bssid, u8 *wpa_ie)
        struct islpci_bss_wpa_ie *bss = NULL;
        size_t len = 0;
 
-       down(&priv->wpa_sem);
+       mutex_lock(&priv->wpa_lock);
 
        list_for_each(ptr, &priv->bss_wpa_list) {
                bss = list_entry(ptr, struct islpci_bss_wpa_ie, list);
@@ -2187,7 +2190,7 @@ prism54_wpa_bss_ie_get(islpci_private *priv, u8 *bssid, u8 *wpa_ie)
                len = bss->wpa_ie_len;
                memcpy(wpa_ie, bss->wpa_ie, len);
        }
-       up(&priv->wpa_sem);
+       mutex_unlock(&priv->wpa_lock);
 
        return len;
 }
@@ -2196,7 +2199,7 @@ void
 prism54_wpa_bss_ie_init(islpci_private *priv)
 {
        INIT_LIST_HEAD(&priv->bss_wpa_list);
-       sema_init(&priv->wpa_sem, 1);
+       mutex_init(&priv->wpa_lock);
 }
 
 void