资源简介
新增功能
在较新的内核(4.19 +)上修复构建
Backport 到上游: e1f65b0d70 (e1000e:允许非单调 SYSTIM 读数)
初始支持以下设备:
以太网连接(11) I219-LM
以太网连接(11) I219-V
以太网连接(12) I219-LM
以太网连接(12) I219-V
添加了对 PCIm 功能状态的支持:
由于提交:5d8682588605 ("[misc] mei: me:允许运行时
面向 D0i3 的平台的 pm ")
当拔下电缆并重新连接时,网卡进入 DMoff 状态。这导致了错误的链路指示和双工不匹配。此错误 decribed 在: https://bugzilla.redhat.com/show_bug.cgi?id=1689436
在监测任务中检查 PCIm 功能状态和执行 PHY 重置后,解决了这一问题。
旨在
该驱动程序包括对基于英特尔®安腾®2的支持,以及英特尔® EM64T 系统。此版本支持最新的2.4 系列内核以及2.6、x.x.x.x 和版本。
e1000e 的 gz 设计为在 Linux * 下与 Intel®82563/82566/82567 千兆位以太网 PHY、英特尔®82571/82572/82573/82574/82577/82578/82579/82583 千兆位 Ethernet 控制器和 I217/I218 控制器搭配使用。SourceForge * 提供了该驱动程序的最新版本和更早版本。
如果您的适配器/连接不是82563、82566、82567、82571、82572、82573、82574、82577、82578、82579或基于82583的设备,则应使用以下驱动程序之一:
igb-x * gz 驱动程序支持所有英特尔®82575、82576、82580、I350、I210 或基于 I211 的千兆位网络适配器/连接
e1000-x * gz 驱动程序支持所有基于8254x 的所有®英特尔架构 PCI 和 PCI-X 千兆位网络适配器/连接
代码片段和文件信息
// SPDX-License-Identifier: GPL-2.0
/* Copyright(c) 1999 - 2019 Intel Corporation. */
/* 80003ES2LAN Gigabit Ethernet Controller (Copper)
* 80003ES2LAN Gigabit Ethernet Controller (Serdes)
*/
#include “e1000.h“
/* A table for the GG82563 cable length where the range is defined
* with a lower bound at “index“ and the upper bound at
* “index + 5“.
*/
static const u16 e1000_gg82563_cable_length_table[] = {
0 60 115 150 150 60 115 150 180 180 0xFF
};
#define GG82563_CABLE_LENGTH_TABLE_SIZE \
(sizeof(e1000_gg82563_cable_length_table) / \
sizeof(e1000_gg82563_cable_length_table[0]))
static s32 e1000_setup_copper_link_80003es2lan(struct e1000_hw *hw);
static s32 e1000_acquire_swfw_sync_80003es2lan(struct e1000_hw *hw u16 mask);
static void e1000_release_swfw_sync_80003es2lan(struct e1000_hw *hw u16 mask);
static void e1000_initialize_hw_bits_80003es2lan(struct e1000_hw *hw);
static void e1000_clear_hw_cntrs_80003es2lan(struct e1000_hw *hw);
static s32 e1000_cfg_kmrn_1000_80003es2lan(struct e1000_hw *hw);
static s32 e1000_cfg_kmrn_10_100_80003es2lan(struct e1000_hw *hw u16 duplex);
static s32 e1000_read_kmrn_reg_80003es2lan(struct e1000_hw *hw u32 offset
u16 *data);
static s32 e1000_write_kmrn_reg_80003es2lan(struct e1000_hw *hw u32 offset
u16 data);
static void e1000_power_down_phy_copper_80003es2lan(struct e1000_hw *hw);
/**
* e1000_init_phy_params_80003es2lan - Init ESB2 PHY func ptrs.
* @hw: pointer to the HW structure
**/
static s32 e1000_init_phy_params_80003es2lan(struct e1000_hw *hw)
{
struct e1000_phy_info *phy = &hw->phy;
s32 ret_val;
if (hw->phy.media_type != e1000_media_type_copper) {
phy->type = e1000_phy_none;
return 0;
} else {
phy->ops.power_up = e1000_power_up_phy_copper;
phy->ops.power_down = e1000_power_down_phy_copper_80003es2lan;
}
phy->addr = 1;
phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
phy->reset_delay_us = 100;
phy->type = e1000_phy_gg82563;
/* This can only be done after all function pointers are setup. */
ret_val = e1000e_get_phy_id(hw);
/* Verify phy id */
if (phy->id != GG82563_E_PHY_ID)
return -E1000_ERR_PHY;
return ret_val;
}
/**
* e1000_init_nvm_params_80003es2lan - Init ESB2 NVM func ptrs.
* @hw: pointer to the HW structure
**/
static s32 e1000_init_nvm_params_80003es2lan(struct e1000_hw *hw)
{
struct e1000_nvm_info *nvm = &hw->nvm;
u32 eecd = er32(EECD);
u16 size;
nvm->opcode_bits = 8;
nvm->delay_usec = 1;
switch (nvm->override) {
case e1000_nvm_override_spi_large:
nvm->page_size = 32;
nvm->address_bits = 16;
break;
case e1000_nvm_override_spi_small:
nvm->page_size = 8;
nvm->address_bits = 8;
break;
default:
nvm->page_size = eecd & E1000_EECD_ADDR_BITS ? 32 : 8;
nvm->address_bits = eecd & E1000_EECD_ADDR_BITS ? 16 : 8;
break;
}
nvm->type = e1000_nvm_eeprom_spi;
size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >>
E1000_EECD_SIZE_EX_SHIFT);
/* Added to a constant “size“ becomes the le
相关资源
- kali-linux-2019.3a-rpi3-nexmon-64.img.xz.torre
- 2013年集美大学linux考试部分题目
- 在ARM9和ARMLinux下利用QT编写的实时数据
- 华清远见智能家居项目
- 基于linux Qt的仿QQ聊天简单对话框
- 马哥linux2016版视频课堂文档汇总
- [老男孩笔记系列]-某企业招聘运维面
- Rockchip平台Linux 3.10上MIPI驱动介绍和调
- 虚拟网卡调用
- linux串口打印机驱动程序
- AMI BIOS修改工具+LOGO+8139 8163 8167 8168
-
linux下基于mpla
yer的多媒体播放器 - Ubuntu Linux实用学习教程
- linux多串口通信,usb-can控制八个电机
- telnet 客户端和服务端源代码
- linux部署 kettle 超详细
- 基于Linux平台的网络聊天室设计
- 阿里云linux一键安装web环境sh-1.5.5.zi
- VM虚拟机镜像集合windowsxp windows 7wind
- linux网络编程聊天工具代码
- linux C TCP/UDP客户端服务端的相互实时
- Linux下的飞鸽传书源码(ipmsg、聊天、
- 精通LinuxC编程源代码
- linux(debian)服务器配置笔记
- LCD液晶点阵显示中英文例程
- Linux课程设计多线程聊天,有图形界面
- 课程设计 linux c 聊天程序公聊 私聊
- 嵌入式linux之mini2440的hc-sr04超声波驱动
- CDLINUX硬盘安装文件splash.xpm.gz
- linux iptables 源码
评论
共有 条评论