source: branches/backfire/package/mac80211/patches/464-ath5k_optimize_tx_desc_setup.patch @ 26610

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

mac80211: merge latest changes from trunk, fixes #9227

File size: 3.0 KB
  • drivers/net/wireless/ath/ath5k/desc.c

    a b static int ath5k_hw_setup_4word_tx_desc( 
    184184{ 
    185185        struct ath5k_hw_4w_tx_ctl *tx_ctl; 
    186186        unsigned int frame_len; 
     187        u32 txctl0 = 0, txctl1 = 0, txctl2 = 0, txctl3 = 0; 
    187188 
    188189        tx_ctl = &desc->ud.ds_tx5212.tx_ctl; 
    189190 
    static int ath5k_hw_setup_4word_tx_desc( 
    209210                tx_power = AR5K_TUNE_MAX_TXPOWER; 
    210211 
    211212        /* Clear descriptor */ 
    212         memset(&desc->ud.ds_tx5212, 0, sizeof(struct ath5k_hw_5212_tx_desc)); 
     213        memset(&desc->ud.ds_tx5212.tx_stat, 0, 
     214               sizeof(desc->ud.ds_tx5212.tx_stat)); 
    213215 
    214216        /* Setup control descriptor */ 
    215217 
    static int ath5k_hw_setup_4word_tx_desc( 
    221223        if (frame_len & ~AR5K_4W_TX_DESC_CTL0_FRAME_LEN) 
    222224                return -EINVAL; 
    223225 
    224         tx_ctl->tx_control_0 = frame_len & AR5K_4W_TX_DESC_CTL0_FRAME_LEN; 
     226        txctl0 = frame_len & AR5K_4W_TX_DESC_CTL0_FRAME_LEN; 
    225227 
    226228        /* Verify and set buffer length */ 
    227229 
    static int ath5k_hw_setup_4word_tx_desc( 
    232234        if (pkt_len & ~AR5K_4W_TX_DESC_CTL1_BUF_LEN) 
    233235                return -EINVAL; 
    234236 
    235         tx_ctl->tx_control_1 = pkt_len & AR5K_4W_TX_DESC_CTL1_BUF_LEN; 
     237        txctl1 = pkt_len & AR5K_4W_TX_DESC_CTL1_BUF_LEN; 
    236238 
    237         tx_ctl->tx_control_0 |= 
    238                 AR5K_REG_SM(tx_power, AR5K_4W_TX_DESC_CTL0_XMIT_POWER) | 
    239                 AR5K_REG_SM(antenna_mode, AR5K_4W_TX_DESC_CTL0_ANT_MODE_XMIT); 
    240         tx_ctl->tx_control_1 |= AR5K_REG_SM(type, 
    241                                         AR5K_4W_TX_DESC_CTL1_FRAME_TYPE); 
    242         tx_ctl->tx_control_2 = AR5K_REG_SM(tx_tries0, 
    243                                         AR5K_4W_TX_DESC_CTL2_XMIT_TRIES0); 
    244         tx_ctl->tx_control_3 = tx_rate0 & AR5K_4W_TX_DESC_CTL3_XMIT_RATE0; 
     239        txctl0 |= AR5K_REG_SM(tx_power, AR5K_4W_TX_DESC_CTL0_XMIT_POWER) | 
     240                  AR5K_REG_SM(antenna_mode, AR5K_4W_TX_DESC_CTL0_ANT_MODE_XMIT); 
     241        txctl1 |= AR5K_REG_SM(type, AR5K_4W_TX_DESC_CTL1_FRAME_TYPE); 
     242        txctl2 = AR5K_REG_SM(tx_tries0, AR5K_4W_TX_DESC_CTL2_XMIT_TRIES0); 
     243        txctl3 = tx_rate0 & AR5K_4W_TX_DESC_CTL3_XMIT_RATE0; 
    245244 
    246245#define _TX_FLAGS(_c, _flag)                                    \ 
    247246        if (flags & AR5K_TXDESC_##_flag) {                      \ 
    248                 tx_ctl->tx_control_##_c |=                      \ 
    249                         AR5K_4W_TX_DESC_CTL##_c##_##_flag;      \ 
     247                txctl##_c |= AR5K_4W_TX_DESC_CTL##_c##_##_flag; \ 
    250248        } 
    251249 
    252250        _TX_FLAGS(0, CLRDMASK); 
    static int ath5k_hw_setup_4word_tx_desc( 
    262260         * WEP crap 
    263261         */ 
    264262        if (key_index != AR5K_TXKEYIX_INVALID) { 
    265                 tx_ctl->tx_control_0 |= AR5K_4W_TX_DESC_CTL0_ENCRYPT_KEY_VALID; 
    266                 tx_ctl->tx_control_1 |= AR5K_REG_SM(key_index, 
     263                txctl0 |= AR5K_4W_TX_DESC_CTL0_ENCRYPT_KEY_VALID; 
     264                txctl1 |= AR5K_REG_SM(key_index, 
    267265                                AR5K_4W_TX_DESC_CTL1_ENCRYPT_KEY_IDX); 
    268266        } 
    269267 
    static int ath5k_hw_setup_4word_tx_desc( 
    274272                if ((flags & AR5K_TXDESC_RTSENA) && 
    275273                                (flags & AR5K_TXDESC_CTSENA)) 
    276274                        return -EINVAL; 
    277                 tx_ctl->tx_control_2 |= rtscts_duration & 
    278                                 AR5K_4W_TX_DESC_CTL2_RTS_DURATION; 
    279                 tx_ctl->tx_control_3 |= AR5K_REG_SM(rtscts_rate, 
     275                txctl2 |= rtscts_duration & AR5K_4W_TX_DESC_CTL2_RTS_DURATION; 
     276                txctl3 |= AR5K_REG_SM(rtscts_rate, 
    280277                                AR5K_4W_TX_DESC_CTL3_RTS_CTS_RATE); 
    281278        } 
    282279 
     280        tx_ctl->tx_control_0 = txctl0; 
     281        tx_ctl->tx_control_1 = txctl1; 
     282        tx_ctl->tx_control_2 = txctl2; 
     283        tx_ctl->tx_control_3 = txctl3; 
     284 
    283285        return 0; 
    284286} 
    285287 
Note: See TracBrowser for help on using the repository browser.