⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wt_dev_mem.c

📁 linux2.6.11内核无线网卡驱动程序。支持802.11 abg
💻 C
📖 第 1 页 / 共 2 页
字号:
static intWtOpen(struct net_device *ndev){ 	WT_ADAPTER *Adapter = netdev_priv(ndev);//	unsigned long flags;		FN_ENTER; 	printk(" Now we entered  function %s  !!!\n", __FUNCTION__);     	printk("<0>Enter WtOpen Now..............\r\n");	//WT_SPIN_LOCK_IRQSAVE(&Adapter->slock, flags);	udelay( NIC_DELAY_POST_RESET );	WtWlanSoftReset( Adapter );	udelay( NIC_DELAY_POST_RESET );	printk("<0>step1\r\n");		printk("<0> Adapter->CSRAddress->IntMaskCtrl = %08x\r\n",Adapter->CSRAddress->IntMaskCtrl);	//      	printk("<0>  %s  intmaskctrl = %04x intstatus = %04x : %08x %08x\n", __FUNCTION__,  Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus, &Adapter->MainMemAddress->HwCSMem.CSRAddress, Adapter->MainMemAddress->HwCSMem.SysCfg.ChipFreq);						//WtWlanInitWtRf(Adapter);//	WtWlanInitWt4Hw(Adapter);	WtWlanInitWt4Hw(Adapter, Adapter->RegMacParameter.ABGMode);		//Dump( (char *)(0xea000000),0x200, TRUE, 1 );	  						WtWlanHwIntInit(Adapter);	 	printk("<0> Adapter->CSRAddress->IntMaskCtrl = %08x\r\n",Adapter->CSRAddress->IntMaskCtrl);	//        printk("<0>  %s  intmaskctrl = %04x intstatus = %04x : %08x %08x\n", __FUNCTION__,  Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus, &Adapter->MainMemAddress->HwCSMem.CSRAddress, Adapter->MainMemAddress->HwCSMem.SysCfg.ChipFreq);	////////////////////////////////////////////////////////////////////////////////////////////////	//printk("<0> INIMSK register in address 0x4a000008 is: %08x\r\n",__raw_readl(0x4a000008));	//printk("<0> EXINIT register in address 0x56000088 is: %08x\r\n",__raw_readl(0x56000088));	//printk("<0> CPGVP register in address 0x56000068 is: %08x\r\n",__raw_readl(0x56000068));	////////////////////////////////////////////////////////////////////////////////////////////////		 	WtEnableInterrupts( Adapter );	 	printk("<0> Adapter->CSRAddress->IntMaskCtrl = %08x\r\n",Adapter->CSRAddress->IntMaskCtrl);	//        printk("<0>  %s  intmaskctrl = %04x intstatus = %04x : %08x %08x\n", __FUNCTION__,  Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus, &Adapter->MainMemAddress->HwCSMem.CSRAddress, Adapter->MainMemAddress->HwCSMem.SysCfg.ChipFreq);			//Dump( (char *)(0xea000000),0x200, TRUE, 1 );	 		//WT_SPIN_UNLOCK_IRQRESTORE(&Adapter->slock, flags);	netif_start_queue(ndev);        		 	        FN_EXIT(0,0); 	return 0;		}static intwt4_bring_down(WT_ADAPTER *Adapter){		FN_ENTER;      		FN_EXIT(0,0);		return 0;}static intWtClose(struct net_device *ndev){	WT_ADAPTER *Adapter = netdev_priv(ndev);		FN_ENTER;	netif_stop_queue(ndev);		FN_EXIT(0,0);	return wt4_bring_down(Adapter);	//return 0;	}                                                          				struct net_device_stats *wt_eth_statistics(struct net_device *ndev){       	WT_ADAPTER *Adapter = netdev_priv(ndev);	Adapter->statistics.rx_packets=(ULONG)Adapter->MainMemAddress->HwCSMem.HwStatistic.RcvMpduCounter; 	Adapter->statistics.tx_packets=(ULONG)Adapter->MainMemAddress->HwCSMem.HwStatistic.XmtMsduCounter; 	Adapter->statistics.rx_bytes=100000;//Adapter->statistics.rx_bytes; 	Adapter->statistics.rx_errors=(ULONG)Adapter->MainMemAddress->HwCSMem.HwStatistic.RcvMissedCounter; 	Adapter->statistics.tx_errors=(ULONG)Adapter->MainMemAddress->HwCSMem.HwStatistic.XmtMsduCounter-(ULONG)Adapter->MainMemAddress->HwCSMem.HwStatistic.XmtSuccessMsduCounter; 	Adapter->statistics.rx_dropped=(ULONG)Adapter->MainMemAddress->HwCSMem.HwStatistic.RcvMissedCounter;	 	Adapter->statistics.tx_dropped=(ULONG)Adapter->MainMemAddress->HwCSMem.HwStatistic.XmtMsduCounter-(ULONG)Adapter->MainMemAddress->HwCSMem.HwStatistic.XmtSuccessMsduCounter;	 	Adapter->statistics.multicast=0;	 	Adapter->statistics.collisions=0; 	Adapter->statistics.rx_length_errors=0;	 	Adapter->statistics.rx_over_errors=0; 	Adapter->statistics.rx_crc_errors=0;	 	Adapter->statistics.rx_frame_errors=0; 	Adapter->statistics.rx_fifo_errors=0;	 	Adapter->statistics.rx_missed_errors=0; 	Adapter->statistics.tx_aborted_errors=0;	 	Adapter->statistics.tx_carrier_errors=0; 	Adapter->statistics.tx_fifo_errors=0;	 	Adapter->statistics.tx_heartbeat_errors=0; 	Adapter->statistics.tx_window_errors=0; 	Adapter->statistics.rx_compressed=0;	 	Adapter->statistics.tx_compressed=0;	return &Adapter->statistics;}/******************************************************************************    Network device configuration functions******************************************************************************/static intWtAllocMemory(WT_ADAPTER *Adapter){	FN_ENTER;       Adapter->MainMemAddress = SMDK2410_WTWLAN_BASE;	/* allaction for recv and tran buffer */		printk(" now begin to init the resouces for receive and transmition!\n");	   			WtInitList(Adapter);	WtSoftParaInit(Adapter);	WtInitSend(Adapter);	NICInitRecv(Adapter);	printk(" now end to init the resouces for receive and transmition!\n");			ParameterAlloc( Adapter );	wt4_acl_init(&Adapter->acl);//4.2232	wt4_wpa_ie_init(Adapter);	//if (wt_mgt_init(Adapter)) 	//	goto out_free;					        FN_EXIT(0,0);		return 0;/* out_free:	WtFreeMemory(Adapter);		FN_EXIT(0,0);		return -1; */}intWtFreeMemory(WT_ADAPTER *Adapter){		FN_ENTER;        if (Adapter->MainMemAddress)        Adapter->MainMemAddress = NULL;   	ParameterFree( Adapter );		if (Adapter->WtWlanTxBufMem) {	    kfree(Adapter->WtWlanTxBufMem);	    Adapter->WtWlanTxBufMem = NULL;	}        if (Adapter->WtWlanRxBufMem) {	    kfree(Adapter->WtWlanRxBufMem);	    Adapter->WtWlanRxBufMem = NULL;	}			/* Free the acces control list and the WPA list */	wt4_acl_clean(&Adapter->acl);//05.4.22	wt4_wpa_ie_clean(Adapter);	//mgt_clean(Adapter);				FN_EXIT(0,0);	return 0;	}  NDIS_STATUS Wt4InitStatistics (IN PWT_ADAPTER Adapter){	NDIS_STATUS        Status = NDIS_STATUS_SUCCESS;	Adapter->statistics.rx_packets=0; 	Adapter->statistics.tx_packets=0; //	Adapter->statistics.rx_bytes=0; //	Adapter->statistics.tx_bytes=0; 	Adapter->statistics.rx_errors=0; 	Adapter->statistics.tx_errors=0; 	Adapter->statistics.rx_dropped=0;	 	Adapter->statistics.tx_dropped=0;	 	Adapter->statistics.multicast=0;	 	Adapter->statistics.collisions=0; 	 	Adapter->statistics.rx_length_errors=0;	 	Adapter->statistics.rx_over_errors=0; 	Adapter->statistics.rx_crc_errors=0;	 	Adapter->statistics.rx_frame_errors=0; 	Adapter->statistics.rx_fifo_errors=0;	 	Adapter->statistics.rx_missed_errors=0; 	 	Adapter->statistics.tx_aborted_errors=0;	 	Adapter->statistics.tx_carrier_errors=0; 	Adapter->statistics.tx_fifo_errors=0;	 	Adapter->statistics.tx_heartbeat_errors=0; 	Adapter->statistics.tx_window_errors=0; 	 	Adapter->statistics.rx_compressed=0;	 	Adapter->statistics.tx_compressed=0;	return  Status;}/*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\//\/\*/void ndev_strc_stuff(struct net_device *ndev){               /* setup the structure members */       ndev->base_addr = 0xEA000000;	ndev->irq = SMDK2410_WTWLAN_ETH_IRQ;	/* initialize the function pointers */	ndev->open = &WtOpen;	ndev->stop = &WtClose;	ndev->get_stats = &wt_eth_statistics;	ndev->get_wireless_stats = &wt4_get_wireless_stats;	ndev->wireless_handlers = (struct iw_handler_def *) &wt4_handler_def;        ndev->hard_start_xmit = &WtTransmit;	/* ndev->set_multicast_list = &islpci_set_multicast_list; */	ndev->addr_len = ETH_ALEN;	ndev->set_mac_address = &wt4_set_mac_address;}struct net_device *WtNdevSetupMem(struct net_device *ndev){	WT_ADAPTER *Adapter;         FN_ENTER; 			SET_MODULE_OWNER(ndev);        /*fill some structure numbers and function pionters in netdevice structure*/	ndev_strc_stuff(ndev);		/* allocate a Adapterate device structure to the network device  */	Adapter = netdev_priv(ndev);//	printk("%s   Adapter = %08x\r\n", __FUNCTION__,  Adapter);        Adapter->ndev = ndev;//	printk("%s   Adapter->ndev = %08x\r\n", __FUNCTION__,   Adapter->ndev);		Adapter->pdev = NULL;	Adapter->monitor_type = ARPHRD_IEEE80211;//05.4.22	Adapter->ndev->type = (Adapter->iw_mode == IW_MODE_MONITOR) ?		              Adapter->monitor_type : ARPHRD_ETHER; //05.4.22			      	//noe we dont need to support WAPI	Adapter->MacParameter.bSoftDecrypt = FALSE;	Adapter->MacParameter.bSoftEncrypt = FALSE;	//added by hk 2006.9.27	tasklet_init(&Adapter->TxTasklet, (void (*)(unsigned long))		     WtHandleSendInterrupt, (unsigned long)Adapter);	tasklet_init(&Adapter->RxTasklet, (void (*)(unsigned long))		     WtHandleRecvInterrupt, (unsigned long)Adapter);        init_waitqueue_head(&Adapter->reset_done);//05.4.22	/* init the queue read locks, process wait counter */	sema_init(&Adapter->mgmt_sem, 1);//05.4.22	Adapter->mgmt_received = NULL;//05.4.22	init_waitqueue_head(&Adapter->mgmt_wqueue);//05.4.22	sema_init(&Adapter->stats_sem, 1);//05.4.22		/*init all locks we needed*/	spin_lock_init(&Adapter->slock);	spin_lock_init(&Adapter->Lock);        spin_lock_init(&Adapter->SendLock);        spin_lock_init(&Adapter->RcvLock);        spin_lock_init(&Adapter->MacLock);//#if 0	/* init state machine with off#1 state */	Adapter->state = PRV_STATE_OFF;	Adapter->state_off = 1;//#endif //for wt4	/* initialize workqueue's */	INIT_WORK(&Adapter->stats_work,		  (void (*)(void *)) wt4_update_stats, Adapter);//05.4.22	Adapter->stats_timestamp = 0;//#if 0	INIT_WORK(&Adapter->reset_task, islpci_do_reset_and_wake, Adapter);	Adapter->reset_task_pending = 0;//#endif //for wt4        //////////////////////////////////////////////////////////////////////////////////////////        //WtWlanAdpterWt4 = ndev;	WtWlanAdpterWt4 = Adapter;        ////////////////////////////////////////////////////////////////////////////////////////////	printk("%s   Adapter = %08x\r\n", __FUNCTION__,  Adapter);	/* allocate various memory areas */ 	if (WtAllocMemory(Adapter))	   goto do_free_netdev;      	/* save the start and end address of the PCI memory area */	ndev->mem_start = (unsigned long) Adapter->MainMemAddress;//	printk("%s   ndev->mem_start = %08x\r\n", __FUNCTION__,  ndev->mem_start);	ndev->mem_end = ndev->mem_start + wt4_mainmem_size;//05.4.22			// alian csraddress for convenient		Adapter->CSRAddress = &Adapter->MainMemAddress->HwCSMem.CSRAddress;//	printk("<0> Adapter->CSRAddress  = %08x Adapter->MainMemAddress = %08x\r\n", Adapter->CSRAddress,Adapter->MainMemAddress);		if (register_netdev(ndev)) {			   printk("ERROR: register_netdev() failed ):\r\n");	   goto do_islpci_free_memory;	}	        NICReadAdapterInfo(Adapter);	wt_mgt_init(Adapter);/*		printk("Mgt init ok in File %s Function %s line %d \n",__FILE__, __FUNCTION__, __LINE__);*/		Wt4InitStatistics(Adapter);	        FN_EXIT(0,0);		return ndev;         do_islpci_free_memory:	WtFreeMemory(Adapter);	        do_free_netdev:	free_netdev(ndev);	Adapter = NULL;	return NULL;} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -