aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_mac.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
index 1a8c1ba538b4..582c88050664 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
@@ -21,14 +21,33 @@ static void ar9003_hw_rx_enable(struct ath_hw *hw)
21 REG_WRITE(hw, AR_CR, 0); 21 REG_WRITE(hw, AR_CR, 0);
22} 22}
23 23
24static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
25{
26 int checksum;
27
28 checksum = ads->info + ads->link
29 + ads->data0 + ads->ctl3
30 + ads->data1 + ads->ctl5
31 + ads->data2 + ads->ctl7
32 + ads->data3 + ads->ctl9;
33
34 return ((checksum & 0xffff) + (checksum >> 16)) & AR_TxPtrChkSum;
35}
36
24static void ar9003_hw_set_desc_link(void *ds, u32 ds_link) 37static void ar9003_hw_set_desc_link(void *ds, u32 ds_link)
25{ 38{
26 ((struct ar9003_txc *) ds)->link = ds_link; 39 struct ar9003_txc *ads = ds;
40
41 ads->link = ds_link;
42 ads->ctl10 &= ~AR_TxPtrChkSum;
43 ads->ctl10 |= ar9003_calc_ptr_chksum(ads);
27} 44}
28 45
29static void ar9003_hw_get_desc_link(void *ds, u32 **ds_link) 46static void ar9003_hw_get_desc_link(void *ds, u32 **ds_link)
30{ 47{
31 *ds_link = &((struct ar9003_txc *) ds)->link; 48 struct ar9003_txc *ads = ds;
49
50 *ds_link = &ads->link;
32} 51}
33 52
34static bool ar9003_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked) 53static bool ar9003_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
@@ -168,19 +187,6 @@ static bool ar9003_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
168 return true; 187 return true;
169} 188}
170 189
171static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
172{
173 int checksum;
174
175 checksum = ads->info + ads->link
176 + ads->data0 + ads->ctl3
177 + ads->data1 + ads->ctl5
178 + ads->data2 + ads->ctl7
179 + ads->data3 + ads->ctl9;
180
181 return ((checksum & 0xffff) + (checksum >> 16)) & AR_TxPtrChkSum;
182}
183
184static void ar9003_hw_fill_txdesc(struct ath_hw *ah, void *ds, u32 seglen, 190static void ar9003_hw_fill_txdesc(struct ath_hw *ah, void *ds, u32 seglen,
185 bool is_firstseg, bool is_lastseg, 191 bool is_firstseg, bool is_lastseg,
186 const void *ds0, dma_addr_t buf_addr, 192 const void *ds0, dma_addr_t buf_addr,