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 --- |