aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/bwn/if_bwn.c
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2016-05-17 20:18:23 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2016-05-17 20:18:23 +0000
commitf629a23855d801c740d32f59c6cebdd4e528f761 (patch)
treee3fddaff67fb9f8eebaad84b19145270a0fb9a53 /sys/dev/bwn/if_bwn.c
parent07454911f015b0a9465a78f5af07f61be6f7b978 (diff)
Notes
Diffstat (limited to 'sys/dev/bwn/if_bwn.c')
-rw-r--r--sys/dev/bwn/if_bwn.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/sys/dev/bwn/if_bwn.c b/sys/dev/bwn/if_bwn.c
index a8da51b65c999..34ac6084eddf7 100644
--- a/sys/dev/bwn/if_bwn.c
+++ b/sys/dev/bwn/if_bwn.c
@@ -2656,8 +2656,21 @@ bwn_dma_ringsetup(struct bwn_mac *mac, int controller_index,
dr->dr_curslot = -1;
} else {
if (dr->dr_index == 0) {
- dr->dr_rx_bufsize = BWN_DMA0_RX_BUFFERSIZE;
- dr->dr_frameoffset = BWN_DMA0_RX_FRAMEOFFSET;
+ switch (mac->mac_fw.fw_hdr_format) {
+ case BWN_FW_HDR_351:
+ case BWN_FW_HDR_410:
+ dr->dr_rx_bufsize =
+ BWN_DMA0_RX_BUFFERSIZE_FW351;
+ dr->dr_frameoffset =
+ BWN_DMA0_RX_FRAMEOFFSET_FW351;
+ break;
+ case BWN_FW_HDR_598:
+ dr->dr_rx_bufsize =
+ BWN_DMA0_RX_BUFFERSIZE_FW598;
+ dr->dr_frameoffset =
+ BWN_DMA0_RX_FRAMEOFFSET_FW598;
+ break;
+ }
} else
KASSERT(0 == 1, ("%s:%d: fail", __func__, __LINE__));
}
@@ -2676,7 +2689,7 @@ bwn_dma_ringsetup(struct bwn_mac *mac, int controller_index,
dr->dr_txhdr_cache = contigmalloc(
(dr->dr_numslots / BWN_TX_SLOTS_PER_FRAME) *
- BWN_HDRSIZE(mac), M_DEVBUF, M_ZERO,
+ BWN_MAXTXHDRSIZE, M_DEVBUF, M_ZERO,
0, BUS_SPACE_MAXADDR, 8, 0);
if (dr->dr_txhdr_cache == NULL) {
device_printf(sc->sc_dev,
@@ -2773,7 +2786,7 @@ fail2:
if (dr->dr_txhdr_cache != NULL) {
contigfree(dr->dr_txhdr_cache,
(dr->dr_numslots / BWN_TX_SLOTS_PER_FRAME) *
- BWN_HDRSIZE(mac), M_DEVBUF);
+ BWN_MAXTXHDRSIZE, M_DEVBUF);
}
fail1:
free(dr->dr_meta, M_DEVBUF);
@@ -2795,7 +2808,7 @@ bwn_dma_ringfree(struct bwn_dma_ring **dr)
if ((*dr)->dr_txhdr_cache != NULL) {
contigfree((*dr)->dr_txhdr_cache,
((*dr)->dr_numslots / BWN_TX_SLOTS_PER_FRAME) *
- BWN_HDRSIZE((*dr)->dr_mac), M_DEVBUF);
+ BWN_MAXTXHDRSIZE, M_DEVBUF);
}
free((*dr)->dr_meta, M_DEVBUF);
free(*dr, M_DEVBUF);