Deleted Added
full compact
if_bwn.c (300019) if_bwn.c (300075)
1/*-
2 * Copyright (c) 2009-2010 Weongyo Jeong <weongyo@freebsd.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 14 unchanged lines hidden (view full) ---

23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27 * THE POSSIBILITY OF SUCH DAMAGES.
28 */
29
30#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2009-2010 Weongyo Jeong <weongyo@freebsd.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 14 unchanged lines hidden (view full) ---

23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27 * THE POSSIBILITY OF SUCH DAMAGES.
28 */
29
30#include <sys/cdefs.h>
31__FBSDID("$FreeBSD: head/sys/dev/bwn/if_bwn.c 300019 2016-05-17 07:12:00Z adrian $");
31__FBSDID("$FreeBSD: head/sys/dev/bwn/if_bwn.c 300075 2016-05-17 20:18:23Z adrian $");
32
33/*
34 * The Broadcom Wireless LAN controller driver.
35 */
36
37#include "opt_bwn.h"
38#include "opt_wlan.h"
39

--- 2611 unchanged lines hidden (view full) ---

2651 dr->get_curslot = bwn_dma_32_get_curslot;
2652 dr->set_curslot = bwn_dma_32_set_curslot;
2653 }
2654 if (for_tx) {
2655 dr->dr_tx = 1;
2656 dr->dr_curslot = -1;
2657 } else {
2658 if (dr->dr_index == 0) {
32
33/*
34 * The Broadcom Wireless LAN controller driver.
35 */
36
37#include "opt_bwn.h"
38#include "opt_wlan.h"
39

--- 2611 unchanged lines hidden (view full) ---

2651 dr->get_curslot = bwn_dma_32_get_curslot;
2652 dr->set_curslot = bwn_dma_32_set_curslot;
2653 }
2654 if (for_tx) {
2655 dr->dr_tx = 1;
2656 dr->dr_curslot = -1;
2657 } else {
2658 if (dr->dr_index == 0) {
2659 dr->dr_rx_bufsize = BWN_DMA0_RX_BUFFERSIZE;
2660 dr->dr_frameoffset = BWN_DMA0_RX_FRAMEOFFSET;
2659 switch (mac->mac_fw.fw_hdr_format) {
2660 case BWN_FW_HDR_351:
2661 case BWN_FW_HDR_410:
2662 dr->dr_rx_bufsize =
2663 BWN_DMA0_RX_BUFFERSIZE_FW351;
2664 dr->dr_frameoffset =
2665 BWN_DMA0_RX_FRAMEOFFSET_FW351;
2666 break;
2667 case BWN_FW_HDR_598:
2668 dr->dr_rx_bufsize =
2669 BWN_DMA0_RX_BUFFERSIZE_FW598;
2670 dr->dr_frameoffset =
2671 BWN_DMA0_RX_FRAMEOFFSET_FW598;
2672 break;
2673 }
2661 } else
2662 KASSERT(0 == 1, ("%s:%d: fail", __func__, __LINE__));
2663 }
2664
2665 error = bwn_dma_allocringmemory(dr);
2666 if (error)
2667 goto fail2;
2668
2669 if (for_tx) {
2670 /*
2671 * Assumption: BWN_TXRING_SLOTS can be divided by
2672 * BWN_TX_SLOTS_PER_FRAME
2673 */
2674 KASSERT(BWN_TXRING_SLOTS % BWN_TX_SLOTS_PER_FRAME == 0,
2675 ("%s:%d: fail", __func__, __LINE__));
2676
2677 dr->dr_txhdr_cache = contigmalloc(
2678 (dr->dr_numslots / BWN_TX_SLOTS_PER_FRAME) *
2674 } else
2675 KASSERT(0 == 1, ("%s:%d: fail", __func__, __LINE__));
2676 }
2677
2678 error = bwn_dma_allocringmemory(dr);
2679 if (error)
2680 goto fail2;
2681
2682 if (for_tx) {
2683 /*
2684 * Assumption: BWN_TXRING_SLOTS can be divided by
2685 * BWN_TX_SLOTS_PER_FRAME
2686 */
2687 KASSERT(BWN_TXRING_SLOTS % BWN_TX_SLOTS_PER_FRAME == 0,
2688 ("%s:%d: fail", __func__, __LINE__));
2689
2690 dr->dr_txhdr_cache = contigmalloc(
2691 (dr->dr_numslots / BWN_TX_SLOTS_PER_FRAME) *
2679 BWN_HDRSIZE(mac), M_DEVBUF, M_ZERO,
2692 BWN_MAXTXHDRSIZE, M_DEVBUF, M_ZERO,
2680 0, BUS_SPACE_MAXADDR, 8, 0);
2681 if (dr->dr_txhdr_cache == NULL) {
2682 device_printf(sc->sc_dev,
2683 "can't allocate TX header DMA memory\n");
2684 goto fail1;
2685 }
2686
2687 /*

--- 80 unchanged lines hidden (view full) ---

2768
2769 out:
2770 return (dr);
2771
2772fail2:
2773 if (dr->dr_txhdr_cache != NULL) {
2774 contigfree(dr->dr_txhdr_cache,
2775 (dr->dr_numslots / BWN_TX_SLOTS_PER_FRAME) *
2693 0, BUS_SPACE_MAXADDR, 8, 0);
2694 if (dr->dr_txhdr_cache == NULL) {
2695 device_printf(sc->sc_dev,
2696 "can't allocate TX header DMA memory\n");
2697 goto fail1;
2698 }
2699
2700 /*

--- 80 unchanged lines hidden (view full) ---

2781
2782 out:
2783 return (dr);
2784
2785fail2:
2786 if (dr->dr_txhdr_cache != NULL) {
2787 contigfree(dr->dr_txhdr_cache,
2788 (dr->dr_numslots / BWN_TX_SLOTS_PER_FRAME) *
2776 BWN_HDRSIZE(mac), M_DEVBUF);
2789 BWN_MAXTXHDRSIZE, M_DEVBUF);
2777 }
2778fail1:
2779 free(dr->dr_meta, M_DEVBUF);
2780fail0:
2781 free(dr, M_DEVBUF);
2782 return (NULL);
2783}
2784

--- 5 unchanged lines hidden (view full) ---

2790 return;
2791
2792 bwn_dma_free_descbufs(*dr);
2793 bwn_dma_free_ringmemory(*dr);
2794
2795 if ((*dr)->dr_txhdr_cache != NULL) {
2796 contigfree((*dr)->dr_txhdr_cache,
2797 ((*dr)->dr_numslots / BWN_TX_SLOTS_PER_FRAME) *
2790 }
2791fail1:
2792 free(dr->dr_meta, M_DEVBUF);
2793fail0:
2794 free(dr, M_DEVBUF);
2795 return (NULL);
2796}
2797

--- 5 unchanged lines hidden (view full) ---

2803 return;
2804
2805 bwn_dma_free_descbufs(*dr);
2806 bwn_dma_free_ringmemory(*dr);
2807
2808 if ((*dr)->dr_txhdr_cache != NULL) {
2809 contigfree((*dr)->dr_txhdr_cache,
2810 ((*dr)->dr_numslots / BWN_TX_SLOTS_PER_FRAME) *
2798 BWN_HDRSIZE((*dr)->dr_mac), M_DEVBUF);
2811 BWN_MAXTXHDRSIZE, M_DEVBUF);
2799 }
2800 free((*dr)->dr_meta, M_DEVBUF);
2801 free(*dr, M_DEVBUF);
2802
2803 *dr = NULL;
2804}
2805
2806static void

--- 4488 unchanged lines hidden ---
2812 }
2813 free((*dr)->dr_meta, M_DEVBUF);
2814 free(*dr, M_DEVBUF);
2815
2816 *dr = NULL;
2817}
2818
2819static void

--- 4488 unchanged lines hidden ---