summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorDamien Bergamini <damien@cvs.openbsd.org>2009-10-24 17:51:35 +0000
committerDamien Bergamini <damien@cvs.openbsd.org>2009-10-24 17:51:35 +0000
commit4f714de4fb3af3ab6c96cd8a9b4d836b87b3a038 (patch)
tree669477f54ed02d632a0e5e7f7a46f4c55c896507 /sys
parentcc91317ee03e2d4bab76a74451e25c1bb756735e (diff)
- iwn_mem_set_region_4 wants a number of 32-bit words, not bytes.
fix callers (avoid erasing random registers) - do not enable chain mode for command queue (>=5000 Series only.)
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pci/if_iwn.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/dev/pci/if_iwn.c b/sys/dev/pci/if_iwn.c
index ade4a6ae78c..167440db294 100644
--- a/sys/dev/pci/if_iwn.c
+++ b/sys/dev/pci/if_iwn.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_iwn.c,v 1.63 2009/09/20 20:04:07 damien Exp $ */
+/* $OpenBSD: if_iwn.c,v 1.64 2009/10/24 17:51:34 damien Exp $ */
/*-
* Copyright (c) 2007-2009 Damien Bergamini <damien.bergamini@free.fr>
@@ -4543,7 +4543,7 @@ iwn4965_post_alive(struct iwn_softc *sc)
/* Clear TX scheduler's state in SRAM. */
sc->sched_base = iwn_prph_read(sc, IWN_SCHED_SRAM_ADDR);
iwn_mem_set_region_4(sc, sc->sched_base + IWN4965_SCHED_CTX_OFF, 0,
- IWN4965_SCHED_CTX_LEN);
+ IWN4965_SCHED_CTX_LEN / sizeof (uint32_t));
/* Set physical address of TX scheduler rings (1KB aligned.) */
iwn_prph_write(sc, IWN4965_SCHED_DRAM_ADDR, sc->sched_dma.paddr >> 10);
@@ -4597,15 +4597,15 @@ iwn5000_post_alive(struct iwn_softc *sc)
/* Clear TX scheduler's state in SRAM. */
sc->sched_base = iwn_prph_read(sc, IWN_SCHED_SRAM_ADDR);
iwn_mem_set_region_4(sc, sc->sched_base + IWN5000_SCHED_CTX_OFF, 0,
- IWN5000_SCHED_CTX_LEN);
+ IWN5000_SCHED_CTX_LEN / sizeof (uint32_t));
/* Set physical address of TX scheduler rings (1KB aligned.) */
iwn_prph_write(sc, IWN5000_SCHED_DRAM_ADDR, sc->sched_dma.paddr >> 10);
IWN_SETBITS(sc, IWN_FH_TX_CHICKEN, IWN_FH_TX_CHICKEN_SCHED_RETRY);
- /* Enable chain mode for all our 20 queues. */
- iwn_prph_write(sc, IWN5000_SCHED_QCHAIN_SEL, 0xfffff);
+ /* Enable chain mode for all queues, except command queue. */
+ iwn_prph_write(sc, IWN5000_SCHED_QCHAIN_SEL, 0xfffef);
iwn_prph_write(sc, IWN5000_SCHED_AGGR_SEL, 0);
for (qid = 0; qid < IWN5000_NTXQUEUES; qid++) {