[Prism54-devel] [PATCH] prism54 tree sync update

Luis R. Rodriguez Luis R. Rodriguez" <mcgrof@ruslug.rutgers.edu
Wed, 17 Mar 2004 01:36:59 -0500


--+9faIjRurCDpBc7U
Content-Type: multipart/mixed; boundary="kH8JNVvasRCCW1Oz"
Content-Disposition: inline


--kH8JNVvasRCCW1Oz
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable


Attached patch has been well tested. It updates 2.6.5-rc1 prism54
sources to our latest work (which had also previously been tested).
Some additional new kernel updates were integrated as well.

Here is the ChangeLog:

	* wireless/Kconfig: fix typos, add SMC2835W-V2
	* islpci_hotplug.c: new version 1.1, authors list, and
	module description updated appropriately
	* isl_ioctl.c, islpci_dev.c,=20
	islpci_eth.c, islpci_hotplug.c, islpci_mgt.c:=20
	s/ndev->priv/netdev_priv(ndev)/g
	* islpci_hotplug.c: Add PCI ID values for SMC2835W-V2 cardbus card
	Patch by Manuel Lauss <manuel.lauss@fh-hagenberg.at>
	* isl_38xx.[ch]: include firmware.h in header, remove
	declaration of headers in c file. Fix compiler warnings.
	* islpci_dev.c (islpci_alloc_memory),
	* islpci_eth.c (islpci_eth_cleanup_transmit,=20
	islpci_eth_transmit, islpci_eth_receive): deal with skb stray=20
	pointer, declare NULL.
	* isl_38xx.c: remove unecessary __KERNEL_SYSCALLS__ and
	re-ordered headers per vger.kernel.org - liking.
	* isl_ioctl.c, islpci_mgt.c: move from MODULE_PARAM to the new
	module_param, which is type-safe. Includes the new=20
	<linux/moduleparam.h>.
	* isl_ioctl.c (prism54_[s|g]et_[maxframeburst|profile]): added.
	Not adding ioctls as ajfa is working on moving current private ioctls
	to subioctls.
	* isl_oid.h (dot11_[maxframeburst|preamblesettings|
	slotsettings|nonerpstatus|nonerpprotection]_t): added.
	Note: more ioctls can be added here, I believe problems
	with mixed modes can be pinpointed here, with these values.

--=20
GnuPG Key fingerprint =3D 113F B290 C6D2 0251 4D84  A34A 6ADD 4937 E20A 525E

--kH8JNVvasRCCW1Oz
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="patch-2.6.5-rc1-prism54.diff"
Content-Transfer-Encoding: quoted-printable

diff -Naur -X /home/mcgrof/lib/dontdiff linux-2.6.5-rc1/drivers/net/wireles=
s/Kconfig linux-2.6.5-rc1-mcgrof/drivers/net/wireless/Kconfig
--- linux-2.6.5-rc1/drivers/net/wireless/Kconfig	Tue Mar 16 20:55:11 2004
+++ linux-2.6.5-rc1-mcgrof/drivers/net/wireless/Kconfig	Wed Mar 17 06:07:21=
 2004
@@ -307,18 +307,18 @@
 	 It has basic support for Linux wireless extensions and initial
 	 micro support for ethtool.
=20
-comment "Prism GT/Duette 802.11(a/b/g) PCI/PCMCIA support"
+comment "Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support"
 	depends on NET_RADIO && PCI
 config PRISM54
-	tristate 'Intersil Prism GT/Duette/Indigo PCI/PCMCIA'=20
+	tristate 'Intersil Prism GT/Duette/Indigo PCI/Cardbus'=20
 	depends on PCI && NET_RADIO && EXPERIMENTAL && HOTPLUG
 	select FW_LOADER
 	---help---
 	  Enable PCI and Cardbus support for the following chipset based cards:
=20
-	  ISL3880 - Prism GT		802.11 b/g
-	  ISL3877 - Prism Indigo	802.11 a
-	  ISL3890 - Prism Duette	802.11 a/b/g
+	  ISL3880 - Prism GT            802.11 b/g
+	  ISL3877 - Prism Indigo        802.11 a
+	  ISL3890 - Prism Duette        802.11 a/b/g
 	 =20
 	  For a complete list of supported cards visit <http://prism54.org>.
 	  Here is the latest confirmed list of supported cards:
@@ -335,8 +335,9 @@
 	  Peabird WLG-PCI PCI Card
 	  Sitecom WL-100i Cardbus Card
 	  Sitecom WL-110i PCI Card
-	  SMC2802W - EZ Connect g 2.4GHz 54 Mbps Wireless PCI Card
-	  SMC2835W - EZ Connect g 2.4GHz 54 Mbps Wireless Cardbus Card
+	  SMC2802W -    EZ Connect g 2.4GHz 54 Mbps Wireless PCI Card
+	  SMC2835W -    EZ Connect g 2.4GHz 54 Mbps Wireless Cardbus Card
+	  SMC2835W-V2 - EZ Connect g 2.4GHz 54 Mbps Wireless Cardbus Card
 	  Z-Com XG-900 PCI Card
 	  Zyxel G-100 Cardbus Card
=20
diff -Naur -X /home/mcgrof/lib/dontdiff linux-2.6.5-rc1/drivers/net/wireles=
s/prism54/isl_ioctl.c linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/i=
sl_ioctl.c
--- linux-2.6.5-rc1/drivers/net/wireless/prism54/isl_ioctl.c	Tue Mar 16 20:=
55:11 2004
+++ linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/isl_ioctl.c	Wed Mar=
 17 01:00:42 2004
@@ -25,6 +25,7 @@
 #include <linux/kernel.h>
 #include <linux/if_arp.h>
 #include <linux/pci.h>
