diff options
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_common.h | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_config.h | 31 | ||||
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_hw.c | 211 | ||||
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_ioctl.c | 24 | ||||
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_pci.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_wlan.h | 12 |
6 files changed, 13 insertions, 273 deletions
diff --git a/drivers/net/wireless/hostap/hostap_common.h b/drivers/net/wireless/hostap/hostap_common.h index 3b79d9e95e6f..3f86263a08fd 100644 --- a/drivers/net/wireless/hostap/hostap_common.h +++ b/drivers/net/wireless/hostap/hostap_common.h | |||
| @@ -343,8 +343,8 @@ enum { | |||
| 343 | PRISM2_PARAM_MONITOR_ALLOW_FCSERR = 16, | 343 | PRISM2_PARAM_MONITOR_ALLOW_FCSERR = 16, |
| 344 | PRISM2_PARAM_HOST_ENCRYPT = 17, | 344 | PRISM2_PARAM_HOST_ENCRYPT = 17, |
| 345 | PRISM2_PARAM_HOST_DECRYPT = 18, | 345 | PRISM2_PARAM_HOST_DECRYPT = 18, |
| 346 | PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX = 19, | 346 | /* PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX = 19, REMOVED 2005-08-14 */ |
| 347 | PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX = 20, | 347 | /* PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX = 20, REMOVED 2005-08-14 */ |
| 348 | PRISM2_PARAM_HOST_ROAMING = 21, | 348 | PRISM2_PARAM_HOST_ROAMING = 21, |
| 349 | PRISM2_PARAM_BCRX_STA_KEY = 22, | 349 | PRISM2_PARAM_BCRX_STA_KEY = 22, |
| 350 | PRISM2_PARAM_IEEE_802_1X = 23, | 350 | PRISM2_PARAM_IEEE_802_1X = 23, |
diff --git a/drivers/net/wireless/hostap/hostap_config.h b/drivers/net/wireless/hostap/hostap_config.h index 0b526febd1a8..174068bffd82 100644 --- a/drivers/net/wireless/hostap/hostap_config.h +++ b/drivers/net/wireless/hostap/hostap_config.h | |||
| @@ -13,37 +13,6 @@ | |||
| 13 | /* Maximum number of events handler per one interrupt */ | 13 | /* Maximum number of events handler per one interrupt */ |
| 14 | #define PRISM2_MAX_INTERRUPT_EVENTS 20 | 14 | #define PRISM2_MAX_INTERRUPT_EVENTS 20 |
| 15 | 15 | ||
| 16 | /* Use PCI bus master to copy data to/from BAP (only available for | ||
| 17 | * hostap_pci.o). | ||
| 18 | * | ||
| 19 | * Note! This is extremely experimental. PCI bus master is not supported by | ||
| 20 | * Intersil and it seems to have some problems at least on TX path (see below). | ||
| 21 | * The driver code for implementing bus master support is based on guessing | ||
| 22 | * and experimenting suitable control bits and these might not be correct. | ||
| 23 | * This code is included because using bus master makes a huge difference in | ||
| 24 | * host CPU load (something like 40% host CPU usage to 5-10% when sending or | ||
| 25 | * receiving at maximum throughput). | ||
| 26 | * | ||
| 27 | * Note2! Station firmware version 1.3.5 and primary firmware version 1.0.7 | ||
| 28 | * have some fixes for PCI corruption and these (or newer) versions are | ||
| 29 | * recommended especially when using bus mastering. | ||
| 30 | * | ||
| 31 | * NOTE: PCI bus mastering code has not been updated for long time and it is | ||
| 32 | * not likely to compile and it will _not_ work as is. Only enable this if you | ||
| 33 | * are prepared to first fix the implementation.. | ||
| 34 | */ | ||
| 35 | /* #define PRISM2_BUS_MASTER */ | ||
| 36 | |||
| 37 | #ifdef PRISM2_BUS_MASTER | ||
| 38 | |||
| 39 | /* PCI bus master implementation seems to be broken in current | ||
| 40 | * hardware/firmware versions. Enable this to use enable command to fix | ||
| 41 | * something before starting bus master operation on TX path. This will add | ||
| 42 | * some latency and an extra interrupt to each TX packet. */ | ||
| 43 | #define PRISM2_ENABLE_BEFORE_TX_BUS_MASTER | ||
| 44 | |||
| 45 | #endif /* PRISM2_BUS_MASTER */ | ||
| 46 | |||
| 47 | /* Include code for downloading firmware images into volatile RAM. */ | 16 | /* Include code for downloading firmware images into volatile RAM. */ |
| 48 | #define PRISM2_DOWNLOAD_SUPPORT | 17 | #define PRISM2_DOWNLOAD_SUPPORT |
| 49 | 18 | ||
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c index dc31f5351b36..30c215106714 100644 --- a/drivers/net/wireless/hostap/hostap_hw.c +++ b/drivers/net/wireless/hostap/hostap_hw.c | |||
| @@ -83,18 +83,6 @@ static int dtim_period[MAX_PARM_DEVICES] = { 1, DEF_INTS }; | |||
| 83 | module_param_array(dtim_period, int, NULL, 0444); | 83 | module_param_array(dtim_period, int, NULL, 0444); |
| 84 | MODULE_PARM_DESC(dtim_period, "DTIM period"); | 84 | MODULE_PARM_DESC(dtim_period, "DTIM period"); |
| 85 | 85 | ||
| 86 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | ||
| 87 | static int bus_master_threshold_rx[MAX_PARM_DEVICES] = { 100, DEF_INTS }; | ||
| 88 | module_param_array(bus_master_threshold_rx, int, NULL, 0444); | ||
| 89 | MODULE_PARM_DESC(bus_master_threshold_rx, "Packet length threshold for using " | ||
| 90 | "PCI bus master on RX"); | ||
| 91 | |||
| 92 | static int bus_master_threshold_tx[MAX_PARM_DEVICES] = { 100, DEF_INTS }; | ||
| 93 | module_param_array(bus_master_threshold_tx, int, NULL, 0444); | ||
| 94 | MODULE_PARM_DESC(bus_master_threshold_tx, "Packet length threshold for using " | ||
| 95 | "PCI bus master on TX"); | ||
| 96 | #endif /* PRISM2_PCI and PRISM2_BUS_MASTER */ | ||
| 97 | |||
| 98 | static char dev_template[16] = "wlan%d"; | 86 | static char dev_template[16] = "wlan%d"; |
| 99 | module_param_string(dev_template, dev_template, sizeof(dev_template), 0444); | 87 | module_param_string(dev_template, dev_template, sizeof(dev_template), 0444); |
| 100 | MODULE_PARM_DESC(dev_template, "Prefix for network device name (default: " | 88 | MODULE_PARM_DESC(dev_template, "Prefix for network device name (default: " |
| @@ -107,12 +95,6 @@ MODULE_PARM_DESC(dev_template, "Prefix for network device name (default: " | |||
| 107 | #define EXTRA_EVENTS_WTERR HFA384X_EV_WTERR | 95 | #define EXTRA_EVENTS_WTERR HFA384X_EV_WTERR |
| 108 | #endif | 96 | #endif |
| 109 | 97 | ||
| 110 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | ||
| 111 | #define EXTRA_EVENTS_BUS_MASTER (HFA384X_EV_PCI_M0 | HFA384X_EV_PCI_M1) | ||
| 112 | #else | ||
| 113 | #define EXTRA_EVENTS_BUS_MASTER 0 | ||
| 114 | #endif | ||
| 115 | |||
| 116 | /* Events that will be using BAP0 */ | 98 | /* Events that will be using BAP0 */ |
| 117 | #define HFA384X_BAP0_EVENTS \ | 99 | #define HFA384X_BAP0_EVENTS \ |
| 118 | (HFA384X_EV_TXEXC | HFA384X_EV_RX | HFA384X_EV_INFO | HFA384X_EV_TX) | 100 | (HFA384X_EV_TXEXC | HFA384X_EV_RX | HFA384X_EV_INFO | HFA384X_EV_TX) |
| @@ -121,7 +103,7 @@ MODULE_PARM_DESC(dev_template, "Prefix for network device name (default: " | |||
| 121 | #define HFA384X_EVENT_MASK \ | 103 | #define HFA384X_EVENT_MASK \ |
| 122 | (HFA384X_BAP0_EVENTS | HFA384X_EV_ALLOC | HFA384X_EV_INFDROP | \ | 104 | (HFA384X_BAP0_EVENTS | HFA384X_EV_ALLOC | HFA384X_EV_INFDROP | \ |
| 123 | HFA384X_EV_CMD | HFA384X_EV_TICK | \ | 105 | HFA384X_EV_CMD | HFA384X_EV_TICK | \ |
| 124 | EXTRA_EVENTS_WTERR | EXTRA_EVENTS_BUS_MASTER) | 106 | EXTRA_EVENTS_WTERR) |
| 125 | 107 | ||
| 126 | /* Default TX control flags: use 802.11 headers and request interrupt for | 108 | /* Default TX control flags: use 802.11 headers and request interrupt for |
| 127 | * failed transmits. Frames that request ACK callback, will add | 109 | * failed transmits. Frames that request ACK callback, will add |
| @@ -1827,34 +1809,6 @@ static int prism2_transmit(struct net_device *dev, int idx) | |||
| 1827 | } | 1809 | } |
| 1828 | 1810 | ||
| 1829 | 1811 | ||
| 1830 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | ||
| 1831 | /* Called only from hardware IRQ */ | ||
| 1832 | static void prism2_tx_cb(struct net_device *dev, void *context, | ||
| 1833 | u16 resp0, u16 res) | ||
| 1834 | { | ||
| 1835 | struct hostap_interface *iface; | ||
| 1836 | local_info_t *local; | ||
| 1837 | unsigned long addr; | ||
| 1838 | int buf_len = (int) context; | ||
| 1839 | |||
| 1840 | iface = netdev_priv(dev); | ||
| 1841 | local = iface->local; | ||
| 1842 | |||
| 1843 | if (res) { | ||
| 1844 | printk(KERN_DEBUG "%s: prism2_tx_cb - res=0x%02x\n", | ||
| 1845 | dev->name, res); | ||
| 1846 | return; | ||
| 1847 | } | ||
| 1848 | |||
| 1849 | addr = virt_to_phys(local->bus_m0_buf); | ||
| 1850 | HFA384X_OUTW((addr & 0xffff0000) >> 16, HFA384X_PCI_M0_ADDRH_OFF); | ||
| 1851 | HFA384X_OUTW(addr & 0x0000ffff, HFA384X_PCI_M0_ADDRL_OFF); | ||
| 1852 | HFA384X_OUTW(buf_len / 2, HFA384X_PCI_M0_LEN_OFF); | ||
| 1853 | HFA384X_OUTW(HFA384X_PCI_CTL_TO_BAP, HFA384X_PCI_M0_CTL_OFF); | ||
| 1854 | } | ||
| 1855 | #endif /* PRISM2_PCI and PRISM2_BUS_MASTER */ | ||
| 1856 | |||
| 1857 | |||
| 1858 | /* Send IEEE 802.11 frame (convert the header into Prism2 TX descriptor and | 1812 | /* Send IEEE 802.11 frame (convert the header into Prism2 TX descriptor and |
| 1859 | * send the payload with this descriptor) */ | 1813 | * send the payload with this descriptor) */ |
| 1860 | /* Called only from software IRQ */ | 1814 | /* Called only from software IRQ */ |
| @@ -1920,53 +1874,6 @@ static int prism2_tx_80211(struct sk_buff *skb, struct net_device *dev) | |||
| 1920 | spin_lock(&local->baplock); | 1874 | spin_lock(&local->baplock); |
| 1921 | res = hfa384x_setup_bap(dev, BAP0, local->txfid[idx], 0); | 1875 | res = hfa384x_setup_bap(dev, BAP0, local->txfid[idx], 0); |
| 1922 | 1876 | ||
| 1923 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | ||
| 1924 | if (!res && skb->len >= local->bus_master_threshold_tx) { | ||
| 1925 | u8 *pos; | ||
| 1926 | int buf_len; | ||
| 1927 | |||
| 1928 | local->bus_m0_tx_idx = idx; | ||
| 1929 | |||
| 1930 | /* FIX: BAP0 should be locked during bus master transfer, but | ||
| 1931 | * baplock with BH's disabled is not OK for this; netif queue | ||
| 1932 | * stopping is not enough since BAP0 is used also for RID | ||
| 1933 | * read/write */ | ||
| 1934 | |||
| 1935 | /* stop the queue for the time that bus mastering on BAP0 is | ||
| 1936 | * in use */ | ||
| 1937 | netif_stop_queue(dev); | ||
| 1938 | |||
| 1939 | spin_unlock(&local->baplock); | ||
| 1940 | |||
| 1941 | /* Copy frame data to bus_m0_buf */ | ||
| 1942 | pos = local->bus_m0_buf; | ||
| 1943 | memcpy(pos, &txdesc, sizeof(txdesc)); | ||
| 1944 | pos += sizeof(txdesc); | ||
| 1945 | memcpy(pos, skb->data + hdr_len, skb->len - hdr_len); | ||
| 1946 | pos += skb->len - hdr_len; | ||
| 1947 | buf_len = pos - local->bus_m0_buf; | ||
| 1948 | if (buf_len & 1) | ||
| 1949 | buf_len++; | ||
| 1950 | |||
| 1951 | #ifdef PRISM2_ENABLE_BEFORE_TX_BUS_MASTER | ||
| 1952 | /* Any RX packet seems to break something with TX bus | ||
| 1953 | * mastering; enable command is enough to fix this.. */ | ||
| 1954 | if (hfa384x_cmd_callback(dev, HFA384X_CMDCODE_ENABLE, 0, | ||
| 1955 | prism2_tx_cb, (long) buf_len)) { | ||
| 1956 | printk(KERN_DEBUG "%s: TX: enable port0 failed\n", | ||
| 1957 | dev->name); | ||
| 1958 | } | ||
| 1959 | #else /* PRISM2_ENABLE_BEFORE_TX_BUS_MASTER */ | ||
| 1960 | prism2_tx_cb(dev, (void *) buf_len, 0, 0); | ||
| 1961 | #endif /* PRISM2_ENABLE_BEFORE_TX_BUS_MASTER */ | ||
| 1962 | |||
| 1963 | /* Bus master transfer will be started from command completion | ||
| 1964 | * event handler and TX handling will be finished by calling | ||
| 1965 | * prism2_transmit() from bus master event handler */ | ||
| 1966 | goto tx_stats; | ||
| 1967 | } | ||
| 1968 | #endif /* PRISM2_PCI and PRISM2_BUS_MASTER */ | ||
| 1969 | |||
| 1970 | if (!res) | 1877 | if (!res) |
| 1971 | res = hfa384x_to_bap(dev, BAP0, &txdesc, sizeof(txdesc)); | 1878 | res = hfa384x_to_bap(dev, BAP0, &txdesc, sizeof(txdesc)); |
| 1972 | if (!res) | 1879 | if (!res) |
| @@ -2107,50 +2014,18 @@ static void prism2_rx(local_info_t *local) | |||
| 2107 | skb->dev = dev; | 2014 | skb->dev = dev; |
| 2108 | memcpy(skb_put(skb, hdr_len), &rxdesc, hdr_len); | 2015 | memcpy(skb_put(skb, hdr_len), &rxdesc, hdr_len); |
| 2109 | 2016 | ||
| 2110 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | 2017 | if (len > 0) |
| 2111 | if (len >= local->bus_master_threshold_rx) { | 2018 | res = hfa384x_from_bap(dev, BAP0, skb_put(skb, len), len); |
| 2112 | unsigned long addr; | 2019 | spin_unlock(&local->baplock); |
| 2113 | 2020 | if (res) { | |
| 2114 | hfa384x_events_no_bap1(dev); | 2021 | printk(KERN_DEBUG "%s: RX failed to read " |
| 2115 | 2022 | "frame data\n", dev->name); | |
| 2116 | local->rx_skb = skb; | 2023 | goto rx_dropped; |
| 2117 | /* Internal BAP0 offset points to the byte following rxdesc; | ||
| 2118 | * copy rest of the data using bus master */ | ||
| 2119 | addr = virt_to_phys(skb_put(skb, len)); | ||
| 2120 | HFA384X_OUTW((addr & 0xffff0000) >> 16, | ||
| 2121 | HFA384X_PCI_M0_ADDRH_OFF); | ||
| 2122 | HFA384X_OUTW(addr & 0x0000ffff, HFA384X_PCI_M0_ADDRL_OFF); | ||
| 2123 | if (len & 1) | ||
| 2124 | len++; | ||
| 2125 | HFA384X_OUTW(len / 2, HFA384X_PCI_M0_LEN_OFF); | ||
| 2126 | HFA384X_OUTW(HFA384X_PCI_CTL_FROM_BAP, HFA384X_PCI_M0_CTL_OFF); | ||
| 2127 | |||
| 2128 | /* pci_bus_m1 event will be generated when data transfer is | ||
| 2129 | * complete and the frame will then be added to rx_list and | ||
| 2130 | * rx_tasklet is scheduled */ | ||
| 2131 | rx_pending = 1; | ||
| 2132 | |||
| 2133 | /* Have to release baplock before returning, although BAP0 | ||
| 2134 | * should really not be used before DMA transfer has been | ||
| 2135 | * completed. */ | ||
| 2136 | spin_unlock(&local->baplock); | ||
| 2137 | } else | ||
| 2138 | #endif /* PRISM2_PCI and PRISM2_BUS_MASTER */ | ||
| 2139 | { | ||
| 2140 | if (len > 0) | ||
| 2141 | res = hfa384x_from_bap(dev, BAP0, skb_put(skb, len), | ||
| 2142 | len); | ||
| 2143 | spin_unlock(&local->baplock); | ||
| 2144 | if (res) { | ||
| 2145 | printk(KERN_DEBUG "%s: RX failed to read " | ||
| 2146 | "frame data\n", dev->name); | ||
| 2147 | goto rx_dropped; | ||
| 2148 | } | ||
| 2149 | |||
| 2150 | skb_queue_tail(&local->rx_list, skb); | ||
| 2151 | tasklet_schedule(&local->rx_tasklet); | ||
| 2152 | } | 2024 | } |
| 2153 | 2025 | ||
| 2026 | skb_queue_tail(&local->rx_list, skb); | ||
| 2027 | tasklet_schedule(&local->rx_tasklet); | ||
| 2028 | |||
| 2154 | rx_exit: | 2029 | rx_exit: |
| 2155 | prism2_callback(local, PRISM2_CALLBACK_RX_END); | 2030 | prism2_callback(local, PRISM2_CALLBACK_RX_END); |
| 2156 | if (!rx_pending) { | 2031 | if (!rx_pending) { |
| @@ -2654,36 +2529,6 @@ static void hostap_bap_tasklet(unsigned long data) | |||
| 2654 | } | 2529 | } |
| 2655 | 2530 | ||
| 2656 | 2531 | ||
| 2657 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | ||
| 2658 | /* Called only from hardware IRQ */ | ||
| 2659 | static void prism2_bus_master_ev(struct net_device *dev, int bap) | ||
| 2660 | { | ||
| 2661 | struct hostap_interface *iface; | ||
| 2662 | local_info_t *local; | ||
| 2663 | |||
| 2664 | iface = netdev_priv(dev); | ||
| 2665 | local = iface->local; | ||
| 2666 | |||
| 2667 | if (bap == BAP1) { | ||
| 2668 | /* FIX: frame payload was DMA'd to skb->data; might need to | ||
| 2669 | * invalidate data cache for that memory area */ | ||
| 2670 | skb_queue_tail(&local->rx_list, local->rx_skb); | ||
| 2671 | tasklet_schedule(&local->rx_tasklet); | ||
| 2672 | HFA384X_OUTW(HFA384X_EV_RX, HFA384X_EVACK_OFF); | ||
| 2673 | } else { | ||
| 2674 | if (prism2_transmit(dev, local->bus_m0_tx_idx)) { | ||
| 2675 | printk(KERN_DEBUG "%s: prism2_transmit() failed " | ||
| 2676 | "when called from bus master event\n", | ||
| 2677 | dev->name); | ||
| 2678 | local->intransmitfid[local->bus_m0_tx_idx] = | ||
| 2679 | PRISM2_TXFID_EMPTY; | ||
| 2680 | schedule_work(&local->reset_queue); | ||
| 2681 | } | ||
| 2682 | } | ||
| 2683 | } | ||
| 2684 | #endif /* PRISM2_PCI and PRISM2_BUS_MASTER */ | ||
| 2685 | |||
| 2686 | |||
| 2687 | /* Called only from hardware IRQ */ | 2532 | /* Called only from hardware IRQ */ |
| 2688 | static void prism2_infdrop(struct net_device *dev) | 2533 | static void prism2_infdrop(struct net_device *dev) |
| 2689 | { | 2534 | { |
| @@ -2852,21 +2697,6 @@ static irqreturn_t prism2_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
| 2852 | HFA384X_OUTW(HFA384X_EV_TICK, HFA384X_EVACK_OFF); | 2697 | HFA384X_OUTW(HFA384X_EV_TICK, HFA384X_EVACK_OFF); |
| 2853 | } | 2698 | } |
| 2854 | 2699 | ||
| 2855 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | ||
| 2856 | if (ev & HFA384X_EV_PCI_M0) { | ||
| 2857 | prism2_bus_master_ev(dev, BAP0); | ||
| 2858 | HFA384X_OUTW(HFA384X_EV_PCI_M0, HFA384X_EVACK_OFF); | ||
| 2859 | } | ||
| 2860 | |||
| 2861 | if (ev & HFA384X_EV_PCI_M1) { | ||
| 2862 | /* previous RX has been copied can be ACKed now */ | ||
| 2863 | HFA384X_OUTW(HFA384X_EV_RX, HFA384X_EVACK_OFF); | ||
| 2864 | |||
| 2865 | prism2_bus_master_ev(dev, BAP1); | ||
| 2866 | HFA384X_OUTW(HFA384X_EV_PCI_M1, HFA384X_EVACK_OFF); | ||
| 2867 | } | ||
| 2868 | #endif /* PRISM2_PCI and PRISM2_BUS_MASTER */ | ||
| 2869 | |||
| 2870 | if (ev & HFA384X_EV_ALLOC) { | 2700 | if (ev & HFA384X_EV_ALLOC) { |
| 2871 | prism2_alloc_ev(dev); | 2701 | prism2_alloc_ev(dev); |
| 2872 | HFA384X_OUTW(HFA384X_EV_ALLOC, HFA384X_EVACK_OFF); | 2702 | HFA384X_OUTW(HFA384X_EV_ALLOC, HFA384X_EVACK_OFF); |
| @@ -3309,13 +3139,6 @@ prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx, | |||
| 3309 | local->io_debug_enabled = 1; | 3139 | local->io_debug_enabled = 1; |
| 3310 | #endif /* PRISM2_IO_DEBUG */ | 3140 | #endif /* PRISM2_IO_DEBUG */ |
| 3311 | 3141 | ||
| 3312 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | ||
| 3313 | local->bus_m0_buf = (u8 *) kmalloc(sizeof(struct hfa384x_tx_frame) + | ||
| 3314 | PRISM2_DATA_MAXLEN, GFP_DMA); | ||
| 3315 | if (local->bus_m0_buf == NULL) | ||
| 3316 | goto fail; | ||
| 3317 | #endif /* PRISM2_PCI and PRISM2_BUS_MASTER */ | ||
| 3318 | |||
| 3319 | local->func = funcs; | 3142 | local->func = funcs; |
| 3320 | local->func->cmd = hfa384x_cmd; | 3143 | local->func->cmd = hfa384x_cmd; |
| 3321 | local->func->read_regs = hfa384x_read_regs; | 3144 | local->func->read_regs = hfa384x_read_regs; |
| @@ -3376,12 +3199,6 @@ prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx, | |||
| 3376 | local->auth_algs = PRISM2_AUTH_OPEN | PRISM2_AUTH_SHARED_KEY; | 3199 | local->auth_algs = PRISM2_AUTH_OPEN | PRISM2_AUTH_SHARED_KEY; |
| 3377 | local->sram_type = -1; | 3200 | local->sram_type = -1; |
| 3378 | local->scan_channel_mask = 0xffff; | 3201 | local->scan_channel_mask = 0xffff; |
| 3379 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | ||
| 3380 | local->bus_master_threshold_rx = GET_INT_PARM(bus_master_threshold_rx, | ||
| 3381 | card_idx); | ||
| 3382 | local->bus_master_threshold_tx = GET_INT_PARM(bus_master_threshold_tx, | ||
| 3383 | card_idx); | ||
| 3384 | #endif /* PRISM2_PCI and PRISM2_BUS_MASTER */ | ||
| 3385 | 3202 | ||
| 3386 | /* Initialize task queue structures */ | 3203 | /* Initialize task queue structures */ |
| 3387 | INIT_WORK(&local->reset_queue, handle_reset_queue, local); | 3204 | INIT_WORK(&local->reset_queue, handle_reset_queue, local); |
| @@ -3462,9 +3279,6 @@ while (0) | |||
| 3462 | return dev; | 3279 | return dev; |
| 3463 | 3280 | ||
| 3464 | fail: | 3281 | fail: |
| 3465 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | ||
| 3466 | kfree(local->bus_m0_buf); | ||
| 3467 | #endif /* PRISM2_PCI and PRISM2_BUS_MASTER */ | ||
| 3468 | free_netdev(dev); | 3282 | free_netdev(dev); |
| 3469 | return NULL; | 3283 | return NULL; |
| 3470 | } | 3284 | } |
| @@ -3586,9 +3400,6 @@ static void prism2_free_local_data(struct net_device *dev) | |||
| 3586 | kfree(bss); | 3400 | kfree(bss); |
| 3587 | } | 3401 | } |
| 3588 | 3402 | ||
| 3589 | #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) | ||
| 3590 | kfree(local->bus_m0_buf); | ||
| 3591 | #endif /* PRISM2_PCI and PRISM2_BUS_MASTER */ | ||
| 3592 | kfree(local->pda); | 3403 | kfree(local->pda); |
| 3593 | kfree(local->last_scan_results); | 3404 | kfree(local->last_scan_results); |
| 3594 | kfree(local->generic_elem); | 3405 | kfree(local->generic_elem); |
diff --git a/drivers/net/wireless/hostap/hostap_ioctl.c b/drivers/net/wireless/hostap/hostap_ioctl.c index cfe127a10850..267f68b4d7fd 100644 --- a/drivers/net/wireless/hostap/hostap_ioctl.c +++ b/drivers/net/wireless/hostap/hostap_ioctl.c | |||
| @@ -2239,14 +2239,6 @@ static const struct iw_priv_args prism2_priv[] = { | |||
| 2239 | IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "host_decrypt" }, | 2239 | IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "host_decrypt" }, |
| 2240 | { PRISM2_PARAM_HOST_DECRYPT, | 2240 | { PRISM2_PARAM_HOST_DECRYPT, |
| 2241 | 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "gethost_decrypt" }, | 2241 | 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "gethost_decrypt" }, |
| 2242 | { PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX, | ||
| 2243 | IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "busmaster_rx" }, | ||
| 2244 | { PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX, | ||
| 2245 | 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getbusmaster_rx" }, | ||
| 2246 | { PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX, | ||
| 2247 | IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "busmaster_tx" }, | ||
| 2248 | { PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX, | ||
| 2249 | 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getbusmaster_tx" }, | ||
| 2250 | #ifndef PRISM2_NO_STATION_MODES | 2242 | #ifndef PRISM2_NO_STATION_MODES |
| 2251 | { PRISM2_PARAM_HOST_ROAMING, | 2243 | { PRISM2_PARAM_HOST_ROAMING, |
| 2252 | IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "host_roaming" }, | 2244 | IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "host_roaming" }, |
| @@ -2495,14 +2487,6 @@ static int prism2_ioctl_priv_prism2_param(struct net_device *dev, | |||
| 2495 | ret = -EINVAL; | 2487 | ret = -EINVAL; |
| 2496 | break; | 2488 | break; |
| 2497 | 2489 | ||
| 2498 | case PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX: | ||
| 2499 | local->bus_master_threshold_rx = value; | ||
| 2500 | break; | ||
| 2501 | |||
| 2502 | case PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX: | ||
| 2503 | local->bus_master_threshold_tx = value; | ||
| 2504 | break; | ||
| 2505 | |||
| 2506 | #ifndef PRISM2_NO_STATION_MODES | 2490 | #ifndef PRISM2_NO_STATION_MODES |
| 2507 | case PRISM2_PARAM_HOST_ROAMING: | 2491 | case PRISM2_PARAM_HOST_ROAMING: |
| 2508 | if (value < 0 || value > 2) { | 2492 | if (value < 0 || value > 2) { |
| @@ -2799,14 +2783,6 @@ static int prism2_ioctl_priv_get_prism2_param(struct net_device *dev, | |||
| 2799 | *param = local->host_decrypt; | 2783 | *param = local->host_decrypt; |
| 2800 | break; | 2784 | break; |
| 2801 | 2785 | ||
| 2802 | case PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX: | ||
| 2803 | *param = local->bus_master_threshold_rx; | ||
| 2804 | break; | ||
| 2805 | |||
| 2806 | case PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX: | ||
| 2807 | *param = local->bus_master_threshold_tx; | ||
| 2808 | break; | ||
| 2809 | |||
| 2810 | case PRISM2_PARAM_HOST_ROAMING: | 2786 | case PRISM2_PARAM_HOST_ROAMING: |
| 2811 | *param = local->host_roaming; | 2787 | *param = local->host_roaming; |
| 2812 | break; | 2788 | break; |
diff --git a/drivers/net/wireless/hostap/hostap_pci.c b/drivers/net/wireless/hostap/hostap_pci.c index 786c146f533e..79074b3d10d7 100644 --- a/drivers/net/wireless/hostap/hostap_pci.c +++ b/drivers/net/wireless/hostap/hostap_pci.c | |||
| @@ -305,10 +305,6 @@ static int prism2_pci_probe(struct pci_dev *pdev, | |||
| 305 | goto fail; | 305 | goto fail; |
| 306 | } | 306 | } |
| 307 | 307 | ||
| 308 | #ifdef PRISM2_BUS_MASTER | ||
| 309 | pci_set_master(pdev); | ||
| 310 | #endif /* PRISM2_BUS_MASTER */ | ||
| 311 | |||
| 312 | dev = prism2_init_local_data(&prism2_pci_funcs, cards_found, | 308 | dev = prism2_init_local_data(&prism2_pci_funcs, cards_found, |
| 313 | &pdev->dev); | 309 | &pdev->dev); |
| 314 | if (dev == NULL) | 310 | if (dev == NULL) |
diff --git a/drivers/net/wireless/hostap/hostap_wlan.h b/drivers/net/wireless/hostap/hostap_wlan.h index 6f5bea8a5c23..56416b43e414 100644 --- a/drivers/net/wireless/hostap/hostap_wlan.h +++ b/drivers/net/wireless/hostap/hostap_wlan.h | |||
| @@ -787,10 +787,6 @@ struct local_info { | |||
| 787 | 787 | ||
| 788 | struct prism2_helper_functions *func; | 788 | struct prism2_helper_functions *func; |
| 789 | 789 | ||
| 790 | int bus_master_threshold_tx; | ||
| 791 | int bus_master_threshold_rx; | ||
| 792 | u8 *bus_m1_buf; | ||
| 793 | |||
| 794 | u8 *pda; | 790 | u8 *pda; |
| 795 | int fw_ap; | 791 | int fw_ap; |
| 796 | #define PRISM2_FW_VER(major, minor, variant) \ | 792 | #define PRISM2_FW_VER(major, minor, variant) \ |
| @@ -897,14 +893,6 @@ struct local_info { | |||
| 897 | 893 | ||
| 898 | #ifdef PRISM2_PCI | 894 | #ifdef PRISM2_PCI |
| 899 | void __iomem *mem_start; | 895 | void __iomem *mem_start; |
| 900 | #ifdef PRISM2_BUS_MASTER | ||
| 901 | /* bus master for BAP0 (TX) */ | ||
| 902 | int bus_m0_tx_idx; | ||
| 903 | u8 *bus_m0_buf; | ||
| 904 | |||
| 905 | /* bus master for BAP1 (RX) */ | ||
| 906 | struct sk_buff *rx_skb; | ||
| 907 | #endif /* PRISM2_BUS_MASTER */ | ||
| 908 | #endif /* PRISM2_PCI */ | 896 | #endif /* PRISM2_PCI */ |
| 909 | 897 | ||
| 910 | /* NOTE! Do not add common entries here after hardware version | 898 | /* NOTE! Do not add common entries here after hardware version |
