Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
- index aa5ffcc..b7f19c3 100644
- --- a/drivers/net/wireless/ath/ath9k/main.c
- +++ b/drivers/net/wireless/ath/ath9k/main.c
- @@ -19,6 +19,17 @@
- #include "ath9k.h"
- #include "btcoex.h"
- +/* Edit by Seokseong Jeon */
- +s32 caesar_mac_idle, caesar_mac_tof;
- +bool caesar_worked;
- +int caesar_stdev, caesar_gamma;
- +s32 caesar_sum = 0, caesar_mean = 0, caesar_sumsq = 0;
- +s32 caesar_ewma;
- +int caesar_cnt = 0;
- +#define CAESAR_EWMA_LEV 32
- +#define CAESAR_EWMA_DIV 128
- +extern int ath9k_CAESAR_K;
- +
- u8 ath9k_parse_mpdudensity(u8 mpdudensity)
- {
- /*
- @@ -364,6 +375,9 @@ void ath9k_tasklet(unsigned long data)
- unsigned long flags;
- u32 status = sc->intrstatus;
- u32 rxmask;
- + /* Edit by Seokseong Jeon */
- + u32 tmp_sum, tmp_mean, tmp_sumsq;
- +
- ath9k_ps_wakeup(sc);
- spin_lock(&sc->sc_pcu_lock);
- @@ -467,6 +481,63 @@ void ath9k_tasklet(unsigned long data)
- /* re-enable hardware interrupt */
- ath9k_hw_enable_interrupts(ah);
- +
- + /* Edit by Seokseong Jeon */
- + /* check overflow */
- + if (caesar_worked) {
- + if (!(caesar_mac_idle & 0x80000000)) {
- +#define MULTIPLIER 1000
- + /* cycles to milli-cycles */
- + //caesar_mac_idle *= 1000;
- +#define T_SIFS 440
- +#define T_FD 84
- +#define CLOCKRATE 44
- + /* need to put multipath correction factor */
- + caesar_gamma = 0;
- + if (caesar_cnt != 0) {
- + tmp_sum = caesar_sum + caesar_mac_idle;
- + tmp_mean = tmp_sum / (caesar_cnt + 1);
- + tmp_sumsq = caesar_sumsq + caesar_mac_idle * caesar_mac_idle;
- + caesar_stdev = int_sqrt( tmp_sumsq / (caesar_cnt + 1) - tmp_mean * tmp_mean );
- + if (caesar_mac_idle > caesar_mean) {
- + if (caesar_stdev > 2 * CLOCKRATE) {
- + goto caesar_out;
- + } else if (caesar_stdev > CLOCKRATE) {
- + caesar_gamma = caesar_stdev / 2;
- + }
- + caesar_mac_idle -= caesar_gamma;
- + }
- + }
- +
- + /*if (caesar_mac_idle < ath9k_CAESAR_K) {
- + goto caesar_out;
- + }*/
- +
- + caesar_sum += caesar_mac_idle;
- + caesar_mean = caesar_sum / (caesar_cnt + 1);
- + caesar_sumsq += caesar_mac_idle * caesar_mac_idle;
- +
- + //caesar_mac_tof = (caesar_mac_idle - caesar_gamma - T_SIFS - T_FD) / 2;
- + caesar_mac_tof = (caesar_mac_idle - ath9k_CAESAR_K) / 2 * MULTIPLIER;
- + printk(KERN_DEBUG "ath9k ToF: (%4d) idle: %4d, stdev: %4d, gamma: -%4d, K: %4d, tof:%7d\n",
- + caesar_cnt + 1, caesar_mac_idle, caesar_stdev, caesar_gamma, ath9k_CAESAR_K, caesar_mac_tof);
- + if (caesar_cnt == 0)
- + caesar_ewma = caesar_mac_tof;
- + else
- + caesar_ewma = ( (CAESAR_EWMA_DIV - CAESAR_EWMA_LEV) * caesar_ewma
- + + CAESAR_EWMA_LEV * caesar_mac_tof )
- + / CAESAR_EWMA_DIV;
- + caesar_cnt++;
- + if (caesar_cnt == 1000) {
- + printk(KERN_DEBUG "ath9k ToF: ewma: %7d\n", caesar_ewma);
- + caesar_cnt = 0;
- + caesar_sum = 0;
- + caesar_sumsq = 0;
- + }
- + }
- + }
- +caesar_out:
- + caesar_mac_idle = 0xffffffff;
- out:
- spin_unlock(&sc->sc_pcu_lock);
- ath9k_ps_restore(sc);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement