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 <[EMAIL PROTECTED]>
+
+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 <[EMAIL PROTECTED]>
+
+---
+ 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>>
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to