aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/carl9170/cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/carl9170/cmd.c')
-rw-r--r--drivers/net/wireless/ath/carl9170/cmd.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/carl9170/cmd.c b/drivers/net/wireless/ath/carl9170/cmd.c
index cdfc94c371b4..195dc6538110 100644
--- a/drivers/net/wireless/ath/carl9170/cmd.c
+++ b/drivers/net/wireless/ath/carl9170/cmd.c
@@ -36,6 +36,7 @@
36 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 36 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
37 */ 37 */
38 38
39#include <asm/div64.h>
39#include "carl9170.h" 40#include "carl9170.h"
40#include "cmd.h" 41#include "cmd.h"
41 42
@@ -165,6 +166,39 @@ int carl9170_bcn_ctrl(struct ar9170 *ar, const unsigned int vif_id,
165 return __carl9170_exec_cmd(ar, cmd, true); 166 return __carl9170_exec_cmd(ar, cmd, true);
166} 167}
167 168
169int carl9170_collect_tally(struct ar9170 *ar)
170{
171 struct carl9170_tally_rsp tally;
172 struct survey_info *info;
173 unsigned int tick;
174 int err;
175
176 err = carl9170_exec_cmd(ar, CARL9170_CMD_TALLY, 0, NULL,
177 sizeof(tally), (u8 *)&tally);
178 if (err)
179 return err;
180
181 tick = le32_to_cpu(tally.tick);
182 if (tick) {
183 ar->tally.active += le32_to_cpu(tally.active) / tick;
184 ar->tally.cca += le32_to_cpu(tally.cca) / tick;
185 ar->tally.tx_time += le32_to_cpu(tally.tx_time) / tick;
186 ar->tally.rx_total += le32_to_cpu(tally.rx_total);
187 ar->tally.rx_overrun += le32_to_cpu(tally.rx_overrun);
188
189 if (ar->channel) {
190 info = &ar->survey[ar->channel->hw_value];
191 info->channel_time = ar->tally.active;
192 info->channel_time_busy = ar->tally.cca;
193 info->channel_time_tx = ar->tally.tx_time;
194 do_div(info->channel_time, 1000);
195 do_div(info->channel_time_busy, 1000);
196 do_div(info->channel_time_tx, 1000);
197 }
198 }
199 return 0;
200}
201
168int carl9170_powersave(struct ar9170 *ar, const bool ps) 202int carl9170_powersave(struct ar9170 *ar, const bool ps)
169{ 203{
170 struct carl9170_cmd *cmd; 204 struct carl9170_cmd *cmd;