tree-wide: convert open calls to remove spaces to skip_spaces() lib function
[safe/jmp/linux-2.6] / net / wimax / op-rfkill.c
index 40e1210..ae752a6 100644 (file)
@@ -107,8 +107,8 @@ void wimax_report_rfkill_hw(struct wimax_dev *wimax_dev,
 
        if (state != wimax_dev->rf_hw) {
                wimax_dev->rf_hw = state;
-               if (wimax_dev->rf_hw == WIMAX_RF_ON
-                   && wimax_dev->rf_sw == WIMAX_RF_ON)
+               if (wimax_dev->rf_hw == WIMAX_RF_ON &&
+                   wimax_dev->rf_sw == WIMAX_RF_ON)
                        wimax_state = WIMAX_ST_READY;
                else
                        wimax_state = WIMAX_ST_RADIO_OFF;
@@ -163,8 +163,8 @@ void wimax_report_rfkill_sw(struct wimax_dev *wimax_dev,
 
        if (state != wimax_dev->rf_sw) {
                wimax_dev->rf_sw = state;
-               if (wimax_dev->rf_hw == WIMAX_RF_ON
-                   && wimax_dev->rf_sw == WIMAX_RF_ON)
+               if (wimax_dev->rf_hw == WIMAX_RF_ON &&
+                   wimax_dev->rf_sw == WIMAX_RF_ON)
                        wimax_state = WIMAX_ST_READY;
                else
                        wimax_state = WIMAX_ST_RADIO_OFF;
@@ -305,8 +305,15 @@ int wimax_rfkill(struct wimax_dev *wimax_dev, enum wimax_rf_state state)
        d_fnstart(3, dev, "(wimax_dev %p state %u)\n", wimax_dev, state);
        mutex_lock(&wimax_dev->mutex);
        result = wimax_dev_is_ready(wimax_dev);
-       if (result < 0)
+       if (result < 0) {
+               /* While initializing, < 1.4.3 wimax-tools versions use
+                * this call to check if the device is a valid WiMAX
+                * device; so we allow it to proceed always,
+                * considering the radios are all off. */
+               if (result == -ENOMEDIUM && state == WIMAX_RF_QUERY)
+                       result = WIMAX_RF_OFF << 1 | WIMAX_RF_OFF;
                goto error_not_ready;
+       }
        switch (state) {
        case WIMAX_RF_ON:
        case WIMAX_RF_OFF: