mirror of
https://github.com/torvalds/linux
synced 2024-10-24 04:06:04 +00:00
ath9k_hw: Compute pointer checksum over the link descriptor
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
5088c2f1a2
commit
eb8232535b
|
@ -21,14 +21,33 @@ static void ar9003_hw_rx_enable(struct ath_hw *hw)
|
|||
REG_WRITE(hw, AR_CR, 0);
|
||||
}
|
||||
|
||||
static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
|
||||
{
|
||||
int checksum;
|
||||
|
||||
checksum = ads->info + ads->link
|
||||
+ ads->data0 + ads->ctl3
|
||||
+ ads->data1 + ads->ctl5
|
||||
+ ads->data2 + ads->ctl7
|
||||
+ ads->data3 + ads->ctl9;
|
||||
|
||||
return ((checksum & 0xffff) + (checksum >> 16)) & AR_TxPtrChkSum;
|
||||
}
|
||||
|
||||
static void ar9003_hw_set_desc_link(void *ds, u32 ds_link)
|
||||
{
|
||||
((struct ar9003_txc *) ds)->link = ds_link;
|
||||
struct ar9003_txc *ads = ds;
|
||||
|
||||
ads->link = ds_link;
|
||||
ads->ctl10 &= ~AR_TxPtrChkSum;
|
||||
ads->ctl10 |= ar9003_calc_ptr_chksum(ads);
|
||||
}
|
||||
|
||||
static void ar9003_hw_get_desc_link(void *ds, u32 **ds_link)
|
||||
{
|
||||
*ds_link = &((struct ar9003_txc *) ds)->link;
|
||||
struct ar9003_txc *ads = ds;
|
||||
|
||||
*ds_link = &ads->link;
|
||||
}
|
||||
|
||||
static 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)
|
|||
return true;
|
||||
}
|
||||
|
||||
static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
|
||||
{
|
||||
int checksum;
|
||||
|
||||
checksum = ads->info + ads->link
|
||||
+ ads->data0 + ads->ctl3
|
||||
+ ads->data1 + ads->ctl5
|
||||
+ ads->data2 + ads->ctl7
|
||||
+ ads->data3 + ads->ctl9;
|
||||
|
||||
return ((checksum & 0xffff) + (checksum >> 16)) & AR_TxPtrChkSum;
|
||||
}
|
||||
|
||||
static void ar9003_hw_fill_txdesc(struct ath_hw *ah, void *ds, u32 seglen,
|
||||
bool is_firstseg, bool is_lastseg,
|
||||
const void *ds0, dma_addr_t buf_addr,
|
||||
|
|
Loading…
Reference in a new issue