source: branches/backfire/package/mac80211/patches/468-ath5k_remove_ts_retry.patch @ 26610

Last change on this file since 26610 was 26610, checked in by nbd, 6 years ago

mac80211: merge latest changes from trunk, fixes #9227

File size: 3.9 KB
  • drivers/net/wireless/ath/ath5k/ath5k.h

    a b struct ath5k_tx_status { 
    452452        u16     ts_seqnum; 
    453453        u16     ts_tstamp; 
    454454        u8      ts_status; 
    455         u8      ts_retry[4]; 
    456455        u8      ts_final_idx; 
     456        u8      ts_final_retry; 
    457457        s8      ts_rssi; 
    458458        u8      ts_shortretry; 
    459         u8      ts_longretry; 
    460459        u8      ts_virtcol; 
    461460        u8      ts_antenna; 
    462461}; 
  • drivers/net/wireless/ath/ath5k/base.c

    a b ath5k_tx_frame_completed(struct ath5k_so 
    15731573                         struct ath5k_txq *txq, struct ath5k_tx_status *ts) 
    15741574{ 
    15751575        struct ieee80211_tx_info *info; 
     1576        u8 tries[3]; 
    15761577        int i; 
    15771578 
    15781579        sc->stats.tx_all_count++; 
    15791580        sc->stats.tx_bytes_count += skb->len; 
    15801581        info = IEEE80211_SKB_CB(skb); 
    15811582 
     1583        tries[0] = info->status.rates[0].count; 
     1584        tries[1] = info->status.rates[1].count; 
     1585        tries[2] = info->status.rates[2].count; 
     1586 
    15821587        ieee80211_tx_info_clear_status(info); 
    1583         for (i = 0; i <= ts->ts_final_idx; i++) { 
     1588 
     1589        for (i = 0; i < ts->ts_final_idx; i++) { 
    15841590                struct ieee80211_tx_rate *r = 
    15851591                        &info->status.rates[i]; 
    15861592 
    1587                 r->count = ts->ts_retry[i]; 
     1593                r->count = tries[i]; 
    15881594        } 
    15891595 
     1596        info->status.rates[ts->ts_final_idx].count = ts->ts_final_retry; 
    15901597        info->status.rates[ts->ts_final_idx + 1].idx = -1; 
    15911598 
    15921599        if (unlikely(ts->ts_status)) { 
  • drivers/net/wireless/ath/ath5k/desc.c

    a b static int ath5k_hw_proc_2word_tx_status 
    366366                AR5K_DESC_TX_STATUS0_SEND_TIMESTAMP); 
    367367        ts->ts_shortretry = AR5K_REG_MS(tx_status->tx_status_0, 
    368368                AR5K_DESC_TX_STATUS0_SHORT_RETRY_COUNT); 
    369         ts->ts_longretry = AR5K_REG_MS(tx_status->tx_status_0, 
     369        ts->ts_final_retry = AR5K_REG_MS(tx_status->tx_status_0, 
    370370                AR5K_DESC_TX_STATUS0_LONG_RETRY_COUNT); 
    371371        /*TODO: ts->ts_virtcol + test*/ 
    372372        ts->ts_seqnum = AR5K_REG_MS(tx_status->tx_status_1, 
    static int ath5k_hw_proc_2word_tx_status 
    375375                AR5K_DESC_TX_STATUS1_ACK_SIG_STRENGTH); 
    376376        ts->ts_antenna = 1; 
    377377        ts->ts_status = 0; 
    378         ts->ts_retry[0] = ts->ts_longretry; 
    379378        ts->ts_final_idx = 0; 
    380379 
    381380        if (!(tx_status->tx_status_0 & AR5K_DESC_TX_STATUS0_FRAME_XMIT_OK)) { 
    static int ath5k_hw_proc_4word_tx_status 
    401400{ 
    402401        struct ath5k_hw_4w_tx_ctl *tx_ctl; 
    403402        struct ath5k_hw_tx_status *tx_status; 
    404         u32 txstat0, txstat1, txctl2; 
     403        u32 txstat0, txstat1; 
    405404 
    406405        tx_ctl = &desc->ud.ds_tx5212.tx_ctl; 
    407406        tx_status = &desc->ud.ds_tx5212.tx_stat; 
    static int ath5k_hw_proc_4word_tx_status 
    413412                return -EINPROGRESS; 
    414413 
    415414        txstat0 = ACCESS_ONCE(tx_status->tx_status_0); 
    416         txctl2 = ACCESS_ONCE(tx_ctl->tx_control_2); 
    417415 
    418416        /* 
    419417         * Get descriptor status 
    static int ath5k_hw_proc_4word_tx_status 
    422420                AR5K_DESC_TX_STATUS0_SEND_TIMESTAMP); 
    423421        ts->ts_shortretry = AR5K_REG_MS(txstat0, 
    424422                AR5K_DESC_TX_STATUS0_SHORT_RETRY_COUNT); 
    425         ts->ts_longretry = AR5K_REG_MS(txstat0, 
     423        ts->ts_final_retry = AR5K_REG_MS(txstat0, 
    426424                AR5K_DESC_TX_STATUS0_LONG_RETRY_COUNT); 
    427425        ts->ts_seqnum = AR5K_REG_MS(txstat1, 
    428426                AR5K_DESC_TX_STATUS1_SEQ_NUM); 
    static int ath5k_hw_proc_4word_tx_status 
    435433        ts->ts_final_idx = AR5K_REG_MS(txstat1, 
    436434                        AR5K_DESC_TX_STATUS1_FINAL_TS_IX_5212); 
    437435 
    438         /* The longretry counter has the number of un-acked retries 
    439          * for the final rate. To get the total number of retries 
    440          * we have to add the retry counters for the other rates 
    441          * as well 
    442          */ 
    443         ts->ts_retry[ts->ts_final_idx] = ts->ts_longretry; 
    444         switch (ts->ts_final_idx) { 
    445         case 3: 
    446                 ts->ts_retry[2] = AR5K_REG_MS(txctl2, 
    447                         AR5K_4W_TX_DESC_CTL2_XMIT_TRIES2); 
    448                 ts->ts_longretry += ts->ts_retry[2]; 
    449                 /* fall through */ 
    450         case 2: 
    451                 ts->ts_retry[1] = AR5K_REG_MS(txctl2, 
    452                         AR5K_4W_TX_DESC_CTL2_XMIT_TRIES1); 
    453                 ts->ts_longretry += ts->ts_retry[1]; 
    454                 /* fall through */ 
    455         case 1: 
    456                 ts->ts_retry[0] = AR5K_REG_MS(txctl2, 
    457                         AR5K_4W_TX_DESC_CTL2_XMIT_TRIES1); 
    458                 ts->ts_longretry += ts->ts_retry[0]; 
    459                 /* fall through */ 
    460         case 0: 
    461                 break; 
    462         } 
    463  
    464436        /* TX error */ 
    465437        if (!(txstat0 & AR5K_DESC_TX_STATUS0_FRAME_XMIT_OK)) { 
    466438                if (txstat0 & AR5K_DESC_TX_STATUS0_EXCESSIVE_RETRIES) 
Note: See TracBrowser for help on using the repository browser.