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

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

?? ixgbe_82598.c

?? linux 內(nèi)核源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
	else if ((speed == IXGBE_LINK_SPEED_1GB_FULL) && (!autoneg))		hw->mac.link_mode_select = IXGBE_AUTOC_LMS_1G_LINK_NO_AN;	else if (autoneg) {		/* BX mode - Autonegotiate 1G */		if (!(hw->mac.link_attach_type & IXGBE_AUTOC_1G_PMA_PMD))			hw->mac.link_mode_select = IXGBE_AUTOC_LMS_1G_AN;		else /* KX/KX4 mode */			hw->mac.link_mode_select = IXGBE_AUTOC_LMS_KX4_AN_1G_AN;	} else {		status = IXGBE_ERR_LINK_SETUP;	}	if (status == 0) {		hw->phy.autoneg_wait_to_complete = autoneg_wait_to_complete;		hw->mac.link_settings_loaded = true;		/*		 * Setup and restart the link based on the new values in		 * ixgbe_hw This will write the AUTOC register based on the new		 * stored values		 */		hw->phy.ops.setup(hw);	}	return status;}/** *  ixgbe_setup_copper_link_82598 - Setup copper 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.  Restart *  phy and wait for autonegotiate to finish.  Then synchronize the *  MAC and PHY. **/static s32 ixgbe_setup_copper_link_82598(struct ixgbe_hw *hw){	s32 status;	u32 speed = 0;	bool link_up = false;	/* Set up MAC */	hw->phy.ops.setup(hw);	/* Restart autonegotiation on PHY */	status = hw->phy.ops.setup(hw);	/* Synchronize MAC to PHY speed */	if (status == 0)		status = hw->phy.ops.check(hw, &speed, &link_up);	return status;}/** *  ixgbe_check_copper_link_82598 - Syncs MAC & PHY link settings *  @hw: pointer to hardware structure *  @speed: pointer to link speed *  @link_up: true if link is up, false otherwise * *  Reads the mac link, phy link, and synchronizes the MAC to PHY. **/static s32 ixgbe_check_copper_link_82598(struct ixgbe_hw *hw, u32 *speed,					 bool *link_up){	s32 status;	u32 phy_speed = 0;	bool phy_link = false;	/* This is the speed and link the MAC is set at */	hw->phy.ops.check(hw, speed, link_up);	/*	 * Check current speed and link status of the PHY register.	 * This is a vendor specific register and may have to	 * be changed for other copper PHYs.	 */	status = hw->phy.ops.check(hw, &phy_speed, &phy_link);	if ((status == 0) && (phy_link)) {		/*		 * Check current link status of the MACs link's register		 * matches that of the speed in the PHY register		 */		if (*speed != phy_speed) {			/*			 * The copper PHY requires 82598 attach type to be XAUI			 * for 10G and BX for 1G			 */			hw->mac.link_attach_type =				(IXGBE_AUTOC_10G_XAUI | IXGBE_AUTOC_1G_BX);			/* Synchronize the MAC speed to the PHY speed */			status = hw->phy.ops.setup_speed(hw, phy_speed, false,							  false);			if (status == 0)				hw->phy.ops.check(hw, speed, link_up);			else				status = IXGBE_ERR_LINK_SETUP;		}	} else {		*link_up = phy_link;	}	return status;}/** *  ixgbe_setup_copper_link_speed_82598 - Set the PHY autoneg advertised field *  @hw: pointer to hardware structure *  @speed: new link speed *  @autoneg: true if autonegotiation enabled *  @autoneg_wait_to_complete: true if waiting is needed to complete * *  Sets the link speed in the AUTOC register in the MAC and restarts link. **/static s32 ixgbe_setup_copper_link_speed_82598(struct ixgbe_hw *hw, u32 speed,					       bool autoneg,					       bool autoneg_wait_to_complete){	s32 status;	bool link_up = 0;	/* Setup the PHY according to input speed */	status = hw->phy.ops.setup_speed(hw, speed, autoneg,					  autoneg_wait_to_complete);	/* Synchronize MAC to PHY speed */	if (status == 0)		status = hw->phy.ops.check(hw, &speed, &link_up);	return status;}/** *  ixgbe_reset_hw_82598 - Performs hardware reset *  @hw: pointer to hardware structure * *  Resets the hardware by reseting the transmit and receive units, masks and *  clears all interrupts, performing a PHY reset, and performing a link (MAC) *  reset. **/static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw){	s32 status = 0;	u32 ctrl;	u32 gheccr;	u32 i;	u32 autoc;	u8  analog_val;	/* Call adapter stop to disable tx/rx and clear interrupts */	ixgbe_stop_adapter(hw);	/*	 * Power up the Atlas TX lanes if they are currently powered down.	 * Atlas TX lanes are powered down for MAC loopback tests, but	 * they are not automatically restored on reset.	 */	ixgbe_read_analog_reg8(hw, IXGBE_ATLAS_PDN_LPBK, &analog_val);	if (analog_val & IXGBE_ATLAS_PDN_TX_REG_EN) {		/* Enable TX Atlas so packets can be transmitted again */		ixgbe_read_analog_reg8(hw, IXGBE_ATLAS_PDN_LPBK, &analog_val);		analog_val &= ~IXGBE_ATLAS_PDN_TX_REG_EN;		ixgbe_write_analog_reg8(hw, IXGBE_ATLAS_PDN_LPBK, analog_val);		ixgbe_read_analog_reg8(hw, IXGBE_ATLAS_PDN_10G, &analog_val);		analog_val &= ~IXGBE_ATLAS_PDN_TX_10G_QL_ALL;		ixgbe_write_analog_reg8(hw, IXGBE_ATLAS_PDN_10G, analog_val);		ixgbe_read_analog_reg8(hw, IXGBE_ATLAS_PDN_1G, &analog_val);		analog_val &= ~IXGBE_ATLAS_PDN_TX_1G_QL_ALL;		ixgbe_write_analog_reg8(hw, IXGBE_ATLAS_PDN_1G, analog_val);		ixgbe_read_analog_reg8(hw, IXGBE_ATLAS_PDN_AN, &analog_val);		analog_val &= ~IXGBE_ATLAS_PDN_TX_AN_QL_ALL;		ixgbe_write_analog_reg8(hw, IXGBE_ATLAS_PDN_AN, analog_val);	}	/* Reset PHY */	ixgbe_reset_phy(hw);	/*	 * Prevent the PCI-E bus from from hanging by disabling PCI-E master	 * access and verify no pending requests before reset	 */	if (ixgbe_disable_pcie_master(hw) != 0) {		status = IXGBE_ERR_MASTER_REQUESTS_PENDING;		hw_dbg(hw, "PCI-E Master disable polling has failed.\n");	}	/*	 * Issue global reset to the MAC.  This needs to be a SW reset.	 * If link reset is used, it might reset the MAC when mng is using it	 */	ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL);	IXGBE_WRITE_REG(hw, IXGBE_CTRL, (ctrl | IXGBE_CTRL_RST));	IXGBE_WRITE_FLUSH(hw);	/* Poll for reset bit to self-clear indicating reset is complete */	for (i = 0; i < 10; i++) {		udelay(1);		ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL);		if (!(ctrl & IXGBE_CTRL_RST))			break;	}	if (ctrl & IXGBE_CTRL_RST) {		status = IXGBE_ERR_RESET_FAILED;		hw_dbg(hw, "Reset polling failed to complete.\n");	}	msleep(50);	gheccr = IXGBE_READ_REG(hw, IXGBE_GHECCR);	gheccr &= ~((1 << 21) | (1 << 18) | (1 << 9) | (1 << 6));	IXGBE_WRITE_REG(hw, IXGBE_GHECCR, gheccr);	/*	 * AUTOC register which stores link settings gets cleared	 * and reloaded from EEPROM after reset. We need to restore	 * our stored value from init in case SW changed the attach	 * type or speed.  If this is the first time and link settings	 * have not been stored, store default settings from AUTOC.	 */	autoc = IXGBE_READ_REG(hw, IXGBE_AUTOC);	if (hw->mac.link_settings_loaded) {		autoc &= ~(IXGBE_AUTOC_LMS_ATTACH_TYPE);		autoc &= ~(IXGBE_AUTOC_LMS_MASK);		autoc |= hw->mac.link_attach_type;		autoc |= hw->mac.link_mode_select;		IXGBE_WRITE_REG(hw, IXGBE_AUTOC, autoc);	} else {		hw->mac.link_attach_type =					 (autoc & IXGBE_AUTOC_LMS_ATTACH_TYPE);		hw->mac.link_mode_select = (autoc & IXGBE_AUTOC_LMS_MASK);		hw->mac.link_settings_loaded = true;	}	/* Store the permanent mac address */	ixgbe_get_mac_addr(hw, hw->mac.perm_addr);	return status;}static struct ixgbe_mac_operations mac_ops_82598 = {	.reset			= &ixgbe_reset_hw_82598,	.get_media_type		= &ixgbe_get_media_type_82598,};static struct ixgbe_phy_operations phy_ops_82598EB = {	.setup			= &ixgbe_setup_copper_link_82598,	.check			= &ixgbe_check_copper_link_82598,	.setup_speed		= &ixgbe_setup_copper_link_speed_82598,	.get_settings		= &ixgbe_get_copper_link_settings_82598,};struct ixgbe_info ixgbe_82598EB_info = {	.mac			= ixgbe_mac_82598EB,	.get_invariants		= &ixgbe_get_invariants_82598,	.mac_ops		= &mac_ops_82598,	.phy_ops		= &phy_ops_82598EB,};static struct ixgbe_phy_operations phy_ops_82598AT = {	.setup			= &ixgbe_setup_tnx_phy_link,	.check			= &ixgbe_check_tnx_phy_link,	.setup_speed		= &ixgbe_setup_tnx_phy_link_speed,	.get_settings		= &ixgbe_get_copper_link_settings_82598,};struct ixgbe_info ixgbe_82598AT_info = {	.mac			= ixgbe_mac_82598EB,	.get_invariants		= &ixgbe_get_invariants_82598,	.mac_ops		= &mac_ops_82598,	.phy_ops		= &phy_ops_82598AT,};static struct ixgbe_phy_operations phy_ops_82598AF = {	.setup			= &ixgbe_setup_mac_link_82598,	.check			= &ixgbe_check_mac_link_82598,	.setup_speed		= &ixgbe_setup_mac_link_speed_82598,	.get_settings		= &ixgbe_get_link_settings_82598,};struct ixgbe_info ixgbe_82598AF_info = {	.mac			= ixgbe_mac_82598EB,	.get_invariants		= &ixgbe_get_invariants_82598,	.mac_ops		= &mac_ops_82598,	.phy_ops		= &phy_ops_82598AF,};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线视频免费观看 | 专区另类欧美日韩| 99久久精品国产网站| 日韩美女视频在线| 精品一区二区三区久久| 国产拍揄自揄精品视频麻豆| 韩国精品主播一区二区在线观看 | 国产一区二区三区国产| 91精品婷婷国产综合久久竹菊| 亚洲黄色录像片| 欧美性猛交xxxxxxxx| 免费精品99久久国产综合精品| 久久久亚洲精华液精华液精华液 | 97精品久久久午夜一区二区三区| 国产网站一区二区| 91麻豆自制传媒国产之光| 午夜久久久久久久久| 91精品国产综合久久久久久漫画| 韩国在线一区二区| 亚洲亚洲精品在线观看| 日韩精品中午字幕| 欧美成人精品3d动漫h| 国产乱理伦片在线观看夜一区| 亚洲国产视频a| 国产精品久久网站| 国产午夜精品理论片a级大结局 | 欧美国产丝袜视频| 日韩欧美一二三四区| 99视频精品全部免费在线| 七七婷婷婷婷精品国产| 一卡二卡欧美日韩| 国产精品久久久久久久第一福利| 91精品国产综合久久婷婷香蕉| 成人毛片在线观看| 国产不卡视频一区| 99精品国产视频| 在线国产亚洲欧美| 欧美一区二区视频在线观看2020| av电影天堂一区二区在线观看| 91网页版在线| 精品国精品自拍自在线| 中文字幕久久午夜不卡| 1024精品合集| 免费观看在线综合| 99riav久久精品riav| 欧美久久久久中文字幕| 9191久久久久久久久久久| 国产视频一区二区在线观看| 亚洲日本成人在线观看| 国内精品写真在线观看| 日韩 欧美一区二区三区| 久久国产精品无码网站| 国产精品456| 色婷婷久久综合| 91麻豆精品国产91久久久资源速度 | 蜜臂av日日欢夜夜爽一区| 黄色精品一二区| 成人精品一区二区三区四区| 91色porny| 精品1区2区在线观看| 亚洲欧洲韩国日本视频| 亚洲午夜一二三区视频| 国产成人亚洲综合a∨婷婷图片| 欧美mv和日韩mv的网站| xnxx国产精品| 天堂在线一区二区| 国产成人精品亚洲午夜麻豆| 欧美在线一区二区| 国产精品美女视频| 精品亚洲成av人在线观看| 欧美日韩在线播| 国产精品无人区| 国产呦萝稀缺另类资源| 欧美一级一区二区| 日韩精品一区第一页| 91久久国产最好的精华液| 综合网在线视频| 成人国产一区二区三区精品| 精品国产青草久久久久福利| 无码av免费一区二区三区试看| 国产激情一区二区三区四区| 欧美一级生活片| 午夜视频一区二区| 欧美一区二区在线不卡| 日一区二区三区| 日韩欧美国产一区二区三区| 免费观看久久久4p| 欧美色男人天堂| 蜜桃久久久久久| 久久亚洲免费视频| 国产一区二区伦理| 性做久久久久久免费观看| 欧美裸体一区二区三区| 美腿丝袜亚洲一区| 国产欧美一区二区精品忘忧草| 国产成人免费在线| 亚洲精品成a人| 3d成人h动漫网站入口| 国产精品中文字幕欧美| 国产精品护士白丝一区av| 在线免费视频一区二区| 精品一区二区三区免费毛片爱| 久久网站热最新地址| 色偷偷一区二区三区| 亚洲sss视频在线视频| 欧美va日韩va| 日本高清成人免费播放| 麻豆成人免费电影| 一区二区三区av电影| 国产亚洲成年网址在线观看| 欧美午夜精品久久久久久超碰| 蜜臀国产一区二区三区在线播放| 中文字幕一区二区三区不卡| 欧美丝袜丝交足nylons图片| 国产成人无遮挡在线视频| 老司机精品视频线观看86| 亚洲国产精品精华液网站| 欧美国产亚洲另类动漫| 精品国产在天天线2019| 色8久久精品久久久久久蜜| 丁香亚洲综合激情啪啪综合| 亚洲二区在线观看| 亚洲色图清纯唯美| 综合中文字幕亚洲| 中文字幕日韩精品一区| 日本一区二区三区高清不卡| 欧美va亚洲va| 精品国产乱子伦一区| 日韩一区二区不卡| 久久一夜天堂av一区二区三区| 亚洲欧美成aⅴ人在线观看 | 天堂一区二区在线| 日本欧美肥老太交大片| 日韩高清不卡一区| 青椒成人免费视频| 国产尤物一区二区在线| 成人精品小蝌蚪| 欧美亚洲国产一区在线观看网站| 色综合久久久久久久久| 在线观看日韩毛片| 日韩午夜av电影| 国产精品久久午夜夜伦鲁鲁| 亚洲精品中文字幕乱码三区| 一区二区三国产精华液| 久久av老司机精品网站导航| 国产a区久久久| 欧美一级黄色大片| 亚洲精品中文在线影院| 国产美女精品一区二区三区| 成人av在线电影| 日韩精品一区在线观看| 亚洲视频一区二区免费在线观看| 亚洲国产一区二区在线播放| 在线视频亚洲一区| 久久久99精品免费观看不卡| 亚洲一区二区三区精品在线| 国产成人综合在线观看| 欧美性猛交一区二区三区精品| 精品国产一区久久| 蜜桃一区二区三区在线| 91久久精品一区二区三| 欧美国产综合一区二区| 久久99国产精品尤物| 精品污污网站免费看| 中文字幕乱码久久午夜不卡| 久久99精品久久久| 欧美一级黄色片| 日本不卡123| 欧美人伦禁忌dvd放荡欲情| 韩日欧美一区二区三区| 欧美伦理电影网| 久久精工是国产品牌吗| 精品奇米国产一区二区三区| 美女爽到高潮91| 久久午夜老司机| 国产在线精品一区二区不卡了| 欧美日韩精品一区二区| 亚洲风情在线资源站| 69堂成人精品免费视频| 日韩国产欧美在线观看| 日韩视频免费观看高清完整版 | 91精品蜜臀在线一区尤物| 久久精品国产99久久6| 精品成人一区二区三区四区| 国产九色精品成人porny| 亚洲欧美另类小说| 91麻豆精品国产91| 国产激情一区二区三区| 亚洲欧洲中文日韩久久av乱码| 色婷婷综合久色| 九九九精品视频| 亚洲综合一区二区三区| 亚洲精品一区二区三区四区高清| caoporen国产精品视频| 午夜不卡在线视频| 国产精品卡一卡二卡三| 6080午夜不卡| 91影院在线观看| 国产成人精品免费视频网站| 日韩有码一区二区三区|