After upgrading to kernel 2.6.12 with software suspend2 the ipw2100-1.1.0 driver stopped compiling.
The following patch take care of it. It solves the[b] is_multicast_ether_addr[/b] and [b]create_workqueue[/b] errors.
diff -Naur ipw2100-1.1.0/ieee80211.h ipw2100-1.1.0.test/ieee80211.h
— ipw2100-1.1.0/ieee80211.h 2005-03-14 18:54:24.000000000 +0200
+++ ipw2100-1.1.0.test/ieee80211.h 2005-06-21 11:48:06.000000000 +0300
@@ -643,10 +643,12 @@
#define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5]
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12) extern inline int is_multicast_ether_addr(const u8 *addr) { return ((addr[0] != 0xff) && (0x01 & addr[0])); } +#endif extern inline int is_broadcast_ether_addr(const u8 *addr) { diff -Naur ipw2100-1.1.0/ipw2100.c ipw2100-1.1.0.test/ipw2100.c --- ipw2100-1.1.0/ipw2100.c 2005-03-14 18:54:25.000000000 +0200 +++ ipw2100-1.1.0.test/ipw2100.c 2005-06-21 11:48:06.000000000 +0300 @@ -6401,7 +6401,7 @@ INIT_STAT(&priv->fw_pend_stat);
-#ifdef CONFIG_SOFTWARE_SUSPEND2
+#ifdef CONFIG_SUSPEND2
priv->workqueue = create_workqueue(DRV_NAME, 0);
#else
priv->workqueue = create_workqueue(DRV_NAME);
Comments
2 responses to “ipw2100 and kernel 2.6.12 issues”
great! its working with a sarge on thinkpad!
thanks for debugging
whatever means
ipw2100: Fatal interrupt. Scheduling firmware restart
lets try it 😉
Klaus
Does it gives you an oops also ?, i have seen it again on a IBM Thinkpad.
On my Toshiba Pro M10 works without any problems