diff -ruN ipwireless_cs-2.6.19_2.6.18/ipwireless_cs_hardware.c ipwireless_cs-2.6.20/ipwireless_cs_hardware.c --- ipwireless_cs-2.6.19_2.6.18/ipwireless_cs_hardware.c 2007-03-26 16:57:34.000000000 +0200 +++ ipwireless_cs-2.6.20/ipwireless_cs_hardware.c 2007-03-14 14:07:35.000000000 +0100 @@ -641,9 +641,10 @@ } } -static void do_receive_data_work(void *data) +static void do_receive_data_work(struct work_struct *work_rx) { - struct ipw_hardware_t *hw = (struct ipw_hardware_t *) data; + struct ipw_hardware_t *hw = + container_of(work_rx, struct ipw_hardware_t, work_rx); struct list_head *p, *q; spin_lock_irq(&hw->spinlock); @@ -1415,7 +1416,7 @@ hw->setup_timer.function = ipwireless_setup_timer; hw->setup_timer.data = (unsigned long) hw; - INIT_WORK(&hw->work_rx, do_receive_data_work, hw); + INIT_WORK(&hw->work_rx, do_receive_data_work); hw->last_memtx_serial = (u_short) 0xffff; diff -ruN ipwireless_cs-2.6.19_2.6.18/ipwireless_cs_main.c ipwireless_cs-2.6.20/ipwireless_cs_main.c --- ipwireless_cs-2.6.19_2.6.18/ipwireless_cs_main.c 2007-03-26 16:57:34.000000000 +0200 +++ ipwireless_cs-2.6.20/ipwireless_cs_main.c 2007-03-22 17:09:27.000000000 +0100 @@ -62,9 +62,9 @@ static struct pcmcia_device *dev_list; /* Executes in process context. */ -static void signalled_reboot_work(void *data) +static void signalled_reboot_work(struct work_struct *work_reboot) { - ipw_dev_t *ipw = (ipw_dev_t *) data; + ipw_dev_t *ipw = container_of(work_reboot, ipw_dev_t, work_reboot); struct pcmcia_device *link = ipw->link; int ret = pccard_reset_card(link->socket); @@ -275,7 +275,7 @@ ipw->attrMemory = ioremap(reqAM.Base, reqAM.Size); } - INIT_WORK(&ipw->work_reboot, signalled_reboot_work, ipw); + INIT_WORK(&ipw->work_reboot, signalled_reboot_work); ipwireless_init_hardware1(ipw->hardware, link->io.BasePort1, ipw->attrMemory, ipw->commonMemory, diff -ruN ipwireless_cs-2.6.19_2.6.18/ipwireless_cs_network.c ipwireless_cs-2.6.20/ipwireless_cs_network.c --- ipwireless_cs-2.6.19_2.6.18/ipwireless_cs_network.c 2007-03-26 16:57:34.000000000 +0200 +++ ipwireless_cs-2.6.20/ipwireless_cs_network.c 2007-03-01 12:47:10.000000000 +0100 @@ -248,9 +248,10 @@ ipwireless_ppp_ioctl }; -static void do_go_online(void *private) +static void do_go_online(struct work_struct *work_go_online) { - ipw_network_t *network = (ipw_network_t *) private; + ipw_network_t *network = + container_of(work_go_online, ipw_network_t, work_go_online); unsigned int flags; spin_lock_irqsave(&network->spinlock, flags); @@ -282,9 +283,10 @@ spin_unlock_irqrestore(&network->spinlock, flags); } -static void do_go_offline(void *private) +static void do_go_offline(struct work_struct *work_go_offline) { - ipw_network_t *network = (ipw_network_t *) private; + ipw_network_t *network = + container_of(work_go_offline, ipw_network_t, work_go_offline); unsigned int flags; mutex_lock(&network->close_lock); @@ -394,8 +396,8 @@ network->hardware = hw; - INIT_WORK(&network->work_go_online, do_go_online, network); - INIT_WORK(&network->work_go_offline, do_go_offline, network); + INIT_WORK(&network->work_go_online, do_go_online); + INIT_WORK(&network->work_go_offline, do_go_offline); ipwireless_associate_network(hw, network);