ndev->get_wireless_stats = &prism54_get_wireless_stats; 
islpci_setup(struct pci_dev *pdev){	islpci_private *priv;	struct net_device *ndev = alloc_etherdev(sizeof (islpci_private));	if (!ndev)		return ndev;	SET_MODULE_OWNER(ndev);	pci_set_drvdata(pdev, ndev);#if defined(SET_NETDEV_DEV)	SET_NETDEV_DEV(ndev, &pdev->dev);#endif	/* setup the structure members */	ndev->base_addr = pci_resource_start(pdev, 0);	ndev->irq = pdev->irq;	/* initialize the function pointers */	ndev->open = &islpci_open;	ndev->stop = &islpci_close;	ndev->get_stats = &islpci_statistics;	ndev->get_wireless_stats = &prism54_get_wireless_stats;	ndev->do_ioctl = &prism54_ioctl;	ndev->wireless_handlers =	    (struct iw_handler_def *) &prism54_handler_def;	ndev->hard_start_xmit = &islpci_eth_transmit;	/* ndev->set_multicast_list = &islpci_set_multicast_list; */	ndev->addr_len = ETH_ALEN;	ndev->set_mac_address = &prism54_set_mac_address;	/* Get a non-zero dummy MAC address for nameif. Jean II */	memcpy(ndev->dev_addr, dummy_mac, 6);#ifdef HAVE_TX_TIMEOUT	ndev->watchdog_timeo = ISLPCI_TX_TIMEOUT;	ndev->tx_timeout = &islpci_eth_tx_timeout;#endif	/* allocate a private device structure to the network device  */	priv = netdev_priv(ndev);	priv->ndev = ndev;	priv->pdev = pdev;	priv->monitor_type = ARPHRD_IEEE80211;	priv->ndev->type = (priv->iw_mode == IW_MODE_MONITOR) ?		priv->monitor_type : ARPHRD_ETHER;#if WIRELESS_EXT > 16	/* Add pointers to enable iwspy support. */	priv->wireless_data.spy_data = &priv->spy_data;	ndev->wireless_data = &priv->wireless_data;#endif /* WIRELESS_EXT > 16 */	/* save the start and end address of the PCI memory area */	ndev->mem_start = (unsigned long) priv->device_base;	ndev->mem_end = ndev->mem_start + ISL38XX_PCI_MEM_SIZE;#if VERBOSE > SHOW_ERROR_MESSAGES	DEBUG(SHOW_TRACING, "PCI Memory remapped to 0x%p\n", priv->device_base);#endif	init_waitqueue_head(&priv->reset_done);	/* init the queue read locks, process wait counter */	sema_init(&priv->mgmt_sem, 1);	priv->mgmt_received = NULL;	init_waitqueue_head(&priv->mgmt_wqueue);	sema_init(&priv->stats_sem, 1);	spin_lock_init(&priv->slock);	/* init state machine with off#1 state */	priv->state = PRV_STATE_OFF;	priv->state_off = 1;	/* initialize workqueue's */	INIT_WORK(&priv->stats_work,		  (void (*)(void *)) prism54_update_stats, priv);	priv->stats_timestamp = 0;	INIT_WORK(&priv->reset_task, islpci_do_reset_and_wake, priv);	priv->reset_task_pending = 0;	/* allocate various memory areas */	if (islpci_alloc_memory(priv))		goto do_free_netdev;	/* select the firmware file depending on the device id */	switch (pdev->device) {	case 0x3877:		strcpy(priv->firmware, ISL3877_IMAGE_FILE);		break;	case 0x3886:		strcpy(priv->firmware, ISL3886_IMAGE_FILE);		break;	default:		strcpy(priv->firmware, ISL3890_IMAGE_FILE);		break;	}	if (register_netdev(ndev)) {		DEBUG(SHOW_ERROR_MESSAGES,		      "ERROR: register_netdev() failed \n");		goto do_islpci_free_memory;	}	return ndev;      do_islpci_free_memory:	islpci_free_memory(priv);      do_free_netdev:	pci_set_drvdata(pdev, NULL);	free_netdev(ndev);	priv = NULL;	return NULL;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/61bd49631474c8763676a6ac72461cb523ddb78a/islpci_dev.c/clean/drivers/net/wireless/prism54/islpci_dev.c