diff options
Diffstat (limited to 'drivers/net/wireless/ath/wil6210')
-rw-r--r-- | drivers/net/wireless/ath/wil6210/main.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wil6210/txrx.c | 31 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wil6210/wil6210.h | 7 |
3 files changed, 11 insertions, 31 deletions
diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c index 95755a551796..db74e811f5c4 100644 --- a/drivers/net/wireless/ath/wil6210/main.c +++ b/drivers/net/wireless/ath/wil6210/main.c | |||
@@ -579,6 +579,10 @@ static int wil_target_reset(struct wil6210_priv *wil) | |||
579 | 579 | ||
580 | C(RGF_USER_CLKS_CTL_0, BIT_USER_CLKS_RST_PWGD); | 580 | C(RGF_USER_CLKS_CTL_0, BIT_USER_CLKS_RST_PWGD); |
581 | 581 | ||
582 | /* enable fix for HW bug related to the SA/DA swap in AP Rx */ | ||
583 | S(RGF_DMA_OFUL_NID_0, BIT_DMA_OFUL_NID_0_RX_EXT_TR_EN | | ||
584 | BIT_DMA_OFUL_NID_0_RX_EXT_A3_SRC); | ||
585 | |||
582 | wil_dbg_misc(wil, "Reset completed in %d ms\n", delay * RST_DELAY); | 586 | wil_dbg_misc(wil, "Reset completed in %d ms\n", delay * RST_DELAY); |
583 | return 0; | 587 | return 0; |
584 | } | 588 | } |
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c index 8439f65db259..779d8369f9bc 100644 --- a/drivers/net/wireless/ath/wil6210/txrx.c +++ b/drivers/net/wireless/ath/wil6210/txrx.c | |||
@@ -346,27 +346,6 @@ static void wil_rx_add_radiotap_header(struct wil6210_priv *wil, | |||
346 | } | 346 | } |
347 | } | 347 | } |
348 | 348 | ||
349 | /* | ||
350 | * Fast swap in place between 2 registers | ||
351 | */ | ||
352 | static void wil_swap_u16(u16 *a, u16 *b) | ||
353 | { | ||
354 | *a ^= *b; | ||
355 | *b ^= *a; | ||
356 | *a ^= *b; | ||
357 | } | ||
358 | |||
359 | static void wil_swap_ethaddr(void *data) | ||
360 | { | ||
361 | struct ethhdr *eth = data; | ||
362 | u16 *s = (u16 *)eth->h_source; | ||
363 | u16 *d = (u16 *)eth->h_dest; | ||
364 | |||
365 | wil_swap_u16(s++, d++); | ||
366 | wil_swap_u16(s++, d++); | ||
367 | wil_swap_u16(s, d); | ||
368 | } | ||
369 | |||
370 | /** | 349 | /** |
371 | * reap 1 frame from @swhead | 350 | * reap 1 frame from @swhead |
372 | * | 351 | * |
@@ -386,7 +365,6 @@ static struct sk_buff *wil_vring_reap_rx(struct wil6210_priv *wil, | |||
386 | unsigned int sz = mtu_max + ETH_HLEN; | 365 | unsigned int sz = mtu_max + ETH_HLEN; |
387 | u16 dmalen; | 366 | u16 dmalen; |
388 | u8 ftype; | 367 | u8 ftype; |
389 | u8 ds_bits; | ||
390 | int cid; | 368 | int cid; |
391 | struct wil_net_stats *stats; | 369 | struct wil_net_stats *stats; |
392 | 370 | ||
@@ -474,15 +452,6 @@ static struct sk_buff *wil_vring_reap_rx(struct wil6210_priv *wil, | |||
474 | */ | 452 | */ |
475 | } | 453 | } |
476 | 454 | ||
477 | ds_bits = wil_rxdesc_ds_bits(d); | ||
478 | if (ds_bits == 1) { | ||
479 | /* | ||
480 | * HW bug - in ToDS mode, i.e. Rx on AP side, | ||
481 | * addresses get swapped | ||
482 | */ | ||
483 | wil_swap_ethaddr(skb->data); | ||
484 | } | ||
485 | |||
486 | return skb; | 455 | return skb; |
487 | } | 456 | } |
488 | 457 | ||
diff --git a/drivers/net/wireless/ath/wil6210/wil6210.h b/drivers/net/wireless/ath/wil6210/wil6210.h index 97422e7854d3..85f001191319 100644 --- a/drivers/net/wireless/ath/wil6210/wil6210.h +++ b/drivers/net/wireless/ath/wil6210/wil6210.h | |||
@@ -181,6 +181,13 @@ struct RGF_BL { | |||
181 | #define BIT_DMA_ITR_CNT_CRL_CLR BIT(3) | 181 | #define BIT_DMA_ITR_CNT_CRL_CLR BIT(3) |
182 | #define BIT_DMA_ITR_CNT_CRL_REACH_TRSH BIT(4) | 182 | #define BIT_DMA_ITR_CNT_CRL_REACH_TRSH BIT(4) |
183 | 183 | ||
184 | /* Offload control (Sparrow B0+) */ | ||
185 | #define RGF_DMA_OFUL_NID_0 (0x881cd4) | ||
186 | #define BIT_DMA_OFUL_NID_0_RX_EXT_TR_EN BIT(0) | ||
187 | #define BIT_DMA_OFUL_NID_0_TX_EXT_TR_EN BIT(1) | ||
188 | #define BIT_DMA_OFUL_NID_0_RX_EXT_A3_SRC BIT(2) | ||
189 | #define BIT_DMA_OFUL_NID_0_TX_EXT_A3_SRC BIT(3) | ||
190 | |||
184 | /* New (sparrow v2+) interrupt moderation control */ | 191 | /* New (sparrow v2+) interrupt moderation control */ |
185 | #define RGF_DMA_ITR_TX_DESQ_NO_MOD (0x881d40) | 192 | #define RGF_DMA_ITR_TX_DESQ_NO_MOD (0x881d40) |
186 | #define RGF_DMA_ITR_TX_CNT_TRSH (0x881d34) | 193 | #define RGF_DMA_ITR_TX_CNT_TRSH (0x881d34) |