|
@@ -520,12 +520,16 @@ int ath5k_hw_reset_tx_queue(struct ath5k_hw *ah, unsigned int queue)
|
|
|
*/
|
|
|
unsigned int ath5k_hw_get_slot_time(struct ath5k_hw *ah)
|
|
|
{
|
|
|
+ unsigned int slot_time_clock;
|
|
|
+
|
|
|
ATH5K_TRACE(ah->ah_sc);
|
|
|
+
|
|
|
if (ah->ah_version == AR5K_AR5210)
|
|
|
- return ath5k_hw_clocktoh(ath5k_hw_reg_read(ah,
|
|
|
- AR5K_SLOT_TIME) & 0xffff, ah->ah_turbo);
|
|
|
+ slot_time_clock = ath5k_hw_reg_read(ah, AR5K_SLOT_TIME);
|
|
|
else
|
|
|
- return ath5k_hw_reg_read(ah, AR5K_DCU_GBL_IFS_SLOT) & 0xffff;
|
|
|
+ slot_time_clock = ath5k_hw_reg_read(ah, AR5K_DCU_GBL_IFS_SLOT);
|
|
|
+
|
|
|
+ return ath5k_hw_clocktoh(slot_time_clock & 0xffff, ah->ah_turbo);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -533,15 +537,17 @@ unsigned int ath5k_hw_get_slot_time(struct ath5k_hw *ah)
|
|
|
*/
|
|
|
int ath5k_hw_set_slot_time(struct ath5k_hw *ah, unsigned int slot_time)
|
|
|
{
|
|
|
+ u32 slot_time_clock = ath5k_hw_htoclock(slot_time, ah->ah_turbo);
|
|
|
+
|
|
|
ATH5K_TRACE(ah->ah_sc);
|
|
|
- if (slot_time < AR5K_SLOT_TIME_9 || slot_time > AR5K_SLOT_TIME_MAX)
|
|
|
+
|
|
|
+ if (slot_time < 6 || slot_time_clock > AR5K_SLOT_TIME_MAX)
|
|
|
return -EINVAL;
|
|
|
|
|
|
if (ah->ah_version == AR5K_AR5210)
|
|
|
- ath5k_hw_reg_write(ah, ath5k_hw_htoclock(slot_time,
|
|
|
- ah->ah_turbo), AR5K_SLOT_TIME);
|
|
|
+ ath5k_hw_reg_write(ah, slot_time_clock, AR5K_SLOT_TIME);
|
|
|
else
|
|
|
- ath5k_hw_reg_write(ah, slot_time, AR5K_DCU_GBL_IFS_SLOT);
|
|
|
+ ath5k_hw_reg_write(ah, slot_time_clock, AR5K_DCU_GBL_IFS_SLOT);
|
|
|
|
|
|
return 0;
|
|
|
}
|