The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/bwn/if_bwn_util.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    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
    9  *    notice, this list of conditions and the following disclaimer,
   10  *    without modification.
   11  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
   12  *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
   13  *    redistribution must be conditioned upon including a substantially
   14  *    similar Disclaimer requirement for further binary redistribution.
   15  *
   16  * NO WARRANTY
   17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   18  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   19  * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
   20  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
   21  * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
   22  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   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$");
   32 
   33 /*
   34  * The Broadcom Wireless LAN controller driver.
   35  */
   36 
   37 #include "opt_bwn.h"
   38 #include "opt_wlan.h"
   39 
   40 #include <sys/param.h>
   41 #include <sys/systm.h>
   42 #include <sys/kernel.h>
   43 #include <sys/malloc.h>
   44 #include <sys/module.h>
   45 #include <sys/endian.h>
   46 #include <sys/errno.h>
   47 #include <sys/firmware.h>
   48 #include <sys/lock.h>
   49 #include <sys/mutex.h>
   50 #include <machine/bus.h>
   51 #include <machine/resource.h>
   52 #include <sys/bus.h>
   53 #include <sys/rman.h>
   54 #include <sys/socket.h>
   55 #include <sys/sockio.h>
   56 
   57 #include <net/ethernet.h>
   58 #include <net/if.h>
   59 #include <net/if_var.h>
   60 #include <net/if_arp.h>
   61 #include <net/if_dl.h>
   62 #include <net/if_llc.h>
   63 #include <net/if_media.h>
   64 #include <net/if_types.h>
   65 
   66 #include <dev/pci/pcivar.h>
   67 #include <dev/pci/pcireg.h>
   68 
   69 #include <net80211/ieee80211_var.h>
   70 #include <net80211/ieee80211_radiotap.h>
   71 #include <net80211/ieee80211_regdomain.h>
   72 #include <net80211/ieee80211_phy.h>
   73 #include <net80211/ieee80211_ratectl.h>
   74 
   75 #include <dev/bwn/if_bwnreg.h>
   76 #include <dev/bwn/if_bwnvar.h>
   77 
   78 #include <dev/bwn/if_bwn_debug.h>
   79 #include <dev/bwn/if_bwn_misc.h>
   80 #include <dev/bwn/if_bwn_util.h>
   81 
   82 unsigned int
   83 bwn_sqrt(struct bwn_mac *mac, unsigned int x)
   84 {
   85         /* Table holding (10 * sqrt(x)) for x between 1 and 256. */
   86         static uint8_t sqrt_table[256] = {
   87                 10, 14, 17, 20, 22, 24, 26, 28,
   88                 30, 31, 33, 34, 36, 37, 38, 40,
   89                 41, 42, 43, 44, 45, 46, 47, 48,
   90                 50, 50, 51, 52, 53, 54, 55, 56,
   91                 57, 58, 59, 60, 60, 61, 62, 63,
   92                 64, 64, 65, 66, 67, 67, 68, 69,
   93                 70, 70, 71, 72, 72, 73, 74, 74,
   94                 75, 76, 76, 77, 78, 78, 79, 80,
   95                 80, 81, 81, 82, 83, 83, 84, 84,
   96                 85, 86, 86, 87, 87, 88, 88, 89,
   97                 90, 90, 91, 91, 92, 92, 93, 93,
   98                 94, 94, 95, 95, 96, 96, 97, 97,
   99                 98, 98, 99, 100, 100, 100, 101, 101,
  100                 102, 102, 103, 103, 104, 104, 105, 105,
  101                 106, 106, 107, 107, 108, 108, 109, 109,
  102                 110, 110, 110, 111, 111, 112, 112, 113,
  103                 113, 114, 114, 114, 115, 115, 116, 116,
  104                 117, 117, 117, 118, 118, 119, 119, 120,
  105                 120, 120, 121, 121, 122, 122, 122, 123,
  106                 123, 124, 124, 124, 125, 125, 126, 126,
  107                 126, 127, 127, 128, 128, 128, 129, 129,
  108                 130, 130, 130, 131, 131, 131, 132, 132,
  109                 133, 133, 133, 134, 134, 134, 135, 135,
  110                 136, 136, 136, 137, 137, 137, 138, 138,
  111                 138, 139, 139, 140, 140, 140, 141, 141,
  112                 141, 142, 142, 142, 143, 143, 143, 144,
  113                 144, 144, 145, 145, 145, 146, 146, 146,
  114                 147, 147, 147, 148, 148, 148, 149, 149,
  115                 150, 150, 150, 150, 151, 151, 151, 152,
  116                 152, 152, 153, 153, 153, 154, 154, 154,
  117                 155, 155, 155, 156, 156, 156, 157, 157,
  118                 157, 158, 158, 158, 159, 159, 159, 160
  119         };
  120 
  121         if (x == 0)
  122                 return (0);
  123         if (x >= 256) {
  124                 unsigned int tmp;
  125 
  126                 for (tmp = 0; x >= (2 * tmp) + 1; x -= (2 * tmp++) + 1)
  127                         /* do nothing */ ;
  128                 return (tmp);
  129         }
  130         return (sqrt_table[x - 1] / 10);
  131 }

Cache object: fc0efbf185d0137b5bcc51bfd16ac50c


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.