ipw2100 and kernel 2.6.12 issues


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);


2 responses to “ipw2100 and kernel 2.6.12 issues”

  1. great! its working with a sarge on thinkpad!
    thanks for debugging
    whatever means
    ipw2100: Fatal interrupt. Scheduling firmware restart
    lets try it 😉

    Klaus

  2. 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