+#include <linux/moduleparam.h>
=20
 #include <asm/uaccess.h>
=20
@@ -44,26 +45,26 @@
 static int init_conformance =3D CARD_DEFAULT_CONFORMANCE;
 static int init_mlme =3D CARD_DEFAULT_MLME_MODE;
=20
-MODULE_PARM(init_mode, "i");
+module_param(init_mode, int, 0);
 MODULE_PARM_DESC(init_mode,
 		 "Set card mode:\n0: Auto\n1: Ad-Hoc\n2: Managed Client (Default)\n3: Ma=
ster / Access Point\n4: Repeater (Not supported yet)\n5: Secondary (Not sup=
ported yet)\n6: Monitor");
=20
-MODULE_PARM(init_channel, "i");
+module_param(init_channel, int, 0);
 MODULE_PARM_DESC(init_channel,
 		 "Check `iwpriv ethx channel` for available channels");
=20
-MODULE_PARM(init_wep, "i");
-MODULE_PARM(init_filter, "i");
+module_param(init_wep, int, 0);
+module_param(init_filter, int, 0);
=20
-MODULE_PARM(init_authen, "i");
+module_param(init_authen, int, 0);
 MODULE_PARM_DESC(init_authen,
 		 "Authentication method. Can be of seven types:\n0 0x0000: None\n1 0x000=
1: DOT11_AUTH_OS (Default)\n2 0x0002: DOT11_AUTH_SK\n3 0x0003: DOT11_AUTH_B=
OTH");
=20
-MODULE_PARM(init_dot1x, "i");
+module_param(init_dot1x, int, 0);
 MODULE_PARM_DESC(init_dot1x,
 		 "\n0: None/not set	(Default)\n1: DOT11_DOT1X_AUTHENABLED\n2: DOT11_DOT1=
X_KEYTXENABLED");
=20
-MODULE_PARM(init_mlme, "i");
+module_param(init_mlme, int, 0);
 MODULE_PARM_DESC(init_mlme,
 		 "Sets the MAC layer management entity (MLME) mode of operation,\n0: DOT=
11_MLME_AUTO (Default)\n1: DOT11_MLME_INTERMEDIATE\n2: DOT11_MLME_EXTENDED"=
);
=20
@@ -250,7 +251,7 @@
 struct iw_statistics *
 prism54_get_wireless_stats(struct net_device *ndev)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	/* If the stats are being updated return old data */
 	if (down_trylock(&priv->stats_sem) =3D=3D 0) {
@@ -277,7 +278,7 @@
 prism54_commit(struct net_device *ndev, struct iw_request_info *info,
 	       char *cwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	/* simply re-set the last set SSID, this should commit most stuff */
=20
@@ -293,7 +294,7 @@
 prism54_get_name(struct net_device *ndev, struct iw_request_info *info,
 		 char *cwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	char *capabilities;
 	union oid_res_t r;
 	int rvalue;
@@ -324,7 +325,7 @@
 prism54_set_freq(struct net_device *ndev, struct iw_request_info *info,
 		 struct iw_freq *fwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	int rvalue;
 	u32 c =3D 0;
=20
@@ -363,7 +364,7 @@
 prism54_get_freq(struct net_device *ndev, struct iw_request_info *info,
 		 struct iw_freq *fwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	union oid_res_t r;
 	int rvalue;
=20
@@ -379,7 +380,7 @@
 prism54_set_mode(struct net_device *ndev, struct iw_request_info *info,
 		 __u32 * uwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	u32 mlmeautolevel =3D CARD_DEFAULT_MLME_MODE;
=20
 	/* Let's see if the user passed a valid Linux Wireless mode */
@@ -420,7 +421,7 @@
 prism54_get_mode(struct net_device *ndev, struct iw_request_info *info,
 		 __u32 * uwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	BUG_ON((priv->iw_mode < IW_MODE_AUTO) || (priv->iw_mode >
 						  IW_MODE_MONITOR));
@@ -438,7 +439,7 @@
 prism54_set_sens(struct net_device *ndev, struct iw_request_info *info,
 		 struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	u32 sens;
=20
 	/* by default  the card sets this to 20. */
@@ -452,7 +453,7 @@
 prism54_get_sens(struct net_device *ndev, struct iw_request_info *info,
 		 struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	union oid_res_t r;
 	int rvalue;
=20
@@ -470,7 +471,7 @@
 		  struct iw_point *dwrq, char *extra)
 {
 	struct iw_range *range =3D (struct iw_range *) extra;
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	char *data;
 	int i, m, rvalue;
 	struct obj_frequencies *freq;
@@ -576,7 +577,7 @@
 prism54_set_wap(struct net_device *ndev, struct iw_request_info *info,
 		struct sockaddr *awrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	char bssid[6];
 	int rvalue;
=20
@@ -598,7 +599,7 @@
 prism54_get_wap(struct net_device *ndev, struct iw_request_info *info,
 		struct sockaddr *awrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	union oid_res_t r;
 	int rvalue;
=20
@@ -630,7 +631,7 @@
 {
 	struct iw_event iwe;	/* Temporary buffer */
 	short cap;
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	/* The first entry must be the MAC address */
 	memcpy(iwe.u.ap_addr.sa_data, bss->address, 6);
@@ -721,7 +722,7 @@
 prism54_get_scan(struct net_device *ndev, struct iw_request_info *info,
 		 struct iw_point *dwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	int i, rvalue;
 	struct obj_bsslist *bsslist;
 	u32 noise =3D 0;
@@ -762,7 +763,7 @@
 prism54_set_essid(struct net_device *ndev, struct iw_request_info *info,
 		  struct iw_point *dwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct obj_ssid essid;
=20
 	memset(essid.octets, 0, 33);
@@ -789,7 +790,7 @@
 prism54_get_essid(struct net_device *ndev, struct iw_request_info *info,
 		  struct iw_point *dwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct obj_ssid *essid;
 	union oid_res_t r;
 	int rvalue;
@@ -819,7 +820,7 @@
 prism54_set_nick(struct net_device *ndev, struct iw_request_info *info,
 		 struct iw_point *dwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	if (dwrq->length > IW_ESSID_MAX_SIZE)
 		return -E2BIG;
@@ -836,7 +837,7 @@
 prism54_get_nick(struct net_device *ndev, struct iw_request_info *info,
 		 struct iw_point *dwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	dwrq->length =3D 0;
=20
@@ -856,7 +857,7 @@
 		 struct iw_param *vwrq, char *extra)
 {
=20
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	u32 rate, profile;
 	char *data;
 	int ret, i;
@@ -924,7 +925,7 @@
 		 struct iw_request_info *info,
 		 struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	int rvalue;
 	char *data;
 	union oid_res_t r;
@@ -948,7 +949,7 @@
 prism54_set_rts(struct net_device *ndev, struct iw_request_info *info,
 		struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	return mgt_set_request(priv, DOT11_OID_RTSTHRESH, 0, &vwrq->value);
 }
@@ -957,7 +958,7 @@
 prism54_get_rts(struct net_device *ndev, struct iw_request_info *info,
 		struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	union oid_res_t r;
 	int rvalue;
=20
@@ -972,7 +973,7 @@
 prism54_set_frag(struct net_device *ndev, struct iw_request_info *info,
 		 struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	return mgt_set_request(priv, DOT11_OID_FRAGTHRESH, 0, &vwrq->value);
 }
@@ -981,7 +982,7 @@
 prism54_get_frag(struct net_device *ndev, struct iw_request_info *info,
 		 struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	union oid_res_t r;
 	int rvalue;
=20
@@ -1004,7 +1005,7 @@
 prism54_set_retry(struct net_device *ndev, struct iw_request_info *info,
 		  struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	u32 slimit =3D 0, llimit =3D 0;	/* short and long limit */
 	u32 lifetime =3D 0;
 	int rvalue =3D 0;
@@ -1048,7 +1049,7 @@
 prism54_get_retry(struct net_device *ndev, struct iw_request_info *info,
 		  struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	union oid_res_t r;
 	int rvalue =3D 0;
 	vwrq->disabled =3D 0;	/* It cannot be disabled */
@@ -1080,7 +1081,7 @@
 prism54_set_encode(struct net_device *ndev, struct iw_request_info *info,
 		   struct iw_point *dwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	int rvalue =3D 0, force =3D 0;
 	int authen =3D DOT11_AUTH_OS, invoke =3D 0, exunencrypt =3D 0;
 	union oid_res_t r;
@@ -1170,7 +1171,7 @@
 prism54_get_encode(struct net_device *ndev, struct iw_request_info *info,
 		   struct iw_point *dwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct obj_key *key;
 	u32 devindex, index =3D (dwrq->flags & IW_ENCODE_INDEX) - 1;
 	u32 authen =3D 0, invoke =3D 0, exunencrypt =3D 0;
@@ -1218,7 +1219,7 @@
 prism54_get_txpower(struct net_device *ndev, struct iw_request_info *info,
 		    struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	union oid_res_t r;
 	int rvalue;
=20
@@ -1238,7 +1239,7 @@
 prism54_set_txpower(struct net_device *ndev, struct iw_request_info *info,
 		    struct iw_param *vwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	s32 u =3D vwrq->value;
=20
 	/* intersil firmware operates in 0.25 dBm (1/4) */
@@ -1264,7 +1265,7 @@
 prism54_reset(struct net_device *ndev, struct iw_request_info *info,
 	      __u32 * uwrq, char *extra)
 {
-	islpci_reset(ndev->priv, 0);
+	islpci_reset(netdev_priv(ndev), 0);
=20
 	return 0;
 }
@@ -1273,7 +1274,7 @@
 prism54_set_beacon(struct net_device *ndev, struct iw_request_info *info,
 		   __u32 * uwrq, char *extra)
 {
-	int rvalue =3D mgt_set_request((islpci_private *) ndev->priv,
+	int rvalue =3D mgt_set_request((islpci_private *) netdev_priv(ndev),
 				     DOT11_OID_BEACONPERIOD, 0, uwrq);
=20
 	return (rvalue ? rvalue : -EINPROGRESS);
@@ -1287,7 +1288,7 @@
 	int rvalue;
=20
 	rvalue =3D
-	    mgt_get_request((islpci_private *) ndev->priv,
+	    mgt_get_request((islpci_private *) netdev_priv(ndev),
 			    DOT11_OID_BEACONPERIOD, 0, NULL, &r);
 	*uwrq =3D r.u;
=20
@@ -1337,7 +1338,7 @@
 prism54_add_mac(struct net_device *ndev, struct iw_request_info *info,
 		struct sockaddr *awrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct islpci_acl *acl =3D &priv->acl;
 	struct mac_entry *entry;
 	struct sockaddr *addr =3D (struct sockaddr *) extra;
@@ -1366,7 +1367,7 @@
 prism54_del_mac(struct net_device *ndev, struct iw_request_info *info,
 		struct sockaddr *awrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct islpci_acl *acl =3D &priv->acl;
 	struct mac_entry *entry;
 	struct list_head *ptr;
@@ -1396,7 +1397,7 @@
 prism54_get_mac(struct net_device *ndev, struct iw_request_info *info,
 		struct iw_point *dwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct islpci_acl *acl =3D &priv->acl;
 	struct mac_entry *entry;
 	struct list_head *ptr;
@@ -1427,7 +1428,7 @@
 prism54_set_policy(struct net_device *ndev, struct iw_request_info *info,
 		   __u32 * uwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct islpci_acl *acl =3D &priv->acl;
 	u32 mlmeautolevel;
=20
@@ -1460,7 +1461,7 @@
 prism54_get_policy(struct net_device *ndev, struct iw_request_info *info,
 		   __u32 * uwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct islpci_acl *acl =3D &priv->acl;
=20
 	*uwrq =3D acl->policy;
@@ -1511,7 +1512,7 @@
=20
 	/* Tell the card to kick every client */
 	mlme->id =3D cpu_to_le16(0);
-	rvalue =3D mgt_set_request(ndev->priv, DOT11_OID_DISASSOCIATE, 0, mlme);
+	rvalue =3D mgt_set_request(netdev_priv(ndev), DOT11_OID_DISASSOCIATE, 0, =
mlme);
 	kfree(mlme);
=20
 	return rvalue;
@@ -1535,7 +1536,7 @@
 	/* Tell the card to only kick the corresponding bastard */
 	memcpy(mlme->address, addr->sa_data, ETH_ALEN);
 	mlme->id =3D cpu_to_le16(-1);
-	rvalue =3D mgt_set_request(ndev->priv, DOT11_OID_DISASSOCIATE, 0, mlme);
+	rvalue =3D mgt_set_request(netdev_priv(ndev), DOT11_OID_DISASSOCIATE, 0, =
mlme);
=20
 	kfree(mlme);
=20
@@ -1595,7 +1596,7 @@
 static void
 link_changed(struct net_device *ndev, u32 bitrate)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	if (le32_to_cpu(bitrate)) {
 		if (priv->iw_mode =3D=3D IW_MODE_INFRA) {
@@ -1604,9 +1605,9 @@
 					NULL);
 			wireless_send_event(ndev, SIOCGIWAP, &uwrq, NULL);
 		} else
-			send_simple_event(ndev->priv, "Link established");
+			send_simple_event(netdev_priv(ndev), "Link established");
 	} else
-		send_simple_event(ndev->priv, "Link lost");
+		send_simple_event(netdev_priv(ndev), "Link lost");
 }
=20
 /* Beacon/ProbeResp payload header */
@@ -1889,16 +1890,17 @@
 prism54_process_trap(void *data)
 {
 	struct islpci_mgmtframe *frame =3D data;
+	struct net_device *ndev =3D frame->ndev;
 	enum oid_num_t n =3D mgt_oidtonum(frame->header->oid);
=20
-	prism54_process_trap_helper(frame->ndev->priv, n, frame->data);
+	prism54_process_trap_helper(netdev_priv(ndev), n, frame->data);
 	islpci_mgt_release(frame);
 }
=20
 int
 prism54_set_mac_address(struct net_device *ndev, void *addr)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	int ret;
=20
 	if (ndev->addr_len !=3D 6)
@@ -1923,7 +1925,7 @@
 prism54_set_wpa(struct net_device *ndev, struct iw_request_info *info,
 		__u32 * uwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	down_write(&priv->mib_sem);
=20
@@ -1943,16 +1945,70 @@
 prism54_get_wpa(struct net_device *ndev, struct iw_request_info *info,
 		__u32 * uwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	*uwrq =3D priv->wpa;
 	return 0;
 }
=20
 int
+prism54_set_maxframeburst(struct net_device *ndev, struct iw_request_info =
*info,
+		__u32 *uwrq, char *extra)
+{
+	islpci_private *priv =3D netdev_priv(ndev);
+	u32 max_burst;
+
+	max_burst =3D (*uwrq) ? *uwrq : CARD_DEFAULT_MAXFRAMEBURST;
+	mgt_set_request(priv, DOT11_OID_MAXFRAMEBURST, 0, &max_burst);
+
+	return -EINPROGRESS; /* Call commit handler */
+}
+
+int
+prism54_get_maxframeburst(struct net_device *ndev, struct iw_request_info =
*info,
+		__u32 *uwrq, char *extra)
+{
+	islpci_private *priv =3D netdev_priv(ndev);
+	union oid_res_t r;
+	int rvalue;
+=09
+	rvalue =3D mgt_get_request(priv, DOT11_OID_MAXFRAMEBURST, 0, NULL, &r);
+	*uwrq =3D r.u;
+=09
+	return rvalue;
+}
+
+int
+prism54_set_profile(struct net_device *ndev, struct iw_request_info *info,
+		__u32 *uwrq, char *extra)
+{
+	islpci_private *priv =3D netdev_priv(ndev);
+	u32 profile;
+
+	profile =3D (*uwrq) ? *uwrq : CARD_DEFAULT_PROFILE;
+	mgt_set_request(priv, DOT11_OID_PROFILES, 0, &profile);
+=09
+	return -EINPROGRESS; /* Call commit handler */
+}
+
+int
+prism54_get_profile(struct net_device *ndev, struct iw_request_info *info,
+		__u32 *uwrq, char *extra)
+{
+	islpci_private *priv =3D netdev_priv(ndev);
+	union oid_res_t r;
+	int rvalue;
+
+	rvalue =3D mgt_get_request(priv, DOT11_OID_PROFILES, 0, NULL, &r);
+	*uwrq =3D r.u;
+
+	return rvalue;
+}
+
+int
 prism54_oid(struct net_device *ndev, struct iw_request_info *info,
 		__u32 *uwrq, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 =09
 	priv->priv_oid =3D *uwrq;
 	printk("%s: oid 0x%08X\n", ndev->name, *uwrq);
@@ -1964,7 +2020,7 @@
 prism54_get_oid(struct net_device *ndev, struct iw_request_info *info,
 		struct iw_point *data, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct islpci_mgmtframe *response =3D NULL;
 	int ret =3D -EIO, response_op =3D PIMFOR_OP_ERROR;
 =09
@@ -1998,7 +2054,7 @@
 prism54_set_oid(struct net_device *ndev, struct iw_request_info *info,
 		struct iw_point *data, char *extra)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct islpci_mgmtframe *response =3D NULL;
 	int ret =3D 0, response_op =3D PIMFOR_OP_ERROR;
 =09
diff -Naur -X /home/mcgrof/lib/dontdiff linux-2.6.5-rc1/drivers/net/wireles=
s/prism54/isl_oid.h linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/isl=
_oid.h
--- linux-2.6.5-rc1/drivers/net/wireless/prism54/isl_oid.h	Tue Mar 16 20:55=
:11 2004
+++ linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/isl_oid.h	Wed Mar 1=
7 01:00:42 2004
@@ -1,7 +1,8 @@
 /*
- *  $Id: isl_oid.h,v 1.2 2004/01/30 16:24:00 ajfa Exp $
+ *  $Id: isl_oid.h,v 1.3 2004/03/09 09:05:27 mcgrof Exp $
  * =20
  *  Copyright (C) 2003 Herbert Valerio Riedel <hvr@gnu.org>
+ *  Copyright (C) 2004 Luis R. Rodriguez <mcgrof@ruslug.rutgers.edu>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -142,15 +143,131 @@
 	DOT11_PRIV_TKIP =3D 1
 };
=20
+/* Prism "Nitro" / Frameburst / "Packet Frame Grouping"
+ * Value is in microseconds. Represents the # microseconds
+ * the firmware will take to group frames before sending out then out=20
+ * together with a CSMA contention. Without this all frames are
+ * sent with a CSMA contention.=20
+ * Bibliography:=20
+ * http://www.hpl.hp.com/personal/Jean_Tourrilhes/Papers/Packet.Frame.Grou=
ping.html
+ */
+enum dot11_maxframeburst_t {=20
+	/* Values for DOT11_OID_MAXFRAMEBURST */
+	DOT11_MAXFRAMEBURST_OFF =3D 0, /* Card firmware default */
+	DOT11_MAXFRAMEBURST_MIXED_SAFE =3D 650, /* 802.11 a,b,g safe */
+	DOT11_MAXFRAMEBURST_IDEAL =3D 1300, /* Theoretical ideal level */
+	DOT11_MAXFRAMEBURST_MAX =3D 5000, /* Use this as max,
+		* Note: firmware allows for greater values. This is a
+		* recommended max. I'll update this as I find
+		* out what the real MAX is. Also note that you don't necessarily
+		* get better results with a greater value here.
+		*/
+};
+
+/* Support for 802.11 long and short frame preambles.
+ * Long	 preamble uses 128-bit sync field, 8-bit  CRC
+ * Short preamble uses 56-bit  sync field, 16-bit CRC
+ *=20
+ * 802.11a -- not sure, both optionally ?
+ * 802.11b supports long and optionally short=20
+ * 802.11g supports both */
+enum dot11_preamblesettings_t {
+	DOT11_PREAMBLESETTING_LONG =3D 0,
+		/* Allows *only* long 802.11 preambles */
+	DOT11_PREAMBLESETTING_SHORT =3D 1,
+		/* Allows *only* short 802.11 preambles */
+	DOT11_PREAMBLESETTING_DYNAMIC =3D 2
+		/* AutomatiGically set */
+};
+
+/* Support for 802.11 slot timing (time between packets).
+ *
+ * Long uses 802.11a slot timing  (9 usec ?)
+ * Short uses 802.11b slot timing (20 use ?) */
+enum dot11_slotsettings_t {
+	DOT11_SLOTSETTINGS_LONG =3D 0,=20
+		/* Allows *only* long 802.11b slot timing */
+	DOT11_SLOTSETTINGS_SHORT =3D 1,
+		/* Allows *only* long 802.11a slot timing */
+	DOT11_SLOTSETTINGS_DYNAMIC =3D 2
+		/* AutomatiGically set */
+};
+
+/* All you need to know, ERP is "Extended Rate PHY".
+ * An Extended Rate PHY (ERP) STA or AP shall support three different=20
+ * preamble and header formats:
+ * Long  preamble (refer to above)
+ * Short preamble (refer to above)
+ * OFDM  preamble ( ? )
+ *
+ * I'm assuming here Protection tells the AP
+ * to be careful, a STA which cannot handle the long pre-amble
+ * has joined.
+ */
+enum do11_nonerpstatus_t {
+	DOT11_ERPSTAT_NONEPRESENT =3D 0,
+	DOT11_ERPSTAT_USEPROTECTION =3D 1
+};
+
+/* (ERP is "Extended Rate PHY") Way to read NONERP is NON-ERP-*
+ * The key here is DOT11 NON ERP NEVER protects against
+ * NON ERP STA's. You *don't* want this unless
+ * you know what you are doing. It means you will only=20
+ * get Extended Rate capabilities */
+enum dot11_nonerpprotection_t {
+	DOT11_NONERP_NEVER =3D 0,
+	DOT11_NONERP_ALWAYS =3D 1,
+	DOT11_NONERP_DYNAMIC =3D 2
+};
+
+/* Preset OID configuration for 802.11 modes=20
+ * Note: DOT11_OID_CW[MIN|MAX] hold the values of the=20
+ * DCS MIN|MAX backoff used */
+enum dot11_profile_t { /* And set/allowed values */
+	/* Allowed values for DOT11_OID_PROFILES */
+	DOT11_PROFILE_B_ONLY =3D 0,
+		/* DOT11_OID_RATES: 1, 2, 5.5, 11Mbps=20
+		 * DOT11_OID_PREAMBLESETTINGS: DOT11_PREAMBLESETTING_DYNAMIC
+		 * DOT11_OID_CWMIN: 31
+		 * DOT11_OID_NONEPROTECTION: DOT11_NOERP_DYNAMIC
+		 * DOT11_OID_SLOTSETTINGS: DOT11_SLOTSETTINGS_LONG
+		 */
+	DOT11_PROFILE_MIXED_G_WIFI =3D 1,
+		/* DOT11_OID_RATES: 1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54Mbs
+		 * DOT11_OID_PREAMBLESETTINGS: DOT11_PREAMBLESETTING_DYNAMIC
+		 * DOT11_OID_CWMIN: 15
+		 * DOT11_OID_NONEPROTECTION: DOT11_NOERP_DYNAMIC
+		 * DOT11_OID_SLOTSETTINGS: DOT11_SLOTSETTINGS_DYNAMIC
+		 */
+	DOT11_PROFILE_MIXED_LONG =3D 2, /* "Long range" */
+		/* Same as Profile MIXED_G_WIFI */
+	DOT11_PROFILE_G_ONLY =3D 3,
+		/* Same as Profile MIXED_G_WIFI */
+	DOT11_PROFILE_TEST =3D 4,
+		/* Same as Profile MIXED_G_WIFI except:
+		 * DOT11_OID_PREAMBLESETTINGS: DOT11_PREAMBLESETTING_SHORT
+		 * DOT11_OID_NONEPROTECTION: DOT11_NOERP_NEVER
+		 * DOT11_OID_SLOTSETTINGS: DOT11_SLOTSETTINGS_SHORT
+		 */
+	DOT11_PROFILE_B_WIFI =3D 5,
+		/* Same as Profile B_ONLY */
+	DOT11_PROFILE_A_ONLY =3D 6,
+		/* Same as Profile MIXED_G_WIFI except:
+		 * DOT11_OID_RATES: 6, 9, 12, 18, 24, 36, 48, 54Mbs
+		 */
+	DOT11_PROFILE_MIXED_SHORT =3D 7
+		/* Same as MIXED_G_WIFI */
+};
+
+
 /* The dot11d conformance level configures the 802.11d conformance levels.
  * The following conformance levels exist:*/
 enum oid_inl_conformance_t {
 	OID_INL_CONFORMANCE_NONE =3D 0,	/* Perform active scanning */
 	OID_INL_CONFORMANCE_STRICT =3D 1,	/* Strictly adhere to 802.11d */
 	OID_INL_CONFORMANCE_FLEXIBLE =3D 2,	/* Use passed 802.11d info to
-						 * determine channel AND/OR just make=20
-						 * assumption that active=20
-						 * channels are valid  channels */
+		* determine channel AND/OR just make assumption that active=20
+		* channels are valid  channels */
 };
=20
 enum oid_inl_mode_t {
@@ -176,6 +293,7 @@
 	INL_PHYCAP_FAA =3D 0x80000000,	/* Means card supports the FAA switch */
 };
=20
+
 enum oid_num_t {
 	GEN_OID_MACADDRESS =3D 0,
 	GEN_OID_LINKSTATE,
@@ -269,8 +387,8 @@
 	DOT11_OID_FRAMEABORTSPHY,
=20
 	DOT11_OID_SLOTTIME,
-	DOT11_OID_CWMIN,
-	DOT11_OID_CWMAX,
+	DOT11_OID_CWMIN, /* MIN DCS backoff */
+	DOT11_OID_CWMAX, /* MAX DCS backoff */
 	DOT11_OID_ACKWINDOW,
 	DOT11_OID_ANTENNARX,
 	DOT11_OID_ANTENNATX,
diff -Naur -X /home/mcgrof/lib/dontdiff linux-2.6.5-rc1/drivers/net/wireles=
s/prism54/islpci_dev.c linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/=
islpci_dev.c
--- linux-2.6.5-rc1/drivers/net/wireless/prism54/islpci_dev.c	Tue Mar 16 20=
:55:11 2004
+++ linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/islpci_dev.c	Wed Ma=
r 17 01:00:42 2004
@@ -245,7 +245,7 @@
 islpci_open(struct net_device *ndev)
 {
 	u32 rc;
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	printk(KERN_DEBUG "%s: islpci_open()\n", ndev->name);
=20
@@ -265,7 +265,7 @@
 static int
 islpci_close(struct net_device *ndev)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 	printk(KERN_DEBUG "%s: islpci_close ()\n", ndev->name);
=20
@@ -491,7 +491,7 @@
 struct net_device_stats *
 islpci_statistics(struct net_device *ndev)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
=20
 #if VERBOSE > SHOW_ERROR_MESSAGES
 	DEBUG(SHOW_FUNCTION_CALLS, "islpci_statistics \n");
@@ -577,6 +577,7 @@
 		if (!(skb =3D dev_alloc_skb(MAX_FRAGMENT_SIZE_RX + 2))) {
 			/* error allocating an sk_buff structure elements */
 			printk(KERN_ERR "Error allocating skb.\n");
+			skb =3D NULL;
 			goto out_free;
 		}
 		/* add the new allocated sk_buff to the buffer array */
@@ -711,7 +712,7 @@
 #endif
=20
 	/* allocate a private device structure to the network device  */
-	priv =3D ndev->priv;
+	priv =3D netdev_priv(ndev);
 	priv->ndev =3D ndev;
 	priv->pdev =3D pdev;
=20
diff -Naur -X /home/mcgrof/lib/dontdiff linux-2.6.5-rc1/drivers/net/wireles=
s/prism54/islpci_eth.c linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/=
islpci_eth.c
--- linux-2.6.5-rc1/drivers/net/wireless/prism54/islpci_eth.c	Tue Mar 16 20=
:55:11 2004
+++ linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/islpci_eth.c	Wed Ma=
r 17 01:00:42 2004
@@ -63,6 +63,7 @@
 					 priv->pci_map_tx_address[index],
 					 skb->len, PCI_DMA_TODEVICE);
 			dev_kfree_skb_irq(skb);
+			skb =3D NULL;
 		}
 		/* increment the free data low queue pointer */
 		priv->free_data_tx++;
@@ -72,7 +73,7 @@
 int
 islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	isl38xx_control_block *cb =3D priv->control_block;
 	u32 index;
 	dma_addr_t pci_map_address;
@@ -238,6 +239,7 @@
  drop_free:
 	/* free the skbuf structure before aborting */
 	dev_kfree_skb(skb);
+	skb =3D NULL;
=20
 	priv->statistics.tx_dropped++;
 	spin_unlock_irqrestore(&priv->slock, flags);
@@ -346,8 +348,10 @@
 	     skb->data[0], skb->data[1], skb->data[2], skb->data[3],
 	     skb->data[4], skb->data[5]);
 #endif
-	if (discard)
+	if (discard) {
 		dev_kfree_skb(skb);
+		skb =3D NULL;
+	}
 	else
 		netif_rx(skb);
=20
@@ -388,6 +392,7 @@
=20
 			/* free the skbuf structure before aborting */
 			dev_kfree_skb((struct sk_buff *) skb);
+			skb =3D NULL;
 			break;
 		}
 		/* update the fragment address */
@@ -411,7 +416,7 @@
 void
 islpci_eth_tx_timeout(struct net_device *ndev)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	struct net_device_stats *statistics =3D &priv->statistics;
=20
 	/* increment the transmit error counter */
diff -Naur -X /home/mcgrof/lib/dontdiff linux-2.6.5-rc1/drivers/net/wireles=
s/prism54/islpci_hotplug.c linux-2.6.5-rc1-mcgrof/drivers/net/wireless/pris=
m54/islpci_hotplug.c
--- linux-2.6.5-rc1/drivers/net/wireless/prism54/islpci_hotplug.c	Tue Mar 1=
6 20:55:11 2004
+++ linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/islpci_hotplug.c	We=
d Mar 17 01:00:42 2004
@@ -29,10 +29,10 @@
 #include "isl_oid.h"
=20
 #define DRV_NAME	"prism54"
-#define DRV_VERSION	"1.0.2.2"
+#define DRV_VERSION	"1.1"
=20
-MODULE_AUTHOR("W.Termorshuizen, R.Bastings, H.V.Riedel, prism54.org team");
-MODULE_DESCRIPTION("Intersil 802.11 Wireless LAN adapter");
+MODULE_AUTHOR("[Intersil] R.Bastings and W.Termorshuizen, The prism54.org =
Development Team <prism54-devel@prism54.org>");
+MODULE_DESCRIPTION("The Prism54 802.11 Wireless LAN adapter");
 MODULE_LICENSE("GPL");
=20
 /* In this order: vendor, device, subvendor, subdevice, class, class_mask,
@@ -97,6 +97,11 @@
 	 0, 0,
 	 (unsigned long) "SMC 2802Wv2"},
 	{
+	 PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890,
+	 PCIVENDOR_SMC, 0xa835UL,
+	 0, 0,
+	 (unsigned long) "SMC 2835Wv2"},
+	{
 	 PCIVENDOR_INTERSIL, PCIDEVICE_ISL3877,
 	 PCI_ANY_ID, PCI_ANY_ID,
 	 0, 0,
@@ -133,7 +138,7 @@
 	islpci_private	*priv;
 	char		*modelp;
=20
-	priv =3D ndev->priv;
+	priv =3D netdev_priv(ndev);
 	switch (priv->pdev->subsystem_device) {
 	case PCIDEVICE_ISL3877:
 		modelp =3D "PRISM Indigo";
@@ -159,6 +164,9 @@
 	case 0x2835UL:
 		modelp =3D "SMC2835W";
 		break;
+	case 0xa835UL:
+		modelp =3D "SMC2835W V2";
+		break;
 	/* Let's leave this one out for now since it seems bogus/wrong=20
 	 * Even if the manufacturer did use 0x0000UL it may not be correct
 	 * by their part, therefore deserving no name ;) */
@@ -269,7 +277,7 @@
 		goto do_pci_release_regions;
 	}
=20
-	priv =3D ndev->priv;
+	priv =3D netdev_priv(ndev);
 	islpci_set_state(priv, PRV_STATE_PREBOOT); /* we are attempting to boot */
=20
 	/* card is in unknown state yet, might have some interrupts pending */
@@ -314,7 +322,7 @@
 prism54_remove(struct pci_dev *pdev)
 {
 	struct net_device *ndev =3D pci_get_drvdata(pdev);
-	islpci_private *priv =3D ndev ? ndev->priv : 0;
+	islpci_private *priv =3D ndev ? netdev_priv(ndev) : 0;
 	BUG_ON(!priv);
=20
 	if (!__in_cleanup_module) {
@@ -355,7 +363,7 @@
 prism54_suspend(struct pci_dev *pdev, u32 state)
 {
 	struct net_device *ndev =3D pci_get_drvdata(pdev);
-	islpci_private *priv =3D ndev ? ndev->priv : 0;
+	islpci_private *priv =3D ndev ? netdev_priv(ndev) : 0;
 	BUG_ON(!priv);
=20
 	printk(KERN_NOTICE "%s: got suspend request (state %d)\n",
@@ -380,7 +388,7 @@
 prism54_resume(struct pci_dev *pdev)
 {
 	struct net_device *ndev =3D pci_get_drvdata(pdev);
-	islpci_private *priv =3D ndev ? ndev->priv : 0;
+	islpci_private *priv =3D ndev ? netdev_priv(ndev) : 0;
 	BUG_ON(!priv);
=20
 	printk(KERN_NOTICE "%s: got resume request\n", ndev->name);
diff -Naur -X /home/mcgrof/lib/dontdiff linux-2.6.5-rc1/drivers/net/wireles=
s/prism54/islpci_mgt.c linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/=
islpci_mgt.c
--- linux-2.6.5-rc1/drivers/net/wireless/prism54/islpci_mgt.c	Tue Mar 16 20=
:55:11 2004
+++ linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/islpci_mgt.c	Wed Ma=
r 17 01:00:42 2004
@@ -22,6 +22,7 @@
 #include <linux/netdevice.h>
 #include <linux/module.h>
 #include <linux/pci.h>
+#include <linux/moduleparam.h>
=20
 #include <asm/io.h>
 #include <asm/system.h>
@@ -38,7 +39,7 @@
         Global variable definition section
 **************************************************************************=
****/
 int pc_debug =3D VERBOSE;
-MODULE_PARM(pc_debug, "i");
+module_param(pc_debug, int, 0);
=20
 /*************************************************************************=
*****
     Driver general functions
@@ -106,7 +107,7 @@
 int
 islpci_mgmt_rx_fill(struct net_device *ndev)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	isl38xx_control_block *cb =3D    /* volatile not needed */
 		(isl38xx_control_block *) priv->control_block;
 	u32 curr =3D le32_to_cpu(cb->driver_curr_frag[ISL38XX_CB_RX_MGMTQ]);
@@ -165,7 +166,7 @@
 islpci_mgt_transmit(struct net_device *ndev, int operation, unsigned long =
oid,
 		    void *data, int length)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	isl38xx_control_block *cb =3D
 		(isl38xx_control_block *) priv->control_block;
 	void *p;
@@ -271,7 +272,7 @@
 int
 islpci_mgt_receive(struct net_device *ndev)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	isl38xx_control_block *cb =3D
 		(isl38xx_control_block *) priv->control_block;
 	u32 curr_frag;
@@ -414,7 +415,7 @@
 void
 islpci_mgt_cleanup_transmit(struct net_device *ndev)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	isl38xx_control_block *cb =3D    /* volatile not needed */
 		(isl38xx_control_block *) priv->control_block;
 	u32 curr_frag;
@@ -451,7 +452,7 @@
 		       void *senddata, int sendlen,
 		       struct islpci_mgmtframe **recvframe)
 {
-	islpci_private *priv =3D ndev->priv;
+	islpci_private *priv =3D netdev_priv(ndev);
 	const long wait_cycle_jiffies =3D (ISL38XX_WAIT_CYCLE * 10 * HZ) / 1000;
 	long timeout_left =3D ISL38XX_MAX_WAIT_CYCLES * wait_cycle_jiffies;
 	int err;
diff -Naur -X /home/mcgrof/lib/dontdiff linux-2.6.5-rc1/drivers/net/wireles=
s/prism54/islpci_mgt.h linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/=
islpci_mgt.h
--- linux-2.6.5-rc1/drivers/net/wireless/prism54/islpci_mgt.h	Tue Mar 16 20=
:55:11 2004
+++ linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/islpci_mgt.h	Wed Ma=
r 17 01:00:42 2004
@@ -87,11 +87,13 @@
 #define CARD_DEFAULT_KEY4                       "default_key_4"
 #define CARD_DEFAULT_WEP                        0
 #define CARD_DEFAULT_FILTER                     0
-# define CARD_DEFAULT_WDS                        0
+#define CARD_DEFAULT_WDS                        0
 #define	CARD_DEFAULT_AUTHEN                     DOT11_AUTH_OS
 #define	CARD_DEFAULT_DOT1X			0
 #define CARD_DEFAULT_MLME_MODE			DOT11_MLME_AUTO
 #define CARD_DEFAULT_CONFORMANCE                OID_INL_CONFORMANCE_NONE
+#define CARD_DEFAULT_PROFILE			DOT11_PROFILE_MIXED_G_WIFI
+#define CARD_DEFAULT_MAXFRAMEBURST		DOT11_MAXFRAMEBURST_MIXED_SAFE
=20
 /* PIMFOR package definitions */
 #define PIMFOR_ETHERTYPE                        0x8828
diff -Naur -X /home/mcgrof/lib/dontdiff linux-2.6.5-rc1/drivers/net/wireles=
s/prism54/oid_mgt.c linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/oid=
_mgt.c
--- linux-2.6.5-rc1/drivers/net/wireless/prism54/oid_mgt.c	Tue Mar 16 20:55=
:11 2004
+++ linux-2.6.5-rc1-mcgrof/drivers/net/wireless/prism54/oid_mgt.c	Wed Mar 1=
7 01:00:42 2004
@@ -97,7 +97,7 @@
 	[DOT11_OID_ALOFT_CONFIG] =3D OID_UNKNOWN(0x1d000006),
=20
 	[DOT11_OID_VDCFX] =3D {0x1b000000, 7, 0, 0},
-	[DOT11_OID_MAXFRAMEBURST] =3D OID_U32(0x1b000008),
+	[DOT11_OID_MAXFRAMEBURST] =3D OID_U32(0x1b000008), /* in microseconds */
=20
 	[DOT11_OID_PSM] =3D OID_U32(0x14000000),
 	[DOT11_OID_CAMTIMEOUT] =3D OID_U32(0x14000001),

--kH8JNVvasRCCW1Oz--

--+9faIjRurCDpBc7U
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFAV/ILat1JN+IKUl4RAhOrAKCMAR7Uy1/c+B+96GABgaGyIacfhgCfX+EW
7/l9ooML5RfZxeXguFthFCk=
=5FuO
-----END PGP SIGNATURE-----

--+9faIjRurCDpBc7U--