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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ixgbe_82598.c

?? linux 內核源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************************  Intel 10 Gigabit PCI Express Linux driver  Copyright(c) 1999 - 2007 Intel Corporation.  This program is free software; you can redistribute it and/or modify it  under the terms and conditions of the GNU General Public License,  version 2, as published by the Free Software Foundation.  This program is distributed in the hope it will be useful, but WITHOUT  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for  more details.  You should have received a copy of the GNU General Public License along with  this program; if not, write to the Free Software Foundation, Inc.,  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.  The full GNU General Public License is included in this distribution in  the file called "COPYING".  Contact Information:  Linux NICS <linux.nics@intel.com>  e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497*******************************************************************************/#include <linux/pci.h>#include <linux/delay.h>#include <linux/sched.h>#include "ixgbe.h"#include "ixgbe_phy.h"#define IXGBE_82598_MAX_TX_QUEUES 32#define IXGBE_82598_MAX_RX_QUEUES 64#define IXGBE_82598_RAR_ENTRIES   16static s32 ixgbe_get_invariants_82598(struct ixgbe_hw *hw);static s32 ixgbe_get_link_settings_82598(struct ixgbe_hw *hw, u32 *speed,					 bool *autoneg);static s32 ixgbe_get_copper_link_settings_82598(struct ixgbe_hw *hw,						u32 *speed, bool *autoneg);static enum ixgbe_media_type ixgbe_get_media_type_82598(struct ixgbe_hw *hw);static s32 ixgbe_setup_mac_link_82598(struct ixgbe_hw *hw);static s32 ixgbe_check_mac_link_82598(struct ixgbe_hw *hw, u32 *speed,				      bool *link_up);static s32 ixgbe_setup_mac_link_speed_82598(struct ixgbe_hw *hw, u32 speed,					    bool autoneg,					    bool autoneg_wait_to_complete);static s32 ixgbe_setup_copper_link_82598(struct ixgbe_hw *hw);static s32 ixgbe_check_copper_link_82598(struct ixgbe_hw *hw, u32 *speed,					 bool *link_up);static s32 ixgbe_setup_copper_link_speed_82598(struct ixgbe_hw *hw, u32 speed,					       bool autoneg,					       bool autoneg_wait_to_complete);static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw);static s32 ixgbe_get_invariants_82598(struct ixgbe_hw *hw){	hw->mac.num_rx_queues = IXGBE_82598_MAX_TX_QUEUES;	hw->mac.num_tx_queues = IXGBE_82598_MAX_RX_QUEUES;	hw->mac.num_rx_addrs = IXGBE_82598_RAR_ENTRIES;	return 0;}/** *  ixgbe_get_link_settings_82598 - Determines default link settings *  @hw: pointer to hardware structure *  @speed: pointer to link speed *  @autoneg: boolean auto-negotiation value * *  Determines the default link settings by reading the AUTOC register. **/static s32 ixgbe_get_link_settings_82598(struct ixgbe_hw *hw, u32 *speed,					 bool *autoneg){	s32 status = 0;	s32 autoc_reg;	autoc_reg = IXGBE_READ_REG(hw, IXGBE_AUTOC);	if (hw->mac.link_settings_loaded) {		autoc_reg &= ~IXGBE_AUTOC_LMS_ATTACH_TYPE;		autoc_reg &= ~IXGBE_AUTOC_LMS_MASK;		autoc_reg |= hw->mac.link_attach_type;		autoc_reg |= hw->mac.link_mode_select;	}	switch (autoc_reg & IXGBE_AUTOC_LMS_MASK) {	case IXGBE_AUTOC_LMS_1G_LINK_NO_AN:		*speed = IXGBE_LINK_SPEED_1GB_FULL;		*autoneg = false;		break;	case IXGBE_AUTOC_LMS_10G_LINK_NO_AN:		*speed = IXGBE_LINK_SPEED_10GB_FULL;		*autoneg = false;		break;	case IXGBE_AUTOC_LMS_1G_AN:		*speed = IXGBE_LINK_SPEED_1GB_FULL;		*autoneg = true;		break;	case IXGBE_AUTOC_LMS_KX4_AN:	case IXGBE_AUTOC_LMS_KX4_AN_1G_AN:		*speed = IXGBE_LINK_SPEED_UNKNOWN;		if (autoc_reg & IXGBE_AUTOC_KX4_SUPP)			*speed |= IXGBE_LINK_SPEED_10GB_FULL;		if (autoc_reg & IXGBE_AUTOC_KX_SUPP)			*speed |= IXGBE_LINK_SPEED_1GB_FULL;		*autoneg = true;		break;	default:		status = IXGBE_ERR_LINK_SETUP;		break;	}	return status;}/** *  ixgbe_get_copper_link_settings_82598 - Determines default link settings *  @hw: pointer to hardware structure *  @speed: pointer to link speed *  @autoneg: boolean auto-negotiation value * *  Determines the default link settings by reading the AUTOC register. **/static s32 ixgbe_get_copper_link_settings_82598(struct ixgbe_hw *hw,						u32 *speed, bool *autoneg){	s32 status = IXGBE_ERR_LINK_SETUP;	u16 speed_ability;	*speed = 0;	*autoneg = true;	status = ixgbe_read_phy_reg(hw, IXGBE_MDIO_PHY_SPEED_ABILITY,				    IXGBE_MDIO_PMA_PMD_DEV_TYPE,				    &speed_ability);	if (status == 0) {		if (speed_ability & IXGBE_MDIO_PHY_SPEED_10G)		    *speed |= IXGBE_LINK_SPEED_10GB_FULL;		if (speed_ability & IXGBE_MDIO_PHY_SPEED_1G)		    *speed |= IXGBE_LINK_SPEED_1GB_FULL;	}	return status;}/** *  ixgbe_get_media_type_82598 - Determines media type *  @hw: pointer to hardware structure * *  Returns the media type (fiber, copper, backplane) **/static enum ixgbe_media_type ixgbe_get_media_type_82598(struct ixgbe_hw *hw){	enum ixgbe_media_type media_type;	/* Media type for I82598 is based on device ID */	switch (hw->device_id) {	case IXGBE_DEV_ID_82598AF_DUAL_PORT:	case IXGBE_DEV_ID_82598AF_SINGLE_PORT:	case IXGBE_DEV_ID_82598EB_CX4:		media_type = ixgbe_media_type_fiber;		break;	case IXGBE_DEV_ID_82598AT_DUAL_PORT:		media_type = ixgbe_media_type_copper;		break;	default:		media_type = ixgbe_media_type_unknown;		break;	}	return media_type;}/** *  ixgbe_setup_mac_link_82598 - Configures MAC link settings *  @hw: pointer to hardware structure * *  Configures link settings based on values in the ixgbe_hw struct. *  Restarts the link.  Performs autonegotiation if needed. **/static s32 ixgbe_setup_mac_link_82598(struct ixgbe_hw *hw){	u32 autoc_reg;	u32 links_reg;	u32 i;	s32 status = 0;	autoc_reg = IXGBE_READ_REG(hw, IXGBE_AUTOC);	if (hw->mac.link_settings_loaded) {		autoc_reg &= ~IXGBE_AUTOC_LMS_ATTACH_TYPE;		autoc_reg &= ~IXGBE_AUTOC_LMS_MASK;		autoc_reg |= hw->mac.link_attach_type;		autoc_reg |= hw->mac.link_mode_select;		IXGBE_WRITE_REG(hw, IXGBE_AUTOC, autoc_reg);		msleep(50);	}	/* Restart link */	autoc_reg |= IXGBE_AUTOC_AN_RESTART;	IXGBE_WRITE_REG(hw, IXGBE_AUTOC, autoc_reg);	/* Only poll for autoneg to complete if specified to do so */	if (hw->phy.autoneg_wait_to_complete) {		if (hw->mac.link_mode_select == IXGBE_AUTOC_LMS_KX4_AN ||		    hw->mac.link_mode_select == IXGBE_AUTOC_LMS_KX4_AN_1G_AN) {			links_reg = 0; /* Just in case Autoneg time = 0 */			for (i = 0; i < IXGBE_AUTO_NEG_TIME; i++) {				links_reg = IXGBE_READ_REG(hw, IXGBE_LINKS);				if (links_reg & IXGBE_LINKS_KX_AN_COMP)					break;				msleep(100);			}			if (!(links_reg & IXGBE_LINKS_KX_AN_COMP)) {				status = IXGBE_ERR_AUTONEG_NOT_COMPLETE;				hw_dbg(hw,				       "Autonegotiation did not complete.\n");			}		}	}	/*	 * We want to save off the original Flow Control configuration just in	 * case we get disconnected and then reconnected into a different hub	 * or switch with different Flow Control capabilities.	 */	hw->fc.type = hw->fc.original_type;	ixgbe_setup_fc(hw, 0);	/* Add delay to filter out noises during initial link setup */	msleep(50);	return status;}/** *  ixgbe_check_mac_link_82598 - Get link/speed status *  @hw: pointer to hardware structure *  @speed: pointer to link speed *  @link_up: true is link is up, false otherwise * *  Reads the links register to determine if link is up and the current speed **/static s32 ixgbe_check_mac_link_82598(struct ixgbe_hw *hw, u32 *speed,				      bool *link_up){	u32 links_reg;	links_reg = IXGBE_READ_REG(hw, IXGBE_LINKS);	if (links_reg & IXGBE_LINKS_UP)		*link_up = true;	else		*link_up = false;	if (links_reg & IXGBE_LINKS_SPEED)		*speed = IXGBE_LINK_SPEED_10GB_FULL;	else		*speed = IXGBE_LINK_SPEED_1GB_FULL;	return 0;}/** *  ixgbe_setup_mac_link_speed_82598 - Set MAC link speed *  @hw: pointer to hardware structure *  @speed: new link speed *  @autoneg: true if auto-negotiation enabled *  @autoneg_wait_to_complete: true if waiting is needed to complete * *  Set the link speed in the AUTOC register and restarts link. **/static s32 ixgbe_setup_mac_link_speed_82598(struct ixgbe_hw *hw,					    u32 speed, bool autoneg,					    bool autoneg_wait_to_complete){	s32 status = 0;	/* If speed is 10G, then check for CX4 or XAUI. */	if ((speed == IXGBE_LINK_SPEED_10GB_FULL) &&	    (!(hw->mac.link_attach_type & IXGBE_AUTOC_10G_KX4)))		hw->mac.link_mode_select = IXGBE_AUTOC_LMS_10G_LINK_NO_AN;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产亚洲高清剧情介绍 | 91精品国产品国语在线不卡| 欧美日韩一区 二区 三区 久久精品| 欧美日韩一区二区三区在线看| 制服丝袜成人动漫| 国产精品乱人伦一区二区| 麻豆成人91精品二区三区| 91丨porny丨蝌蚪视频| 日韩视频免费观看高清在线视频| 欧美成人精品1314www| 亚洲线精品一区二区三区八戒| 久久激情五月婷婷| 欧美日韩精品一区二区| 一区二区三区在线视频播放| 国产成人亚洲综合a∨猫咪| 91麻豆精品91久久久久久清纯| 国产精品色在线观看| 韩国v欧美v日本v亚洲v| 91.xcao| 国产资源在线一区| 日韩一级片在线播放| 亚洲成人三级小说| 欧美性三三影院| 亚洲国产另类精品专区| 日本久久一区二区三区| 中文字幕日韩精品一区| 成人av在线看| 国产精品乱码人人做人人爱| 国产精品99久久久久久似苏梦涵| 欧美亚洲动漫精品| 一区二区在线电影| 色域天天综合网| 亚洲欧美日韩一区二区| 99久久婷婷国产精品综合| 国产亚洲成aⅴ人片在线观看 | 国产欧美一区二区精品久导航| 婷婷六月综合亚洲| 欧美另类videos死尸| 午夜天堂影视香蕉久久| 欧美丰满嫩嫩电影| 另类小说图片综合网| 精品久久久久久久久久久院品网| 日韩激情一区二区| 欧美一区二区三区免费观看视频| 婷婷成人激情在线网| 日韩欧美专区在线| 国产精品一区二区在线观看网站| 久久久亚洲精品石原莉奈 | 国产美女精品人人做人人爽| 欧美一区二区三区在线电影| 精品制服美女丁香| 国产欧美va欧美不卡在线| 波多野结衣中文字幕一区二区三区| 精品福利一二区| 99久久婷婷国产综合精品电影| 亚洲欧美综合另类在线卡通| 色欧美日韩亚洲| 日韩精品五月天| 日韩久久一区二区| 日本久久电影网| 日本不卡123| 国产人成一区二区三区影院| av在线免费不卡| 亚洲成人免费av| 26uuu精品一区二区三区四区在线| 九一九一国产精品| 国产精品国产三级国产三级人妇| 92精品国产成人观看免费| 无码av中文一区二区三区桃花岛| 日韩视频在线观看一区二区| 懂色av一区二区三区免费观看| 最新不卡av在线| 日韩一区二区在线观看| 成人午夜视频在线观看| 日韩中文字幕不卡| 中文幕一区二区三区久久蜜桃| 91视频91自| 精品亚洲免费视频| 亚洲欧洲精品天堂一级 | 精品国产一区二区三区忘忧草 | 亚洲一区av在线| 久久久久久**毛片大全| 欧洲精品中文字幕| 国产成人aaa| 美女在线一区二区| 亚洲一区二区三区视频在线| 久久九九全国免费| 91超碰这里只有精品国产| 91年精品国产| 精品中文字幕一区二区| 舔着乳尖日韩一区| 亚洲精品精品亚洲| 日本一区二区三区在线不卡| 欧美一区二区三区视频免费| 色欧美片视频在线观看在线视频| 美腿丝袜亚洲色图| 亚洲一区在线观看网站| 国产精品美女一区二区| 久久综合色8888| 日韩三级在线观看| 欧美年轻男男videosbes| 91女厕偷拍女厕偷拍高清| 国产乱子伦视频一区二区三区| 伊人婷婷欧美激情| 亚洲欧美成人一区二区三区| 精品国产乱码久久久久久蜜臀| 欧美亚洲国产一区在线观看网站| 成人激情小说乱人伦| 经典一区二区三区| 美女mm1313爽爽久久久蜜臀| 日韩av电影一区| 日韩成人免费电影| 五月婷婷欧美视频| 午夜在线电影亚洲一区| 亚洲午夜在线观看视频在线| 亚洲第一二三四区| 亚洲成av人片一区二区三区| 亚洲福利国产精品| 亚洲国产一二三| 亚洲成av人在线观看| 香蕉影视欧美成人| 午夜激情综合网| 日韩电影在线免费| 久久国内精品自在自线400部| 奇米亚洲午夜久久精品| 久久99久久久久| 国产美女在线精品| 成人午夜激情视频| 91网站黄www| 欧美日韩综合一区| 91精品国产综合久久久久久久久久| 欧美午夜片在线看| 欧美一区二区精品| 久久综合久久久久88| 国产丝袜美腿一区二区三区| 一区在线观看免费| 亚洲综合久久av| 麻豆精品视频在线| 国产成人精品免费一区二区| 91在线精品一区二区| 欧美日韩午夜影院| 久久色.com| 亚洲欧美色一区| 日本vs亚洲vs韩国一区三区| 国产精品自拍一区| 色综合久久88色综合天天免费| 91久久精品日日躁夜夜躁欧美| 欧洲色大大久久| 欧美精品一区二区三区久久久| 国产日韩欧美综合在线| 怡红院av一区二区三区| 日本亚洲最大的色成网站www| 黑人精品欧美一区二区蜜桃 | 欧美电影免费观看高清完整版在| 精品国产网站在线观看| 亚洲丝袜自拍清纯另类| 日韩精品欧美精品| 成人h精品动漫一区二区三区| 91视视频在线观看入口直接观看www| 91黄视频在线观看| 国产亚洲欧美色| 午夜久久久久久久久| 国产91丝袜在线观看| 欧美日韩视频在线一区二区| 国产日韩v精品一区二区| 亚洲国产欧美日韩另类综合| 粉嫩aⅴ一区二区三区四区| 欧美日韩不卡在线| 中文在线资源观看网站视频免费不卡| 中文字幕免费观看一区| 丝袜美腿亚洲综合| 99精品国产热久久91蜜凸| 精品久久久久久久久久久院品网| 亚洲欧洲99久久| 国产v综合v亚洲欧| 精品国产一区二区三区av性色| 中文字幕色av一区二区三区| 国产乱国产乱300精品| 欧美精品久久久久久久多人混战 | 色菇凉天天综合网| 国产日韩欧美不卡| 美女视频黄 久久| 欧美色图免费看| 成人欧美一区二区三区1314| 黄色资源网久久资源365| 欧美剧情电影在线观看完整版免费励志电影 | 午夜精品福利一区二区蜜股av| 看片的网站亚洲| 欧美精品丝袜中出| 又紧又大又爽精品一区二区| 国产黄色91视频| 久久嫩草精品久久久精品| 男女性色大片免费观看一区二区 | 国产精品麻豆99久久久久久| 国产成人一级电影| 国产精品久久久一本精品| 国产激情一区二区三区四区| 2024国产精品视频| 国产福利视频一区二区三区| 精品99一区二区三区|