aboutsummaryrefslogtreecommitdiffstats
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2008-10-29 11:10:37 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2008-10-29 11:10:37 -0700
commitf5165c3a12d169a1da7f3d3cc663df94ce710bb6 (patch)
treeede49c25957c2348a3cd04ef3951cd46bbddb35f
parent9333e6668dfb3480c413b4aba643035919db3a32 (diff)
downloadpatches-f5165c3a12d169a1da7f3d3cc663df94ce710bb6.tar.gz
lots of staging patches
-rw-r--r--f.patch426
-rw-r--r--series17
-rw-r--r--staging/staging-make-usbip-depend-on-config_net.patch24
-rw-r--r--staging/staging-poch-block-size-bug-fix.patch33
-rw-r--r--staging/staging-poch-correct-pages-from-bytes.patch70
-rw-r--r--staging/staging-poch-fine-grained-locking.patch53
-rw-r--r--staging/staging-poch-fix-build-warnings.patch32
-rw-r--r--staging/staging-poch-fix-user-space-protocol-syncing.patch48
-rw-r--r--staging/staging-poch-minor-fixes.patch87
-rw-r--r--staging/staging-poch-rx-control-register-init.patch47
-rw-r--r--staging/staging-poch-update-todo-list.patch34
-rw-r--r--staging/staging-sxg-break-the-build-in-a-cleaner-way-when-x86.patch30
-rw-r--r--staging/staging-sxg-remove-typedefs.patch1920
-rw-r--r--staging/staging-w35und-move-supported-band-initialization-out-of-wb35_probe.patch60
-rw-r--r--staging/staging-w35und-os_memory_alloc-wrapper-removal.patch2
-rw-r--r--staging/staging-w35und-plug-memory-leak-in-wbsoft_tx.patch38
-rw-r--r--staging/staging-w35und-remove-macro-magic-from-mlme_getnextpacket.patch54
-rw-r--r--staging/staging-w35und-remove-true-false-boolean-macros.patch2
-rw-r--r--staging/staging-w35und-usb_put_dev-is-missing-from-wb35_disconnect.patch49
19 files changed, 2598 insertions, 428 deletions
diff --git a/f.patch b/f.patch
deleted file mode 100644
index d24bf2857c4618..00000000000000
--- a/f.patch
+++ /dev/null
@@ -1,426 +0,0 @@
----
- drivers/base/base.h | 26 ++++++++++++++++++++++++
- drivers/base/bus.c | 39 ++++++++++++++++++++++++------------
- drivers/base/core.c | 52 +++++++++++++++++++++++++++++++++----------------
- drivers/base/dd.c | 12 ++++++-----
- drivers/base/driver.c | 12 ++++++++---
- include/linux/device.h | 6 +----
- 6 files changed, 106 insertions(+), 41 deletions(-)
-
---- a/drivers/base/base.h
-+++ b/drivers/base/base.h
-@@ -63,6 +63,32 @@ struct class_private {
- #define to_class(obj) \
- container_of(obj, struct class_private, class_subsys.kobj)
-
-+/**
-+ * struct device_private - structure to hold the private to the driver core portions of the device structure.
-+ *
-+ * @klist_children -
-+ * @knode_parent - node in sibling list
-+ * @knode_driver - node in driver list
-+ * @knode_bus - node in bus list
-+ * @device - pointer back to the struct device this structure is associated
-+ * with.
-+ *
-+ * Nothing outside of the driver core should ever touch these fields.
-+ */
-+struct device_private {
-+ struct klist klist_children;
-+ struct klist_node knode_parent;
-+ struct klist_node knode_driver;
-+ struct klist_node knode_bus;
-+ struct device *dev;
-+};
-+#define to_device_private_parent(obj) \
-+ container_of(obj, struct device_private, knode_parent)
-+#define to_device_private_bus(obj) \
-+ container_of(obj, struct device_private, knode_bus)
-+#define to_device_private_driver(obj) \
-+ container_of(obj, struct device_private, knode_driver)
-+
- /* initialisation functions */
- extern int devices_init(void);
- extern int buses_init(void);
---- a/drivers/base/bus.c
-+++ b/drivers/base/bus.c
-@@ -253,7 +253,13 @@ static ssize_t store_drivers_probe(struc
- static struct device *next_device(struct klist_iter *i)
- {
- struct klist_node *n = klist_next(i);
-- return n ? container_of(n, struct device, knode_bus) : NULL;
-+ struct device_private *p;
-+
-+ if (n) {
-+ p = to_device_private_bus(n);
-+ return p->dev;
-+ } else
-+ return NULL;
- }
-
- /**
-@@ -286,7 +292,7 @@ int bus_for_each_dev(struct bus_type *bu
- return -EINVAL;
-
- klist_iter_init_node(&bus->p->klist_devices, &i,
-- (start ? &start->knode_bus : NULL));
-+ (start ? &start->p->knode_bus : NULL));
- while ((dev = next_device(&i)) && !error)
- error = fn(dev, data);
- klist_iter_exit(&i);
-@@ -320,7 +326,7 @@ struct device *bus_find_device(struct bu
- return NULL;
-
- klist_iter_init_node(&bus->p->klist_devices, &i,
-- (start ? &start->knode_bus : NULL));
-+ (start ? &start->p->knode_bus : NULL));
- while ((dev = next_device(&i)))
- if (match(dev, data) && get_device(dev))
- break;
-@@ -509,7 +515,8 @@ void bus_attach_device(struct device *de
- ret = device_attach(dev);
- WARN_ON(ret < 0);
- if (ret >= 0)
-- klist_add_tail(&dev->knode_bus, &bus->p->klist_devices);
-+ klist_add_tail(&dev->p->knode_bus,
-+ &bus->p->klist_devices);
- }
- }
-
-@@ -530,8 +537,8 @@ void bus_remove_device(struct device *de
- sysfs_remove_link(&dev->bus->p->devices_kset->kobj,
- dev->bus_id);
- device_remove_attrs(dev->bus, dev);
-- if (klist_node_attached(&dev->knode_bus))
-- klist_del(&dev->knode_bus);
-+ if (klist_node_attached(&dev->p->knode_bus))
-+ klist_del(&dev->p->knode_bus);
-
- pr_debug("bus: '%s': remove device %s\n",
- dev->bus->name, dev->bus_id);
-@@ -833,14 +840,16 @@ static void bus_remove_attrs(struct bus_
-
- static void klist_devices_get(struct klist_node *n)
- {
-- struct device *dev = container_of(n, struct device, knode_bus);
-+ struct device_private *p = to_device_private_bus(n);
-+ struct device *dev = p->dev;
-
- get_device(dev);
- }
-
- static void klist_devices_put(struct klist_node *n)
- {
-- struct device *dev = container_of(n, struct device, knode_bus);
-+ struct device_private *p = to_device_private_bus(n);
-+ struct device *dev = p->dev;
-
- put_device(dev);
- }
-@@ -995,18 +1004,20 @@ static void device_insertion_sort_klist(
- {
- struct list_head *pos;
- struct klist_node *n;
-+ struct device_private *p;
- struct device *b;
-
- list_for_each(pos, list) {
- n = container_of(pos, struct klist_node, n_node);
-- b = container_of(n, struct device, knode_bus);
-+ p = to_device_private_bus(n);
-+ b = p->dev;
- if (compare(a, b) <= 0) {
-- list_move_tail(&a->knode_bus.n_node,
-- &b->knode_bus.n_node);
-+ list_move_tail(&a->p->knode_bus.n_node,
-+ &b->p->knode_bus.n_node);
- return;
- }
- }
-- list_move_tail(&a->knode_bus.n_node, list);
-+ list_move_tail(&a->p->knode_bus.n_node, list);
- }
-
- void bus_sort_breadthfirst(struct bus_type *bus,
-@@ -1016,6 +1027,7 @@ void bus_sort_breadthfirst(struct bus_ty
- LIST_HEAD(sorted_devices);
- struct list_head *pos, *tmp;
- struct klist_node *n;
-+ struct device_private *p;
- struct device *dev;
- struct klist *device_klist;
-
-@@ -1024,7 +1036,8 @@ void bus_sort_breadthfirst(struct bus_ty
- spin_lock(&device_klist->k_lock);
- list_for_each_safe(pos, tmp, &device_klist->k_list) {
- n = container_of(pos, struct klist_node, n_node);
-- dev = container_of(n, struct device, knode_bus);
-+ p = to_device_private_bus(n);
-+ dev = p->dev;
- device_insertion_sort_klist(dev, &sorted_devices, compare);
- }
- list_splice(&sorted_devices, &device_klist->k_list);
---- a/drivers/base/core.c
-+++ b/drivers/base/core.c
-@@ -507,14 +507,16 @@ EXPORT_SYMBOL_GPL(device_schedule_callba
-
- static void klist_children_get(struct klist_node *n)
- {
-- struct device *dev = container_of(n, struct device, knode_parent);
-+ struct device_private *p = to_device_private_parent(n);
-+ struct device *dev = p->dev;
-
- get_device(dev);
- }
-
- static void klist_children_put(struct klist_node *n)
- {
-- struct device *dev = container_of(n, struct device, knode_parent);
-+ struct device_private *p = to_device_private_parent(n);
-+ struct device *dev = p->dev;
-
- put_device(dev);
- }
-@@ -533,8 +535,6 @@ void device_initialize(struct device *de
- {
- dev->kobj.kset = devices_kset;
- kobject_init(&dev->kobj, &device_ktype);
-- klist_init(&dev->klist_children, klist_children_get,
-- klist_children_put);
- INIT_LIST_HEAD(&dev->dma_pools);
- init_MUTEX(&dev->sem);
- spin_lock_init(&dev->devres_lock);
-@@ -842,12 +842,22 @@ static void device_remove_sys_dev_entry(
- int device_add(struct device *dev)
- {
- struct device *parent = NULL;
-+ struct device_private *p;
- struct class_interface *class_intf;
- int error = -EINVAL;
-
-- dev = get_device(dev);
- if (!dev)
-- goto done;
-+ return -EINVAL;
-+
-+ p = kzalloc(sizeof(*p), GFP_KERNEL);
-+ if (!p)
-+ return -ENOMEM;
-+ klist_init(&p->klist_children, klist_children_get,
-+ klist_children_put);
-+ p->dev = dev;
-+ dev->p = p;
-+
-+ dev = get_device(dev);
-
- /* Temporarily support init_name if it is set.
- * It will override bus_id for now */
-@@ -910,7 +920,8 @@ int device_add(struct device *dev)
- kobject_uevent(&dev->kobj, KOBJ_ADD);
- bus_attach_device(dev);
- if (parent)
-- klist_add_tail(&dev->knode_parent, &parent->klist_children);
-+ klist_add_tail(&dev->p->knode_parent,
-+ &parent->p->klist_children);
-
- if (dev->class) {
- mutex_lock(&dev->class->p->class_mutex);
-@@ -949,6 +960,7 @@ done:
- kobject_uevent(&dev->kobj, KOBJ_REMOVE);
- kobject_del(&dev->kobj);
- Error:
-+ kfree(dev->p);
- cleanup_device_parent(dev);
- if (parent)
- put_device(parent);
-@@ -1017,7 +1029,7 @@ void device_del(struct device *dev)
- device_pm_remove(dev);
- dpm_sysfs_remove(dev);
- if (parent)
-- klist_del(&dev->knode_parent);
-+ klist_del(&dev->p->knode_parent);
- if (MAJOR(dev->devt)) {
- device_remove_sys_dev_entry(dev);
- device_remove_file(dev, &devt_attr);
-@@ -1055,6 +1067,7 @@ void device_del(struct device *dev)
- blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
- BUS_NOTIFY_DEL_DEVICE, dev);
- kobject_uevent(&dev->kobj, KOBJ_REMOVE);
-+ kfree(dev->p);
- cleanup_device_parent(dev);
- kobject_del(&dev->kobj);
- put_device(parent);
-@@ -1081,7 +1094,13 @@ void device_unregister(struct device *de
- static struct device *next_device(struct klist_iter *i)
- {
- struct klist_node *n = klist_next(i);
-- return n ? container_of(n, struct device, knode_parent) : NULL;
-+ struct device_private *p;
-+
-+ if (n) {
-+ p = to_device_private_parent(n);
-+ return p->dev;
-+ } else
-+ return NULL;
- }
-
- /**
-@@ -1103,7 +1122,7 @@ int device_for_each_child(struct device
- struct device *child;
- int error = 0;
-
-- klist_iter_init(&parent->klist_children, &i);
-+ klist_iter_init(&parent->p->klist_children, &i);
- while ((child = next_device(&i)) && !error)
- error = fn(child, data);
- klist_iter_exit(&i);
-@@ -1134,7 +1153,7 @@ struct device *device_find_child(struct
- if (!parent)
- return NULL;
-
-- klist_iter_init(&parent->klist_children, &i);
-+ klist_iter_init(&parent->p->klist_children, &i);
- while ((child = next_device(&i)))
- if (match(child, data) && get_device(child))
- break;
-@@ -1457,9 +1476,10 @@ int device_move(struct device *dev, stru
- old_parent = dev->parent;
- dev->parent = new_parent;
- if (old_parent)
-- klist_remove(&dev->knode_parent);
-+ klist_remove(&dev->p->knode_parent);
- if (new_parent) {
-- klist_add_tail(&dev->knode_parent, &new_parent->klist_children);
-+ klist_add_tail(&dev->p->knode_parent,
-+ &new_parent->p->klist_children);
- set_dev_node(dev, dev_to_node(new_parent));
- }
-
-@@ -1471,11 +1491,11 @@ int device_move(struct device *dev, stru
- device_move_class_links(dev, new_parent, old_parent);
- if (!kobject_move(&dev->kobj, &old_parent->kobj)) {
- if (new_parent)
-- klist_remove(&dev->knode_parent);
-+ klist_remove(&dev->p->knode_parent);
- dev->parent = old_parent;
- if (old_parent) {
-- klist_add_tail(&dev->knode_parent,
-- &old_parent->klist_children);
-+ klist_add_tail(&dev->p->knode_parent,
-+ &old_parent->p->klist_children);
- set_dev_node(dev, dev_to_node(old_parent));
- }
- }
---- a/drivers/base/dd.c
-+++ b/drivers/base/dd.c
-@@ -28,7 +28,7 @@
-
- static void driver_bound(struct device *dev)
- {
-- if (klist_node_attached(&dev->knode_driver)) {
-+ if (klist_node_attached(&dev->p->knode_driver)) {
- printk(KERN_WARNING "%s: device %s already bound\n",
- __func__, kobject_name(&dev->kobj));
- return;
-@@ -41,7 +41,7 @@ static void driver_bound(struct device *
- blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
- BUS_NOTIFY_BOUND_DRIVER, dev);
-
-- klist_add_tail(&dev->knode_driver, &dev->driver->p->klist_devices);
-+ klist_add_tail(&dev->p->knode_driver, &dev->driver->p->klist_devices);
- }
-
- static int driver_sysfs_add(struct device *dev)
-@@ -308,7 +308,7 @@ static void __device_release_driver(stru
- drv->remove(dev);
- devres_release_all(dev);
- dev->driver = NULL;
-- klist_remove(&dev->knode_driver);
-+ klist_remove(&dev->p->knode_driver);
- }
- }
-
-@@ -338,6 +338,7 @@ EXPORT_SYMBOL_GPL(device_release_driver)
- */
- void driver_detach(struct device_driver *drv)
- {
-+ struct device_private *p;
- struct device *dev;
-
- for (;;) {
-@@ -346,8 +347,9 @@ void driver_detach(struct device_driver
- spin_unlock(&drv->p->klist_devices.k_lock);
- break;
- }
-- dev = list_entry(drv->p->klist_devices.k_list.prev,
-- struct device, knode_driver.n_node);
-+ p = list_entry(drv->p->klist_devices.k_list.prev,
-+ struct device_private, knode_driver.n_node);
-+ dev = p->dev;
- get_device(dev);
- spin_unlock(&drv->p->klist_devices.k_lock);
-
---- a/drivers/base/driver.c
-+++ b/drivers/base/driver.c
-@@ -19,7 +19,13 @@
- static struct device *next_device(struct klist_iter *i)
- {
- struct klist_node *n = klist_next(i);
-- return n ? container_of(n, struct device, knode_driver) : NULL;
-+ struct device_private *p;
-+
-+ if (n) {
-+ p = to_device_private_driver(n);
-+ return p->dev;
-+ } else
-+ return NULL;
- }
-
- /**
-@@ -42,7 +48,7 @@ int driver_for_each_device(struct device
- return -EINVAL;
-
- klist_iter_init_node(&drv->p->klist_devices, &i,
-- start ? &start->knode_driver : NULL);
-+ start ? &start->p->knode_driver : NULL);
- while ((dev = next_device(&i)) && !error)
- error = fn(dev, data);
- klist_iter_exit(&i);
-@@ -76,7 +82,7 @@ struct device *driver_find_device(struct
- return NULL;
-
- klist_iter_init_node(&drv->p->klist_devices, &i,
-- (start ? &start->knode_driver : NULL));
-+ (start ? &start->p->knode_driver : NULL));
- while ((dev = next_device(&i)))
- if (match(dev, data) && get_device(dev))
- break;
---- a/include/linux/device.h
-+++ b/include/linux/device.h
-@@ -28,6 +28,7 @@
- #define BUS_ID_SIZE 20
-
- struct device;
-+struct device_private;
- struct device_driver;
- struct driver_private;
- struct class;
-@@ -365,10 +366,6 @@ struct device_dma_parameters {
- };
-
- struct device {
-- struct klist klist_children;
-- struct klist_node knode_parent; /* node in sibling list */
-- struct klist_node knode_driver;
-- struct klist_node knode_bus;
- struct device *parent;
-
- struct kobject kobj;
-@@ -417,6 +414,7 @@ struct device {
- struct attribute_group **groups; /* optional groups */
-
- void (*release)(struct device *dev);
-+ struct device_private *p;
- };
-
- /* Get the wakeup routines, which depend on struct device */
diff --git a/series b/series
index 5a78e2fc6fb377..c6b1c754611d58 100644
--- a/series
+++ b/series
@@ -72,6 +72,7 @@ usb/usb-remove-info-macro-from-usb.h.patch
# Staging stuff
#################################
staging/staging-correct-dubious-use-of-x-y.patch
+staging/staging-make-usbip-depend-on-config_net.patch
staging/staging-w35und-make-wb35_probe-and-wb35_disconnect-funtions-static.patch
staging/staging-w35und-remove-unused-wb35_open-and-wb35_close-functions.patch
staging/staging-w35und-use-msleep-and-udelay.patch
@@ -87,6 +88,10 @@ staging/staging-w35und-remove-usb_alloc_urb-wrapper-function.patch
staging/staging-w35und-remove-dead-code-from-wbusb_f.h.patch
staging/staging-w35und-remove-true-false-boolean-macros.patch
staging/staging-w35und-os_memory_alloc-wrapper-removal.patch
+staging/staging-w35und-usb_put_dev-is-missing-from-wb35_disconnect.patch
+staging/staging-w35und-remove-macro-magic-from-mlme_getnextpacket.patch
+staging/staging-w35und-plug-memory-leak-in-wbsoft_tx.patch
+staging/staging-w35und-move-supported-band-initialization-out-of-wb35_probe.patch
staging/staging-wlan-ng-remove-pci-plx-pcmcia-files.patch
staging/staging-wlan-ng-update-help-text-to-mention-prism3-devices.patch
staging/staging-wlan-ng-delete-pci-plx-pcmcia-specific-code.patch
@@ -102,6 +107,16 @@ staging/staging-wlan-ng-eliminate-usage-of-procfs.patch
staging/staging-at76_usb-update-drivers-staging-at76_usb-w-mac80211-port.patch
staging/staging-at76_usb-remove-compiler-warnings.patch
staging/staging-at76_usb-fix-up-all-remaining-checkpatch.pl-warnings.patch
+staging/staging-poch-block-size-bug-fix.patch
+staging/staging-poch-update-todo-list.patch
+staging/staging-poch-correct-pages-from-bytes.patch
+staging/staging-poch-minor-fixes.patch
+staging/staging-poch-fix-build-warnings.patch
+staging/staging-poch-rx-control-register-init.patch
+staging/staging-poch-fix-user-space-protocol-syncing.patch
+staging/staging-poch-fine-grained-locking.patch
+staging/staging-sxg-remove-typedefs.patch
+staging/staging-sxg-break-the-build-in-a-cleaner-way-when-x86.patch
staging/staging-add-agnx-wireless-driver.patch
staging/staging-add-otus-atheros-wireless-network-driver.patch
staging/staging-add-rt2860-wireless-driver.patch
@@ -131,3 +146,5 @@ staging/staging-add-rt2860-wireless-driver.patch
+
+
diff --git a/staging/staging-make-usbip-depend-on-config_net.patch b/staging/staging-make-usbip-depend-on-config_net.patch
new file mode 100644
index 00000000000000..5a92ad2b96e441
--- /dev/null
+++ b/staging/staging-make-usbip-depend-on-config_net.patch
@@ -0,0 +1,24 @@
+From foo@baz Wed Oct 29 10:44:55 PDT 2008
+Date: Wed, 29 Oct 2008 10:44:55 -0700
+To: Greg KH <greg@kroah.com>
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Subject: Staging: make usbip depend on CONFIG_NET
+
+Thanks to Randy Dunlap for finding this problem.
+
+Reported-by: Randy Dunlap <randy.dunlap@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/staging/usbip/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/staging/usbip/Kconfig
++++ b/drivers/staging/usbip/Kconfig
+@@ -1,6 +1,6 @@
+ config USB_IP_COMMON
+ tristate "USB IP support (EXPERIMENTAL)"
+- depends on USB && EXPERIMENTAL
++ depends on USB && NET && EXPERIMENTAL
+ default N
+ ---help---
+ This enables pushing USB packets over IP to allow remote
diff --git a/staging/staging-poch-block-size-bug-fix.patch b/staging/staging-poch-block-size-bug-fix.patch
new file mode 100644
index 00000000000000..feb981c81dc1c8
--- /dev/null
+++ b/staging/staging-poch-block-size-bug-fix.patch
@@ -0,0 +1,33 @@
+From vijaykumar@bravegnu.org Wed Oct 29 10:46:15 2008
+From: vijaykumar@bravegnu.org
+Date: Wed, 29 Oct 2008 08:58:32 +0530
+Subject: Staging: poch: Block size bug fix
+To: greg@kroah.com
+Cc: jayakumar.lkml@gmail.com, alexey.zaytsev@gmail.com, robfitz@273k.net, bdonnette@linagora.com, htejun@gmail.com, <abixby@redrapids.com>
+Message-ID: <20081029033332.221220980@bravegnu.org>
+
+
+Block size is to be expressed in no. of 64 bit transfers. But the code
+specifies the block size in bytes. Fix this issue.
+
+Signed-off-by: Vijay Kumar <vijaykumar@bravegnu.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/poch/poch.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/staging/poch/poch.c
++++ b/drivers/staging/poch/poch.c
+@@ -432,7 +432,10 @@ static void channel_dma_init(struct chan
+ }
+
+ printk(KERN_WARNING "block_size, group_size, group_count\n");
+- iowrite32(channel->block_size, fpga + block_size_reg);
++ /*
++ * Block size is represented in no. of 64 bit transfers.
++ */
++ iowrite32(channel->block_size / 8, fpga + block_size_reg);
+ iowrite32(channel->group_size / channel->block_size,
+ fpga + block_count_reg);
+ iowrite32(channel->group_count, fpga + group_count_reg);
diff --git a/staging/staging-poch-correct-pages-from-bytes.patch b/staging/staging-poch-correct-pages-from-bytes.patch
new file mode 100644
index 00000000000000..d21105b0b1872f
--- /dev/null
+++ b/staging/staging-poch-correct-pages-from-bytes.patch
@@ -0,0 +1,70 @@
+From vijaykumar@bravegnu.org Wed Oct 29 10:47:23 2008
+From: vijaykumar@bravegnu.org
+Date: Wed, 29 Oct 2008 08:58:34 +0530
+Subject: Staging: poch: Correct pages from bytes.
+To: greg@kroah.com
+Cc: jayakumar.lkml@gmail.com, alexey.zaytsev@gmail.com, robfitz@273k.net, bdonnette@linagora.com, htejun@gmail.com, <abixby@redrapids.com>
+Message-ID: <20081029033332.446357254@bravegnu.org>
+
+
+Accurately calculate the no. of pages from the bytes.
+
+Signed-off-by: Vijay Kumar <vijaykumar@bravegnu.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/poch/poch.c | 22 ++++++++++++++--------
+ 1 file changed, 14 insertions(+), 8 deletions(-)
+
+--- a/drivers/staging/poch/poch.c
++++ b/drivers/staging/poch/poch.c
+@@ -299,6 +299,14 @@ static ssize_t show_direction(struct dev
+ }
+ static DEVICE_ATTR(dir, S_IRUSR|S_IRGRP, show_direction, NULL);
+
++static unsigned long npages(unsigned long bytes)
++{
++ if (bytes % PAGE_SIZE == 0)
++ return bytes / PAGE_SIZE;
++ else
++ return (bytes / PAGE_SIZE) + 1;
++}
++
+ static ssize_t show_mmap_size(struct device *dev,
+ struct device_attribute *attr, char *buf)
+ {
+@@ -309,10 +317,8 @@ static ssize_t show_mmap_size(struct dev
+ unsigned long header_pages;
+ unsigned long total_group_pages;
+
+- /* FIXME: We do not have to add 1, if group_size a multiple of
+- PAGE_SIZE. */
+- group_pages = (channel->group_size / PAGE_SIZE) + 1;
+- header_pages = (channel->header_size / PAGE_SIZE) + 1;
++ group_pages = npages(channel->group_size);
++ header_pages = npages(channel->header_size);
+ total_group_pages = group_pages * channel->group_count;
+
+ mmap_size = (header_pages + total_group_pages) * PAGE_SIZE;
+@@ -350,8 +356,8 @@ static int poch_channel_alloc_groups(str
+ unsigned long group_pages;
+ unsigned long header_pages;
+
+- group_pages = (channel->group_size / PAGE_SIZE) + 1;
+- header_pages = (channel->header_size / PAGE_SIZE) + 1;
++ group_pages = npages(channel->group_size);
++ header_pages = npages(channel->header_size);
+
+ for (i = 0; i < channel->group_count; i++) {
+ struct poch_group_info *group;
+@@ -850,8 +856,8 @@ static int poch_mmap(struct file *filp,
+ return -EINVAL;
+ }
+
+- group_pages = (channel->group_size / PAGE_SIZE) + 1;
+- header_pages = (channel->header_size / PAGE_SIZE) + 1;
++ group_pages = npages(channel->group_size);
++ header_pages = npages(channel->header_size);
+ total_group_pages = group_pages * channel->group_count;
+
+ size = vma->vm_end - vma->vm_start;
diff --git a/staging/staging-poch-fine-grained-locking.patch b/staging/staging-poch-fine-grained-locking.patch
new file mode 100644
index 00000000000000..972a3e12570b43
--- /dev/null
+++ b/staging/staging-poch-fine-grained-locking.patch
@@ -0,0 +1,53 @@
+From vijaykumar@bravegnu.org Wed Oct 29 11:04:40 2008
+From: vijaykumar@bravegnu.org
+Date: Wed, 29 Oct 2008 08:58:40 +0530
+Subject: Staging: poch: Fine grained locking
+To: greg@kroah.com
+Cc: jayakumar.lkml@gmail.com, alexey.zaytsev@gmail.com, robfitz@273k.net, bdonnette@linagora.com, htejun@gmail.com, <abixby@redrapids.com>
+Message-ID: <20081029033333.251324981@bravegnu.org>
+
+
+Lock only the portion of code that does register access.
+
+Signed-off-by: Vijay Kumar <vijaykumar@bravegnu.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/poch/poch.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/drivers/staging/poch/poch.c
++++ b/drivers/staging/poch/poch.c
+@@ -485,27 +485,30 @@ static void channel_dma_init(struct chan
+ /* The DMA address page register is shared between the RX and
+ * TX channels, so acquire lock.
+ */
+- spin_lock(channel->iomem_lock);
+ for (i = 0; i < channel->group_count; i++) {
+ page = i / 32;
+ group_in_page = i % 32;
+
+ group_reg = group_regs_base + (group_in_page * 4);
+
++ spin_lock(channel->iomem_lock);
+ iowrite32(page, fpga + FPGA_DMA_ADR_PAGE_REG);
+ iowrite32(channel->groups[i].dma_addr, fpga + group_reg);
++ spin_unlock(channel->iomem_lock);
+ }
++
+ for (i = 0; i < channel->group_count; i++) {
+ page = i / 32;
+ group_in_page = i % 32;
+
+ group_reg = group_regs_base + (group_in_page * 4);
+
++ spin_lock(channel->iomem_lock);
+ iowrite32(page, fpga + FPGA_DMA_ADR_PAGE_REG);
+ printk(KERN_INFO PFX "%ld: read dma_addr: 0x%x\n", i,
+ ioread32(fpga + group_reg));
++ spin_unlock(channel->iomem_lock);
+ }
+- spin_unlock(channel->iomem_lock);
+
+ }
+
diff --git a/staging/staging-poch-fix-build-warnings.patch b/staging/staging-poch-fix-build-warnings.patch
new file mode 100644
index 00000000000000..d44502604a0de4
--- /dev/null
+++ b/staging/staging-poch-fix-build-warnings.patch
@@ -0,0 +1,32 @@
+From vijaykumar@bravegnu.org Wed Oct 29 10:48:28 2008
+From: vijaykumar@bravegnu.org
+Date: Wed, 29 Oct 2008 08:58:36 +0530
+Subject: Staging: poch: Fix build warnings
+To: greg@kroah.com
+Cc: jayakumar.lkml@gmail.com, alexey.zaytsev@gmail.com, robfitz@273k.net, bdonnette@linagora.com, htejun@gmail.com, <abixby@redrapids.com>
+Message-ID: <20081029033332.718653466@bravegnu.org>
+
+
+Removed out printing of DMA address, that causes warnings during
+build.
+
+Signed-off-by: Vijay Kumar <vijaykumar@bravegnu.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/poch/poch.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/staging/poch/poch.c
++++ b/drivers/staging/poch/poch.c
+@@ -390,8 +390,8 @@ static int poch_channel_alloc_groups(str
+ group->user_offset =
+ (header_pages + (i * group_pages)) * PAGE_SIZE;
+
+- printk(KERN_INFO PFX "%ld: user_offset: 0x%lx dma: 0x%x\n", i,
+- group->user_offset, group->dma_addr);
++ printk(KERN_INFO PFX "%ld: user_offset: 0x%lx\n", i,
++ group->user_offset);
+ }
+
+ return 0;
diff --git a/staging/staging-poch-fix-user-space-protocol-syncing.patch b/staging/staging-poch-fix-user-space-protocol-syncing.patch
new file mode 100644
index 00000000000000..9edadeb32e22ba
--- /dev/null
+++ b/staging/staging-poch-fix-user-space-protocol-syncing.patch
@@ -0,0 +1,48 @@
+From vijaykumar@bravegnu.org Wed Oct 29 11:04:08 2008
+From: vijaykumar@bravegnu.org
+Date: Wed, 29 Oct 2008 08:58:39 +0530
+Subject: Staging: poch: Fix user space protocol syncing
+To: greg@kroah.com
+Cc: jayakumar.lkml@gmail.com, alexey.zaytsev@gmail.com, robfitz@273k.net, bdonnette@linagora.com, htejun@gmail.com, abixby@redrapids.com
+Message-ID: <20081029033333.110698816@bravegnu.org>
+
+Always set the user space offset from kernel space, to indicate group
+transmitted/received.
+
+Signed-off-by: Vijay Kumar <vijaykumar@bravegnu.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/poch/poch.c | 14 ++------------
+ 1 file changed, 2 insertions(+), 12 deletions(-)
+
+--- a/drivers/staging/poch/poch.c
++++ b/drivers/staging/poch/poch.c
+@@ -948,14 +948,7 @@ static int poch_channel_available(struct
+ spin_lock_irq(&channel->group_offsets_lock);
+
+ for (i = 0; i < channel->group_count; i++) {
+- if (channel->dir == CHANNEL_DIR_RX
+- && channel->header->group_offsets[i] == -1) {
+- spin_unlock_irq(&channel->group_offsets_lock);
+- return 1;
+- }
+-
+- if (channel->dir == CHANNEL_DIR_TX
+- && channel->header->group_offsets[i] != -1) {
++ if (channel->header->group_offsets[i] != -1) {
+ spin_unlock_irq(&channel->group_offsets_lock);
+ return 1;
+ }
+@@ -1103,10 +1096,7 @@ static void poch_irq_dma(struct channel_
+
+ for (i = 0; i < groups_done; i++) {
+ j = (prev_transfer + i) % channel->group_count;
+- if (channel->dir == CHANNEL_DIR_RX)
+- group_offsets[j] = -1;
+- else
+- group_offsets[j] = groups[j].user_offset;
++ group_offsets[j] = groups[j].user_offset;
+ }
+
+ spin_unlock(&channel->group_offsets_lock);
diff --git a/staging/staging-poch-minor-fixes.patch b/staging/staging-poch-minor-fixes.patch
new file mode 100644
index 00000000000000..a86b0bb5818cee
--- /dev/null
+++ b/staging/staging-poch-minor-fixes.patch
@@ -0,0 +1,87 @@
+From vijaykumar@bravegnu.org Wed Oct 29 10:47:57 2008
+From: vijaykumar@bravegnu.org
+Date: Wed, 29 Oct 2008 08:58:35 +0530
+Subject: Staging: poch: minor fixes
+To: greg@kroah.com
+Cc: jayakumar.lkml@gmail.com, alexey.zaytsev@gmail.com, robfitz@273k.net, bdonnette@linagora.com, htejun@gmail.com, <abixby@redrapids.com>
+Message-ID: <20081029033332.576064370@bravegnu.org>
+
+
+Unmap PCI bars on remove().
+Validate sysfs values before using them.
+
+Signed-off-by: Vijay Kumar <vijaykumar@bravegnu.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/poch/poch.c | 37 +++++++++++++++++++++++++++++++++----
+ 1 file changed, 33 insertions(+), 4 deletions(-)
+
+--- a/drivers/staging/poch/poch.c
++++ b/drivers/staging/poch/poch.c
+@@ -397,11 +397,38 @@ static int poch_channel_alloc_groups(str
+ return 0;
+ }
+
+-static void channel_latch_attr(struct channel_info *channel)
++static int channel_latch_attr(struct channel_info *channel)
+ {
+ channel->group_count = atomic_read(&channel->sys_group_count);
+ channel->group_size = atomic_read(&channel->sys_group_size);
+ channel->block_size = atomic_read(&channel->sys_block_size);
++
++ if (channel->group_count == 0) {
++ printk(KERN_ERR PFX "invalid group count %lu",
++ channel->group_count);
++ return -EINVAL;
++ }
++
++ if (channel->group_size == 0 ||
++ channel->group_size < channel->block_size) {
++ printk(KERN_ERR PFX "invalid group size %lu",
++ channel->group_size);
++ return -EINVAL;
++ }
++
++ if (channel->block_size == 0 || (channel->block_size % 8) != 0) {
++ printk(KERN_ERR PFX "invalid block size %lu",
++ channel->block_size);
++ return -EINVAL;
++ }
++
++ if (channel->group_size % channel->block_size != 0) {
++ printk(KERN_ERR PFX
++ "group size should be multiple of block size");
++ return -EINVAL;
++ }
++
++ return 0;
+ }
+
+ /*
+@@ -547,7 +574,9 @@ static int poch_channel_init(struct chan
+
+ printk(KERN_WARNING "channel_latch_attr\n");
+
+- channel_latch_attr(channel);
++ ret = channel_latch_attr(channel);
++ if (ret != 0)
++ goto out;
+
+ channel->transfer = 0;
+
+@@ -1359,12 +1388,12 @@ static void poch_pci_remove(struct pci_d
+ unsigned int minor = MINOR(poch_dev->cdev.dev);
+ unsigned int id = minor / poch_dev->nchannels;
+
+- /* FIXME: unmap fpga_iomem and bridge_iomem */
+-
+ poch_class_dev_unregister(poch_dev, id);
+ cdev_del(&poch_dev->cdev);
+ idr_remove(&poch_ids, id);
+ free_irq(pdev->irq, poch_dev);
++ iounmap(poch_dev->fpga_iomem);
++ iounmap(poch_dev->bridge_iomem);
+ uio_unregister_device(uio);
+ pci_release_regions(pdev);
+ pci_disable_device(pdev);
diff --git a/staging/staging-poch-rx-control-register-init.patch b/staging/staging-poch-rx-control-register-init.patch
new file mode 100644
index 00000000000000..fe756f7f83f82e
--- /dev/null
+++ b/staging/staging-poch-rx-control-register-init.patch
@@ -0,0 +1,47 @@
+From vijaykumar@bravegnu.org Wed Oct 29 11:03:27 2008
+From: vijaykumar@bravegnu.org
+Date: Wed, 29 Oct 2008 08:58:37 +0530
+Subject: Staging: poch: Rx control register init
+To: greg@kroah.com
+Cc: jayakumar.lkml@gmail.com, alexey.zaytsev@gmail.com, robfitz@273k.net, bdonnette@linagora.com, htejun@gmail.com, <abixby@redrapids.com>
+Message-ID: <20081029033332.863004618@bravegnu.org>
+
+Added Rx control register definition. Flush Rx FIFO on init, and set
+continuous DMA mode.
+
+Signed-off-by: Vijay Kumar <vijaykumar@bravegnu.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/poch/poch.c | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+--- a/drivers/staging/poch/poch.c
++++ b/drivers/staging/poch/poch.c
+@@ -126,9 +126,11 @@
+ #define FPGA_INT_TX_ACQ_DONE (0x1 << 1)
+ #define FPGA_INT_RX_ACQ_DONE (0x1)
+
+-#define FPGA_RX_ADC_CTL_REG 0x214
+-#define FPGA_RX_ADC_CTL_CONT_CAP (0x0)
+-#define FPGA_RX_ADC_CTL_SNAP_CAP (0x1)
++#define FPGA_RX_CTL_REG 0x214
++#define FPGA_RX_CTL_FIFO_FLUSH (0x1 << 9)
++#define FPGA_RX_CTL_SYNTH_DATA (0x1 << 8)
++#define FPGA_RX_CTL_CONT_CAP (0x0 << 1)
++#define FPGA_RX_CTL_SNAP_CAP (0x1 << 1)
+
+ #define FPGA_RX_ARM_REG 0x21C
+
+@@ -819,6 +821,11 @@ static int poch_open(struct inode *inode
+ iowrite32(FPGA_TX_CTL_FIFO_FLUSH
+ | FPGA_TX_CTL_OUTPUT_CARDBUS,
+ fpga + FPGA_TX_CTL_REG);
++ } else {
++ /* Flush RX FIFO and output data to cardbus. */
++ iowrite32(FPGA_RX_CTL_CONT_CAP
++ | FPGA_RX_CTL_FIFO_FLUSH,
++ fpga + FPGA_RX_CTL_REG);
+ }
+
+ atomic_inc(&channel->inited);
diff --git a/staging/staging-poch-update-todo-list.patch b/staging/staging-poch-update-todo-list.patch
new file mode 100644
index 00000000000000..ab8050985c659e
--- /dev/null
+++ b/staging/staging-poch-update-todo-list.patch
@@ -0,0 +1,34 @@
+From vijaykumar@bravegnu.org Wed Oct 29 10:46:51 2008
+From: vijaykumar@bravegnu.org
+Date: Wed, 29 Oct 2008 08:58:33 +0530
+Subject: Staging: poch: Update TODO list
+To: greg@kroah.com
+Cc: jayakumar.lkml@gmail.com, alexey.zaytsev@gmail.com, robfitz@273k.net, bdonnette@linagora.com, htejun@gmail.com, <abixby@redrapids.com>
+Message-ID: <20081029033332.322724999@bravegnu.org>
+
+
+Update TODO list.
+
+Signed-off-by: Vijay Kumar <vijaykumar@bravegnu.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/poch/README | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/drivers/staging/poch/README
++++ b/drivers/staging/poch/README
+@@ -1,5 +1,12 @@
+ TODO:
+- - fix transmit overflows
++ - Rx block size is limited to < 2048, hardware bug?
++ - Group size is limited to < page size, kernel alloc/mmap API issues
++ - fix/workaround cache issues in circular buffer header
++ - test whether Tx is transmitting data from provided buffers
++ - handle device unplug case
++ - handle temperature above threshold
++ - use bus address instead of physical address for DMA
++ - support for snapshot mode
+ - audit userspace interfaces
+ - get reserved major/minor if needed
+
diff --git a/staging/staging-sxg-break-the-build-in-a-cleaner-way-when-x86.patch b/staging/staging-sxg-break-the-build-in-a-cleaner-way-when-x86.patch
new file mode 100644
index 00000000000000..3fe9ad2853f263
--- /dev/null
+++ b/staging/staging-sxg-break-the-build-in-a-cleaner-way-when-x86.patch
@@ -0,0 +1,30 @@
+From jrm8005@gmail.com Wed Oct 29 11:06:19 2008
+From: "J.R. Mauro" <jrm8005@gmail.com>
+Date: Tue, 28 Oct 2008 19:00:56 -0400
+Subject: Staging: sxg: break the build in a cleaner way when !x86
+To: Greg KH <greg@kroah.com>
+Message-ID: <20081028230056.GD1267@localhost>
+Content-Disposition: inline
+
+Remove ugly 'Stop Comilation;' statement in sxghif, replace with an
+error macro.
+
+This should never be hit as we are only building for x86 boxes at the
+moment.
+
+Signed-off by: J.R. Mauro <jrm8005@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/sxg/sxghif.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/staging/sxg/sxghif.h
++++ b/drivers/staging/sxg/sxghif.h
+@@ -854,5 +854,5 @@ struct SXG_SCATTER_GATHER {
+ #define SXG_SGL_BUFFER(_SxgSgl) NULL
+ #define SXG_SGL_BUF_SIZE 0
+ #else
+-Stop Compilation;
++#error staging: sxg: driver is for X86 only!
+ #endif
diff --git a/staging/staging-sxg-remove-typedefs.patch b/staging/staging-sxg-remove-typedefs.patch
new file mode 100644
index 00000000000000..07cbee9a943fa9
--- /dev/null
+++ b/staging/staging-sxg-remove-typedefs.patch
@@ -0,0 +1,1920 @@
+From jrm8005@gmail.com Wed Oct 29 11:06:04 2008
+From: "J.R. Mauro" <jrm8005@gmail.com>
+Date: Tue, 28 Oct 2008 18:42:02 -0400
+Subject: Staging: sxg: remove typedefs
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Message-ID: <20081028224202.GC1267@localhost>
+Content-Disposition: inline
+
+
+Remove typedefs in the sxg driver
+
+Signed-off by: J.R. Mauro <jrm8005@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/sxg/sxg.c | 314 +++++++++++++++++++--------------------
+ drivers/staging/sxg/sxg.h | 121 +++++++--------
+ drivers/staging/sxg/sxg_os.h | 24 +-
+ drivers/staging/sxg/sxgdbg.h | 15 -
+ drivers/staging/sxg/sxghif.h | 139 ++++++++---------
+ drivers/staging/sxg/sxghw.h | 40 ++--
+ drivers/staging/sxg/sxgphycode.h | 2
+ 7 files changed, 325 insertions(+), 330 deletions(-)
+
+--- a/drivers/staging/sxg/sxg.c
++++ b/drivers/staging/sxg/sxg.c
+@@ -80,13 +80,13 @@
+ #include "sxgphycode.h"
+ #include "saharadbgdownload.h"
+
+-static int sxg_allocate_buffer_memory(p_adapter_t adapter, u32 Size,
+- SXG_BUFFER_TYPE BufferType);
+-static void sxg_allocate_rcvblock_complete(p_adapter_t adapter, void *RcvBlock,
++static int sxg_allocate_buffer_memory(struct adapter_t *adapter, u32 Size,
++ enum SXG_BUFFER_TYPE BufferType);
++static void sxg_allocate_rcvblock_complete(struct adapter_t *adapter, void *RcvBlock,
+ dma_addr_t PhysicalAddress,
+ u32 Length);
+-static void sxg_allocate_sgl_buffer_complete(p_adapter_t adapter,
+- PSXG_SCATTER_GATHER SxgSgl,
++static void sxg_allocate_sgl_buffer_complete(struct adapter_t *adapter,
++ struct SXG_SCATTER_GATHER *SxgSgl,
+ dma_addr_t PhysicalAddress,
+ u32 Length);
+
+@@ -96,17 +96,17 @@ static int sxg_entry_open(p_net_device d
+ static int sxg_entry_halt(p_net_device dev);
+ static int sxg_ioctl(p_net_device dev, struct ifreq *rq, int cmd);
+ static int sxg_send_packets(struct sk_buff *skb, p_net_device dev);
+-static int sxg_transmit_packet(p_adapter_t adapter, struct sk_buff *skb);
+-static void sxg_dumb_sgl(PSCATTER_GATHER_LIST pSgl, PSXG_SCATTER_GATHER SxgSgl);
++static int sxg_transmit_packet(struct adapter_t *adapter, struct sk_buff *skb);
++static void sxg_dumb_sgl(struct SCATTER_GATHER_LIST *pSgl, struct SXG_SCATTER_GATHER *SxgSgl);
+
+-static void sxg_handle_interrupt(p_adapter_t adapter);
+-static int sxg_process_isr(p_adapter_t adapter, u32 MessageId);
+-static u32 sxg_process_event_queue(p_adapter_t adapter, u32 RssId);
+-static void sxg_complete_slow_send(p_adapter_t adapter);
+-static struct sk_buff *sxg_slow_receive(p_adapter_t adapter, PSXG_EVENT Event);
+-static void sxg_process_rcv_error(p_adapter_t adapter, u32 ErrorStatus);
+-static bool sxg_mac_filter(p_adapter_t adapter,
+- p_ether_header EtherHdr, ushort length);
++static void sxg_handle_interrupt(struct adapter_t *adapter);
++static int sxg_process_isr(struct adapter_t *adapter, u32 MessageId);
++static u32 sxg_process_event_queue(struct adapter_t *adapter, u32 RssId);
++static void sxg_complete_slow_send(struct adapter_t *adapter);
++static struct sk_buff *sxg_slow_receive(struct adapter_t *adapter, struct SXG_EVENT *Event);
++static void sxg_process_rcv_error(struct adapter_t *adapter, u32 ErrorStatus);
++static bool sxg_mac_filter(struct adapter_t *adapter,
++ struct ether_header *EtherHdr, ushort length);
+
+ #if SLIC_GET_STATS_ENABLED
+ static struct net_device_stats *sxg_get_stats(p_net_device dev);
+@@ -119,22 +119,22 @@ static int sxg_mac_set_address(p_net_dev
+ static void sxg_mcast_set_list(p_net_device dev);
+ #endif
+
+-static void sxg_adapter_set_hwaddr(p_adapter_t adapter);
++static void sxg_adapter_set_hwaddr(struct adapter_t *adapter);
+
+-static void sxg_unmap_mmio_space(p_adapter_t adapter);
++static void sxg_unmap_mmio_space(struct adapter_t *adapter);
+
+-static int sxg_initialize_adapter(p_adapter_t adapter);
+-static void sxg_stock_rcv_buffers(p_adapter_t adapter);
+-static void sxg_complete_descriptor_blocks(p_adapter_t adapter,
++static int sxg_initialize_adapter(struct adapter_t *adapter);
++static void sxg_stock_rcv_buffers(struct adapter_t *adapter);
++static void sxg_complete_descriptor_blocks(struct adapter_t *adapter,
+ unsigned char Index);
+-static int sxg_initialize_link(p_adapter_t adapter);
+-static int sxg_phy_init(p_adapter_t adapter);
+-static void sxg_link_event(p_adapter_t adapter);
+-static SXG_LINK_STATE sxg_get_link_state(p_adapter_t adapter);
+-static void sxg_link_state(p_adapter_t adapter, SXG_LINK_STATE LinkState);
+-static int sxg_write_mdio_reg(p_adapter_t adapter,
++static int sxg_initialize_link(struct adapter_t *adapter);
++static int sxg_phy_init(struct adapter_t *adapter);
++static void sxg_link_event(struct adapter_t *adapter);
++static enum SXG_LINK_STATE sxg_get_link_state(struct adapter_t *adapter);
++static void sxg_link_state(struct adapter_t *adapter, enum SXG_LINK_STATE LinkState);
++static int sxg_write_mdio_reg(struct adapter_t *adapter,
+ u32 DevAddr, u32 RegAddr, u32 Value);
+-static int sxg_read_mdio_reg(p_adapter_t adapter,
++static int sxg_read_mdio_reg(struct adapter_t *adapter,
+ u32 DevAddr, u32 RegAddr, u32 *pValue);
+
+ static unsigned int sxg_first_init = 1;
+@@ -145,7 +145,7 @@ static int sxg_debug = 1;
+ static int debug = -1;
+ static p_net_device head_netdevice = NULL;
+
+-static sxgbase_driver_t sxg_global = {
++static struct sxgbase_driver_t sxg_global = {
+ .dynamic_intagg = 1,
+ };
+ static int intagg_delay = 100;
+@@ -186,7 +186,7 @@ static inline void sxg_reg32_write(void
+ mb();
+ }
+
+-static inline void sxg_reg64_write(p_adapter_t adapter, void __iomem *reg,
++static inline void sxg_reg64_write(struct adapter_t *adapter, void __iomem *reg,
+ u64 value, u32 cpu)
+ {
+ u32 value_high = (u32) (value >> 32);
+@@ -209,7 +209,7 @@ static void sxg_init_driver(void)
+ }
+ }
+
+-static void sxg_dbg_macaddrs(p_adapter_t adapter)
++static void sxg_dbg_macaddrs(struct adapter_t *adapter)
+ {
+ DBG_ERROR(" (%s) curr %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
+ adapter->netdev->name, adapter->currmacaddr[0],
+@@ -225,12 +225,12 @@ static void sxg_dbg_macaddrs(p_adapter_t
+ }
+
+ /* SXG Globals */
+-static SXG_DRIVER SxgDriver;
++static struct SXG_DRIVER SxgDriver;
+
+ #ifdef ATKDBG
+-static sxg_trace_buffer_t LSxgTraceBuffer;
++static struct sxg_trace_buffer_t LSxgTraceBuffer;
+ #endif /* ATKDBG */
+-static sxg_trace_buffer_t *SxgTraceBuffer = NULL;
++static struct sxg_trace_buffer_t *SxgTraceBuffer = NULL;
+
+ /*
+ * sxg_download_microcode
+@@ -244,9 +244,9 @@ static sxg_trace_buffer_t *SxgTraceBuffe
+ * Return
+ * int
+ */
+-static bool sxg_download_microcode(p_adapter_t adapter, SXG_UCODE_SEL UcodeSel)
++static bool sxg_download_microcode(struct adapter_t *adapter, enum SXG_UCODE_SEL UcodeSel)
+ {
+- PSXG_HW_REGS HwRegs = adapter->HwRegs;
++ struct SXG_HW_REGS *HwRegs = adapter->HwRegs;
+ u32 Section;
+ u32 ThisSectionSize;
+ u32 *Instruction = NULL;
+@@ -416,13 +416,13 @@ static bool sxg_download_microcode(p_ada
+ * Return
+ * int
+ */
+-static int sxg_allocate_resources(p_adapter_t adapter)
++static int sxg_allocate_resources(struct adapter_t *adapter)
+ {
+ int status;
+ u32 i;
+ u32 RssIds, IsrCount;
+-/* PSXG_XMT_RING XmtRing; */
+-/* PSXG_RCV_RING RcvRing; */
++/* struct SXG_XMT_RING *XmtRing; */
++/* struct SXG_RCV_RING *RcvRing; */
+
+ DBG_ERROR("%s ENTER\n", __func__);
+
+@@ -461,13 +461,13 @@ static int sxg_allocate_resources(p_adap
+
+ for (;;) {
+ DBG_ERROR("%s Allocate XmtRings size[%x]\n", __func__,
+- (unsigned int)(sizeof(SXG_XMT_RING) * 1));
++ (unsigned int)(sizeof(struct SXG_XMT_RING) * 1));
+
+ /* Start with big items first - receive and transmit rings. At the moment */
+ /* I'm going to keep the ring size fixed and adjust the number of */
+ /* TCBs if we fail. Later we might consider reducing the ring size as well.. */
+ adapter->XmtRings = pci_alloc_consistent(adapter->pcidev,
+- sizeof(SXG_XMT_RING) *
++ sizeof(struct SXG_XMT_RING) *
+ 1,
+ &adapter->PXmtRings);
+ DBG_ERROR("%s XmtRings[%p]\n", __func__, adapter->XmtRings);
+@@ -475,33 +475,33 @@ static int sxg_allocate_resources(p_adap
+ if (!adapter->XmtRings) {
+ goto per_tcb_allocation_failed;
+ }
+- memset(adapter->XmtRings, 0, sizeof(SXG_XMT_RING) * 1);
++ memset(adapter->XmtRings, 0, sizeof(struct SXG_XMT_RING) * 1);
+
+ DBG_ERROR("%s Allocate RcvRings size[%x]\n", __func__,
+- (unsigned int)(sizeof(SXG_RCV_RING) * 1));
++ (unsigned int)(sizeof(struct SXG_RCV_RING) * 1));
+ adapter->RcvRings =
+ pci_alloc_consistent(adapter->pcidev,
+- sizeof(SXG_RCV_RING) * 1,
++ sizeof(struct SXG_RCV_RING) * 1,
+ &adapter->PRcvRings);
+ DBG_ERROR("%s RcvRings[%p]\n", __func__, adapter->RcvRings);
+ if (!adapter->RcvRings) {
+ goto per_tcb_allocation_failed;
+ }
+- memset(adapter->RcvRings, 0, sizeof(SXG_RCV_RING) * 1);
++ memset(adapter->RcvRings, 0, sizeof(struct SXG_RCV_RING) * 1);
+ break;
+
+ per_tcb_allocation_failed:
+ /* an allocation failed. Free any successful allocations. */
+ if (adapter->XmtRings) {
+ pci_free_consistent(adapter->pcidev,
+- sizeof(SXG_XMT_RING) * 4096,
++ sizeof(struct SXG_XMT_RING) * 4096,
+ adapter->XmtRings,
+ adapter->PXmtRings);
+ adapter->XmtRings = NULL;
+ }
+ if (adapter->RcvRings) {
+ pci_free_consistent(adapter->pcidev,
+- sizeof(SXG_RCV_RING) * 4096,
++ sizeof(struct SXG_RCV_RING) * 4096,
+ adapter->RcvRings,
+ adapter->PRcvRings);
+ adapter->RcvRings = NULL;
+@@ -517,7 +517,7 @@ static int sxg_allocate_resources(p_adap
+ /* Sanity check receive data structure format */
+ ASSERT((adapter->ReceiveBufferSize == SXG_RCV_DATA_BUFFER_SIZE) ||
+ (adapter->ReceiveBufferSize == SXG_RCV_JUMBO_BUFFER_SIZE));
+- ASSERT(sizeof(SXG_RCV_DESCRIPTOR_BLOCK) ==
++ ASSERT(sizeof(struct SXG_RCV_DESCRIPTOR_BLOCK) ==
+ SXG_RCV_DESCRIPTOR_BLOCK_SIZE);
+
+ /* Allocate receive data buffers. We allocate a block of buffers and */
+@@ -539,11 +539,11 @@ static int sxg_allocate_resources(p_adap
+ }
+
+ DBG_ERROR("%s Allocate EventRings size[%x]\n", __func__,
+- (unsigned int)(sizeof(SXG_EVENT_RING) * RssIds));
++ (unsigned int)(sizeof(struct SXG_EVENT_RING) * RssIds));
+
+ /* Allocate event queues. */
+ adapter->EventRings = pci_alloc_consistent(adapter->pcidev,
+- sizeof(SXG_EVENT_RING) *
++ sizeof(struct SXG_EVENT_RING) *
+ RssIds,
+ &adapter->PEventRings);
+
+@@ -554,7 +554,7 @@ static int sxg_allocate_resources(p_adap
+ status = STATUS_RESOURCES;
+ goto per_tcb_allocation_failed;
+ }
+- memset(adapter->EventRings, 0, sizeof(SXG_EVENT_RING) * RssIds);
++ memset(adapter->EventRings, 0, sizeof(struct SXG_EVENT_RING) * RssIds);
+
+ DBG_ERROR("%s Allocate ISR size[%x]\n", __func__, IsrCount);
+ /* Allocate ISR */
+@@ -628,7 +628,7 @@ static int sxg_entry_probe(struct pci_de
+ static int did_version = 0;
+ int err;
+ struct net_device *netdev;
+- p_adapter_t adapter;
++ struct adapter_t *adapter;
+ void __iomem *memmapped_ioaddr;
+ u32 status = 0;
+ ulong mmio_start = 0;
+@@ -681,7 +681,7 @@ static int sxg_entry_probe(struct pci_de
+ pci_set_master(pcidev);
+
+ DBG_ERROR("call alloc_etherdev\n");
+- netdev = alloc_etherdev(sizeof(adapter_t));
++ netdev = alloc_etherdev(sizeof(struct adapter_t));
+ if (!netdev) {
+ err = -ENOMEM;
+ goto err_out_exit_sxg_probe;
+@@ -871,7 +871,7 @@ static int sxg_entry_probe(struct pci_de
+ * Return Value:
+ * None.
+ */
+-static void sxg_disable_interrupt(p_adapter_t adapter)
++static void sxg_disable_interrupt(struct adapter_t *adapter)
+ {
+ SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DisIntr",
+ adapter, adapter->InterruptsEnabled, 0, 0);
+@@ -902,7 +902,7 @@ static void sxg_disable_interrupt(p_adap
+ * Return Value:
+ * None.
+ */
+-static void sxg_enable_interrupt(p_adapter_t adapter)
++static void sxg_enable_interrupt(struct adapter_t *adapter)
+ {
+ SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "EnIntr",
+ adapter, adapter->InterruptsEnabled, 0, 0);
+@@ -935,7 +935,7 @@ static void sxg_enable_interrupt(p_adapt
+ static irqreturn_t sxg_isr(int irq, void *dev_id)
+ {
+ p_net_device dev = (p_net_device) dev_id;
+- p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
++ struct adapter_t *adapter = (struct adapter_t *) netdev_priv(dev);
+ /* u32 CpuMask = 0, i; */
+
+ adapter->Stats.NumInts++;
+@@ -963,8 +963,8 @@ static irqreturn_t sxg_isr(int irq, void
+ for (i = 0;
+ i < adapter->RssSystemInfo->ProcessorInfo.RssCpuCount;
+ i++) {
+- PSXG_EVENT_RING EventRing = &adapter->EventRings[i];
+- PSXG_EVENT Event =
++ struct XG_EVENT_RING *EventRing = &adapter->EventRings[i];
++ struct SXG_EVENT *Event =
+ &EventRing->Ring[adapter->NextEvent[i]];
+ unsigned char Cpu =
+ adapter->RssSystemInfo->RssIdToCpu[i];
+@@ -992,7 +992,7 @@ static irqreturn_t sxg_isr(int irq, void
+ return IRQ_HANDLED;
+ }
+
+-static void sxg_handle_interrupt(p_adapter_t adapter)
++static void sxg_handle_interrupt(struct adapter_t *adapter)
+ {
+ /* unsigned char RssId = 0; */
+ u32 NewIsr;
+@@ -1056,7 +1056,7 @@ static void sxg_handle_interrupt(p_adapt
+ * Return Value:
+ * None
+ */
+-static int sxg_process_isr(p_adapter_t adapter, u32 MessageId)
++static int sxg_process_isr(struct adapter_t *adapter, u32 MessageId)
+ {
+ u32 Isr = adapter->IsrCopy[MessageId];
+ u32 NewIsr = 0;
+@@ -1153,10 +1153,10 @@ static int sxg_process_isr(p_adapter_t a
+ * Return Value:
+ * None.
+ */
+-static u32 sxg_process_event_queue(p_adapter_t adapter, u32 RssId)
++static u32 sxg_process_event_queue(struct adapter_t *adapter, u32 RssId)
+ {
+- PSXG_EVENT_RING EventRing = &adapter->EventRings[RssId];
+- PSXG_EVENT Event = &EventRing->Ring[adapter->NextEvent[RssId]];
++ struct SXG_EVENT_RING *EventRing = &adapter->EventRings[RssId];
++ struct SXG_EVENT *Event = &EventRing->Ring[adapter->NextEvent[RssId]];
+ u32 EventsProcessed = 0, Batches = 0;
+ u32 num_skbs = 0;
+ struct sk_buff *skb;
+@@ -1164,7 +1164,7 @@ static u32 sxg_process_event_queue(p_ada
+ struct sk_buff *prev_skb = NULL;
+ struct sk_buff *IndicationList[SXG_RCV_ARRAYSIZE];
+ u32 Index;
+- PSXG_RCV_DATA_BUFFER_HDR RcvDataBufferHdr;
++ struct SXG_RCV_DATA_BUFFER_HDR *RcvDataBufferHdr;
+ #endif
+ u32 ReturnStatus = 0;
+
+@@ -1293,12 +1293,12 @@ static u32 sxg_process_event_queue(p_ada
+ * Return
+ * None
+ */
+-static void sxg_complete_slow_send(p_adapter_t adapter)
++static void sxg_complete_slow_send(struct adapter_t *adapter)
+ {
+- PSXG_XMT_RING XmtRing = &adapter->XmtRings[0];
+- PSXG_RING_INFO XmtRingInfo = &adapter->XmtRingZeroInfo;
++ struct SXG_XMT_RING *XmtRing = &adapter->XmtRings[0];
++ struct SXG_RING_INFO *XmtRingInfo = &adapter->XmtRingZeroInfo;
+ u32 *ContextType;
+- PSXG_CMD XmtCmd;
++ struct SXG_CMD *XmtCmd;
+
+ /* NOTE - This lock is dropped and regrabbed in this loop. */
+ /* This means two different processors can both be running */
+@@ -1359,12 +1359,12 @@ static void sxg_complete_slow_send(p_ada
+ * Return
+ * skb
+ */
+-static struct sk_buff *sxg_slow_receive(p_adapter_t adapter, PSXG_EVENT Event)
++static struct sk_buff *sxg_slow_receive(struct adapter_t *adapter, struct SXG_EVENT *Event)
+ {
+- PSXG_RCV_DATA_BUFFER_HDR RcvDataBufferHdr;
++ struct SXG_RCV_DATA_BUFFER_HDR *RcvDataBufferHdr;
+ struct sk_buff *Packet;
+
+- RcvDataBufferHdr = (PSXG_RCV_DATA_BUFFER_HDR) Event->HostHandle;
++ RcvDataBufferHdr = (struct SXG_RCV_DATA_BUFFER_HDR*) Event->HostHandle;
+ ASSERT(RcvDataBufferHdr);
+ ASSERT(RcvDataBufferHdr->State == SXG_BUFFER_ONCARD);
+ ASSERT(SXG_RECEIVE_DATA_LOCATION(RcvDataBufferHdr) ==
+@@ -1400,7 +1400,7 @@ static struct sk_buff *sxg_slow_receive(
+ }
+ #if XXXTODO /* VLAN stuff */
+ /* If there's a VLAN tag, extract it and validate it */
+- if (((p_ether_header) (SXG_RECEIVE_DATA_LOCATION(RcvDataBufferHdr)))->
++ if (((struct ether_header*) (SXG_RECEIVE_DATA_LOCATION(RcvDataBufferHdr)))->
+ EtherType == ETHERTYPE_VLAN) {
+ if (SxgExtractVlanHeader(adapter, RcvDataBufferHdr, Event) !=
+ STATUS_SUCCESS) {
+@@ -1415,7 +1415,7 @@ static struct sk_buff *sxg_slow_receive(
+ /* */
+ /* Dumb-nic frame. See if it passes our mac filter and update stats */
+ /* */
+- if (!sxg_mac_filter(adapter, (p_ether_header)
++ if (!sxg_mac_filter(adapter, (struct ether_header*)
+ SXG_RECEIVE_DATA_LOCATION(RcvDataBufferHdr),
+ Event->Length)) {
+ SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "RcvFiltr",
+@@ -1456,7 +1456,7 @@ static struct sk_buff *sxg_slow_receive(
+ * Return Value:
+ * None
+ */
+-static void sxg_process_rcv_error(p_adapter_t adapter, u32 ErrorStatus)
++static void sxg_process_rcv_error(struct adapter_t *adapter, u32 ErrorStatus)
+ {
+ u32 Error;
+
+@@ -1535,7 +1535,7 @@ static void sxg_process_rcv_error(p_adap
+ * Return Value:
+ * TRUE if the frame is to be allowed
+ */
+-static bool sxg_mac_filter(p_adapter_t adapter, p_ether_header EtherHdr,
++static bool sxg_mac_filter(struct adapter_t *adapter, struct ether_header *EtherHdr,
+ ushort length)
+ {
+ bool EqualAddr;
+@@ -1560,7 +1560,7 @@ static bool sxg_mac_filter(p_adapter_t a
+ return (TRUE);
+ }
+ if (adapter->MacFilter & MAC_MCAST) {
+- PSXG_MULTICAST_ADDRESS MulticastAddrs =
++ struct SXG_MULTICAST_ADDRESS *MulticastAddrs =
+ adapter->MulticastAddrs;
+ while (MulticastAddrs) {
+ ETHER_EQ_ADDR(MulticastAddrs->Address,
+@@ -1600,7 +1600,7 @@ static bool sxg_mac_filter(p_adapter_t a
+ return (FALSE);
+ }
+
+-static int sxg_register_interrupt(p_adapter_t adapter)
++static int sxg_register_interrupt(struct adapter_t *adapter)
+ {
+ if (!adapter->intrregistered) {
+ int retval;
+@@ -1635,7 +1635,7 @@ static int sxg_register_interrupt(p_adap
+ return (STATUS_SUCCESS);
+ }
+
+-static void sxg_deregister_interrupt(p_adapter_t adapter)
++static void sxg_deregister_interrupt(struct adapter_t *adapter)
+ {
+ DBG_ERROR("sxg: %s ENTER adapter[%p]\n", __func__, adapter);
+ #if XXXTODO
+@@ -1661,7 +1661,7 @@ static void sxg_deregister_interrupt(p_a
+ * Perform initialization of our slic interface.
+ *
+ */
+-static int sxg_if_init(p_adapter_t adapter)
++static int sxg_if_init(struct adapter_t *adapter)
+ {
+ p_net_device dev = adapter->netdev;
+ int status = 0;
+@@ -1721,7 +1721,7 @@ static int sxg_if_init(p_adapter_t adapt
+
+ static int sxg_entry_open(p_net_device dev)
+ {
+- p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
++ struct adapter_t *adapter = (struct adapter_t *) netdev_priv(dev);
+ int status;
+
+ ASSERT(adapter);
+@@ -1777,7 +1777,7 @@ static void __devexit sxg_entry_remove(s
+ p_net_device dev = pci_get_drvdata(pcidev);
+ u32 mmio_start = 0;
+ unsigned int mmio_len = 0;
+- p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
++ struct adapter_t *adapter = (struct adapter_t *) netdev_priv(dev);
+
+ ASSERT(adapter);
+ DBG_ERROR("sxg: %s ENTER dev[%p] adapter[%p]\n", __func__, dev,
+@@ -1805,7 +1805,7 @@ static void __devexit sxg_entry_remove(s
+
+ static int sxg_entry_halt(p_net_device dev)
+ {
+- p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
++ struct adapter_t *adapter = (struct adapter_t *) netdev_priv(dev);
+
+ spin_lock_irqsave(&sxg_global.driver_lock, sxg_global.flags);
+ DBG_ERROR("sxg: %s (%s) ENTER\n", __func__, dev->name);
+@@ -1830,7 +1830,7 @@ static int sxg_ioctl(p_net_device dev, s
+ switch (cmd) {
+ case SIOCSLICSETINTAGG:
+ {
+-/* p_adapter_t adapter = (p_adapter_t) netdev_priv(dev); */
++/* struct adapter_t *adapter = (struct adapter_t *) netdev_priv(dev); */
+ u32 data[7];
+ u32 intagg;
+
+@@ -1868,7 +1868,7 @@ static int sxg_ioctl(p_net_device dev, s
+ */
+ static int sxg_send_packets(struct sk_buff *skb, p_net_device dev)
+ {
+- p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
++ struct adapter_t *adapter = (struct adapter_t *) netdev_priv(dev);
+ u32 status = STATUS_SUCCESS;
+
+ DBG_ERROR("sxg: %s ENTER sxg_send_packets skb[%p]\n", __func__,
+@@ -1934,10 +1934,10 @@ static int sxg_send_packets(struct sk_bu
+ * Return -
+ * STATUS of send
+ */
+-static int sxg_transmit_packet(p_adapter_t adapter, struct sk_buff *skb)
++static int sxg_transmit_packet(struct adapter_t *adapter, struct sk_buff *skb)
+ {
+- PSCATTER_GATHER_LIST pSgl;
+- PSXG_SCATTER_GATHER SxgSgl;
++ struct SCATTER_GATHER_LIST *pSgl;
++ struct SXG_SCATTER_GATHER *SxgSgl;
+ void *SglBuffer;
+ u32 SglBufferLength;
+
+@@ -1980,14 +1980,14 @@ static int sxg_transmit_packet(p_adapter
+ * Return Value:
+ * None.
+ */
+-static void sxg_dumb_sgl(PSCATTER_GATHER_LIST pSgl, PSXG_SCATTER_GATHER SxgSgl)
++static void sxg_dumb_sgl(struct SCATTER_GATHER_LIST *pSgl, struct SXG_SCATTER_GATHER *SxgSgl)
+ {
+- p_adapter_t adapter = SxgSgl->adapter;
++ struct adapter_t *adapter = SxgSgl->adapter;
+ struct sk_buff *skb = SxgSgl->DumbPacket;
+ /* For now, all dumb-nic sends go on RSS queue zero */
+- PSXG_XMT_RING XmtRing = &adapter->XmtRings[0];
+- PSXG_RING_INFO XmtRingInfo = &adapter->XmtRingZeroInfo;
+- PSXG_CMD XmtCmd = NULL;
++ struct SXG_XMT_RING *XmtRing = &adapter->XmtRings[0];
++ struct SXG_RING_INFO *XmtRingInfo = &adapter->XmtRingZeroInfo;
++ struct SXG_CMD *XmtCmd = NULL;
+ /* u32 Index = 0; */
+ u32 DataLength = skb->len;
+ /* unsigned int BufLen; */
+@@ -2117,9 +2117,9 @@ static void sxg_dumb_sgl(PSCATTER_GATHER
+ * Return
+ * status
+ */
+-static int sxg_initialize_link(p_adapter_t adapter)
++static int sxg_initialize_link(struct adapter_t *adapter)
+ {
+- PSXG_HW_REGS HwRegs = adapter->HwRegs;
++ struct SXG_HW_REGS *HwRegs = adapter->HwRegs;
+ u32 Value;
+ u32 ConfigData;
+ u32 MaxFrame;
+@@ -2274,10 +2274,10 @@ static int sxg_initialize_link(p_adapter
+ * Return
+ * status
+ */
+-static int sxg_phy_init(p_adapter_t adapter)
++static int sxg_phy_init(struct adapter_t *adapter)
+ {
+ u32 Value;
+- PPHY_UCODE p;
++ struct PHY_UCODE *p;
+ int status;
+
+ DBG_ERROR("ENTER %s\n", __func__);
+@@ -2322,10 +2322,10 @@ static int sxg_phy_init(p_adapter_t adap
+ * Return
+ * None
+ */
+-static void sxg_link_event(p_adapter_t adapter)
++static void sxg_link_event(struct adapter_t *adapter)
+ {
+- PSXG_HW_REGS HwRegs = adapter->HwRegs;
+- SXG_LINK_STATE LinkState;
++ struct SXG_HW_REGS *HwRegs = adapter->HwRegs;
++ enum SXG_LINK_STATE LinkState;
+ int status;
+ u32 Value;
+
+@@ -2379,7 +2379,7 @@ static void sxg_link_event(p_adapter_t a
+ * Return
+ * Link State
+ */
+-static SXG_LINK_STATE sxg_get_link_state(p_adapter_t adapter)
++static enum SXG_LINK_STATE sxg_get_link_state(struct adapter_t *adapter)
+ {
+ int status;
+ u32 Value;
+@@ -2433,8 +2433,8 @@ static SXG_LINK_STATE sxg_get_link_state
+ return (SXG_LINK_DOWN);
+ }
+
+-static void sxg_indicate_link_state(p_adapter_t adapter,
+- SXG_LINK_STATE LinkState)
++static void sxg_indicate_link_state(struct adapter_t *adapter,
++ enum SXG_LINK_STATE LinkState)
+ {
+ if (adapter->LinkState == SXG_LINK_UP) {
+ DBG_ERROR("%s: LINK now UP, call netif_start_queue\n",
+@@ -2460,7 +2460,7 @@ static void sxg_indicate_link_state(p_ad
+ * Return
+ * None
+ */
+-static void sxg_link_state(p_adapter_t adapter, SXG_LINK_STATE LinkState)
++static void sxg_link_state(struct adapter_t *adapter, enum SXG_LINK_STATE LinkState)
+ {
+ SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_IMPORTANT, "LnkINDCT",
+ adapter, LinkState, adapter->LinkState, adapter->State);
+@@ -2498,10 +2498,10 @@ static void sxg_link_state(p_adapter_t a
+ * Return
+ * status
+ */
+-static int sxg_write_mdio_reg(p_adapter_t adapter,
++static int sxg_write_mdio_reg(struct adapter_t *adapter,
+ u32 DevAddr, u32 RegAddr, u32 Value)
+ {
+- PSXG_HW_REGS HwRegs = adapter->HwRegs;
++ struct SXG_HW_REGS *HwRegs = adapter->HwRegs;
+ u32 AddrOp; /* Address operation (written to MIIM field reg) */
+ u32 WriteOp; /* Write operation (written to MIIM field reg) */
+ u32 Cmd; /* Command (written to MIIM command reg) */
+@@ -2588,10 +2588,10 @@ static int sxg_write_mdio_reg(p_adapter_
+ * Return
+ * status
+ */
+-static int sxg_read_mdio_reg(p_adapter_t adapter,
++static int sxg_read_mdio_reg(struct adapter_t *adapter,
+ u32 DevAddr, u32 RegAddr, u32 *pValue)
+ {
+- PSXG_HW_REGS HwRegs = adapter->HwRegs;
++ struct SXG_HW_REGS *HwRegs = adapter->HwRegs;
+ u32 AddrOp; /* Address operation (written to MIIM field reg) */
+ u32 ReadOp; /* Read operation (written to MIIM field reg) */
+ u32 Cmd; /* Command (written to MIIM command reg) */
+@@ -2735,9 +2735,9 @@ static unsigned char sxg_mcast_get_mac_h
+ return (machash);
+ }
+
+-static void sxg_mcast_set_mask(p_adapter_t adapter)
++static void sxg_mcast_set_mask(struct adapter_t *adapter)
+ {
+- PSXG_UCODE_REGS sxg_regs = adapter->UcodeRegs;
++ struct SXG_UCODE_REGS *sxg_regs = adapter->UcodeRegs;
+
+ DBG_ERROR("%s ENTER (%s) macopts[%x] mask[%llx]\n", __func__,
+ adapter->netdev->name, (unsigned int)adapter->MacFilter,
+@@ -2775,7 +2775,7 @@ static void sxg_mcast_set_mask(p_adapter
+ * Allocate a mcast_address structure to hold the multicast address.
+ * Link it in.
+ */
+-static int sxg_mcast_add_list(p_adapter_t adapter, char *address)
++static int sxg_mcast_add_list(struct adapter_t *adapter, char *address)
+ {
+ p_mcast_address_t mcaddr, mlist;
+ bool equaladdr;
+@@ -2803,7 +2803,7 @@ static int sxg_mcast_add_list(p_adapter_
+ return (STATUS_SUCCESS);
+ }
+
+-static void sxg_mcast_set_bit(p_adapter_t adapter, char *address)
++static void sxg_mcast_set_bit(struct adapter_t *adapter, char *address)
+ {
+ unsigned char crcpoly;
+
+@@ -2821,7 +2821,7 @@ static void sxg_mcast_set_bit(p_adapter_
+
+ static void sxg_mcast_set_list(p_net_device dev)
+ {
+- p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
++ struct adapter_t *adapter = (struct adapter_t *) netdev_priv(dev);
+ int status = STATUS_SUCCESS;
+ int i;
+ char *addresses;
+@@ -2876,7 +2876,7 @@ static void sxg_mcast_set_list(p_net_dev
+ }
+ #endif
+
+-static void sxg_unmap_mmio_space(p_adapter_t adapter)
++static void sxg_unmap_mmio_space(struct adapter_t *adapter)
+ {
+ #if LINUX_FREES_ADAPTER_RESOURCES
+ /* if (adapter->Regs) { */
+@@ -2896,7 +2896,7 @@ static void sxg_unmap_mmio_space(p_adapt
+ * Return
+ * none
+ */
+-void SxgFreeResources(p_adapter_t adapter)
++void SxgFreeResources(struct adapter_t *adapter)
+ {
+ u32 RssIds, IsrCount;
+ PTCP_OBJECT TcpObject;
+@@ -2924,7 +2924,7 @@ void SxgFreeResources(p_adapter_t adapte
+ /* Free event queues. */
+ if (adapter->EventRings) {
+ pci_free_consistent(adapter->pcidev,
+- sizeof(SXG_EVENT_RING) * RssIds,
++ sizeof(struct SXG_EVENT_RING) * RssIds,
+ adapter->EventRings, adapter->PEventRings);
+ }
+ if (adapter->Isr) {
+@@ -2991,7 +2991,7 @@ void SxgFreeResources(p_adapter_t adapte
+ * This routine is called when a memory allocation has completed.
+ *
+ * Arguments -
+- * p_adapter_t - Our adapter structure
++ * struct adapter_t * - Our adapter structure
+ * VirtualAddress - Memory virtual address
+ * PhysicalAddress - Memory physical address
+ * Length - Length of memory allocated (or 0)
+@@ -3000,10 +3000,10 @@ void SxgFreeResources(p_adapter_t adapte
+ * Return
+ * None.
+ */
+-static void sxg_allocate_complete(p_adapter_t adapter,
++static void sxg_allocate_complete(struct adapter_t *adapter,
+ void *VirtualAddress,
+ dma_addr_t PhysicalAddress,
+- u32 Length, SXG_BUFFER_TYPE Context)
++ u32 Length, enum SXG_BUFFER_TYPE Context)
+ {
+ SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "AllocCmp",
+ adapter, VirtualAddress, Length, Context);
+@@ -3018,7 +3018,7 @@ static void sxg_allocate_complete(p_adap
+ PhysicalAddress, Length);
+ break;
+ case SXG_BUFFER_TYPE_SGL:
+- sxg_allocate_sgl_buffer_complete(adapter, (PSXG_SCATTER_GATHER)
++ sxg_allocate_sgl_buffer_complete(adapter, (struct SXG_SCATTER_GATHER*)
+ VirtualAddress,
+ PhysicalAddress, Length);
+ break;
+@@ -3039,8 +3039,8 @@ static void sxg_allocate_complete(p_adap
+ * Return
+ * int
+ */
+-static int sxg_allocate_buffer_memory(p_adapter_t adapter,
+- u32 Size, SXG_BUFFER_TYPE BufferType)
++static int sxg_allocate_buffer_memory(struct adapter_t *adapter,
++ u32 Size, enum SXG_BUFFER_TYPE BufferType)
+ {
+ int status;
+ void *Buffer;
+@@ -3091,7 +3091,7 @@ static int sxg_allocate_buffer_memory(p_
+ * Return
+ *
+ */
+-static void sxg_allocate_rcvblock_complete(p_adapter_t adapter,
++static void sxg_allocate_rcvblock_complete(struct adapter_t *adapter,
+ void *RcvBlock,
+ dma_addr_t PhysicalAddress,
+ u32 Length)
+@@ -3099,11 +3099,11 @@ static void sxg_allocate_rcvblock_comple
+ u32 i;
+ u32 BufferSize = adapter->ReceiveBufferSize;
+ u64 Paddr;
+- PSXG_RCV_BLOCK_HDR RcvBlockHdr;
++ struct SXG_RCV_BLOCK_HDR *RcvBlockHdr;
+ unsigned char *RcvDataBuffer;
+- PSXG_RCV_DATA_BUFFER_HDR RcvDataBufferHdr;
+- PSXG_RCV_DESCRIPTOR_BLOCK RcvDescriptorBlock;
+- PSXG_RCV_DESCRIPTOR_BLOCK_HDR RcvDescriptorBlockHdr;
++ struct SXG_RCV_DATA_BUFFER_HDR *RcvDataBufferHdr;
++ struct SXG_RCV_DESCRIPTOR_BLOCK *RcvDescriptorBlock;
++ struct SXG_RCV_DESCRIPTOR_BLOCK_HDR *RcvDescriptorBlockHdr;
+
+ SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "AlRcvBlk",
+ adapter, RcvBlock, Length, 0);
+@@ -3129,7 +3129,7 @@ static void sxg_allocate_rcvblock_comple
+ i++, Paddr += BufferSize, RcvDataBuffer += BufferSize) {
+ /* */
+ RcvDataBufferHdr =
+- (PSXG_RCV_DATA_BUFFER_HDR) (RcvDataBuffer +
++ (struct SXG_RCV_DATA_BUFFER_HDR*) (RcvDataBuffer +
+ SXG_RCV_DATA_BUFFER_HDR_OFFSET
+ (BufferSize));
+ RcvDataBufferHdr->VirtualAddress = RcvDataBuffer;
+@@ -3147,7 +3147,7 @@ static void sxg_allocate_rcvblock_comple
+ /* Place this entire block of memory on the AllRcvBlocks queue so it can be */
+ /* free later */
+ RcvBlockHdr =
+- (PSXG_RCV_BLOCK_HDR) ((unsigned char *)RcvBlock +
++ (struct SXG_RCV_BLOCK_HDR*) ((unsigned char *)RcvBlock +
+ SXG_RCV_BLOCK_HDR_OFFSET(BufferSize));
+ RcvBlockHdr->VirtualAddress = RcvBlock;
+ RcvBlockHdr->PhysicalAddress = PhysicalAddress;
+@@ -3161,7 +3161,7 @@ static void sxg_allocate_rcvblock_comple
+ for (i = 0, Paddr = PhysicalAddress;
+ i < SXG_RCV_DESCRIPTORS_PER_BLOCK;
+ i++, Paddr += BufferSize, RcvDataBuffer += BufferSize) {
+- RcvDataBufferHdr = (PSXG_RCV_DATA_BUFFER_HDR) (RcvDataBuffer +
++ RcvDataBufferHdr = (struct SXG_RCV_DATA_BUFFER_HDR*) (RcvDataBuffer +
+ SXG_RCV_DATA_BUFFER_HDR_OFFSET
+ (BufferSize));
+ spin_lock(&adapter->RcvQLock);
+@@ -3171,11 +3171,11 @@ static void sxg_allocate_rcvblock_comple
+
+ /* Locate the descriptor block and put it on a separate free queue */
+ RcvDescriptorBlock =
+- (PSXG_RCV_DESCRIPTOR_BLOCK) ((unsigned char *)RcvBlock +
++ (struct SXG_RCV_DESCRIPTOR_BLOCK*) ((unsigned char *)RcvBlock +
+ SXG_RCV_DESCRIPTOR_BLOCK_OFFSET
+ (BufferSize));
+ RcvDescriptorBlockHdr =
+- (PSXG_RCV_DESCRIPTOR_BLOCK_HDR) ((unsigned char *)RcvBlock +
++ (struct SXG_RCV_DESCRIPTOR_BLOCK_HDR*) ((unsigned char *)RcvBlock +
+ SXG_RCV_DESCRIPTOR_BLOCK_HDR_OFFSET
+ (BufferSize));
+ RcvDescriptorBlockHdr->VirtualAddress = RcvDescriptorBlock;
+@@ -3193,7 +3193,7 @@ static void sxg_allocate_rcvblock_comple
+ for (i = 0; i < SXG_RCV_DESCRIPTORS_PER_BLOCK;
+ i++, RcvDataBuffer += BufferSize) {
+ RcvDataBufferHdr =
+- (PSXG_RCV_DATA_BUFFER_HDR) (RcvDataBuffer +
++ (struct SXG_RCV_DATA_BUFFER_HDR*) (RcvDataBuffer +
+ SXG_RCV_DATA_BUFFER_HDR_OFFSET
+ (BufferSize));
+ SXG_FREE_RCV_PACKET(RcvDataBufferHdr);
+@@ -3220,8 +3220,8 @@ static void sxg_allocate_rcvblock_comple
+ * Return
+ *
+ */
+-static void sxg_allocate_sgl_buffer_complete(p_adapter_t adapter,
+- PSXG_SCATTER_GATHER SxgSgl,
++static void sxg_allocate_sgl_buffer_complete(struct adapter_t *adapter,
++ struct SXG_SCATTER_GATHER *SxgSgl,
+ dma_addr_t PhysicalAddress,
+ u32 Length)
+ {
+@@ -3229,7 +3229,7 @@ static void sxg_allocate_sgl_buffer_comp
+ adapter, SxgSgl, Length, 0);
+ spin_lock(&adapter->SglQLock);
+ adapter->AllSglBufferCount++;
+- memset(SxgSgl, 0, sizeof(SXG_SCATTER_GATHER));
++ memset(SxgSgl, 0, sizeof(struct SXG_SCATTER_GATHER*));
+ SxgSgl->PhysicalAddress = PhysicalAddress; /* *PhysicalAddress; */
+ SxgSgl->adapter = adapter; /* Initialize backpointer once */
+ InsertTailList(&adapter->AllSglBuffers, &SxgSgl->AllList);
+@@ -3243,14 +3243,14 @@ static void sxg_allocate_sgl_buffer_comp
+ static unsigned char temp_mac_address[6] =
+ { 0x00, 0xab, 0xcd, 0xef, 0x12, 0x69 };
+
+-static void sxg_adapter_set_hwaddr(p_adapter_t adapter)
++static void sxg_adapter_set_hwaddr(struct adapter_t *adapter)
+ {
+ /* DBG_ERROR ("%s ENTER card->config_set[%x] port[%d] physport[%d] funct#[%d]\n", __func__, */
+ /* card->config_set, adapter->port, adapter->physport, adapter->functionnumber); */
+ /* */
+ /* sxg_dbg_macaddrs(adapter); */
+
+- memcpy(adapter->macaddr, temp_mac_address, sizeof(SXG_CONFIG_MAC));
++ memcpy(adapter->macaddr, temp_mac_address, sizeof(struct SXG_CONFIG_MAC));
+ /* DBG_ERROR ("%s AFTER copying from config.macinfo into currmacaddr\n", __func__); */
+ /* sxg_dbg_macaddrs(adapter); */
+ if (!(adapter->currmacaddr[0] ||
+@@ -3271,7 +3271,7 @@ static void sxg_adapter_set_hwaddr(p_ada
+ #if XXXTODO
+ static int sxg_mac_set_address(p_net_device dev, void *ptr)
+ {
+- p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
++ struct adapter_t *adapter = (struct adapter_t *) netdev_priv(dev);
+ struct sockaddr *addr = ptr;
+
+ DBG_ERROR("%s ENTER (%s)\n", __func__, adapter->netdev->name);
+@@ -3313,7 +3313,7 @@ static int sxg_mac_set_address(p_net_dev
+ * Return
+ * int
+ */
+-static int sxg_initialize_adapter(p_adapter_t adapter)
++static int sxg_initialize_adapter(struct adapter_t *adapter)
+ {
+ u32 RssIds, IsrCount;
+ u32 i;
+@@ -3327,7 +3327,7 @@ static int sxg_initialize_adapter(p_adap
+
+ /* Sanity check SXG_UCODE_REGS structure definition to */
+ /* make sure the length is correct */
+- ASSERT(sizeof(SXG_UCODE_REGS) == SXG_REGISTER_SIZE_PER_CPU);
++ ASSERT(sizeof(struct SXG_UCODE_REGS) == SXG_REGISTER_SIZE_PER_CPU);
+
+ /* Disable interrupts */
+ SXG_DISABLE_ALL_INTERRUPTS(adapter);
+@@ -3412,16 +3412,16 @@ static int sxg_initialize_adapter(p_adap
+ * Return
+ * status
+ */
+-static int sxg_fill_descriptor_block(p_adapter_t adapter,
+- PSXG_RCV_DESCRIPTOR_BLOCK_HDR
+- RcvDescriptorBlockHdr)
++static int sxg_fill_descriptor_block(struct adapter_t *adapter,
++ struct SXG_RCV_DESCRIPTOR_BLOCK_HDR
++ *RcvDescriptorBlockHdr)
+ {
+ u32 i;
+- PSXG_RING_INFO RcvRingInfo = &adapter->RcvRingZeroInfo;
+- PSXG_RCV_DATA_BUFFER_HDR RcvDataBufferHdr;
+- PSXG_RCV_DESCRIPTOR_BLOCK RcvDescriptorBlock;
+- PSXG_CMD RingDescriptorCmd;
+- PSXG_RCV_RING RingZero = &adapter->RcvRings[0];
++ struct SXG_RING_INFO *RcvRingInfo = &adapter->RcvRingZeroInfo;
++ struct SXG_RCV_DATA_BUFFER_HDR *RcvDataBufferHdr;
++ struct SXG_RCV_DESCRIPTOR_BLOCK *RcvDescriptorBlock;
++ struct SXG_CMD *RingDescriptorCmd;
++ struct SXG_RCV_RING *RingZero = &adapter->RcvRings[0];
+
+ SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "FilBlk",
+ adapter, adapter->RcvBuffersOnCard,
+@@ -3442,7 +3442,7 @@ static int sxg_fill_descriptor_block(p_a
+ ASSERT(RingDescriptorCmd);
+ RcvDescriptorBlockHdr->State = SXG_BUFFER_ONCARD;
+ RcvDescriptorBlock =
+- (PSXG_RCV_DESCRIPTOR_BLOCK) RcvDescriptorBlockHdr->VirtualAddress;
++ (struct SXG_RCV_DESCRIPTOR_BLOCK*) RcvDescriptorBlockHdr->VirtualAddress;
+
+ /* Fill in the descriptor block */
+ for (i = 0; i < SXG_RCV_DESCRIPTORS_PER_BLOCK; i++) {
+@@ -3484,9 +3484,9 @@ static int sxg_fill_descriptor_block(p_a
+ * Return
+ * None
+ */
+-static void sxg_stock_rcv_buffers(p_adapter_t adapter)
++static void sxg_stock_rcv_buffers(struct adapter_t *adapter)
+ {
+- PSXG_RCV_DESCRIPTOR_BLOCK_HDR RcvDescriptorBlockHdr;
++ struct SXG_RCV_DESCRIPTOR_BLOCK_HDR *RcvDescriptorBlockHdr;
+
+ SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "StockBuf",
+ adapter, adapter->RcvBuffersOnCard,
+@@ -3506,14 +3506,14 @@ static void sxg_stock_rcv_buffers(p_adap
+ /* Now grab the RcvQLock lock and proceed */
+ spin_lock(&adapter->RcvQLock);
+ while (adapter->RcvBuffersOnCard < SXG_RCV_DATA_BUFFERS) {
+- PLIST_ENTRY _ple;
++ struct LIST_ENTRY *_ple;
+
+ /* Get a descriptor block */
+ RcvDescriptorBlockHdr = NULL;
+ if (adapter->FreeRcvBlockCount) {
+ _ple = RemoveHeadList(&adapter->FreeRcvBlocks);
+ RcvDescriptorBlockHdr =
+- container_of(_ple, SXG_RCV_DESCRIPTOR_BLOCK_HDR,
++ container_of(_ple, struct SXG_RCV_DESCRIPTOR_BLOCK_HDR,
+ FreeList);
+ adapter->FreeRcvBlockCount--;
+ RcvDescriptorBlockHdr->State = SXG_BUFFER_BUSY;
+@@ -3550,13 +3550,13 @@ static void sxg_stock_rcv_buffers(p_adap
+ * Return
+ * None
+ */
+-static void sxg_complete_descriptor_blocks(p_adapter_t adapter,
++static void sxg_complete_descriptor_blocks(struct adapter_t *adapter,
+ unsigned char Index)
+ {
+- PSXG_RCV_RING RingZero = &adapter->RcvRings[0];
+- PSXG_RING_INFO RcvRingInfo = &adapter->RcvRingZeroInfo;
+- PSXG_RCV_DESCRIPTOR_BLOCK_HDR RcvDescriptorBlockHdr;
+- PSXG_CMD RingDescriptorCmd;
++ struct SXG_RCV_RING *RingZero = &adapter->RcvRings[0];
++ struct SXG_RING_INFO *RcvRingInfo = &adapter->RcvRingZeroInfo;
++ struct SXG_RCV_DESCRIPTOR_BLOCK_HDR *RcvDescriptorBlockHdr;
++ struct SXG_CMD *RingDescriptorCmd;
+
+ SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "CmpRBlks",
+ adapter, Index, RcvRingInfo->Head, RcvRingInfo->Tail);
+--- a/drivers/staging/sxg/sxgdbg.h
++++ b/drivers/staging/sxg/sxgdbg.h
+@@ -86,7 +86,7 @@ extern ulong ATKTimerDiv;
+ * needs of the trace entry. Typically they are function call
+ * parameters.
+ */
+-typedef struct _trace_entry_s {
++struct trace_entry_t {
+ char name[8]; /* 8 character name - like 's'i'm'b'a'r'c'v' */
+ u32 time; /* Current clock tic */
+ unsigned char cpu; /* Current CPU */
+@@ -97,7 +97,7 @@ typedef struct _trace_entry_s {
+ u32 arg2; /* Caller arg2 */
+ u32 arg3; /* Caller arg3 */
+ u32 arg4; /* Caller arg4 */
+-} trace_entry_t, *ptrace_entry_t;
++};
+
+ /*
+ * Driver types for driver field in trace_entry_t
+@@ -108,14 +108,13 @@ typedef struct _trace_entry_s {
+
+ #define TRACE_ENTRIES 1024
+
+-typedef struct _sxg_trace_buffer_t
+-{
++struct sxg_trace_buffer_t {
+ unsigned int size; /* aid for windbg extension */
+ unsigned int in; /* Where to add */
+ unsigned int level; /* Current Trace level */
+ spinlock_t lock; /* For MP tracing */
+- trace_entry_t entries[TRACE_ENTRIES];/* The circular buffer */
+-} sxg_trace_buffer_t;
++ struct trace_entry_t entries[TRACE_ENTRIES];/* The circular buffer */
++};
+
+ /*
+ * The trace levels
+@@ -137,7 +136,7 @@ typedef struct _sxg_trace_buffer_t
+ #if ATK_TRACE_ENABLED
+ #define SXG_TRACE_INIT(buffer, tlevel) \
+ { \
+- memset((buffer), 0, sizeof(sxg_trace_buffer_t)); \
++ memset((buffer), 0, sizeof(struct sxg_trace_buffer_t)); \
+ (buffer)->level = (tlevel); \
+ (buffer)->size = TRACE_ENTRIES; \
+ spin_lock_init(&(buffer)->lock); \
+@@ -154,7 +153,7 @@ typedef struct _sxg_trace_buffer_t
+ if ((buffer) && ((buffer)->level >= (tlevel))) { \
+ unsigned int trace_irql = 0; /* ?????? FIX THIS */ \
+ unsigned int trace_len; \
+- ptrace_entry_t trace_entry; \
++ struct trace_entry_t *trace_entry; \
+ struct timeval timev; \
+ \
+ spin_lock(&(buffer)->lock); \
+--- a/drivers/staging/sxg/sxg.h
++++ b/drivers/staging/sxg/sxg.h
+@@ -45,7 +45,7 @@
+ #define p_net_device struct net_device *
+ // SXG_STATS - Probably move these to someplace where
+ // the slicstat (sxgstat?) program can get them.
+-typedef struct _SXG_STATS {
++struct SXG_STATS {
+ // Xmt
+ u32 XmtNBL; // Offload send NBL count
+ u64 DumbXmtBytes; // Dumbnic send bytes
+@@ -109,7 +109,7 @@ typedef struct _SXG_STATS {
+ u64 LinkCrc; // SXG_RCV_STATUS_LINK_CRC:
+ u64 LinkOflow; // SXG_RCV_STATUS_LINK_OFLOW:
+ u64 LinkUflow; // SXG_RCV_STATUS_LINK_UFLOW:
+-} SXG_STATS, *PSXG_STATS;
++};
+
+
+ /****************************************************************************
+@@ -215,12 +215,12 @@ typedef struct _SXG_STATS {
+ ///////////////////////////////////////////////////////////////////////////////
+ // NOTE - Lock must be held with RCV macros
+ #define SXG_GET_RCV_DATA_BUFFER(_pAdapt, _Hdr) { \
+- PLIST_ENTRY _ple; \
++ struct LIST_ENTRY *_ple; \
+ _Hdr = NULL; \
+ if((_pAdapt)->FreeRcvBufferCount) { \
+ ASSERT(!(IsListEmpty(&(_pAdapt)->FreeRcvBuffers))); \
+ _ple = RemoveHeadList(&(_pAdapt)->FreeRcvBuffers); \
+- (_Hdr) = container_of(_ple, SXG_RCV_DATA_BUFFER_HDR, FreeList); \
++ (_Hdr) = container_of(_ple, struct SXG_RCV_DATA_BUFFER_HDR, FreeList); \
+ (_pAdapt)->FreeRcvBufferCount--; \
+ ASSERT((_Hdr)->State == SXG_BUFFER_FREE); \
+ } \
+@@ -263,12 +263,12 @@ typedef struct _SXG_STATS {
+ // until after that. We're dealing with round numbers here, so we don't need to,
+ // and not grabbing it avoids a possible double-trip.
+ #define SXG_GET_SGL_BUFFER(_pAdapt, _Sgl) { \
+- PLIST_ENTRY _ple; \
++ struct LIST_ENTRY *_ple; \
+ if ((_pAdapt->FreeSglBufferCount < SXG_MIN_SGL_BUFFERS) && \
+ (_pAdapt->AllSglBufferCount < SXG_MAX_SGL_BUFFERS) && \
+ (_pAdapt->AllocationsPending == 0)) { \
+ sxg_allocate_buffer_memory(_pAdapt, \
+- (sizeof(SXG_SCATTER_GATHER) + SXG_SGL_BUF_SIZE),\
++ (sizeof(struct SXG_SCATTER_GATHER) + SXG_SGL_BUF_SIZE),\
+ SXG_BUFFER_TYPE_SGL); \
+ } \
+ _Sgl = NULL; \
+@@ -276,7 +276,7 @@ typedef struct _SXG_STATS {
+ if((_pAdapt)->FreeSglBufferCount) { \
+ ASSERT(!(IsListEmpty(&(_pAdapt)->FreeSglBuffers))); \
+ _ple = RemoveHeadList(&(_pAdapt)->FreeSglBuffers); \
+- (_Sgl) = container_of(_ple, SXG_SCATTER_GATHER, FreeList); \
++ (_Sgl) = container_of(_ple, struct SXG_SCATTER_GATHER, FreeList); \
+ (_pAdapt)->FreeSglBufferCount--; \
+ ASSERT((_Sgl)->State == SXG_BUFFER_FREE); \
+ (_Sgl)->State = SXG_BUFFER_BUSY; \
+@@ -289,17 +289,17 @@ typedef struct _SXG_STATS {
+ // SXG_MULTICAST_ADDRESS
+ //
+ // Linked list of multicast addresses.
+-typedef struct _SXG_MULTICAST_ADDRESS {
++struct SXG_MULTICAST_ADDRESS {
+ unsigned char Address[6];
+- struct _SXG_MULTICAST_ADDRESS *Next;
+-} SXG_MULTICAST_ADDRESS, *PSXG_MULTICAST_ADDRESS;
++ struct SXG_MULTICAST_ADDRESS *Next;
++};
+
+ // Structure to maintain chimney send and receive buffer queues.
+ // This structure maintains NET_BUFFER_LIST queues that are
+ // given to us via the Chimney MiniportTcpOffloadSend and
+ // MiniportTcpOffloadReceive routines. This structure DOES NOT
+ // manage our data buffer queue
+-typedef struct _SXG_BUFFER_QUEUE {
++struct SXG_BUFFER_QUEUE {
+ u32 Type; // Slow or fast - See below
+ u32 Direction; // Xmt or Rcv
+ u32 Bytes; // Byte count
+@@ -307,7 +307,7 @@ typedef struct _SXG_BUFFER_QUEUE {
+ u32 * Tail; // Send queue tail
+ // PNET_BUFFER_LIST NextNBL; // Short cut - next NBL
+ // PNET_BUFFER NextNB; // Short cut - next NB
+-} SXG_BUFFER_QUEUE, *PSXG_BUFFER_QUEUE;
++};
+
+ #define SXG_SLOW_SEND_BUFFER 0
+ #define SXG_FAST_SEND_BUFFER 1
+@@ -335,7 +335,7 @@ typedef struct _SXG_BUFFER_QUEUE {
+
+ // Adapter states - These states closely match the adapter states
+ // documented in the DDK (with a few exceptions).
+-typedef enum _SXG_STATE {
++enum SXG_STATE {
+ SXG_STATE_INITIALIZING, // Initializing
+ SXG_STATE_BOOTDIAG, // Boot-Diagnostic mode
+ SXG_STATE_PAUSING, // Pausing
+@@ -347,24 +347,24 @@ typedef enum _SXG_STATE {
+ SXG_STATE_HALTING, // Halting
+ SXG_STATE_HALTED, // Down or not-initialized
+ SXG_STATE_SHUTDOWN // shutdown
+-} SXG_STATE, *PSXG_STATE;
++};
+
+ // Link state
+-typedef enum _SXG_LINK_STATE {
++enum SXG_LINK_STATE {
+ SXG_LINK_DOWN,
+ SXG_LINK_UP
+-} SXG_LINK_STATE, *PSXG_LINK_STATE;
++};
+
+ // Link initialization timeout in 100us units
+ #define SXG_LINK_TIMEOUT 100000 // 10 Seconds - REDUCE!
+
+
+ // Microcode file selection codes
+-typedef enum _SXG_UCODE_SEL {
++enum SXG_UCODE_SEL {
+ SXG_UCODE_SAHARA, // Sahara ucode
+ SXG_UCODE_SDIAGCPU, // Sahara CPU diagnostic ucode
+ SXG_UCODE_SDIAGSYS // Sahara system diagnostic ucode
+-} SXG_UCODE_SEL;
++};
+
+
+ #define SXG_DISABLE_ALL_INTERRUPTS(_padapt) sxg_disable_interrupt(_padapt)
+@@ -384,10 +384,10 @@ typedef enum _SXG_UCODE_SEL {
+ //
+ // contains information about the sxg driver. There is only
+ // one of these, and it is defined as a global.
+-typedef struct _SXG_DRIVER {
+- struct _adapter_t *Adapters; // Linked list of adapters
++struct SXG_DRIVER {
++ struct adapter_t *Adapters; // Linked list of adapters
+ ushort AdapterID; // Maintain unique adapter ID
+-} SXG_DRIVER, *PSXG_DRIVER;
++};
+
+ #ifdef STATUS_SUCCESS
+ #undef STATUS_SUCCESS
+@@ -416,11 +416,10 @@ typedef struct _SXG_DRIVER {
+ #define MIN(a, b) ((u32)(a) < (u32)(b) ? (a) : (b))
+ #define MAX(a, b) ((u32)(a) > (u32)(b) ? (a) : (b))
+
+-typedef struct _mcast_address_t
+-{
++struct mcast_address_t {
+ unsigned char address[6];
+- struct _mcast_address_t *next;
+-} mcast_address_t, *p_mcast_address_t;
++ struct mcast_address_t *next;
++};
+
+ #define CARD_DOWN 0x00000000
+ #define CARD_UP 0x00000001
+@@ -472,41 +471,37 @@ typedef struct _mcast_address_t
+ #define SLIC_CARD_STATE(x) ((x==CARD_UP) ? "UP" : "Down")
+
+
+-typedef struct _ether_header
+-{
++struct ether_header {
+ unsigned char ether_dhost[6];
+ unsigned char ether_shost[6];
+ ushort ether_type;
+-} ether_header, *p_ether_header;
++};
+
+
+ #define NUM_CFG_SPACES 2
+ #define NUM_CFG_REGS 64
+
+-typedef struct _physcard_t
+-{
+- struct _adapter_t *adapter[SLIC_MAX_PORTS];
+- struct _physcard_t *next;
++struct physcard_t {
++ struct adapter_t *adapter[SLIC_MAX_PORTS];
++ struct physcard_t *next;
+ unsigned int adapters_allocd;
+-} physcard_t, *p_physcard_t;
++};
+
+-typedef struct _sxgbase_driver
+-{
++struct sxgbase_driver_t {
+ spinlock_t driver_lock;
+ unsigned long flags; /* irqsave for spinlock */
+ u32 num_sxg_cards;
+ u32 num_sxg_ports;
+ u32 num_sxg_ports_active;
+ u32 dynamic_intagg;
+- p_physcard_t phys_card;
+-} sxgbase_driver_t;
++ struct physcard_t *phys_card;
++};
+
+
+-typedef struct _adapter_t
+-{
++struct adapter_t {
+ void * ifp;
+ unsigned int port;
+- p_physcard_t physcard;
++ struct physcard_t *physcard;
+ unsigned int physport;
+ unsigned int cardindex;
+ unsigned int card_size;
+@@ -544,7 +539,7 @@ typedef struct _adapter_t
+ u32 macopts;
+ ushort devflags_prev;
+ u64 mcastmask;
+- p_mcast_address_t mcastaddrs;
++ struct mcast_address_t *mcastaddrs;
+ struct timer_list pingtimer;
+ u32 pingtimerset;
+ struct timer_list statstimer;
+@@ -580,11 +575,11 @@ typedef struct _adapter_t
+ u32 intagg_period;
+ struct net_device_stats stats;
+ u32 * MiniportHandle; // Our miniport handle
+- SXG_STATE State; // Adapter state
+- SXG_LINK_STATE LinkState; // Link state
++ enum SXG_STATE State; // Adapter state
++ enum SXG_LINK_STATE LinkState; // Link state
+ u64 LinkSpeed; // Link Speed
+ u32 PowerState; // NDIS power state
+- struct _adapter_t *Next; // Linked list
++ struct adapter_t *Next; // Linked list
+ ushort AdapterID; // 1..n
+ unsigned char MacAddr[6]; // Our permanent HW mac address
+ unsigned char CurrMacAddr[6]; // Our Current mac address
+@@ -592,16 +587,16 @@ typedef struct _adapter_t
+ p_net_device next_netdevice;
+ struct pci_dev * pcidev;
+
+- PSXG_MULTICAST_ADDRESS MulticastAddrs; // Multicast list
++ struct SXG_MULTICAST_ADDRESS *MulticastAddrs; // Multicast list
+ u64 MulticastMask; // Multicast mask
+ u32 * InterruptHandle; // Register Interrupt handle
+ u32 InterruptLevel; // From Resource list
+ u32 InterruptVector; // From Resource list
+ spinlock_t AdapterLock; /* Serialize access adapter routines */
+ spinlock_t Bit64RegLock; /* For writing 64-bit addresses */
+- PSXG_HW_REGS HwRegs; // Sahara HW Register Memory (BAR0/1)
+- PSXG_UCODE_REGS UcodeRegs; // Microcode Register Memory (BAR2/3)
+- PSXG_TCB_REGS TcbRegs; // Same as Ucode regs - See sxghw.h
++ struct SXG_HW_REGS *HwRegs; // Sahara HW Register Memory (BAR0/1)
++ struct SXG_UCODE_REGS *UcodeRegs; // Microcode Register Memory (BAR2/3)
++ struct SXG_TCB_REGS *TcbRegs; // Same as Ucode regs - See sxghw.h
+ ushort ResetDpcCount; // For timeout
+ ushort RssDpcCount; // For timeout
+ ushort VendorID; // Vendor ID
+@@ -613,25 +608,25 @@ typedef struct _adapter_t
+ u32 * BufferPoolHandle; // Used with NDIS 5.2 only. Don't ifdef out
+ u32 MacFilter; // NDIS MAC Filter
+ ushort IpId; // For slowpath
+- PSXG_EVENT_RING EventRings; // Host event rings. 1/CPU to 16 max
++ struct SXG_EVENT_RING *EventRings; // Host event rings. 1/CPU to 16 max
+ dma_addr_t PEventRings; // Physical address
+ u32 NextEvent[SXG_MAX_RSS]; // Current location in ring
+ dma_addr_t PTcbBuffers; // TCB Buffers - physical address
+ dma_addr_t PTcbCompBuffers; // TCB Composite Buffers - phys addr
+- PSXG_XMT_RING XmtRings; // Transmit rings
++ struct SXG_XMT_RING *XmtRings; // Transmit rings
+ dma_addr_t PXmtRings; // Transmit rings - physical address
+- SXG_RING_INFO XmtRingZeroInfo; // Transmit ring 0 info
++ struct SXG_RING_INFO XmtRingZeroInfo; // Transmit ring 0 info
+ spinlock_t XmtZeroLock; /* Transmit ring 0 lock */
+ u32 * XmtRingZeroIndex; // Shared XMT ring 0 index
+ dma_addr_t PXmtRingZeroIndex; // Shared XMT ring 0 index - physical
+- LIST_ENTRY FreeProtocolHeaders;// Free protocol headers
++ struct LIST_ENTRY FreeProtocolHeaders;// Free protocol headers
+ u32 FreeProtoHdrCount; // Count
+ void * ProtocolHeaders; // Block of protocol header
+ dma_addr_t PProtocolHeaders; // Block of protocol headers - phys
+
+- PSXG_RCV_RING RcvRings; // Receive rings
++ struct SXG_RCV_RING *RcvRings; // Receive rings
+ dma_addr_t PRcvRings; // Receive rings - physical address
+- SXG_RING_INFO RcvRingZeroInfo; // Receive ring 0 info
++ struct SXG_RING_INFO RcvRingZeroInfo; // Receive ring 0 info
+
+ u32 * Isr; // Interrupt status register
+ dma_addr_t PIsr; // ISR - physical address
+@@ -645,9 +640,9 @@ typedef struct _adapter_t
+ u32 HashInformation;
+ // Receive buffer queues
+ spinlock_t RcvQLock; /* Receive Queue Lock */
+- LIST_ENTRY FreeRcvBuffers; // Free SXG_DATA_BUFFER queue
+- LIST_ENTRY FreeRcvBlocks; // Free SXG_RCV_DESCRIPTOR_BLOCK Q
+- LIST_ENTRY AllRcvBlocks; // All SXG_RCV_BLOCKs
++ struct LIST_ENTRY FreeRcvBuffers; // Free SXG_DATA_BUFFER queue
++ struct LIST_ENTRY FreeRcvBlocks; // Free SXG_RCV_DESCRIPTOR_BLOCK Q
++ struct LIST_ENTRY AllRcvBlocks; // All SXG_RCV_BLOCKs
+ ushort FreeRcvBufferCount; // Number of free rcv data buffers
+ ushort FreeRcvBlockCount; // # of free rcv descriptor blocks
+ ushort AllRcvBlockCount; // Number of total receive blocks
+@@ -656,8 +651,8 @@ typedef struct _adapter_t
+ u32 RcvBuffersOnCard; // SXG_DATA_BUFFERS owned by card
+ // SGL buffers
+ spinlock_t SglQLock; /* SGL Queue Lock */
+- LIST_ENTRY FreeSglBuffers; // Free SXG_SCATTER_GATHER
+- LIST_ENTRY AllSglBuffers; // All SXG_SCATTER_GATHER
++ struct LIST_ENTRY FreeSglBuffers; // Free SXG_SCATTER_GATHER
++ struct LIST_ENTRY AllSglBuffers; // All SXG_SCATTER_GATHER
+ ushort FreeSglBufferCount; // Number of free SGL buffers
+ ushort AllSglBufferCount; // Number of total SGL buffers
+ u32 CurrentTime; // Tick count
+@@ -679,7 +674,7 @@ typedef struct _adapter_t
+ // Stats
+ u32 PendingRcvCount; // Outstanding rcv indications
+ u32 PendingXmtCount; // Outstanding send requests
+- SXG_STATS Stats; // Statistics
++ struct SXG_STATS Stats; // Statistics
+ u32 ReassBufs; // Number of reassembly buffers
+ // Card Crash Info
+ ushort CrashLocation; // Microcode crash location
+@@ -708,7 +703,7 @@ typedef struct _adapter_t
+ // dma_addr_t PDumpBuffer; // Physical address
+ //#endif // SXG_FAILURE_DUMP
+
+-} adapter_t, *p_adapter_t;
++};
+
+ #if SLIC_DUMP_ENABLED
+ #define SLIC_DUMP_REQUESTED 1
+@@ -721,10 +716,10 @@ typedef struct _adapter_t
+ * structure is written out to the card's SRAM when the microcode panic's.
+ *
+ ****************************************************************************/
+-typedef struct _slic_crash_info {
++struct slic_crash_info {
+ ushort cpu_id;
+ ushort crash_pc;
+-} slic_crash_info, *p_slic_crash_info;
++};
+
+ #define CRASH_INFO_OFFSET 0x155C
+
+--- a/drivers/staging/sxg/sxghif.h
++++ b/drivers/staging/sxg/sxghif.h
+@@ -12,7 +12,7 @@
+ /*******************************************************************************
+ * UCODE Registers
+ *******************************************************************************/
+-typedef struct _SXG_UCODE_REGS {
++struct SXG_UCODE_REGS {
+ // Address 0 - 0x3F = Command codes 0-15 for TCB 0. Excode 0
+ u32 Icr; // Code = 0 (extended), ExCode = 0 - Int control
+ u32 RsvdReg1; // Code = 1 - TOE -NA
+@@ -127,7 +127,7 @@ typedef struct _SXG_UCODE_REGS {
+ // base. As extended codes are added, reduce the first array value in
+ // the following field
+ u32 PadToNextCpu[94][16]; // 94 = 128 - 34 (34 = Excodes 0 - 33)
+-} SXG_UCODE_REGS, *PSXG_UCODE_REGS;
++};
+
+ // Interrupt control register (0) values
+ #define SXG_ICR_DISABLE 0x00000000
+@@ -169,7 +169,7 @@ typedef struct _SXG_UCODE_REGS {
+ * is happening is that these registers occupy the "PadEx[15]" areas in the
+ * SXG_UCODE_REGS definition above
+ */
+-typedef struct _SXG_TCB_REGS {
++struct SXG_TCB_REGS {
+ u32 ExCode; /* Extended codes - see SXG_UCODE_REGS */
+ u32 Xmt; /* Code = 1 - # of Xmt descriptors added to ring */
+ u32 Rcv; /* Code = 2 - # of Rcv descriptors added to ring */
+@@ -180,7 +180,7 @@ typedef struct _SXG_TCB_REGS {
+ u32 Rsvd4; /* Code = 7 - TOE NA */
+ u32 Rsvd5; /* Code = 8 - TOE NA */
+ u32 Pad[7]; /* Codes 8-15 - Not used. */
+-} SXG_TCB_REGS, *PSXG_TCB_REGS;
++};
+
+ /***************************************************************************
+ * ISR Format
+@@ -272,7 +272,7 @@ typedef struct _SXG_TCB_REGS {
+ *
+ */
+ #pragma pack(push, 1)
+-typedef struct _SXG_EVENT {
++struct SXG_EVENT {
+ u32 Pad[1]; // not used
+ u32 SndUna; // SndUna value
+ u32 Resid; // receive MDL resid
+@@ -294,7 +294,7 @@ typedef struct _SXG_EVENT {
+ unsigned char Code; // Event code
+ unsigned char CommandIndex; // New ring index
+ unsigned char Status; // Event status
+-} SXG_EVENT, *PSXG_EVENT;
++};
+ #pragma pack(pop)
+
+ // Event code definitions
+@@ -321,9 +321,9 @@ typedef struct _SXG_EVENT {
+ #define EVENT_RING_BATCH 16 // Hand entries back 16 at a time.
+ #define EVENT_BATCH_LIMIT 256 // Stop processing events after 256 (16 * 16)
+
+-typedef struct _SXG_EVENT_RING {
+- SXG_EVENT Ring[EVENT_RING_SIZE];
+-} SXG_EVENT_RING, *PSXG_EVENT_RING;
++struct SXG_EVENT_RING {
++ struct SXG_EVENT Ring[EVENT_RING_SIZE];
++};
+
+ /***************************************************************************
+ *
+@@ -400,12 +400,12 @@ typedef struct _SXG_EVENT_RING {
+ #define SXG_MAX_ENTRIES 4096
+
+ // Structure and macros to manage a ring
+-typedef struct _SXG_RING_INFO {
++struct SXG_RING_INFO {
+ unsigned char Head; // Where we add entries - Note unsigned char:RING_SIZE
+ unsigned char Tail; // Where we pull off completed entries
+ ushort Size; // Ring size - Must be multiple of 2
+ void *Context[SXG_MAX_RING_SIZE]; // Shadow ring
+-} SXG_RING_INFO, *PSXG_RING_INFO;
++};
+
+ #define SXG_INITIALIZE_RING(_ring, _size) { \
+ (_ring).Head = 0; \
+@@ -481,7 +481,7 @@ typedef struct _SXG_RING_INFO {
+ * |_________|_________|_________|_________|28 0x1c
+ */
+ #pragma pack(push, 1)
+-typedef struct _SXG_CMD {
++struct SXG_CMD {
+ dma_addr_t Sgl; // Physical address of SGL
+ union {
+ struct {
+@@ -518,14 +518,14 @@ typedef struct _SXG_CMD {
+ unsigned char NotUsed;
+ } Status;
+ };
+-} SXG_CMD, *PSXG_CMD;
++};
+ #pragma pack(pop)
+
+ #pragma pack(push, 1)
+-typedef struct _VLAN_HDR {
++struct VLAN_HDR {
+ ushort VlanTci;
+ ushort VlanTpid;
+-} VLAN_HDR, *PVLAN_HDR;
++};
+ #pragma pack(pop)
+
+ /*
+@@ -564,22 +564,22 @@ typedef struct _VLAN_HDR {
+ #define SXG_SLOWCMD_CSUM_TCP 0x02 // Checksum TCP
+ #define SXG_SLOWCMD_LSO 0x04 // Large segment send
+
+-typedef struct _SXG_XMT_RING {
+- SXG_CMD Descriptors[SXG_XMT_RING_SIZE];
+-} SXG_XMT_RING, *PSXG_XMT_RING;
+-
+-typedef struct _SXG_RCV_RING {
+- SXG_CMD Descriptors[SXG_RCV_RING_SIZE];
+-} SXG_RCV_RING, *PSXG_RCV_RING;
++struct SXG_XMT_RING {
++ struct SXG_CMD Descriptors[SXG_XMT_RING_SIZE];
++};
++
++struct SXG_RCV_RING {
++ struct SXG_CMD Descriptors[SXG_RCV_RING_SIZE];
++};
+
+ /***************************************************************************
+ * Share memory buffer types - Used to identify asynchronous
+ * shared memory allocation
+ ***************************************************************************/
+-typedef enum {
++enum SXG_BUFFER_TYPE {
+ SXG_BUFFER_TYPE_RCV, // Receive buffer
+ SXG_BUFFER_TYPE_SGL // SGL buffer
+-} SXG_BUFFER_TYPE;
++};
+
+ // State for SXG buffers
+ #define SXG_BUFFER_FREE 0x01
+@@ -670,19 +670,19 @@ typedef enum {
+ #define SXG_MAX_RCV_BLOCKS 128 // = 16384 receive buffers
+
+ // Receive buffer header
+-typedef struct _SXG_RCV_DATA_BUFFER_HDR {
++struct SXG_RCV_DATA_BUFFER_HDR {
+ dma_addr_t PhysicalAddress; // Buffer physical address
+ // Note - DO NOT USE the VirtualAddress field to locate data.
+ // Use the sxg.h:SXG_RECEIVE_DATA_LOCATION macro instead.
+ void *VirtualAddress; // Start of buffer
+- LIST_ENTRY FreeList; // Free queue of buffers
+- struct _SXG_RCV_DATA_BUFFER_HDR *Next; // Fastpath data buffer queue
++ struct LIST_ENTRY FreeList; // Free queue of buffers
++ struct SXG_RCV_DATA_BUFFER_HDR *Next; // Fastpath data buffer queue
+ u32 Size; // Buffer size
+ u32 ByteOffset; // See SXG_RESTORE_MDL_OFFSET
+ unsigned char State; // See SXG_BUFFER state above
+ unsigned char Status; // Event status (to log PUSH)
+ struct sk_buff *skb; // Double mapped (nbl and pkt)
+-} SXG_RCV_DATA_BUFFER_HDR, *PSXG_RCV_DATA_BUFFER_HDR;
++};
+
+ // SxgSlowReceive uses the PACKET (skb) contained
+ // in the SXG_RCV_DATA_BUFFER_HDR when indicating dumb-nic data
+@@ -693,42 +693,43 @@ typedef struct _SXG_RCV_DATA_BUFFER_HDR
+ #define SXG_RCV_JUMBO_BUFFER_SIZE 10240 // jumbo = 10k including HDR
+
+ // Receive data descriptor
+-typedef struct _SXG_RCV_DATA_DESCRIPTOR {
++struct SXG_RCV_DATA_DESCRIPTOR {
+ union {
+ struct sk_buff *VirtualAddress; // Host handle
+ u64 ForceTo8Bytes; // Force x86 to 8-byte boundary
+ };
+ dma_addr_t PhysicalAddress;
+-} SXG_RCV_DATA_DESCRIPTOR, *PSXG_RCV_DATA_DESCRIPTOR;
++};
+
+ // Receive descriptor block
+ #define SXG_RCV_DESCRIPTORS_PER_BLOCK 128
+ #define SXG_RCV_DESCRIPTOR_BLOCK_SIZE 2048 // For sanity check
+-typedef struct _SXG_RCV_DESCRIPTOR_BLOCK {
+- SXG_RCV_DATA_DESCRIPTOR Descriptors[SXG_RCV_DESCRIPTORS_PER_BLOCK];
+-} SXG_RCV_DESCRIPTOR_BLOCK, *PSXG_RCV_DESCRIPTOR_BLOCK;
++
++struct SXG_RCV_DESCRIPTOR_BLOCK {
++ struct SXG_RCV_DATA_DESCRIPTOR Descriptors[SXG_RCV_DESCRIPTORS_PER_BLOCK];
++};
+
+ // Receive descriptor block header
+-typedef struct _SXG_RCV_DESCRIPTOR_BLOCK_HDR {
++struct SXG_RCV_DESCRIPTOR_BLOCK_HDR {
+ void *VirtualAddress; // Start of 2k buffer
+ dma_addr_t PhysicalAddress; // ..and it's physical address
+- LIST_ENTRY FreeList; // Free queue of descriptor blocks
++ struct LIST_ENTRY FreeList; // Free queue of descriptor blocks
+ unsigned char State; // See SXG_BUFFER state above
+-} SXG_RCV_DESCRIPTOR_BLOCK_HDR, *PSXG_RCV_DESCRIPTOR_BLOCK_HDR;
++};
+
+ // Receive block header
+-typedef struct _SXG_RCV_BLOCK_HDR {
++struct SXG_RCV_BLOCK_HDR {
+ void *VirtualAddress; // Start of virtual memory
+ dma_addr_t PhysicalAddress; // ..and it's physical address
+- LIST_ENTRY AllList; // Queue of all SXG_RCV_BLOCKS
+-} SXG_RCV_BLOCK_HDR, *PSXG_RCV_BLOCK_HDR;
++ struct LIST_ENTRY AllList; // Queue of all SXG_RCV_BLOCKS
++};
+
+ // Macros to determine data structure offsets into receive block
+ #define SXG_RCV_BLOCK_SIZE(_Buffersize) \
+ (((_Buffersize) * SXG_RCV_DESCRIPTORS_PER_BLOCK) + \
+- (sizeof(SXG_RCV_DESCRIPTOR_BLOCK)) + \
+- (sizeof(SXG_RCV_DESCRIPTOR_BLOCK_HDR)) + \
+- (sizeof(SXG_RCV_BLOCK_HDR)))
++ (sizeof(struct SXG_RCV_DESCRIPTOR_BLOCK)) + \
++ (sizeof(struct SXG_RCV_DESCRIPTOR_BLOCK_HDR)) + \
++ (sizeof(struct SXG_RCV_BLOCK_HDR)))
+ #define SXG_RCV_BUFFER_DATA_SIZE(_Buffersize) \
+ ((_Buffersize) - SXG_RCV_DATA_HDR_SIZE)
+ #define SXG_RCV_DATA_BUFFER_HDR_OFFSET(_Buffersize) \
+@@ -737,18 +738,18 @@ typedef struct _SXG_RCV_BLOCK_HDR {
+ ((_Buffersize) * SXG_RCV_DESCRIPTORS_PER_BLOCK)
+ #define SXG_RCV_DESCRIPTOR_BLOCK_HDR_OFFSET(_Buffersize) \
+ (((_Buffersize) * SXG_RCV_DESCRIPTORS_PER_BLOCK) + \
+- (sizeof(SXG_RCV_DESCRIPTOR_BLOCK)))
++ (sizeof(struct SXG_RCV_DESCRIPTOR_BLOCK)))
+ #define SXG_RCV_BLOCK_HDR_OFFSET(_Buffersize) \
+ (((_Buffersize) * SXG_RCV_DESCRIPTORS_PER_BLOCK) + \
+- (sizeof(SXG_RCV_DESCRIPTOR_BLOCK)) + \
+- (sizeof(SXG_RCV_DESCRIPTOR_BLOCK_HDR)))
++ (sizeof(struct SXG_RCV_DESCRIPTOR_BLOCK)) + \
++ (sizeof(struct SXG_RCV_DESCRIPTOR_BLOCK_HDR)))
+
+ // Use the miniport reserved portion of the NBL to locate
+ // our SXG_RCV_DATA_BUFFER_HDR structure.
+-typedef struct _SXG_RCV_NBL_RESERVED {
+- PSXG_RCV_DATA_BUFFER_HDR RcvDataBufferHdr;
++struct SXG_RCV_NBL_RESERVED {
++ struct SXG_RCV_DATA_BUFFER_HDR *RcvDataBufferHdr;
+ void *Available;
+-} SXG_RCV_NBL_RESERVED, *PSXG_RCV_NBL_RESERVED;
++};
+
+ #define SXG_RCV_NBL_BUFFER_HDR(_NBL) (((PSXG_RCV_NBL_RESERVED)NET_BUFFER_LIST_MINIPORT_RESERVED(_NBL))->RcvDataBufferHdr)
+
+@@ -760,11 +761,11 @@ typedef struct _SXG_RCV_NBL_RESERVED {
+ #define SXG_MAX_SGL_BUFFERS 16384 // Maximum to allocate (note ADAPT:ushort)
+
+ // Self identifying structure type
+-typedef enum _SXG_SGL_TYPE {
++enum SXG_SGL_TYPE {
+ SXG_SGL_DUMB, // Dumb NIC SGL
+ SXG_SGL_SLOW, // Slowpath protocol header - see below
+ SXG_SGL_CHIMNEY // Chimney offload SGL
+-} SXG_SGL_TYPE, PSXG_SGL_TYPE;
++};
+
+ // Note - the description below is Microsoft specific
+ //
+@@ -798,41 +799,41 @@ typedef enum _SXG_SGL_TYPE {
+ // to the card directly. For x86 systems we must reconstruct
+ // the SGL. The following structure defines an x64
+ // formatted SGL entry
+-typedef struct _SXG_X64_SGE {
++struct SXG_X64_SGE {
+ dma64_addr_t Address; // same as wdm.h
+ u32 Length; // same as wdm.h
+ u32 CompilerPad; // The compiler pads to 8-bytes
+ u64 Reserved; // u32 * in wdm.h. Force to 8 bytes
+-} SXG_X64_SGE, *PSXG_X64_SGE;
++};
+
+-typedef struct _SCATTER_GATHER_ELEMENT {
++struct SCATTER_GATHER_ELEMENT {
+ dma64_addr_t Address; // same as wdm.h
+ u32 Length; // same as wdm.h
+ u32 CompilerPad; // The compiler pads to 8-bytes
+ u64 Reserved; // u32 * in wdm.h. Force to 8 bytes
+-} SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT;
++};
+
+-typedef struct _SCATTER_GATHER_LIST {
++struct SCATTER_GATHER_LIST {
+ u32 NumberOfElements;
+ u32 *Reserved;
+- SCATTER_GATHER_ELEMENT Elements[];
+-} SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST;
++ struct SCATTER_GATHER_ELEMENT Elements[];
++};
+
+ // The card doesn't care about anything except elements, so
+ // we can leave the u32 * reserved field alone in the following
+ // SGL structure. But redefine from wdm.h:SCATTER_GATHER_LIST so
+ // we can specify SXG_X64_SGE and define a fixed number of elements
+-typedef struct _SXG_X64_SGL {
++struct SXG_X64_SGL {
+ u32 NumberOfElements;
+ u32 *Reserved;
+- SXG_X64_SGE Elements[SXG_SGL_ENTRIES];
+-} SXG_X64_SGL, *PSXG_X64_SGL;
++ struct SXG_X64_SGE Elements[SXG_SGL_ENTRIES];
++};
+
+-typedef struct _SXG_SCATTER_GATHER {
+- SXG_SGL_TYPE Type; // FIRST! Dumb-nic or offload
++struct SXG_SCATTER_GATHER {
++ enum SXG_SGL_TYPE Type; // FIRST! Dumb-nic or offload
+ void *adapter; // Back pointer to adapter
+- LIST_ENTRY FreeList; // Free SXG_SCATTER_GATHER blocks
+- LIST_ENTRY AllList; // All SXG_SCATTER_GATHER blocks
++ struct LIST_ENTRY FreeList; // Free SXG_SCATTER_GATHER blocks
++ struct LIST_ENTRY AllList; // All SXG_SCATTER_GATHER blocks
+ dma_addr_t PhysicalAddress; // physical address
+ unsigned char State; // See SXG_BUFFER state above
+ unsigned char CmdIndex; // Command ring index
+@@ -840,14 +841,14 @@ typedef struct _SXG_SCATTER_GATHER {
+ u32 Direction; // For asynchronous completions
+ u32 CurOffset; // Current SGL offset
+ u32 SglRef; // SGL reference count
+- VLAN_HDR VlanTag; // VLAN tag to be inserted into SGL
+- PSCATTER_GATHER_LIST pSgl; // SGL Addr. Possibly &Sgl
+- SXG_X64_SGL Sgl; // SGL handed to card
+-} SXG_SCATTER_GATHER, *PSXG_SCATTER_GATHER;
++ struct VLAN_HDR VlanTag; // VLAN tag to be inserted into SGL
++ struct SCATTER_GATHER_LIST *pSgl; // SGL Addr. Possibly &Sgl
++ struct SXG_X64_SGL Sgl; // SGL handed to card
++};
+
+ #if defined(CONFIG_X86_64)
+ #define SXG_SGL_BUFFER(_SxgSgl) (&_SxgSgl->Sgl)
+-#define SXG_SGL_BUF_SIZE sizeof(SXG_X64_SGL)
++#define SXG_SGL_BUF_SIZE sizeof(struct SXG_X64_SGL)
+ #elif defined(CONFIG_X86)
+ // Force NDIS to give us it's own buffer so we can reformat to our own
+ #define SXG_SGL_BUFFER(_SxgSgl) NULL
+--- a/drivers/staging/sxg/sxghw.h
++++ b/drivers/staging/sxg/sxghw.h
+@@ -48,7 +48,7 @@
+ #define SXG_HWREG_MEMSIZE 0x4000 // 16k
+
+ #pragma pack(push, 1)
+-typedef struct _SXG_HW_REGS {
++struct SXG_HW_REGS {
+ u32 Reset; // Write 0xdead to invoke soft reset
+ u32 Pad1; // No register defined at offset 4
+ u32 InterruptMask0; // Deassert legacy interrupt on function 0
+@@ -113,7 +113,7 @@ typedef struct _SXG_HW_REGS {
+ u32 Software[1920]; // 0x200 - 0x2000 - Software defined (not used)
+ u32 MsixTable[1024]; // 0x2000 - 0x3000 - MSIX Table
+ u32 MsixBitArray[1024]; // 0x3000 - 0x4000 - MSIX Pending Bit Array
+-} SXG_HW_REGS, *PSXG_HW_REGS;
++};
+ #pragma pack(pop)
+
+ // Microcode Address Flags
+@@ -519,10 +519,10 @@ typedef struct _SXG_HW_REGS {
+ #define XS_LANE_ALIGN 0x1000 // XS transmit lanes aligned
+
+ // PHY Microcode download data structure
+-typedef struct _PHY_UCODE {
++struct PHY_UCODE {
+ ushort Addr;
+ ushort Data;
+-} PHY_UCODE, *PPHY_UCODE;
++};
+
+
+ /*****************************************************************************
+@@ -537,7 +537,7 @@ typedef struct _PHY_UCODE {
+ // all commands - see the Sahara spec for details. Note that this structure is
+ // only valid when compiled on a little endian machine.
+ #pragma pack(push, 1)
+-typedef struct _XMT_DESC {
++struct XMT_DESC {
+ ushort XmtLen; // word 0, bits [15:0] - transmit length
+ unsigned char XmtCtl; // word 0, bits [23:16] - transmit control byte
+ unsigned char Cmd; // word 0, bits [31:24] - transmit command plus misc.
+@@ -551,7 +551,7 @@ typedef struct _XMT_DESC {
+ u32 Rsvd3; // word 5, bits [31:0] - PAD
+ u32 Rsvd4; // word 6, bits [31:0] - PAD
+ u32 Rsvd5; // word 7, bits [31:0] - PAD
+-} XMT_DESC, *PXMT_DESC;
++};
+ #pragma pack(pop)
+
+ // XMT_DESC Cmd byte definitions
+@@ -600,7 +600,7 @@ typedef struct _XMT_DESC {
+ // Format of the 18 byte Receive Buffer returned by the
+ // Receive Sequencer for received packets
+ #pragma pack(push, 1)
+-typedef struct _RCV_BUF_HDR {
++struct RCV_BUF_HDR {
+ u32 Status; // Status word from Rcv Seq Parser
+ ushort Length; // Rcv packet byte count
+ union {
+@@ -615,7 +615,7 @@ typedef struct _RCV_BUF_HDR {
+ unsigned char IpHdrOffset; // IP header offset into packet
+ u32 TpzHash; // Toeplitz hash
+ ushort Reserved; // Reserved
+-} RCV_BUF_HDR, *PRCV_BUF_HDR;
++};
+ #pragma pack(pop)
+
+
+@@ -665,28 +665,28 @@ typedef struct _RCV_BUF_HDR {
+ #pragma pack(push, 1)
+
+ /* */
+-typedef struct _HW_CFG_DATA {
++struct HW_CFG_DATA {
+ ushort Addr;
+ union {
+ ushort Data;
+ ushort Checksum;
+ };
+-} HW_CFG_DATA, *PHW_CFG_DATA;
++};
+
+ /* */
+-#define NUM_HW_CFG_ENTRIES ((128/sizeof(HW_CFG_DATA)) - 4)
++#define NUM_HW_CFG_ENTRIES ((128/sizeof(struct HW_CFG_DATA)) - 4)
+
+ /* MAC address */
+-typedef struct _SXG_CONFIG_MAC {
++struct SXG_CONFIG_MAC {
+ unsigned char MacAddr[6]; /* MAC Address */
+-} SXG_CONFIG_MAC, *PSXG_CONFIG_MAC;
++};
+
+ /* */
+-typedef struct _ATK_FRU {
++struct ATK_FRU {
+ unsigned char PartNum[6];
+ unsigned char Revision[2];
+ unsigned char Serial[14];
+-} ATK_FRU, *PATK_FRU;
++};
+
+ /* OEM FRU Format types */
+ #define ATK_FRU_FORMAT 0x0000
+@@ -698,24 +698,24 @@ typedef struct _ATK_FRU {
+ #define NO_FRU_FORMAT 0xFFFF
+
+ /* EEPROM/Flash Format */
+-typedef struct _SXG_CONFIG {
++struct SXG_CONFIG {
+ /* */
+ /* Section 1 (128 bytes) */
+ /* */
+ ushort MagicWord; /* EEPROM/FLASH Magic code 'A5A5' */
+ ushort SpiClks; /* SPI bus clock dividers */
+- HW_CFG_DATA HwCfg[NUM_HW_CFG_ENTRIES];
++ struct HW_CFG_DATA HwCfg[NUM_HW_CFG_ENTRIES];
+ /* */
+ /* */
+ /* */
+ ushort Version; /* EEPROM format version */
+- SXG_CONFIG_MAC MacAddr[4]; /* space for 4 MAC addresses */
+- ATK_FRU AtkFru; /* FRU information */
++ struct SXG_CONFIG_MAC MacAddr[4]; /* space for 4 MAC addresses */
++ struct ATK_FRU AtkFru; /* FRU information */
+ ushort OemFruFormat; /* OEM FRU format type */
+ unsigned char OemFru[76]; /* OEM FRU information (optional) */
+ ushort Checksum; /* Checksum of section 2 */
+ /* CS info XXXTODO */
+-} SXG_CONFIG, *PSXG_CONFIG;
++};
+ #pragma pack(pop)
+
+ /*****************************************************************************
+--- a/drivers/staging/sxg/sxg_os.h
++++ b/drivers/staging/sxg/sxg_os.h
+@@ -44,10 +44,10 @@
+ #define FALSE (0)
+ #define TRUE (1)
+
+-typedef struct _LIST_ENTRY {
+- struct _LIST_ENTRY *nle_flink;
+- struct _LIST_ENTRY *nle_blink;
+-} list_entry, LIST_ENTRY, *PLIST_ENTRY;
++struct LIST_ENTRY {
++ struct LIST_ENTRY *nle_flink;
++ struct LIST_ENTRY *nle_blink;
++};
+
+ #define InitializeListHead(l) \
+ (l)->nle_flink = (l)->nle_blink = (l)
+@@ -68,10 +68,10 @@ typedef struct _LIST_ENTRY {
+
+ /* These two have to be inlined since they return things. */
+
+-static __inline PLIST_ENTRY RemoveHeadList(list_entry * l)
++static __inline struct LIST_ENTRY *RemoveHeadList(struct LIST_ENTRY *l)
+ {
+- list_entry *f;
+- list_entry *e;
++ struct LIST_ENTRY *f;
++ struct LIST_ENTRY *e;
+
+ e = l->nle_flink;
+ f = e->nle_flink;
+@@ -81,10 +81,10 @@ static __inline PLIST_ENTRY RemoveHeadLi
+ return (e);
+ }
+
+-static __inline PLIST_ENTRY RemoveTailList(list_entry * l)
++static __inline struct LIST_ENTRY *RemoveTailList(struct LIST_ENTRY *l)
+ {
+- list_entry *b;
+- list_entry *e;
++ struct LIST_ENTRY *b;
++ struct LIST_ENTRY *e;
+
+ e = l->nle_blink;
+ b = e->nle_blink;
+@@ -96,7 +96,7 @@ static __inline PLIST_ENTRY RemoveTailLi
+
+ #define InsertTailList(l, e) \
+ do { \
+- list_entry *b; \
++ struct LIST_ENTRY *b; \
+ \
+ b = (l)->nle_blink; \
+ (e)->nle_flink = (l); \
+@@ -107,7 +107,7 @@ static __inline PLIST_ENTRY RemoveTailLi
+
+ #define InsertHeadList(l, e) \
+ do { \
+- list_entry *f; \
++ struct LIST_ENTRY *f; \
+ \
+ f = (l)->nle_flink; \
+ (e)->nle_flink = f; \
+--- a/drivers/staging/sxg/sxgphycode.h
++++ b/drivers/staging/sxg/sxgphycode.h
+@@ -18,7 +18,7 @@
+ /*
+ * Download for AEL2005C PHY with SR/LR transceiver (10GBASE-SR or 10GBASE-LR)
+ */
+-static PHY_UCODE PhyUcode[] = {
++static struct PHY_UCODE PhyUcode[] = {
+ /*
+ * NOTE: An address of 0 is a special case. When the download routine
+ * sees an address of 0, it does not write to the PHY. Instead, it
diff --git a/staging/staging-w35und-move-supported-band-initialization-out-of-wb35_probe.patch b/staging/staging-w35und-move-supported-band-initialization-out-of-wb35_probe.patch
new file mode 100644
index 00000000000000..73361174e890af
--- /dev/null
+++ b/staging/staging-w35und-move-supported-band-initialization-out-of-wb35_probe.patch
@@ -0,0 +1,60 @@
+From penberg@cs.helsinki.fi Wed Oct 29 10:35:28 2008
+From: Pekka J Enberg <penberg@cs.helsinki.fi>
+Date: Tue, 28 Oct 2008 00:20:03 +0200 (EET)
+Subject: Staging: w35und: move supported band initialization out of wb35_probe()
+To: greg@kroah.com
+Cc: pavel@suse.cz, linux-kernel@vger.kernel.org
+Message-ID: <Pine.LNX.4.64.0810280019330.9949@melkki.cs.Helsinki.FI>
+
+
+From: Pekka Enberg <penberg@cs.helsinki.fi>
+
+This patch moves the static struct ieee80211_supported_band initialization out
+of w35_probe() because it's really global read-only configuration data.
+
+Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
+Acked-by: Pavel Machek <pavel@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/winbond/linux/wbusb.c | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+--- a/drivers/staging/winbond/linux/wbusb.c
++++ b/drivers/staging/winbond/linux/wbusb.c
+@@ -32,6 +32,13 @@ static struct ieee80211_channel wbsoft_c
+ { .center_freq = 2412},
+ };
+
++static struct ieee80211_supported_band wbsoft_band_2GHz = {
++ .channels = wbsoft_channels,
++ .n_channels = ARRAY_SIZE(wbsoft_channels),
++ .bitrates = wbsoft_rates,
++ .n_bitrates = ARRAY_SIZE(wbsoft_rates),
++};
++
+ int wbsoft_enabled;
+ struct ieee80211_hw *my_dev;
+ struct wb35_adapter * my_adapter;
+@@ -192,7 +199,6 @@ static int wb35_probe(struct usb_interfa
+ struct usb_device *udev = interface_to_usbdev(intf);
+ struct wbsoft_priv *priv;
+ struct ieee80211_hw *dev;
+- static struct ieee80211_supported_band band;
+ int err;
+
+ usb_get_dev(udev);
+@@ -253,12 +259,8 @@ static int wb35_probe(struct usb_interfa
+ dev->channel_change_time = 1000;
+ dev->queues = 1;
+
+- band.channels = wbsoft_channels;
+- band.n_channels = ARRAY_SIZE(wbsoft_channels);
+- band.bitrates = wbsoft_rates;
+- band.n_bitrates = ARRAY_SIZE(wbsoft_rates);
++ dev->wiphy->bands[IEEE80211_BAND_2GHZ] = &wbsoft_band_2GHz;
+
+- dev->wiphy->bands[IEEE80211_BAND_2GHZ] = &band;
+ err = ieee80211_register_hw(dev);
+ if (err)
+ goto error_free_hw;
diff --git a/staging/staging-w35und-os_memory_alloc-wrapper-removal.patch b/staging/staging-w35und-os_memory_alloc-wrapper-removal.patch
index e653afc0dc5506..048268b5d5c840 100644
--- a/staging/staging-w35und-os_memory_alloc-wrapper-removal.patch
+++ b/staging/staging-w35und-os_memory_alloc-wrapper-removal.patch
@@ -11,7 +11,7 @@ From: Pekka Enberg <penberg@cs.helsinki.fi>
This patch removes the rather scary OS_MEMORY_ALLOC macro.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
-Cc: Pavel Machek <pavel@suse.cz>
+Acked-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
diff --git a/staging/staging-w35und-plug-memory-leak-in-wbsoft_tx.patch b/staging/staging-w35und-plug-memory-leak-in-wbsoft_tx.patch
new file mode 100644
index 00000000000000..2747536f411bab
--- /dev/null
+++ b/staging/staging-w35und-plug-memory-leak-in-wbsoft_tx.patch
@@ -0,0 +1,38 @@
+From penberg@cs.helsinki.fi Wed Oct 29 10:34:59 2008
+From: Pekka J Enberg <penberg@cs.helsinki.fi>
+Date: Tue, 28 Oct 2008 00:14:38 +0200 (EET)
+Subject: Staging: w35und: plug memory leak in wbsoft_tx()
+To: greg@kroah.com
+Cc: pavel@suse.cz, linux-kernel@vger.kernel.org
+Message-ID: <Pine.LNX.4.64.0810280014140.9821@melkki.cs.Helsinki.FI>
+
+From: Pekka Enberg <penberg@cs.helsinki.fi>
+
+There's no reason to duplicate the skb in wbsoft_tx() and leak GFP_ATOMIC
+memory as the contents are copied to ->TxBuffer in MdxTx() anyway before
+MLMESendFrame() returns.
+
+Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
+Acked-by: Pavel Machek <pavel@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/winbond/linux/wbusb.c | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+--- a/drivers/staging/winbond/linux/wbusb.c
++++ b/drivers/staging/winbond/linux/wbusb.c
+@@ -107,11 +107,8 @@ static void wbsoft_configure_filter(stru
+
+ static int wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
+ {
+- char *buffer = kmalloc(skb->len, GFP_ATOMIC);
+- printk("Sending frame %d bytes\n", skb->len);
+- memcpy(buffer, skb->data, skb->len);
+- if (1 == MLMESendFrame(my_adapter, buffer, skb->len, FRAME_TYPE_802_11_MANAGEMENT))
+- printk("frame sent ok (%d bytes)?\n", skb->len);
++ MLMESendFrame(my_adapter, skb->data, skb->len, FRAME_TYPE_802_11_MANAGEMENT);
++
+ return NETDEV_TX_OK;
+ }
+
diff --git a/staging/staging-w35und-remove-macro-magic-from-mlme_getnextpacket.patch b/staging/staging-w35und-remove-macro-magic-from-mlme_getnextpacket.patch
new file mode 100644
index 00000000000000..b49c97c7cd1389
--- /dev/null
+++ b/staging/staging-w35und-remove-macro-magic-from-mlme_getnextpacket.patch
@@ -0,0 +1,54 @@
+From penberg@cs.helsinki.fi Wed Oct 29 10:34:34 2008
+From: Pekka J Enberg <penberg@cs.helsinki.fi>
+Date: Tue, 28 Oct 2008 00:14:14 +0200 (EET)
+Subject: Staging: w35und: remove macro magic from MLME_GetNextPacket()
+To: greg@kroah.com
+Cc: pavel@suse.cz, linux-kernel@vger.kernel.org
+Message-ID: <Pine.LNX.4.64.0810280013460.9821@melkki.cs.Helsinki.FI>
+
+
+From: Pekka Enberg <penberg@cs.helsinki.fi>
+
+This removes the macro magic from MLME_GetNextPacket() to de-obfuscate the
+code.
+
+Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
+Acked-by: Pavel Machek <pavel@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/winbond/mlmetxrx.c | 22 ++++++++--------------
+ 1 file changed, 8 insertions(+), 14 deletions(-)
+
+--- a/drivers/staging/winbond/mlmetxrx.c
++++ b/drivers/staging/winbond/mlmetxrx.c
+@@ -96,21 +96,15 @@ u8 MLMESendFrame(struct wb35_adapter * a
+ return true;
+ }
+
+-void
+-MLME_GetNextPacket(struct wb35_adapter * adapter, PDESCRIPTOR pDes)
++void MLME_GetNextPacket(struct wb35_adapter *adapter, PDESCRIPTOR desc)
+ {
+-#define DESCRIPTOR_ADD_BUFFER( _D, _A, _S ) \
+-{\
+- _D->InternalUsed = _D->buffer_start_index + _D->buffer_number; \
+- _D->InternalUsed %= MAX_DESCRIPTOR_BUFFER_INDEX; \
+- _D->buffer_address[ _D->InternalUsed ] = _A; \
+- _D->buffer_size[ _D->InternalUsed ] = _S; \
+- _D->buffer_total_size += _S; \
+- _D->buffer_number++;\
+-}
+-
+- DESCRIPTOR_ADD_BUFFER( pDes, adapter->sMlmeFrame.pMMPDU, adapter->sMlmeFrame.len );
+- pDes->Type = adapter->sMlmeFrame.DataType;
++ desc->InternalUsed = desc->buffer_start_index + desc->buffer_number;
++ desc->InternalUsed %= MAX_DESCRIPTOR_BUFFER_INDEX;
++ desc->buffer_address[desc->InternalUsed] = adapter->sMlmeFrame.pMMPDU;
++ desc->buffer_size[desc->InternalUsed] = adapter->sMlmeFrame.len;
++ desc->buffer_total_size += adapter->sMlmeFrame.len;
++ desc->buffer_number++;
++ desc->Type = adapter->sMlmeFrame.DataType;
+ }
+
+ void MLMEfreeMMPDUBuffer(struct wb35_adapter * adapter, s8 *pData)
diff --git a/staging/staging-w35und-remove-true-false-boolean-macros.patch b/staging/staging-w35und-remove-true-false-boolean-macros.patch
index 752da8af8b79d6..60f894cf7a23f3 100644
--- a/staging/staging-w35und-remove-true-false-boolean-macros.patch
+++ b/staging/staging-w35und-remove-true-false-boolean-macros.patch
@@ -12,7 +12,7 @@ Use the kernel built-in true and false boolean values instead of duplicating
them in the driver code.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
-Cc: Pavel Machek <pavel@suse.cz>
+Acked-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
diff --git a/staging/staging-w35und-usb_put_dev-is-missing-from-wb35_disconnect.patch b/staging/staging-w35und-usb_put_dev-is-missing-from-wb35_disconnect.patch
new file mode 100644
index 00000000000000..b86f077d324c73
--- /dev/null
+++ b/staging/staging-w35und-usb_put_dev-is-missing-from-wb35_disconnect.patch
@@ -0,0 +1,49 @@
+From penberg@cs.helsinki.fi Wed Oct 29 10:34:13 2008
+From: Pekka J Enberg <penberg@cs.helsinki.fi>
+Date: Mon, 27 Oct 2008 23:29:31 +0200 (EET)
+Subject: Staging: w35und: usb_put_dev() is missing from wb35_disconnect()
+To: greg@kroah.com
+Cc: pavel@suse.cz, linux-kernel@vger.kernel.org
+Message-ID: <Pine.LNX.4.64.0810272328430.8946@melkki.cs.Helsinki.FI>
+
+
+From: Pekka Enberg <penberg@cs.helsinki.fi>
+
+The wb35_probe() function does usb_get_dev() so add a missing usb_put_dev() to
+the wb35_disconnect() function. Also fix error handling paths in wb35_probe()
+to call usb_put_dev() as well.
+
+Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
+Acked-by: Pavel Machek <pavel@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/winbond/linux/wbusb.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/staging/winbond/linux/wbusb.c
++++ b/drivers/staging/winbond/linux/wbusb.c
+@@ -275,6 +275,7 @@ error_free_hw:
+ error_free_adapter:
+ kfree(adapter);
+ error:
++ usb_put_dev(udev);
+ return err;
+ }
+
+@@ -308,12 +309,12 @@ void packet_came(char *pRxBufferAddress,
+
+ static void wb35_disconnect(struct usb_interface *intf)
+ {
+- struct wb35_adapter * adapter = usb_get_intfdata(intf);
+- usb_set_intfdata(intf, NULL);
++ struct wb35_adapter *adapter = usb_get_intfdata(intf);
+
+- // Card remove
+ WbWlanHalt(adapter);
+
++ usb_set_intfdata(intf, NULL);
++ usb_put_dev(interface_to_usbdev(intf));
+ }
+
+ static struct usb_driver wb35_driver = {