Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 111311
b: refs/heads/master
c: 2575c11
h: refs/heads/master
i:
  111309: bfa09e8
  111307: fad8270
  111303: 68f5b51
  111295: 635f6d3
v: v3
  • Loading branch information
Mattias Nissler authored and John W. Linville committed Aug 29, 2008
1 parent 3470c65 commit b992848
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 37 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3ee54a07d34fd9b5c34bb1488113fb32be58e38f
refs/heads/master: 2575c11d6ee7266f0f035e55c5056b36597cd336
1 change: 0 additions & 1 deletion trunk/drivers/net/wireless/rt2x00/rt2x00.h
Original file line number Diff line number Diff line change
Expand Up @@ -636,7 +636,6 @@ enum rt2x00_flags {
DEVICE_STATE_STARTED_SUSPEND,
DEVICE_STATE_ENABLED_RADIO,
DEVICE_STATE_DISABLED_RADIO_HW,
DEVICE_STATE_DIRTY_CONFIG,

/*
* Driver requirements
Expand Down
10 changes: 0 additions & 10 deletions trunk/drivers/net/wireless/rt2x00/rt2x00dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -1014,21 +1014,11 @@ int rt2x00lib_start(struct rt2x00_dev *rt2x00dev)
if (retval)
return retval;

/*
* Enable radio.
*/
retval = rt2x00lib_enable_radio(rt2x00dev);
if (retval) {
rt2x00lib_uninitialize(rt2x00dev);
return retval;
}

rt2x00dev->intf_ap_count = 0;
rt2x00dev->intf_sta_count = 0;
rt2x00dev->intf_associated = 0;

set_bit(DEVICE_STATE_STARTED, &rt2x00dev->flags);
set_bit(DEVICE_STATE_DIRTY_CONFIG, &rt2x00dev->flags);

return 0;
}
Expand Down
50 changes: 25 additions & 25 deletions trunk/drivers/net/wireless/rt2x00/rt2x00mac.c
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,8 @@ EXPORT_SYMBOL_GPL(rt2x00mac_remove_interface);
int rt2x00mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf)
{
struct rt2x00_dev *rt2x00dev = hw->priv;
int force_reconfig;
int radio_on;
int status;

/*
* Mac80211 might be calling this function while we are trying
Expand All @@ -348,35 +349,34 @@ int rt2x00mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf)
return 0;

/*
* Check if we need to disable the radio,
* if this is not the case, at least the RX must be disabled.
* Only change device state when the radio is enabled. It does not
* matter what parameters we have configured when the radio is disabled
* because we won't be able to send or receive anyway. Also note that
* some configuration parameters (e.g. channel and antenna values) can
* only be set when the radio is enabled.
*/
if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) {
if (!conf->radio_enabled)
rt2x00lib_disable_radio(rt2x00dev);
else
rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
}
radio_on = test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags);
if (conf->radio_enabled) {
/* For programming the values, we have to turn RX off */
rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);

/*
* When the DEVICE_DIRTY_CONFIG flag is set, the device has recently
* been started and the configuration must be forced upon the hardware.
* Otherwise registers will not be intialized correctly and could
* result in non-working hardware because essential registers aren't
* initialized.
*/
force_reconfig =
test_and_clear_bit(DEVICE_STATE_DIRTY_CONFIG, &rt2x00dev->flags);
/* Enable the radio */
status = rt2x00lib_enable_radio(rt2x00dev);
if (unlikely(status))
return status;

rt2x00lib_config(rt2x00dev, conf, force_reconfig);
/*
* When we've just turned on the radio, we want to reprogram
* everything to ensure a consistent state
*/
rt2x00lib_config(rt2x00dev, conf, !radio_on);

/*
* Reenable RX only if the radio should be on.
*/
if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
/* Turn RX back on */
rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
else if (conf->radio_enabled)
return rt2x00lib_enable_radio(rt2x00dev);
} else {
/* Disable the radio */
rt2x00lib_disable_radio(rt2x00dev);
}

return 0;
}
Expand Down

0 comments on commit b992848

Please sign in to comment.