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) {
                kfree(bss);
        }
 
-       up(&priv->wpa_sem);
+       mutex_unlock(&priv->wpa_lock);
 }
 
 static size_t
        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);
                len = bss->wpa_ie_len;
                memcpy(wpa_ie, bss->wpa_ie, len);
        }
-       up(&priv->wpa_sem);
+       mutex_unlock(&priv->wpa_lock);
 
        return len;
 }
 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