ieee->be_scan_inprogress = true;
 
-       down(&ieee->scan_sem);
+       mutex_lock(&ieee->scan_mutex);
 
        while (1) {
                do {
                if (IS_DOT11D_ENABLE(ieee))
                        DOT11D_ScanComplete(ieee);
        }
-       up(&ieee->scan_sem);
+       mutex_unlock(&ieee->scan_mutex);
 
        ieee->be_scan_inprogress = false;
 
        if (rtllib_act_scanning(ieee, true))
                return;
 
-       down(&ieee->scan_sem);
+       mutex_lock(&ieee->scan_mutex);
 
        if (ieee->eRFPowerState == eRfOff) {
                netdev_info(ieee->dev,
        schedule_delayed_work(&ieee->softmac_scan_wq,
                              msecs_to_jiffies(RTLLIB_SOFTMAC_SCAN_TIME));
 
-       up(&ieee->scan_sem);
+       mutex_unlock(&ieee->scan_mutex);
        return;
 
 out:
        ieee->actscanning = false;
        ieee->scan_watch_dog = 0;
        ieee->scanning_continue = 0;
-       up(&ieee->scan_sem);
+       mutex_unlock(&ieee->scan_mutex);
 }
 
 
 
 static void rtllib_softmac_stop_scan(struct rtllib_device *ieee)
 {
-       down(&ieee->scan_sem);
+       mutex_lock(&ieee->scan_mutex);
        ieee->scan_watch_dog = 0;
        if (ieee->scanning_continue == 1) {
                ieee->scanning_continue = 0;
                cancel_delayed_work_sync(&ieee->softmac_scan_wq);
        }
 
-       up(&ieee->scan_sem);
+       mutex_unlock(&ieee->scan_mutex);
 }
 
 void rtllib_stop_scan(struct rtllib_device *ieee)
                      ieee);
 
        mutex_init(&ieee->wx_mutex);
-       sema_init(&ieee->scan_sem, 1);
+       mutex_init(&ieee->scan_mutex);
        sema_init(&ieee->ips_sem, 1);
 
        spin_lock_init(&ieee->mgmt_tx_lock);