This fixes issues where either the CF module is slow (and needs more time while downloading the firmware) or where the host computer is slow, so that some card interrupts arrive while the system was still downloading the firmware. Signed-off-by: Vitaly V. Bursov <vitalyvb@xxxxxxx> Signed-off-by: Holger Schurig <hs4233@xxxxxxxxxxxxxxxxxxxx> -- Index: libertas-2.6/drivers/net/wireless/libertas/if_cs.c =================================================================== --- libertas-2.6.orig/drivers/net/wireless/libertas/if_cs.c 2007-10-01 14:05:53.000000000 +0200 +++ libertas-2.6/drivers/net/wireless/libertas/if_cs.c 2007-10-01 14:06:43.000000000 +0200 @@ -148,11 +148,11 @@ static int if_cs_poll_while_fw_download( { int i; - for (i = 0; i < 500; i++) { + for (i = 0; i < 1000; i++) { u8 val = if_cs_read8(card, addr); if (val == reg) return i; - udelay(100); + udelay(500); } return -ETIME; } @@ -405,6 +405,7 @@ static struct sk_buff *if_cs_receive_dat skb = dev_alloc_skb(MRVDRV_ETH_RX_PACKET_BUFFER_SIZE + 2); if (!skb) goto out; + skb->dev = priv->dev; skb_put(skb, len); skb_reserve(skb, 2);/* 16 byte align */ data = skb->data; @@ -878,6 +879,9 @@ static int if_cs_probe(struct pcmcia_dev goto out3; } + /* Clear any interrupt cause that happend while sending + * firmware/initializing card */ + if_cs_write16(card, IF_CS_C_INT_CAUSE, IF_CS_C_IC_MASK); if_cs_enable_ints(card); /* And finally bring the card up */ - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html