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

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

?? ixgbe_ethtool.c

?? linux 內核源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*******************************************************************************  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*******************************************************************************//* ethtool support for ixgbe */#include <linux/types.h>#include <linux/module.h>#include <linux/pci.h>#include <linux/netdevice.h>#include <linux/ethtool.h>#include <linux/vmalloc.h>#include <linux/uaccess.h>#include "ixgbe.h"#define IXGBE_ALL_RAR_ENTRIES 16struct ixgbe_stats {	char stat_string[ETH_GSTRING_LEN];	int sizeof_stat;	int stat_offset;};#define IXGBE_STAT(m) sizeof(((struct ixgbe_adapter *)0)->m), \		      offsetof(struct ixgbe_adapter, m)static struct ixgbe_stats ixgbe_gstrings_stats[] = {	{"rx_packets", IXGBE_STAT(net_stats.rx_packets)},	{"tx_packets", IXGBE_STAT(net_stats.tx_packets)},	{"rx_bytes", IXGBE_STAT(net_stats.rx_bytes)},	{"tx_bytes", IXGBE_STAT(net_stats.tx_bytes)},	{"lsc_int", IXGBE_STAT(lsc_int)},	{"tx_busy", IXGBE_STAT(tx_busy)},	{"non_eop_descs", IXGBE_STAT(non_eop_descs)},	{"rx_errors", IXGBE_STAT(net_stats.rx_errors)},	{"tx_errors", IXGBE_STAT(net_stats.tx_errors)},	{"rx_dropped", IXGBE_STAT(net_stats.rx_dropped)},	{"tx_dropped", IXGBE_STAT(net_stats.tx_dropped)},	{"multicast", IXGBE_STAT(net_stats.multicast)},	{"broadcast", IXGBE_STAT(stats.bprc)},	{"rx_no_buffer_count", IXGBE_STAT(stats.rnbc[0]) },	{"collisions", IXGBE_STAT(net_stats.collisions)},	{"rx_over_errors", IXGBE_STAT(net_stats.rx_over_errors)},	{"rx_crc_errors", IXGBE_STAT(net_stats.rx_crc_errors)},	{"rx_frame_errors", IXGBE_STAT(net_stats.rx_frame_errors)},	{"rx_fifo_errors", IXGBE_STAT(net_stats.rx_fifo_errors)},	{"rx_missed_errors", IXGBE_STAT(net_stats.rx_missed_errors)},	{"tx_aborted_errors", IXGBE_STAT(net_stats.tx_aborted_errors)},	{"tx_carrier_errors", IXGBE_STAT(net_stats.tx_carrier_errors)},	{"tx_fifo_errors", IXGBE_STAT(net_stats.tx_fifo_errors)},	{"tx_heartbeat_errors", IXGBE_STAT(net_stats.tx_heartbeat_errors)},	{"tx_timeout_count", IXGBE_STAT(tx_timeout_count)},	{"tx_restart_queue", IXGBE_STAT(restart_queue)},	{"rx_long_length_errors", IXGBE_STAT(stats.roc)},	{"rx_short_length_errors", IXGBE_STAT(stats.ruc)},	{"tx_tcp4_seg_ctxt", IXGBE_STAT(hw_tso_ctxt)},	{"tx_tcp6_seg_ctxt", IXGBE_STAT(hw_tso6_ctxt)},	{"tx_flow_control_xon", IXGBE_STAT(stats.lxontxc)},	{"rx_flow_control_xon", IXGBE_STAT(stats.lxonrxc)},	{"tx_flow_control_xoff", IXGBE_STAT(stats.lxofftxc)},	{"rx_flow_control_xoff", IXGBE_STAT(stats.lxoffrxc)},	{"rx_csum_offload_good", IXGBE_STAT(hw_csum_rx_good)},	{"rx_csum_offload_errors", IXGBE_STAT(hw_csum_rx_error)},	{"tx_csum_offload_ctxt", IXGBE_STAT(hw_csum_tx_good)},	{"rx_header_split", IXGBE_STAT(rx_hdr_split)},	{"alloc_rx_page_failed", IXGBE_STAT(alloc_rx_page_failed)},	{"alloc_rx_buff_failed", IXGBE_STAT(alloc_rx_buff_failed)},};#define IXGBE_QUEUE_STATS_LEN \		((((struct ixgbe_adapter *)netdev->priv)->num_tx_queues + \		 ((struct ixgbe_adapter *)netdev->priv)->num_rx_queues) * \		 (sizeof(struct ixgbe_queue_stats) / sizeof(u64)))#define IXGBE_GLOBAL_STATS_LEN \	sizeof(ixgbe_gstrings_stats) / sizeof(struct ixgbe_stats)#define IXGBE_STATS_LEN (IXGBE_GLOBAL_STATS_LEN + IXGBE_QUEUE_STATS_LEN)static int ixgbe_get_settings(struct net_device *netdev,			      struct ethtool_cmd *ecmd){	struct ixgbe_adapter *adapter = netdev_priv(netdev);	ecmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE);	ecmd->advertising = (ADVERTISED_10000baseT_Full | ADVERTISED_FIBRE);	ecmd->port = PORT_FIBRE;	ecmd->transceiver = XCVR_EXTERNAL;	if (netif_carrier_ok(adapter->netdev)) {		ecmd->speed = SPEED_10000;		ecmd->duplex = DUPLEX_FULL;	} else {		ecmd->speed = -1;		ecmd->duplex = -1;	}	ecmd->autoneg = AUTONEG_DISABLE;	return 0;}static int ixgbe_set_settings(struct net_device *netdev,			      struct ethtool_cmd *ecmd){	struct ixgbe_adapter *adapter = netdev_priv(netdev);	if (ecmd->autoneg == AUTONEG_ENABLE ||	    ecmd->speed + ecmd->duplex != SPEED_10000 + DUPLEX_FULL)		return -EINVAL;	if (netif_running(adapter->netdev)) {		ixgbe_down(adapter);		ixgbe_reset(adapter);		ixgbe_up(adapter);	} else {		ixgbe_reset(adapter);	}	return 0;}static void ixgbe_get_pauseparam(struct net_device *netdev,				 struct ethtool_pauseparam *pause){	struct ixgbe_adapter *adapter = netdev_priv(netdev);	struct ixgbe_hw *hw = &adapter->hw;	pause->autoneg = AUTONEG_DISABLE;	if (hw->fc.type == ixgbe_fc_rx_pause) {		pause->rx_pause = 1;	} else if (hw->fc.type == ixgbe_fc_tx_pause) {		pause->tx_pause = 1;	} else if (hw->fc.type == ixgbe_fc_full) {		pause->rx_pause = 1;		pause->tx_pause = 1;	}}static int ixgbe_set_pauseparam(struct net_device *netdev,				struct ethtool_pauseparam *pause){	struct ixgbe_adapter *adapter = netdev_priv(netdev);	struct ixgbe_hw *hw = &adapter->hw;	if (pause->autoneg == AUTONEG_ENABLE)		return -EINVAL;	if (pause->rx_pause && pause->tx_pause)		hw->fc.type = ixgbe_fc_full;	else if (pause->rx_pause && !pause->tx_pause)		hw->fc.type = ixgbe_fc_rx_pause;	else if (!pause->rx_pause && pause->tx_pause)		hw->fc.type = ixgbe_fc_tx_pause;	else if (!pause->rx_pause && !pause->tx_pause)		hw->fc.type = ixgbe_fc_none;	hw->fc.original_type = hw->fc.type;	if (netif_running(adapter->netdev)) {		ixgbe_down(adapter);		ixgbe_up(adapter);	} else {		ixgbe_reset(adapter);	}	return 0;}static u32 ixgbe_get_rx_csum(struct net_device *netdev){	struct ixgbe_adapter *adapter = netdev_priv(netdev);	return (adapter->flags & IXGBE_FLAG_RX_CSUM_ENABLED);}static int ixgbe_set_rx_csum(struct net_device *netdev, u32 data){	struct ixgbe_adapter *adapter = netdev_priv(netdev);	if (data)		adapter->flags |= IXGBE_FLAG_RX_CSUM_ENABLED;	else		adapter->flags &= ~IXGBE_FLAG_RX_CSUM_ENABLED;	if (netif_running(netdev)) {		ixgbe_down(adapter);		ixgbe_up(adapter);	} else {		ixgbe_reset(adapter);	}	return 0;}static u32 ixgbe_get_tx_csum(struct net_device *netdev){	return (netdev->features & NETIF_F_HW_CSUM) != 0;}static int ixgbe_set_tx_csum(struct net_device *netdev, u32 data){	if (data)		netdev->features |= NETIF_F_HW_CSUM;	else		netdev->features &= ~NETIF_F_HW_CSUM;	return 0;}static int ixgbe_set_tso(struct net_device *netdev, u32 data){	if (data) {		netdev->features |= NETIF_F_TSO;		netdev->features |= NETIF_F_TSO6;	} else {		netdev->features &= ~NETIF_F_TSO;		netdev->features &= ~NETIF_F_TSO6;	}	return 0;}static u32 ixgbe_get_msglevel(struct net_device *netdev){	struct ixgbe_adapter *adapter = netdev_priv(netdev);	return adapter->msg_enable;}static void ixgbe_set_msglevel(struct net_device *netdev, u32 data){	struct ixgbe_adapter *adapter = netdev_priv(netdev);	adapter->msg_enable = data;}static int ixgbe_get_regs_len(struct net_device *netdev){#define IXGBE_REGS_LEN  1128	return IXGBE_REGS_LEN * sizeof(u32);}#define IXGBE_GET_STAT(_A_, _R_) _A_->stats._R_static void ixgbe_get_regs(struct net_device *netdev,			   struct ethtool_regs *regs, void *p){	struct ixgbe_adapter *adapter = netdev_priv(netdev);	struct ixgbe_hw *hw = &adapter->hw;	u32 *regs_buff = p;	u8 i;	memset(p, 0, IXGBE_REGS_LEN * sizeof(u32));	regs->version = (1 << 24) | hw->revision_id << 16 | hw->device_id;	/* General Registers */	regs_buff[0] = IXGBE_READ_REG(hw, IXGBE_CTRL);	regs_buff[1] = IXGBE_READ_REG(hw, IXGBE_STATUS);	regs_buff[2] = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT);	regs_buff[3] = IXGBE_READ_REG(hw, IXGBE_ESDP);	regs_buff[4] = IXGBE_READ_REG(hw, IXGBE_EODSDP);	regs_buff[5] = IXGBE_READ_REG(hw, IXGBE_LEDCTL);	regs_buff[6] = IXGBE_READ_REG(hw, IXGBE_FRTIMER);	regs_buff[7] = IXGBE_READ_REG(hw, IXGBE_TCPTIMER);	/* NVM Register */	regs_buff[8] = IXGBE_READ_REG(hw, IXGBE_EEC);	regs_buff[9] = IXGBE_READ_REG(hw, IXGBE_EERD);	regs_buff[10] = IXGBE_READ_REG(hw, IXGBE_FLA);	regs_buff[11] = IXGBE_READ_REG(hw, IXGBE_EEMNGCTL);	regs_buff[12] = IXGBE_READ_REG(hw, IXGBE_EEMNGDATA);	regs_buff[13] = IXGBE_READ_REG(hw, IXGBE_FLMNGCTL);	regs_buff[14] = IXGBE_READ_REG(hw, IXGBE_FLMNGDATA);	regs_buff[15] = IXGBE_READ_REG(hw, IXGBE_FLMNGCNT);	regs_buff[16] = IXGBE_READ_REG(hw, IXGBE_FLOP);	regs_buff[17] = IXGBE_READ_REG(hw, IXGBE_GRC);	/* Interrupt */	regs_buff[18] = IXGBE_READ_REG(hw, IXGBE_EICR);	regs_buff[19] = IXGBE_READ_REG(hw, IXGBE_EICS);	regs_buff[20] = IXGBE_READ_REG(hw, IXGBE_EIMS);	regs_buff[21] = IXGBE_READ_REG(hw, IXGBE_EIMC);	regs_buff[22] = IXGBE_READ_REG(hw, IXGBE_EIAC);	regs_buff[23] = IXGBE_READ_REG(hw, IXGBE_EIAM);	regs_buff[24] = IXGBE_READ_REG(hw, IXGBE_EITR(0));	regs_buff[25] = IXGBE_READ_REG(hw, IXGBE_IVAR(0));	regs_buff[26] = IXGBE_READ_REG(hw, IXGBE_MSIXT);	regs_buff[27] = IXGBE_READ_REG(hw, IXGBE_MSIXPBA);	regs_buff[28] = IXGBE_READ_REG(hw, IXGBE_PBACL);	regs_buff[29] = IXGBE_READ_REG(hw, IXGBE_GPIE);	/* Flow Control */	regs_buff[30] = IXGBE_READ_REG(hw, IXGBE_PFCTOP);	regs_buff[31] = IXGBE_READ_REG(hw, IXGBE_FCTTV(0));	regs_buff[32] = IXGBE_READ_REG(hw, IXGBE_FCTTV(1));	regs_buff[33] = IXGBE_READ_REG(hw, IXGBE_FCTTV(2));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片欧美视频| 欧美性做爰猛烈叫床潮| 久久亚洲影视婷婷| 韩国一区二区在线观看| 久久精品欧美日韩| av福利精品导航| 亚洲一二三区视频在线观看| 欧美午夜一区二区三区免费大片| 日韩在线一二三区| 精品少妇一区二区三区日产乱码| 国产一区二区主播在线| 久久久国产午夜精品| av电影一区二区| 视频一区免费在线观看| 久久综合成人精品亚洲另类欧美 | 日韩国产一二三区| 日韩免费视频一区二区| 国产福利一区二区三区视频在线| 亚洲欧美日韩国产综合| 在线播放91灌醉迷j高跟美女| 久草在线在线精品观看| 成人免费一区二区三区在线观看| 欧美日韩成人综合天天影院| 国产乱人伦精品一区二区在线观看| 国产精品久久久一区麻豆最新章节| 精品视频在线看| 国产大陆精品国产| 亚洲高清一区二区三区| 国产日韩精品视频一区| 欧美日韩不卡在线| 国产成人精品亚洲777人妖| 一区二区三区四区视频精品免费 | 欧美日韩一级二级三级| 精品一区二区三区视频在线观看| 国产精品久久久久久一区二区三区| 欧美午夜电影在线播放| 国产福利一区在线| 日本va欧美va瓶| 亚洲免费观看在线观看| 久久人人爽爽爽人久久久| 欧美日韩黄视频| 99久久777色| 国产一区二区美女| 亚洲成人777| 中文字幕第一区综合| 欧美人牲a欧美精品| 99re这里只有精品首页| 国产在线不卡一区| 日韩国产精品大片| 一区二区三国产精华液| 国产精品国产三级国产普通话蜜臀| 91精品国产综合久久国产大片| 99久久99久久久精品齐齐 | 国产mv日韩mv欧美| 蜜臀av国产精品久久久久| 亚洲午夜久久久| 亚洲人吸女人奶水| 国产精品区一区二区三区| 精品裸体舞一区二区三区| 欧美日本在线视频| 欧美午夜精品免费| 91黄色在线观看| 91麻豆免费观看| 99久久免费精品| 国产aⅴ综合色| 成人午夜视频在线| 国产成人啪免费观看软件| 精品一区二区三区影院在线午夜| 美女一区二区视频| 老司机精品视频线观看86 | 国产丝袜欧美中文另类| 欧美成人一区二区三区片免费| 欧美一区二区在线播放| 欧美日韩国产成人在线91| 在线精品亚洲一区二区不卡| 91浏览器打开| 欧美亚洲精品一区| 欧美日韩精品系列| 91精品欧美综合在线观看最新| 欧美日韩成人一区二区| 欧美一区二区视频在线观看2020| 777午夜精品免费视频| 日韩一区二区三区四区| 日韩精品一区二区三区四区| 久久综合久久综合亚洲| 中文字幕欧美激情| 亚洲人成精品久久久久| 亚洲综合免费观看高清在线观看| 亚洲国产精品久久不卡毛片| 亚洲不卡一区二区三区| 蜜臀久久久久久久| 国产一区美女在线| 成人精品高清在线| 色欧美片视频在线观看| 欧美精品tushy高清| 日韩一区二区视频| 中文乱码免费一区二区| 亚洲精品videosex极品| 午夜不卡在线视频| 国产一区二区调教| 91网站黄www| 在线不卡一区二区| 亚洲精品在线免费观看视频| 国产精品免费久久| 亚洲影院在线观看| 久久99精品久久久久久| www.欧美色图| 欧美精品自拍偷拍动漫精品| 久久综合九色综合久久久精品综合| 欧美国产精品中文字幕| 亚洲国产精品久久人人爱| 久久99国产乱子伦精品免费| 99久久久精品免费观看国产蜜| 欧美日韩一二三区| 26uuu国产在线精品一区二区| 亚洲天堂福利av| 美国精品在线观看| 91麻豆高清视频| 欧美本精品男人aⅴ天堂| 国产精品久久久久三级| 蜜桃在线一区二区三区| 91麻豆蜜桃一区二区三区| 日韩精品中文字幕在线不卡尤物| 中文字幕一区免费在线观看| 日韩二区三区四区| 91丝袜高跟美女视频| 日韩欧美另类在线| 亚洲国产欧美日韩另类综合| 国产一区二区精品久久91| 欧美日韩色综合| 中文字幕一区二区三区在线播放 | 国产婷婷一区二区| 日韩精品亚洲专区| 一本大道久久精品懂色aⅴ| 精品久久久久av影院| 亚洲国产一区视频| 99精品在线免费| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲国产精品人人做人人爽| 99精品黄色片免费大全| 久久久99精品免费观看不卡| 首页亚洲欧美制服丝腿| 色哟哟国产精品| 国产精品视频线看| 国产精品影视网| 精品91自产拍在线观看一区| 日韩一区精品视频| 欧美色图片你懂的| 一区二区三区波多野结衣在线观看 | 7777精品伊人久久久大香线蕉 | 成人app在线| 久久久久久夜精品精品免费| 日韩av一区二区三区| 欧美自拍偷拍一区| 亚洲美女少妇撒尿| 色婷婷综合久色| 亚洲精品视频观看| av色综合久久天堂av综合| 中文文精品字幕一区二区| 国产毛片精品视频| 久久久精品影视| 高清在线观看日韩| 国产欧美精品区一区二区三区| 国产在线精品免费| 国产日韩欧美a| 菠萝蜜视频在线观看一区| 国产精品沙发午睡系列990531| 国产成人在线视频网站| 久久精品欧美一区二区三区不卡| 国产福利视频一区二区三区| 国产午夜精品一区二区三区视频| 国产+成+人+亚洲欧洲自线| 国产日产欧产精品推荐色| 高清国产一区二区| 国产精品电影院| 欧美亚洲丝袜传媒另类| 天天综合网天天综合色| 91精品国产乱码| 久国产精品韩国三级视频| 久久久国产精华| 成人avav在线| 亚洲一区二区三区国产| 欧美精品日韩一本| 免费成人在线视频观看| 久久久久九九视频| 91小视频免费看| 五月婷婷激情综合| 日韩精品一区二区三区在线观看 | 精久久久久久久久久久| 国产亚洲污的网站| 99久久99久久久精品齐齐| 亚洲国产精品久久人人爱| 日韩视频一区二区三区在线播放| 国产大片一区二区| 一区二区三区精品在线| 日韩丝袜情趣美女图片| 高清在线不卡av| 视频一区国产视频| 欧美国产日韩在线观看| 欧美日韩三级视频|