亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? s2io.c

?? Linux Kernel 2.6.9 for OMAP1710
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
			temp64 = readq(&bar0->general_int_mask);			val64 |= temp64;			writeq(val64, &bar0->general_int_mask);		}	}	/*  DMA Interrupts */	/*  Enabling/Disabling Tx DMA interrupts */	if (mask & TX_DMA_INTR) {		/*  Enable TxDMA Intrs in the general intr mask register */		val64 = TXDMA_INT_M;		if (flag == ENABLE_INTRS) {			temp64 = readq(&bar0->general_int_mask);			temp64 &= ~((u64) val64);			writeq(temp64, &bar0->general_int_mask);			/* Disable all interrupts other than PFC interrupt in 			 * DMA level.			 */			val64 = DISABLE_ALL_INTRS & (~TXDMA_PFC_INT_M);			writeq(val64, &bar0->txdma_int_mask);			/* Enable only the MISC error 1 interrupt in PFC block 			 */			val64 = DISABLE_ALL_INTRS & (~PFC_MISC_ERR_1);			writeq(val64, &bar0->pfc_err_mask);		} else if (flag == DISABLE_INTRS) {			/*  Disable TxDMA Intrs in the general intr mask 			 *  register */			writeq(DISABLE_ALL_INTRS, &bar0->txdma_int_mask);			writeq(DISABLE_ALL_INTRS, &bar0->pfc_err_mask);			temp64 = readq(&bar0->general_int_mask);			val64 |= temp64;			writeq(val64, &bar0->general_int_mask);		}	}	/*  Enabling/Disabling Rx DMA interrupts */	if (mask & RX_DMA_INTR) {		/*  Enable RxDMA Intrs in the general intr mask register */		val64 = RXDMA_INT_M;		if (flag == ENABLE_INTRS) {			temp64 = readq(&bar0->general_int_mask);			temp64 &= ~((u64) val64);			writeq(temp64, &bar0->general_int_mask);			/* All RxDMA block interrupts are disabled for now 			 * TODO */			writeq(DISABLE_ALL_INTRS, &bar0->rxdma_int_mask);		} else if (flag == DISABLE_INTRS) {			/*  Disable RxDMA Intrs in the general intr mask 			 *  register */			writeq(DISABLE_ALL_INTRS, &bar0->rxdma_int_mask);			temp64 = readq(&bar0->general_int_mask);			val64 |= temp64;			writeq(val64, &bar0->general_int_mask);		}	}	/*  MAC Interrupts */	/*  Enabling/Disabling MAC interrupts */	if (mask & (TX_MAC_INTR | RX_MAC_INTR)) {		val64 = TXMAC_INT_M | RXMAC_INT_M;		if (flag == ENABLE_INTRS) {			temp64 = readq(&bar0->general_int_mask);			temp64 &= ~((u64) val64);			writeq(temp64, &bar0->general_int_mask);			/* All MAC block error interrupts are disabled for now 			 * except the link status change interrupt.			 * TODO*/			val64 = MAC_INT_STATUS_RMAC_INT;			temp64 = readq(&bar0->mac_int_mask);			temp64 &= ~((u64) val64);			writeq(temp64, &bar0->mac_int_mask);			val64 = readq(&bar0->mac_rmac_err_mask);			val64 &= ~((u64) RMAC_LINK_STATE_CHANGE_INT);			writeq(val64, &bar0->mac_rmac_err_mask);		} else if (flag == DISABLE_INTRS) {			/*  Disable MAC Intrs in the general intr mask register 			 */			writeq(DISABLE_ALL_INTRS, &bar0->mac_int_mask);			writeq(DISABLE_ALL_INTRS,			       &bar0->mac_rmac_err_mask);			temp64 = readq(&bar0->general_int_mask);			val64 |= temp64;			writeq(val64, &bar0->general_int_mask);		}	}	/*  XGXS Interrupts */	if (mask & (TX_XGXS_INTR | RX_XGXS_INTR)) {		val64 = TXXGXS_INT_M | RXXGXS_INT_M;		if (flag == ENABLE_INTRS) {			temp64 = readq(&bar0->general_int_mask);			temp64 &= ~((u64) val64);			writeq(temp64, &bar0->general_int_mask);			/* All XGXS block error interrupts are disabled for now			 *  TODO */			writeq(DISABLE_ALL_INTRS, &bar0->xgxs_int_mask);		} else if (flag == DISABLE_INTRS) {			/*  Disable MC Intrs in the general intr mask register 			 */			writeq(DISABLE_ALL_INTRS, &bar0->xgxs_int_mask);			temp64 = readq(&bar0->general_int_mask);			val64 |= temp64;			writeq(val64, &bar0->general_int_mask);		}	}	/*  Memory Controller(MC) interrupts */	if (mask & MC_INTR) {		val64 = MC_INT_M;		if (flag == ENABLE_INTRS) {			temp64 = readq(&bar0->general_int_mask);			temp64 &= ~((u64) val64);			writeq(temp64, &bar0->general_int_mask);			/* All MC block error interrupts are disabled for now			 * TODO */			writeq(DISABLE_ALL_INTRS, &bar0->mc_int_mask);		} else if (flag == DISABLE_INTRS) {			/*  Disable MC Intrs in the general intr mask register			 */			writeq(DISABLE_ALL_INTRS, &bar0->mc_int_mask);			temp64 = readq(&bar0->general_int_mask);			val64 |= temp64;			writeq(val64, &bar0->general_int_mask);		}	}	/*  Tx traffic interrupts */	if (mask & TX_TRAFFIC_INTR) {		val64 = TXTRAFFIC_INT_M;		if (flag == ENABLE_INTRS) {			temp64 = readq(&bar0->general_int_mask);			temp64 &= ~((u64) val64);			writeq(temp64, &bar0->general_int_mask);			/* Enable all the Tx side interrupts */			writeq(0x0, &bar0->tx_traffic_mask);	/* '0' Enables 								 * all 64 TX 								 * interrupt 								 * levels.								 */		} else if (flag == DISABLE_INTRS) {			/*  Disable Tx Traffic Intrs in the general intr mask 			 *  register.			 */			writeq(DISABLE_ALL_INTRS, &bar0->tx_traffic_mask);			temp64 = readq(&bar0->general_int_mask);			val64 |= temp64;			writeq(val64, &bar0->general_int_mask);		}	}	/*  Rx traffic interrupts */	if (mask & RX_TRAFFIC_INTR) {		val64 = RXTRAFFIC_INT_M;		if (flag == ENABLE_INTRS) {			temp64 = readq(&bar0->general_int_mask);			temp64 &= ~((u64) val64);			writeq(temp64, &bar0->general_int_mask);			writeq(0x0, &bar0->rx_traffic_mask);	/* '0' Enables 								 * all 8 RX 								 * interrupt 								 * levels.								 */		} else if (flag == DISABLE_INTRS) {			/*  Disable Rx Traffic Intrs in the general intr mask 			 *  register.			 */			writeq(DISABLE_ALL_INTRS, &bar0->rx_traffic_mask);			temp64 = readq(&bar0->general_int_mask);			val64 |= temp64;			writeq(val64, &bar0->general_int_mask);		}	}}/*   *  Input Arguments:  *   val64 - Value read from adapter status register. *   flag - indicates if the adapter enable bit was ever written once before. *  Return Value:  *   void. *  Description:  *   Returns whether the H/W is ready to go or not. Depending on whether  *   adapter enable bit was written or not the comparison differs and the  *   calling function passes the input argument flag to indicate this. */static int verify_xena_quiescence(u64 val64, int flag){	int ret = 0;	u64 tmp64 = ~((u64) val64);	if (!	    (tmp64 &	     (ADAPTER_STATUS_TDMA_READY | ADAPTER_STATUS_RDMA_READY |	      ADAPTER_STATUS_PFC_READY | ADAPTER_STATUS_TMAC_BUF_EMPTY |	      ADAPTER_STATUS_PIC_QUIESCENT | ADAPTER_STATUS_MC_DRAM_READY |	      ADAPTER_STATUS_MC_QUEUES_READY | ADAPTER_STATUS_M_PLL_LOCK |	      ADAPTER_STATUS_P_PLL_LOCK))) {		if (flag == FALSE) {			if (!(val64 & ADAPTER_STATUS_RMAC_PCC_IDLE) &&			    ((val64 & ADAPTER_STATUS_RC_PRC_QUIESCENT) ==			     ADAPTER_STATUS_RC_PRC_QUIESCENT)) {				ret = 1;			}		} else {			if (((val64 & ADAPTER_STATUS_RMAC_PCC_IDLE) ==			     ADAPTER_STATUS_RMAC_PCC_IDLE) &&			    (!(val64 & ADAPTER_STATUS_RC_PRC_QUIESCENT) ||			     ((val64 & ADAPTER_STATUS_RC_PRC_QUIESCENT) ==			      ADAPTER_STATUS_RC_PRC_QUIESCENT))) {				ret = 1;			}		}	}	return ret;}/*  * New procedure to clear mac address reading  problems on Alpha platforms * */void FixMacAddress(nic_t * sp){	XENA_dev_config_t *bar0 = (XENA_dev_config_t *) sp->bar0;	u64 val64;	int i = 0;	while (fix_mac[i] != END_SIGN) {		writeq(fix_mac[i++], &bar0->gpio_control);		val64 = readq(&bar0->gpio_control);	}}/*   *  Input Arguments:  *  device private variable. *  Return Value:  *  SUCCESS on success and -1 on failure. *  Description:  *  This function actually turns the device on. Before this  *  function is called, all Registers are configured from their reset states  *  and shared memory is allocated but the NIC is still quiescent. On  *  calling this function, the device interrupts are cleared and the NIC is *  literally switched on by writing into the adapter control register. */static int startNic(struct s2io_nic *nic){	XENA_dev_config_t *bar0 = (XENA_dev_config_t *) nic->bar0;	struct net_device *dev = nic->dev;	register u64 val64 = 0;	u16 interruptible, i;	u16 subid;	mac_info_t *mac_control;	struct config_param *config;	mac_control = &nic->mac_control;	config = &nic->config;	/*  PRC Initialization and configuration */	for (i = 0; i < config->RxRingNum; i++) {		writeq((u64) nic->rx_blocks[i][0].block_dma_addr,		       &bar0->prc_rxd0_n[i]);		val64 = readq(&bar0->prc_ctrl_n[i]);		val64 |= PRC_CTRL_RC_ENABLED;		writeq(val64, &bar0->prc_ctrl_n[i]);	}	/* Enabling MC-RLDRAM. After enabling the device, we timeout	 * for around 100ms, which is approximately the time required	 * for the device to be ready for operation.	 */	val64 = readq(&bar0->mc_rldram_mrs);	val64 |= MC_RLDRAM_QUEUE_SIZE_ENABLE | MC_RLDRAM_MRS_ENABLE;	writeq(val64, &bar0->mc_rldram_mrs);	val64 = readq(&bar0->mc_rldram_mrs);	set_current_state(TASK_UNINTERRUPTIBLE);	schedule_timeout(HZ / 10);	/* Delay by around 100 ms. */	/* Enabling ECC Protection. */	val64 = readq(&bar0->adapter_control);	val64 &= ~ADAPTER_ECC_EN;	writeq(val64, &bar0->adapter_control);	/* Clearing any possible Link state change interrupts that 	 * could have popped up just before Enabling the card.	 */	val64 = readq(&bar0->mac_rmac_err_reg);	if (val64)		writeq(val64, &bar0->mac_rmac_err_reg);	/* Verify if the device is ready to be enabled, if so enable 	 * it.	 */	val64 = readq(&bar0->adapter_status);	if (!verify_xena_quiescence(val64, nic->device_enabled_once)) {		DBG_PRINT(ERR_DBG, "%s: device is not ready, ", dev->name);		DBG_PRINT(ERR_DBG, "Adapter status reads: 0x%llx\n",			  (unsigned long long) val64);		return FAILURE;	}	/*  Enable select interrupts */	interruptible = TX_TRAFFIC_INTR | RX_TRAFFIC_INTR | TX_MAC_INTR |	    RX_MAC_INTR;	en_dis_able_NicIntrs(nic, interruptible, ENABLE_INTRS);	/* With some switches, link might be already up at this point.	 * Because of this weird behavior, when we enable laser, 	 * we may not get link. We need to handle this. We cannot 	 * figure out which switch is misbehaving. So we are forced to 	 * make a global change. 	 */	/* Enabling Laser. */	val64 = readq(&bar0->adapter_control);	val64 |= ADAPTER_EOI_TX_ON;	writeq(val64, &bar0->adapter_control);	/* SXE-002: Initialize link and activity LED */	subid = nic->pdev->subsystem_device;	if ((subid & 0xFF) >= 0x07) {		val64 = readq(&bar0->gpio_control);		val64 |= 0x0000800000000000ULL;		writeq(val64, &bar0->gpio_control);		val64 = 0x0411040400000000ULL;		writeq(val64, (void *) ((u8 *) bar0 + 0x2700));	}	/* 	 * Here we are performing soft reset on XGXS to 	 * force link down. Since link is already up, we will get	 * link state change interrupt after this reset	 */	writeq(0x8007051500000000ULL, &bar0->dtx_control);	val64 = readq(&bar0->dtx_control);	writeq(0x80070515000000E0ULL, &bar0->dtx_control);	val64 = readq(&bar0->dtx_control);	writeq(0x80070515001F00E4ULL, &bar0->dtx_control);	val64 = readq(&bar0->dtx_control);	return SUCCESS;}/*   *  Input Arguments:  *   nic - device private variable. *  Return Value:  *   void. *  Description:  *   Free all queued Tx buffers. */void freeTxBuffers(struct s2io_nic *nic){	struct net_device *dev = nic->dev;	struct sk_buff *skb;	TxD_t *txdp;	int i, j;#if DEBUG_ON	int cnt = 0;#endif	mac_info_t *mac_control;	struct config_param *config;	mac_control = &nic->mac_control;	config = &nic->config;	for (i = 0; i < config->TxFIFONum; i++) {		for (j = 0; j < config->TxCfg[i].FifoLen - 1; j++) {			txdp = mac_control->txdl_start[i] +			    (config->MaxTxDs * j);			if (!(txdp->Control_1 & TXD_LIST_OWN_XENA)) {				/* If owned by host, ignore */				continue;			}			skb =			    (struct sk_buff *) ((unsigned long) txdp->						Host_Control);			if (skb == NULL) {				DBG_PRINT(ERR_DBG, "%s: NULL skb ",					  dev->name);				DBG_PRINT(ERR_DBG, "in Tx Int\n");				return;			}#if DEBUG_ON			cnt++;#endif			dev_kfree_skb(skb);			memset(txdp, 0, sizeof(TxD_t));		}#if DEBUG_ON		DBG_PRINT(INTR_DBG,			  "%s:forcibly freeing %d skbs on FIFO%d\n",			  dev->name, cnt, i);#endif	}}/*   *  Input Arguments:  *   nic - device private variable. *  Return Value:  *   void. *  Description:  *   This function does exactly the opposite of what the startNic()  *   function does. This function is called to stop  *   the device. */static void stopNic(struct s2io_nic *nic){	XENA_dev_config_t *bar0 = (XENA_dev_config_t *) nic->bar0;	register u64 val64 = 0;	u16 interruptible, i;	mac_info_t *mac_control;	struct config_param *config;	mac_control = &nic->mac_control;	config = &nic->config;/*  Disable all interrupts */	interruptible = TX_TRAFFIC_INTR | RX_TRAFFIC_INTR | TX_MAC_INTR |	    RX_MAC_INTR;	en_dis_able_NicIntrs(nic, interruptible, DISABLE_INTRS);/*  Disable PRCs */	for (i = 0; i < config->RxRingNum; i++) {		val64 = readq(&bar0->prc_ctrl_n[i]);		val64 &= ~((u64) PRC_CTRL_RC_ENABLED);		writeq(val64, &bar0->prc_ctrl_n[i]);	}}/*   *  Input Arguments:  *  device private variable *  Return Value:  *  SUCCESS on success or an appropriate -ve value on failure. *  Description:  *  The function allocates Rx side skbs and puts the physical *  address of these buffers into the RxD buffer pointers, so that the NIC *  can DMA the received frame into these locations.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99久久精品| 国产欧美中文在线| 视频在线在亚洲| 欧美日韩一区中文字幕| 亚洲香蕉伊在人在线观| 欧美日韩一区中文字幕| 日本美女一区二区| 欧美videossexotv100| 日韩 欧美一区二区三区| 日韩欧美一二三| 国产二区国产一区在线观看| 国产精品卡一卡二| 色综合天天综合狠狠| 性欧美大战久久久久久久久| 3atv一区二区三区| 成人免费看黄yyy456| 亚洲欧美电影一区二区| 欧美日韩成人在线| 国产一区三区三区| 亚洲日本在线看| 欧美一级生活片| 国产曰批免费观看久久久| 亚洲欧美综合另类在线卡通| 欧美性受xxxx黑人xyx性爽| 琪琪一区二区三区| 欧美国产综合色视频| 在线观看日韩av先锋影音电影院| 性做久久久久久久免费看| 26uuu国产一区二区三区| 91社区在线播放| 久久国产综合精品| 国产日韩欧美不卡| 欧美日韩视频在线第一区 | 亚洲图片欧美激情| 欧美一区二区成人6969| 99麻豆久久久国产精品免费| 美洲天堂一区二卡三卡四卡视频| 亚洲欧洲另类国产综合| 欧美精品一二三| 国产精品18久久久久久vr| 亚洲影院免费观看| 国产亚洲一区二区在线观看| 欧美精品日日鲁夜夜添| eeuss鲁一区二区三区| 伦理电影国产精品| 亚洲日本一区二区| 久久在线观看免费| 欧美日韩精品二区第二页| 成人h动漫精品一区二| 久久99久久精品欧美| 亚洲一区二区三区四区五区黄 | 欧美日韩一区二区在线观看视频| 波多野结衣在线一区| 久久电影国产免费久久电影| 亚洲免费在线观看| 欧美激情一区二区三区不卡| 日韩欧美一二区| 欧美图片一区二区三区| 91在线播放网址| 丁香婷婷综合五月| 国产精品99久久久| 激情五月婷婷综合| 免费观看久久久4p| 日韩精品一级二级| 日韩精品乱码免费| 亚洲国产精品人人做人人爽| 亚洲女厕所小便bbb| 国产精品视频观看| 国产精品视频观看| 国产精品污网站| 国产精品久久久久久亚洲毛片| 久久久久久久免费视频了| www激情久久| 精品美女一区二区| 精品福利一区二区三区免费视频| 欧美一卡二卡三卡| 精品国产制服丝袜高跟| 精品91自产拍在线观看一区| 欧美成人一区二区三区片免费| 日韩视频在线观看一区二区| 日韩欧美一二区| 国产亚洲一本大道中文在线| 国产午夜三级一区二区三| 国产日韩欧美制服另类| 国产欧美1区2区3区| 中文字幕国产一区二区| 亚洲视频你懂的| 一区二区在线电影| 午夜亚洲国产au精品一区二区| 日韩国产在线观看| 麻豆精品蜜桃视频网站| 国产一区二区免费看| 91精品综合久久久久久| 欧美一级高清片在线观看| 精品免费国产一区二区三区四区| 久久综合色之久久综合| 国产精品全国免费观看高清| 亚洲欧洲制服丝袜| 日韩国产精品91| 国产精品亚洲午夜一区二区三区| 成人午夜av在线| 欧美视频一区二区在线观看| 91精品国产福利| 国产日韩av一区| 亚洲另类春色校园小说| 日韩av不卡一区二区| 国产成人99久久亚洲综合精品| 91亚洲男人天堂| 欧美视频一区二区三区在线观看| 日韩色视频在线观看| 亚洲国产成人自拍| 亚洲福中文字幕伊人影院| 久久99蜜桃精品| 色综合久久中文字幕综合网| 7799精品视频| 国产精品久久久久四虎| 日韩精品成人一区二区在线| 激情文学综合丁香| 欧美性受xxxx| 亚洲国产激情av| 日本成人超碰在线观看| 99re成人精品视频| 精品美女被调教视频大全网站| 亚洲三级小视频| 国产一二精品视频| 欧美日韩在线播放三区四区| 国产色综合一区| 午夜精品一区二区三区电影天堂| 国产精品一区二区久久不卡| 欧美日韩精品一区二区三区| 国产精品福利av| 精品影视av免费| 欧美欧美欧美欧美首页| 日本一区二区动态图| 日日夜夜精品视频免费| 国产成人精品免费看| 色美美综合视频| 欧美成人vr18sexvr| 悠悠色在线精品| 国模少妇一区二区三区| 欧美一区二区三区四区久久| 一区二区三区四区不卡在线| 成人永久免费视频| 久久久亚洲精品一区二区三区| 日韩激情视频网站| 欧美色老头old∨ideo| 亚洲视频图片小说| 99久久精品免费看国产| 国产性做久久久久久| 国内精品免费**视频| 欧美一卡二卡在线观看| 日韩国产高清影视| 在线观看av一区二区| 国产欧美精品一区| 国产盗摄精品一区二区三区在线| 欧美麻豆精品久久久久久| 一区二区三区免费观看| 成人a级免费电影| 国产喂奶挤奶一区二区三区| 日韩国产高清影视| 欧美人成免费网站| 亚洲午夜在线视频| 欧美三级韩国三级日本三斤| 国产精品免费人成网站| 国产成人免费xxxxxxxx| 久久久噜噜噜久久中文字幕色伊伊| 久久精品理论片| 欧美成人精品3d动漫h| 精品伊人久久久久7777人| 精品欧美一区二区三区精品久久| 人人精品人人爱| 精品国产3级a| 国产在线播放一区| 国产欧美日韩在线观看| 成人一区二区三区在线观看| 国产亚洲成av人在线观看导航| 国产精品亚洲成人| 欧美极品xxx| 3d动漫精品啪啪| 人禽交欧美网站| 精品国产免费人成在线观看| 国内精品伊人久久久久av影院| 精品捆绑美女sm三区| 国产真实乱子伦精品视频| 欧美国产精品劲爆| 波多野结衣亚洲一区| 亚洲综合小说图片| 91精品在线观看入口| 久久国产福利国产秒拍| 国产精品五月天| 在线观看视频91| 日本少妇一区二区| 久久久久高清精品| 在线观看精品一区| 日韩高清在线不卡| 欧美高清一级片在线观看| 91色婷婷久久久久合中文| 三级一区在线视频先锋| 欧美国产日韩精品免费观看| 日本高清不卡在线观看|