SOURCES: ipw2200-1.1.1-diversity.patch (NEW), ipw2200-1.1.1-fw_end...
arekm
arekm at pld-linux.org
Sat Mar 25 14:23:51 CET 2006
Author: arekm Date: Sat Mar 25 13:23:51 2006 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- new
---- Files affected:
SOURCES:
ipw2200-1.1.1-diversity.patch (NONE -> 1.1) (NEW), ipw2200-1.1.1-fw_endian.patch (NONE -> 1.1) (NEW), ipw2200-1.1.1-rtap_iface.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/ipw2200-1.1.1-diversity.patch
diff -u /dev/null SOURCES/ipw2200-1.1.1-diversity.patch:1.1
--- /dev/null Sat Mar 25 14:23:51 2006
+++ SOURCES/ipw2200-1.1.1-diversity.patch Sat Mar 25 14:23:46 2006
@@ -0,0 +1,24 @@
+Fix problem with diversity algorithm causing disassocaition in 1.1.1
+
+In 1.1.1 a patch went in which enables the "slow diversity" algorithm.
+This algorithm forces one antenna or the other, if the background noise is
+significantly quieter in one than the other. It favors the quieter
+antenna, and won't kick in unless the difference is significant.
+
+This is showing to be problematic in some environments and is reverted
+by this patch.
+
+Signed-off-by: James Ketrenos <jketreno at linux.intel.com>
+
+diff -Nupr ipw2200-1.1.1-orig/ipw2200.c ipw2200-1.1.1/ipw2200.c
+--- ipw2200-1.1.1-orig/ipw2200.c 2006-03-08 06:42:55.000000000 -0600
++++ ipw2200-1.1.1/ipw2200.c 2006-03-08 14:32:20.000000000 -0600
+@@ -10198,7 +10198,7 @@ static void init_sys_config(struct ipw_s
+ sys_config->disable_unicast_decryption = 1;
+ sys_config->exclude_multicast_unencrypted = 0;
+ sys_config->disable_multicast_decryption = 1;
+- sys_config->antenna_diversity = CFG_SYS_ANTENNA_SLOW_DIV;
++ sys_config->antenna_diversity = CFG_SYS_ANTENNA_BOTH;
+ sys_config->pass_crc_to_host = 0; /* TODO: See if 1 gives us FCS */
+ sys_config->dot11g_auto_detection = 0;
+ sys_config->enable_cts_to_self = 0;
================================================================
Index: SOURCES/ipw2200-1.1.1-fw_endian.patch
diff -u /dev/null SOURCES/ipw2200-1.1.1-fw_endian.patch:1.1
--- /dev/null Sat Mar 25 14:23:51 2006
+++ SOURCES/ipw2200-1.1.1-fw_endian.patch Sat Mar 25 14:23:46 2006
@@ -0,0 +1,75 @@
+ipw2200: Fix endian issues with v3.0 fw image format
+
+This patch corrects endian issues with the v3.0 fw image format.
+
+ ipw2200.c | 23 ++++++++++++-----------
+ 1 file changed, 12 insertions(+), 11 deletions(-)
+
+diff -Nupr ipw2200-1.1.1-orig/ipw2200.c ipw2200-1.1.1/ipw2200.c
+--- ipw2200-1.1.1-orig/ipw2200.c 2006-03-08 06:42:55.000000000 -0600
++++ ipw2200-1.1.1/ipw2200.c 2006-03-08 13:30:32.000000000 -0600
+@@ -3194,10 +3194,10 @@ static int ipw_reset_nic(struct ipw_priv
+ }
+
+ struct ipw_fw {
+- u32 ver;
+- u32 boot_size;
+- u32 ucode_size;
+- u32 fw_size;
++ __le32 ver;
++ __le32 boot_size;
++ __le32 ucode_size;
++ __le32 fw_size;
+ u8 data[0];
+ };
+
+@@ -3221,8 +3221,8 @@ static int ipw_get_fw(struct ipw_priv *p
+
+ fw = (void *)(*raw)->data;
+
+- if ((*raw)->size < sizeof(*fw) +
+- fw->boot_size + fw->ucode_size + fw->fw_size) {
++ if ((*raw)->size < sizeof(*fw) + le32_to_cpu(fw->boot_size) +
++ le32_to_cpu(fw->ucode_size) + le32_to_cpu(fw->fw_size)) {
+ IPW_ERROR("%s is too small or corrupt (%zd)\n",
+ name, (*raw)->size);
+ return -EINVAL;
+@@ -3324,8 +3324,9 @@ static int ipw_load(struct ipw_priv *pri
+
+ fw = (void *)raw->data;
+ boot_img = &fw->data[0];
+- ucode_img = &fw->data[fw->boot_size];
+- fw_img = &fw->data[fw->boot_size + fw->ucode_size];
++ ucode_img = &fw->data[le32_to_cpu(fw->boot_size)];
++ fw_img = &fw->data[le32_to_cpu(fw->boot_size) +
++ le32_to_cpu(fw->ucode_size)];
+
+ if (rc < 0)
+ goto error;
+@@ -3359,7 +3360,7 @@ static int ipw_load(struct ipw_priv *pri
+ IPW_NIC_SRAM_UPPER_BOUND - IPW_NIC_SRAM_LOWER_BOUND);
+
+ /* DMA the initial boot firmware into the device */
+- rc = ipw_load_firmware(priv, boot_img, fw->boot_size);
++ rc = ipw_load_firmware(priv, boot_img, le32_to_cpu(fw->boot_size));
+ if (rc < 0) {
+ IPW_ERROR("Unable to load boot firmware: %d\n", rc);
+ goto error;
+@@ -3381,7 +3382,7 @@ static int ipw_load(struct ipw_priv *pri
+ ipw_write32(priv, IPW_INTA_RW, IPW_INTA_BIT_FW_INITIALIZATION_DONE);
+
+ /* DMA the ucode into the device */
+- rc = ipw_load_ucode(priv, ucode_img, fw->ucode_size);
++ rc = ipw_load_ucode(priv, ucode_img, le32_to_cpu(fw->ucode_size));
+ if (rc < 0) {
+ IPW_ERROR("Unable to load ucode: %d\n", rc);
+ goto error;
+@@ -3391,7 +3392,7 @@ static int ipw_load(struct ipw_priv *pri
+ ipw_stop_nic(priv);
+
+ /* DMA bss firmware into the device */
+- rc = ipw_load_firmware(priv, fw_img, fw->fw_size);
++ rc = ipw_load_firmware(priv, fw_img, le32_to_cpu(fw->fw_size));
+ if (rc < 0) {
+ IPW_ERROR("Unable to load firmware: %d\n", rc);
+ goto error;
================================================================
Index: SOURCES/ipw2200-1.1.1-rtap_iface.patch
diff -u /dev/null SOURCES/ipw2200-1.1.1-rtap_iface.patch:1.1
--- /dev/null Sat Mar 25 14:23:51 2006
+++ SOURCES/ipw2200-1.1.1-rtap_iface.patch Sat Mar 25 14:23:46 2006
@@ -0,0 +1,2584 @@
+Enable rtap interface for RF promiscuous mode while associated
+
+With this patch, a new promiscuous mode is enabled. Once applied,
+when you load the module with the rtap_iface=1 module parameter, two
+interfaces will be created (instead of just one).
+
+The second interface is prefixed 'rtap' and provides received
+802.11 frames on the current channel to user space in a radiotap header
+format.
+
+Example usage:
+
+ % modprobe ipw2200 rtap_iface=1
+ % iwconfig eth1 essid MyNetwork
+ % dhcpcd eth1
+ % tcpdump -i rtap0
+
+If you do not specify 'rtap_iface=1' then the rtap interface will
+not be created and you will need to turn it on via:
+
+ % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
+
+You can filter out what type of information is passed to user space via
+the rtap_filter sysfs entry. Currently you can tell the driver to
+transmit just the headers (which will provide the RADIOTAP and IEEE
+802.11 header but not the payload), to filter based on frame control
+type (Management, Control, or Data), and whether to report transmitted
+frames, received frames, or both.
+
+The transmit frame reporting is based on a patch by Stefan Rompf.
+
+Example usage:
+
+First, see what filter bits are available:
+
+ % ./filters
+
+Now set the filter to only send headers (0x7), don't report Tx'd frames
+(0x10), and don't report data frames (0x100):
+
+ % echo 0x117 > /sys/bus/pci/drivers/ipw2200/*/rtap_filter
+
+All your packets are belong to us:
+
+ % tethereal -n -i rtap0
+
+As a side note, you can see a sample user space application to pull the
+packets in user space in the file ipwstats.c. Check the start of that
+file for information on building and running that utility.
+
+Signed-off-by: James Ketrenos <jketreno at linux.intel.com>
+
+---
+ Makefile | 24 +
+ filters | 56 +++
+ in-tree/Kconfig.ipw2200 | 83 +++++
+ ipw2200.c | 661 ++++++++++++++++++++++++++++++++++++++++--
+ ipw2200.h | 83 +++++
+ ipwstats.c | 752 ++++++++++++++++++++++++++++++++++++++++++++++++
+ ipwstats.cc | 571 ++++++++++++++++++++++++++++++++++++
+ 7 files changed, 2192 insertions(+), 38 deletions(-)
+diff -Nupr ipw2200-1.1.1/Makefile ipw2200-1.1.1-rtap/Makefile
+--- ipw2200-1.1.1/Makefile 2006-03-08 06:42:54.000000000 -0600
++++ ipw2200-1.1.1-rtap/Makefile 2006-03-23 15:07:00.000000000 -0600
+@@ -28,7 +28,16 @@ CONFIG_IPW2200_MONITOR=y
+
+ # If you are interested in using radiotap headers in monitor mode,
+ # simply uncomment:
+-#CONFIG_IEEE80211_RADIOTAP=y
++#
++# NOTE: To use RADIOTAP you must also enable MONITOR above.
++CONFIG_IEEE80211_RADIOTAP=y
++
++# The above monitor mode provides standard monitor mode. The following
++# will create a new interface (named rtap%d) which will be sent all
++# 802.11 frames received on the interface
++#
++# NOTE: To use PROMISCUOUS you must also enable MONITOR above.
++CONFIG_IPW2200_PROMISCUOUS=y
+
+ endif
+
+@@ -83,6 +92,9 @@ EXTRA_CFLAGS += -DCONFIG_IPW2200_MONITOR
+ ifdef CONFIG_IEEE80211_RADIOTAP
+ EXTRA_CFLAGS += -DCONFIG_IEEE80211_RADIOTAP=$(CONFIG_IEEE80211_RADIOTAP)
+ endif
++ifdef CONFIG_IPW2200_PROMISCUOUS
++EXTRA_CFLAGS += -DCONFIG_IPW2200_PROMISCUOUS=$(CONFIG_IPW2200_PROMISCUOUS)
++endif
+ endif
+ ifdef CONFIG_IPW_QOS
+ EXTRA_CFLAGS += -DCONFIG_IPW_QOS=$(CONFIG_IPW_QOS)
+@@ -132,7 +144,7 @@ check_inc:
+ @[ -e $(IEEE80211_INC)/net/ieee80211.h ]
+
+ clean:
+- rm -f *.mod.c *.mod *.o *.ko .*.cmd .*.flags .lst *.lst
++ rm -f *.mod.c *.mod *.o *.ko .*.cmd .*.flags .lst *.lst ipwstats
+ rm -rf $(PWD)/tmp
+ for file in *.{c,h}; do \
+ sed -i -e "s:\ *$$::g" -e "s:\t*$$::g" $$file; \
+@@ -184,6 +196,7 @@ patch_kernel:
+ "obj-\$$(CONFIG_IPW2200) += ipw2200.o" >> \
+ ${KSRC}/drivers/net/wireless/Makefile)
+ @cp README.ipw2200 ${KSRC}/Documentation/networking
++ @cp ipw2200.{c,h} ${KSRC}/drivers/net/wireless
+ @cp in-tree/Kconfig.ipw2200 ${KSRC}/drivers/net/wireless
+ @(grep -q "Kconfig\.ipw2200" ${KSRC}/drivers/net/wireless/Kconfig || \
+ grep -q "IPW2200" ${KSRC}/drivers/net/wireless/Kconfig || \
+@@ -205,7 +218,7 @@ uninstall:
+ endif # End of internal build
+
+
+-.PHONY: TAGS tags check_inc
++.PHONY: TAGS tags check_inc apps
+
+ RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \) -prune -o
+ define all-sources
+@@ -219,3 +232,8 @@ tags:
+ CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`; \
+ $(all-sources) | xargs ctags $$CTAGSF -a
+
++apps : ipwstats
++
++ipwstats : ipwstats.c
++ gcc -Wall -I/usr/src/linux/include/ -o $@ $^ $$(pkg-config gtk+-2.0 --cflags --libs)
++
+diff -Nupr ipw2200-1.1.1/filters ipw2200-1.1.1-rtap/filters
+--- ipw2200-1.1.1/filters 1969-12-31 18:00:00.000000000 -0600
++++ ipw2200-1.1.1-rtap/filters 2006-03-22 15:01:37.000000000 -0600
+@@ -0,0 +1,56 @@
++#!/bin/sh
++MODULE="ipw2200"
++FILTER_PATH="/sys/bus/pci/drivers/${MODULE}/*/rtap_filter"
++LEVEL=""
++
++function get_level()
++{
++ if [ ! -e ${FILTER_PATH} ]; then
++ LEVEL=""
++ else
++ LEVEL=`cat ${FILTER_PATH}`
++ fi
++}
++
++function bit()
++{
++ VAL=1
++ for ((i = 0; i < $2; i++)); do
++ VAL=$((VAL*2))
++ done
++ SET="$((VAL & $3))"
++ if [ "${SET}" = "0" ]; then
++ SET=" "
++ else
++ SET="*"
++ fi
++ printf "%-20s\t\t0x%08X [%s] %d\n" $1 $VAL "$SET" $VAL
++}
++
++IFS="
++"
++LEVELS=$(sed -ne "s#.*IPW_PROM_\(.*\)[ \t]*=[ \t]*(1[ \t]*<<[ \t]*\(.*\)).*#\1 \2#p" ipw2200.h)
++get_level
++
++if [ ! -z ${LEVEL} ]; then
++ LEV=$((LEVEL))
++else
++ LEV=0
++fi
++printf "%-20s\t\t%-10s Set Decimal\n" "Description" "Hex"
++for i in $LEVELS; do
++ IFS="
++"
++ bit $i ${LEV}
++done
++
++if [ ! -z ${LEVEL} ]; then
++ printf "rtap_filter = ${LEVEL} (* = enabled)\n"
++else
++ printf "${MODULE} not currently loaded. rtap_filter not set.\n"
++fi
++cat << EOF
++Example usage:
++ \$((0x1 + 0x2 + 0x4 ...)) > /sys/bus/pci/drivers/ipw2200/*/rtap_filter
++EOF
++
+diff -Nupr ipw2200-1.1.1/in-tree/Kconfig.ipw2200 ipw2200-1.1.1-rtap/in-tree/Kconfig.ipw2200
+--- ipw2200-1.1.1/in-tree/Kconfig.ipw2200 1969-12-31 18:00:00.000000000 -0600
++++ ipw2200-1.1.1-rtap/in-tree/Kconfig.ipw2200 2006-03-21 09:19:58.000000000 -0600
+@@ -0,0 +1,83 @@
++config IPW2200
++ tristate "Intel PRO/Wireless 2200BG and 2915ABG Network Connection"
++ depends on IEEE80211 && PCI && NET_RADIO
++ select FW_LOADER
++ ---help---
++ A driver for the Intel PRO/Wireless 2200BG and 2915ABG Network
++ Connection adapters.
++
++ See <file:Documentation/networking/README.ipw2200> for
++ information on the capabilities currently enabled in this
++ driver and for tips for debugging issues and problems.
++
++ In order to use this driver, you will need a firmware image for it.
++ You can obtain the firmware from
++ <http://ipw2200.sf.net/>. See the above referenced README.ipw2200
++ for information on where to install the firmare images.
++
++ You will also very likely need the Wireless Tools in order to
++ configure your card:
++
++ <http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>.
++
++ If you want to compile the driver as a module ( = code which can be
++ inserted in and remvoed from the running kernel whenever you want),
++ say M here and read <file:Documentation/modules.txt>. The module
++ will be called ipw2200.ko.
++
++config IPW2200_DEBUG
++ bool "Enable full debugging output in IPW2200 module."
++ depends on IPW2200
++ ---help---
++ This option will enable debug tracing output for the IPW2200.
++
++ This will result in the kernel module being ~100k larger. You can
++ control which debug output is sent to the kernel log by setting the
++ value in
++
++ /sys/bus/pci/drivers/ipw2200/debug_level
++
++ This entry will only exist if this option is enabled.
++
++ To set a value, simply echo an 8-byte hex value to the same file:
++
++ % echo 0x00000FFO > /sys/bus/pci/drivers/ipw2200/debug_level
++
++ You can find the list of debug mask values in
++ drivers/net/wireless/ipw2200.h
++
++ If you are not trying to debug or develop the IPW2200 driver, you
++ most likely want to say N here.
++
++config IPW2200_MONITOR
++ bool "Enable RF monitor mode"
++ depends on IPW2200
++ ---help---
++ Enables monitor (aka promiscuous) mode support for the ipw2200
++ driver. With this feature compiled into the driver, you can
++ switch to monitor mode via the Wireless Tool's mode command.
++ While in monitor mode, no packets can be sent.
++
++config IPW2200_PROMISCUOUS
++ bool "Enable creation of a RF radiotap promiscuous interface."
++ depends on IPW2200
++ select IEEE80211_RADIOTAP
++ ---help---
++ Enables the creation of a second interface prefixed 'rtap'.
++ This second interface will provide every received in radiotap
++ format.
++
++ This is useful for performing wireless network analysis while
++ maintaining an active association.
++
++ Example usage:
++
++ % modprobe ipw2200 rtap_iface=1
++ % ifconfig rtap0 up
++ % tethereal -i rtap0
++
++ If you do not specify 'rtap_iface=1' as a module parameter then
++ the rtap interface will not be created and you will need to turn
++ it on via sysfs:
++
++ % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
+diff -Nupr ipw2200-1.1.1/ipw2200.c ipw2200-1.1.1-rtap/ipw2200.c
+--- ipw2200-1.1.1/ipw2200.c 2006-03-08 06:42:55.000000000 -0600
++++ ipw2200-1.1.1-rtap/ipw2200.c 2006-03-23 17:27:14.000000000 -0600
+@@ -33,7 +33,38 @@
+ #include "ipw2200.h"
+ #include <linux/version.h>
+
+-#define IPW2200_VERSION "1.1.1"
++
++#ifdef CONFIG_IPW2200_DEBUG
++#define VD "d"
++#else
++#define VD
++#endif
++
++#ifdef CONFIG_IPW2200_MONITOR
++#define VM "m"
++#else
++#define VM
++#endif
++
++#ifdef CONFIG_IPW2200_PROMISCUOUS
++#define VP "p"
++#else
++#define VP
++#endif
++
++#ifdef CONFIG_IEEE80211_RADIOTAP
++#define VR "r"
++#else
++#define VR
++#endif
++
++#ifdef CONFIG_IPW2200_QOS
++#define VQ "q"
++#else
++#define VQ
++#endif
++
++#define IPW2200_VERSION "1.1.1k" VD VM VP VR VQ
+ #define DRV_DESCRIPTION "Intel(R) PRO/Wireless 2200/2915 Network Driver"
+ #define DRV_COPYRIGHT "Copyright(c) 2003-2006 Intel Corporation"
+ #define DRV_VERSION IPW2200_VERSION
+@@ -46,7 +77,9 @@ MODULE_AUTHOR(DRV_COPYRIGHT);
+ MODULE_LICENSE("GPL");
+
+ static int cmdlog = 0;
++#ifdef CONFIG_IPW2200_DEBUG
+ static int debug = 0;
++#endif
+ static int channel = 0;
+ static int mode = 0;
+
+@@ -62,6 +95,11 @@ static const char ipw_modes[] = {
+ 'a', 'b', 'g', '?'
+ };
+
++#ifdef CONFIG_IPW2200_PROMISCUOUS
++static int rtap_iface = 0; /* def: 0 -- do not create rtap interface */
++#endif
++
++
+ #ifdef CONFIG_IPW_QOS
+ static int qos_enable = 0;
+ static int qos_burst_enable = 0;
+@@ -1286,6 +1324,113 @@ static ssize_t show_cmd_log(struct devic
+
+ static DEVICE_ATTR(cmd_log, S_IRUGO, show_cmd_log, NULL);
+
++#ifdef CONFIG_IPW2200_PROMISCUOUS
++static void ipw_prom_free(struct ipw_priv *priv);
++static int ipw_prom_alloc(struct ipw_priv *priv);
++static ssize_t store_rtap_iface(struct device *d,
++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)
++ struct device_attribute *attr,
++#endif
++ const char *buf, size_t count)
++{
++ struct ipw_priv *priv = dev_get_drvdata(d);
++ int rc = 0;
++
++ if (count < 1)
++ return -EINVAL;
++
++ switch (buf[0]) {
++ case '0':
++ if (!rtap_iface)
++ return count;
++
++ if (netif_running(priv->prom_net_dev)) {
++ IPW_WARNING("Interface is up. Cannot unregister.\n");
++ return count;
++ }
++
++ ipw_prom_free(priv);
++ rtap_iface = 0;
++ break;
++
++ case '1':
++ if (rtap_iface)
++ return count;
++
++ rc = ipw_prom_alloc(priv);
++ if (!rc)
++ rtap_iface = 1;
++ break;
++
++ default:
++ return -EINVAL;
++ }
++
++ if (rc) {
++ IPW_ERROR("Failed to register promiscuous network "
++ "device (error %d).\n", rc);
++ }
++
++ return count;
++}
++
++static ssize_t show_rtap_iface(struct device *d,
++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)
++ struct device_attribute *attr,
++#endif
++ char *buf)
++{
++ struct ipw_priv *priv = dev_get_drvdata(d);
++ if (rtap_iface)
++ return sprintf(buf, "%s", priv->prom_net_dev->name);
++ else {
++ buf[0] = '-';
++ buf[1] = '1';
++ buf[2] = '\0';
++ return 3;
++ }
++}
++
++static DEVICE_ATTR(rtap_iface, S_IWUSR | S_IRUSR, show_rtap_iface,
++ store_rtap_iface);
++
++static ssize_t store_rtap_filter(struct device *d,
++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)
++ struct device_attribute *attr,
++#endif
++ const char *buf, size_t count)
++{
++ struct ipw_priv *priv = dev_get_drvdata(d);
++
++ if (!priv->prom_priv) {
++ IPW_ERROR("Attempting to set filter without "
++ "rtap_iface enabled.\n");
++ return -EPERM;
++ }
++
++ priv->prom_priv->filter = simple_strtol(buf, NULL, 0);
++
++ IPW_DEBUG_INFO("Setting rtap filter to " BIT_FMT16 "\n",
++ BIT_ARG16(priv->prom_priv->filter));
++
++ return count;
++}
++
++static ssize_t show_rtap_filter(struct device *d,
++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)
++ struct device_attribute *attr,
++#endif
++ char *buf)
++{
++ struct ipw_priv *priv = dev_get_drvdata(d);
++ return sprintf(buf, "0x%04X",
++ priv->prom_priv ? priv->prom_priv->filter : 0);
++}
++
++static DEVICE_ATTR(rtap_filter, S_IWUSR | S_IRUSR, show_rtap_filter,
++ store_rtap_filter);
++#endif
++
+ static ssize_t show_scan_age(struct device *d,
+ #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)
+ struct device_attribute *attr,
+@@ -2117,16 +2262,11 @@ static int ipw_send_host_complete(struct
+ return ipw_send_cmd_simple(priv, IPW_CMD_HOST_COMPLETE);
+ }
+
+-static int ipw_send_system_config(struct ipw_priv *priv,
+- struct ipw_sys_config *config)
++static int ipw_send_system_config(struct ipw_priv *priv)
+ {
+- if (!priv || !config) {
+- IPW_ERROR("Invalid args\n");
+- return -1;
+- }
+-
+- return ipw_send_cmd_pdu(priv, IPW_CMD_SYSTEM_CONFIG, sizeof(*config),
+- config);
++ return ipw_send_cmd_pdu(priv, IPW_CMD_SYSTEM_CONFIG,
++ sizeof(priv->sys_config),
++ &priv->sys_config);
+ }
+
+ static int ipw_send_ssid(struct ipw_priv *priv, u8 * ssid, int len)
+@@ -3592,7 +3732,8 @@ static int ipw_queue_tx_init(struct ipw_
+ * @param txq
+ */
+ static void ipw_queue_tx_free_tfd(struct ipw_priv *priv,
+- struct clx2_tx_queue *txq)
++ struct clx2_tx_queue *txq,
<<Diff was trimmed, longer than 597 lines>>
More information about the pld-cvs-commit
mailing list