[Prism54-devel] sparc64 patch

Clint Adams schizo@debian.org
Sun, 18 Jan 2004 16:54:25 -0500


--M9NhX3UHpAaciwkO
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

> My rewrite of the mgmt frame handling will address most of
> these issues.
> 
>   cvs update -rmgmt_rework
> 
> to try it out.

Looks like you missed islpci_eth.c.
Lame patch attached.

By the way, is anyone working on 802.1x authenticator support?

--M9NhX3UHpAaciwkO
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="mgmt-rework.sparc64.patch"

Index: ksrc/islpci_eth.c
===================================================================
RCS file: /var/lib/cvs/prism54-ng/ksrc/islpci_eth.c,v
retrieving revision 1.21
diff -u -r1.21 islpci_eth.c
--- ksrc/islpci_eth.c	8 Jan 2004 04:14:40 -0000	1.21
+++ ksrc/islpci_eth.c	18 Jan 2004 21:54:03 -0000
@@ -33,6 +33,13 @@
 #include "isl_wds.h"
 #endif
 
+#ifdef __arch64__
+#define voidp_sized_int_t	u64
+#else
+#define voidp_sized_int_t	u32
+#endif
+
+
 /******************************************************************************
     Network Interface functions
 ******************************************************************************/
@@ -81,7 +88,7 @@
 	u32 index, counter, pci_map_address;
 	int fragments;
 	int frame_size;
-	int offset;
+	voidp_sized_int_t offset;
 	struct sk_buff *newskb;
 	int newskb_offset;
 	unsigned long flags;
@@ -155,9 +162,9 @@
 	/* Check alignment and WDS frame formatting. The start of the packet should
 	 * be aligned on a 4-byte boundary. If WDS is enabled add another 6 bytes
 	 * and add WDS address information */
-	if (((int) skb->data & 0x03) | init_wds) {
+	if (((voidp_sized_int_t) skb->data & 0x03) | init_wds) {
 		/* get the number of bytes to add and re-allign */
-		offset = (4 - (int) skb->data) & 0x03;
+		offset = (4 - (voidp_sized_int_t) skb->data) & 0x03;
 		offset += init_wds ? 6 : 0;
 
 		/* check whether the current skb can be used  */
@@ -170,7 +177,7 @@
 #endif
 
 			/* allign the buffer on 4-byte boundary */
-			skb_reserve(skb, (4 - (int) skb->data) & 0x03);
+			skb_reserve(skb, (4 - (voidp_sized_int_t) skb->data) & 0x03);
 			if (init_wds) {
 				/* wds requires an additional address field of 6 bytes */
 				skb_put(skb, 6);
@@ -190,7 +197,7 @@
 		} else {
 			newskb =
 			    dev_alloc_skb(init_wds ? skb->len + 6 : skb->len);
-			newskb_offset = (4 - (int) newskb->data) & 0x03;
+			newskb_offset = (4 - (voidp_sized_int_t) newskb->data) & 0x03;
 
 			/* Check if newskb->data is aligned */
 			if (newskb_offset)

--M9NhX3UHpAaciwkO--