Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
b6f40988
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b6f40988
编写于
1月 24, 2011
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/net-next-2.6
上级
23624935
6493d24f
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
116 addition
and
76 deletion
+116
-76
drivers/net/e1000e/e1000.h
drivers/net/e1000e/e1000.h
+4
-1
drivers/net/e1000e/ethtool.c
drivers/net/e1000e/ethtool.c
+22
-30
drivers/net/e1000e/ich8lan.c
drivers/net/e1000e/ich8lan.c
+2
-1
drivers/net/e1000e/lib.c
drivers/net/e1000e/lib.c
+2
-2
drivers/net/e1000e/netdev.c
drivers/net/e1000e/netdev.c
+79
-38
drivers/net/e1000e/phy.c
drivers/net/e1000e/phy.c
+4
-4
drivers/net/igb/e1000_82575.c
drivers/net/igb/e1000_82575.c
+1
-0
drivers/net/igb/e1000_hw.h
drivers/net/igb/e1000_hw.h
+1
-0
drivers/net/igb/igb_main.c
drivers/net/igb/igb_main.c
+1
-0
未找到文件。
drivers/net/e1000e/e1000.h
浏览文件 @
b6f40988
...
...
@@ -364,6 +364,7 @@ struct e1000_adapter {
/* structs defined in e1000_hw.h */
struct
e1000_hw
hw
;
spinlock_t
stats64_lock
;
struct
e1000_hw_stats
stats
;
struct
e1000_phy_info
phy_info
;
struct
e1000_phy_stats
phy_stats
;
...
...
@@ -494,7 +495,9 @@ extern int e1000e_setup_rx_resources(struct e1000_adapter *adapter);
extern
int
e1000e_setup_tx_resources
(
struct
e1000_adapter
*
adapter
);
extern
void
e1000e_free_rx_resources
(
struct
e1000_adapter
*
adapter
);
extern
void
e1000e_free_tx_resources
(
struct
e1000_adapter
*
adapter
);
extern
void
e1000e_update_stats
(
struct
e1000_adapter
*
adapter
);
extern
struct
rtnl_link_stats64
*
e1000e_get_stats64
(
struct
net_device
*
netdev
,
struct
rtnl_link_stats64
*
stats
);
extern
void
e1000e_set_interrupt_capability
(
struct
e1000_adapter
*
adapter
);
extern
void
e1000e_reset_interrupt_capability
(
struct
e1000_adapter
*
adapter
);
extern
void
e1000e_get_hw_control
(
struct
e1000_adapter
*
adapter
);
...
...
drivers/net/e1000e/ethtool.c
浏览文件 @
b6f40988
...
...
@@ -46,15 +46,15 @@ struct e1000_stats {
};
#define E1000_STAT(str, m) { \
.stat_string = str, \
.type = E1000_STATS, \
.sizeof_stat = sizeof(((struct e1000_adapter *)0)->m), \
.stat_offset = offsetof(struct e1000_adapter, m) }
.stat_string = str, \
.type = E1000_STATS, \
.sizeof_stat = sizeof(((struct e1000_adapter *)0)->m), \
.stat_offset = offsetof(struct e1000_adapter, m) }
#define E1000_NETDEV_STAT(str, m) { \
.stat_string = str, \
.type = NETDEV_STATS, \
.sizeof_stat = sizeof(((struct net_device
*)0)->m), \
.stat_offset = offsetof(struct net_device
, m) }
.stat_string = str, \
.type = NETDEV_STATS, \
.sizeof_stat = sizeof(((struct rtnl_link_stats64
*)0)->m), \
.stat_offset = offsetof(struct rtnl_link_stats64
, m) }
static
const
struct
e1000_stats
e1000_gstrings_stats
[]
=
{
E1000_STAT
(
"rx_packets"
,
stats
.
gprc
),
...
...
@@ -65,21 +65,21 @@ static const struct e1000_stats e1000_gstrings_stats[] = {
E1000_STAT
(
"tx_broadcast"
,
stats
.
bptc
),
E1000_STAT
(
"rx_multicast"
,
stats
.
mprc
),
E1000_STAT
(
"tx_multicast"
,
stats
.
mptc
),
E1000_NETDEV_STAT
(
"rx_errors"
,
stats
.
rx_errors
),
E1000_NETDEV_STAT
(
"tx_errors"
,
stats
.
tx_errors
),
E1000_NETDEV_STAT
(
"tx_dropped"
,
stats
.
tx_dropped
),
E1000_NETDEV_STAT
(
"rx_errors"
,
rx_errors
),
E1000_NETDEV_STAT
(
"tx_errors"
,
tx_errors
),
E1000_NETDEV_STAT
(
"tx_dropped"
,
tx_dropped
),
E1000_STAT
(
"multicast"
,
stats
.
mprc
),
E1000_STAT
(
"collisions"
,
stats
.
colc
),
E1000_NETDEV_STAT
(
"rx_length_errors"
,
stats
.
rx_length_errors
),
E1000_NETDEV_STAT
(
"rx_over_errors"
,
stats
.
rx_over_errors
),
E1000_NETDEV_STAT
(
"rx_length_errors"
,
rx_length_errors
),
E1000_NETDEV_STAT
(
"rx_over_errors"
,
rx_over_errors
),
E1000_STAT
(
"rx_crc_errors"
,
stats
.
crcerrs
),
E1000_NETDEV_STAT
(
"rx_frame_errors"
,
stats
.
rx_frame_errors
),
E1000_NETDEV_STAT
(
"rx_frame_errors"
,
rx_frame_errors
),
E1000_STAT
(
"rx_no_buffer_count"
,
stats
.
rnbc
),
E1000_STAT
(
"rx_missed_errors"
,
stats
.
mpc
),
E1000_STAT
(
"tx_aborted_errors"
,
stats
.
ecol
),
E1000_STAT
(
"tx_carrier_errors"
,
stats
.
tncrs
),
E1000_NETDEV_STAT
(
"tx_fifo_errors"
,
stats
.
tx_fifo_errors
),
E1000_NETDEV_STAT
(
"tx_heartbeat_errors"
,
stats
.
tx_heartbeat_errors
),
E1000_NETDEV_STAT
(
"tx_fifo_errors"
,
tx_fifo_errors
),
E1000_NETDEV_STAT
(
"tx_heartbeat_errors"
,
tx_heartbeat_errors
),
E1000_STAT
(
"tx_window_errors"
,
stats
.
latecol
),
E1000_STAT
(
"tx_abort_late_coll"
,
stats
.
latecol
),
E1000_STAT
(
"tx_deferred_ok"
,
stats
.
dc
),
...
...
@@ -684,20 +684,13 @@ static int e1000_set_ringparam(struct net_device *netdev,
rx_old
=
adapter
->
rx_ring
;
err
=
-
ENOMEM
;
tx_ring
=
k
zalloc
(
sizeof
(
struct
e1000_ring
),
GFP_KERNEL
);
tx_ring
=
k
memdup
(
tx_old
,
sizeof
(
struct
e1000_ring
),
GFP_KERNEL
);
if
(
!
tx_ring
)
goto
err_alloc_tx
;
/*
* use a memcpy to save any previously configured
* items like napi structs from having to be
* reinitialized
*/
memcpy
(
tx_ring
,
tx_old
,
sizeof
(
struct
e1000_ring
));
rx_ring
=
k
zalloc
(
sizeof
(
struct
e1000_ring
),
GFP_KERNEL
);
rx_ring
=
k
memdup
(
rx_old
,
sizeof
(
struct
e1000_ring
),
GFP_KERNEL
);
if
(
!
rx_ring
)
goto
err_alloc_rx
;
memcpy
(
rx_ring
,
rx_old
,
sizeof
(
struct
e1000_ring
));
adapter
->
tx_ring
=
tx_ring
;
adapter
->
rx_ring
=
rx_ring
;
...
...
@@ -1255,7 +1248,6 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
{
struct
e1000_hw
*
hw
=
&
adapter
->
hw
;
u32
ctrl_reg
=
0
;
u32
stat_reg
=
0
;
u16
phy_reg
=
0
;
s32
ret_val
=
0
;
...
...
@@ -1363,8 +1355,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
* Set the ILOS bit on the fiber Nic if half duplex link is
* detected.
*/
stat_reg
=
er32
(
STATUS
);
if
((
stat_reg
&
E1000_STATUS_FD
)
==
0
)
if
((
er32
(
STATUS
)
&
E1000_STATUS_FD
)
==
0
)
ctrl_reg
|=
(
E1000_CTRL_ILOS
|
E1000_CTRL_SLU
);
}
...
...
@@ -1982,14 +1973,15 @@ static void e1000_get_ethtool_stats(struct net_device *netdev,
u64
*
data
)
{
struct
e1000_adapter
*
adapter
=
netdev_priv
(
netdev
);
struct
rtnl_link_stats64
net_stats
;
int
i
;
char
*
p
=
NULL
;
e1000e_
update_stats
(
adapter
);
e1000e_
get_stats64
(
netdev
,
&
net_stats
);
for
(
i
=
0
;
i
<
E1000_GLOBAL_STATS_LEN
;
i
++
)
{
switch
(
e1000_gstrings_stats
[
i
].
type
)
{
case
NETDEV_STATS
:
p
=
(
char
*
)
netdev
+
p
=
(
char
*
)
&
net_stats
+
e1000_gstrings_stats
[
i
].
stat_offset
;
break
;
case
E1000_STATS
:
...
...
drivers/net/e1000e/ich8lan.c
浏览文件 @
b6f40988
...
...
@@ -2104,7 +2104,6 @@ static s32 e1000_flash_cycle_init_ich8lan(struct e1000_hw *hw)
{
union
ich8_hws_flash_status
hsfsts
;
s32
ret_val
=
-
E1000_ERR_NVM
;
s32
i
=
0
;
hsfsts
.
regval
=
er16flash
(
ICH_FLASH_HSFSTS
);
...
...
@@ -2140,6 +2139,8 @@ static s32 e1000_flash_cycle_init_ich8lan(struct e1000_hw *hw)
ew16flash
(
ICH_FLASH_HSFSTS
,
hsfsts
.
regval
);
ret_val
=
0
;
}
else
{
s32
i
=
0
;
/*
* Otherwise poll for sometime so the current
* cycle has a chance to end before giving up.
...
...
drivers/net/e1000e/lib.c
浏览文件 @
b6f40988
...
...
@@ -1978,15 +1978,15 @@ static s32 e1000_ready_nvm_eeprom(struct e1000_hw *hw)
{
struct
e1000_nvm_info
*
nvm
=
&
hw
->
nvm
;
u32
eecd
=
er32
(
EECD
);
u16
timeout
=
0
;
u8
spi_stat_reg
;
if
(
nvm
->
type
==
e1000_nvm_eeprom_spi
)
{
u16
timeout
=
NVM_MAX_RETRY_SPI
;
/* Clear SK and CS */
eecd
&=
~
(
E1000_EECD_CS
|
E1000_EECD_SK
);
ew32
(
EECD
,
eecd
);
udelay
(
1
);
timeout
=
NVM_MAX_RETRY_SPI
;
/*
* Read "Status Register" repeatedly until the LSB is cleared.
...
...
drivers/net/e1000e/netdev.c
浏览文件 @
b6f40988
...
...
@@ -900,8 +900,6 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
adapter
->
total_rx_bytes
+=
total_rx_bytes
;
adapter
->
total_rx_packets
+=
total_rx_packets
;
netdev
->
stats
.
rx_bytes
+=
total_rx_bytes
;
netdev
->
stats
.
rx_packets
+=
total_rx_packets
;
return
cleaned
;
}
...
...
@@ -1057,8 +1055,6 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter)
}
adapter
->
total_tx_bytes
+=
total_tx_bytes
;
adapter
->
total_tx_packets
+=
total_tx_packets
;
netdev
->
stats
.
tx_bytes
+=
total_tx_bytes
;
netdev
->
stats
.
tx_packets
+=
total_tx_packets
;
return
count
<
tx_ring
->
count
;
}
...
...
@@ -1245,8 +1241,6 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
adapter
->
total_rx_bytes
+=
total_rx_bytes
;
adapter
->
total_rx_packets
+=
total_rx_packets
;
netdev
->
stats
.
rx_bytes
+=
total_rx_bytes
;
netdev
->
stats
.
rx_packets
+=
total_rx_packets
;
return
cleaned
;
}
...
...
@@ -1426,8 +1420,6 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
adapter
->
total_rx_bytes
+=
total_rx_bytes
;
adapter
->
total_rx_packets
+=
total_rx_packets
;
netdev
->
stats
.
rx_bytes
+=
total_rx_bytes
;
netdev
->
stats
.
rx_packets
+=
total_rx_packets
;
return
cleaned
;
}
...
...
@@ -2728,7 +2720,6 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
{
struct
e1000_hw
*
hw
=
&
adapter
->
hw
;
u32
rctl
,
rfctl
;
u32
psrctl
=
0
;
u32
pages
=
0
;
/* Workaround Si errata on 82579 - configure jumbo frame flow */
...
...
@@ -2827,6 +2818,8 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
adapter
->
rx_ps_pages
=
0
;
if
(
adapter
->
rx_ps_pages
)
{
u32
psrctl
=
0
;
/* Configure extra packet-split registers */
rfctl
=
er32
(
RFCTL
);
rfctl
|=
E1000_RFCTL_EXTEN
;
...
...
@@ -3028,7 +3021,6 @@ static void e1000_set_multi(struct net_device *netdev)
struct
netdev_hw_addr
*
ha
;
u8
*
mta_list
;
u32
rctl
;
int
i
;
/* Check for Promiscuous and All Multicast modes */
...
...
@@ -3051,12 +3043,13 @@ static void e1000_set_multi(struct net_device *netdev)
ew32
(
RCTL
,
rctl
);
if
(
!
netdev_mc_empty
(
netdev
))
{
int
i
=
0
;
mta_list
=
kmalloc
(
netdev_mc_count
(
netdev
)
*
6
,
GFP_ATOMIC
);
if
(
!
mta_list
)
return
;
/* prepare a packed array of only addresses. */
i
=
0
;
netdev_for_each_mc_addr
(
ha
,
netdev
)
memcpy
(
mta_list
+
(
i
++
*
ETH_ALEN
),
ha
->
addr
,
ETH_ALEN
);
...
...
@@ -3338,6 +3331,8 @@ int e1000e_up(struct e1000_adapter *adapter)
return
0
;
}
static
void
e1000e_update_stats
(
struct
e1000_adapter
*
adapter
);
void
e1000e_down
(
struct
e1000_adapter
*
adapter
)
{
struct
net_device
*
netdev
=
adapter
->
netdev
;
...
...
@@ -3372,6 +3367,11 @@ void e1000e_down(struct e1000_adapter *adapter)
del_timer_sync
(
&
adapter
->
phy_info_timer
);
netif_carrier_off
(
netdev
);
spin_lock
(
&
adapter
->
stats64_lock
);
e1000e_update_stats
(
adapter
);
spin_unlock
(
&
adapter
->
stats64_lock
);
adapter
->
link_speed
=
0
;
adapter
->
link_duplex
=
0
;
...
...
@@ -3413,6 +3413,8 @@ static int __devinit e1000_sw_init(struct e1000_adapter *adapter)
adapter
->
max_frame_size
=
netdev
->
mtu
+
ETH_HLEN
+
ETH_FCS_LEN
;
adapter
->
min_frame_size
=
ETH_ZLEN
+
ETH_FCS_LEN
;
spin_lock_init
(
&
adapter
->
stats64_lock
);
e1000e_set_interrupt_capability
(
adapter
);
if
(
e1000_alloc_queues
(
adapter
))
...
...
@@ -3886,7 +3888,7 @@ static void e1000e_update_phy_stats(struct e1000_adapter *adapter)
* e1000e_update_stats - Update the board statistics counters
* @adapter: board private structure
**/
void
e1000e_update_stats
(
struct
e1000_adapter
*
adapter
)
static
void
e1000e_update_stats
(
struct
e1000_adapter
*
adapter
)
{
struct
net_device
*
netdev
=
adapter
->
netdev
;
struct
e1000_hw
*
hw
=
&
adapter
->
hw
;
...
...
@@ -3998,10 +4000,11 @@ static void e1000_phy_read_status(struct e1000_adapter *adapter)
{
struct
e1000_hw
*
hw
=
&
adapter
->
hw
;
struct
e1000_phy_regs
*
phy
=
&
adapter
->
phy_regs
;
int
ret_val
;
if
((
er32
(
STATUS
)
&
E1000_STATUS_LU
)
&&
(
adapter
->
hw
.
phy
.
media_type
==
e1000_media_type_copper
))
{
int
ret_val
;
ret_val
=
e1e_rphy
(
hw
,
PHY_CONTROL
,
&
phy
->
bmcr
);
ret_val
|=
e1e_rphy
(
hw
,
PHY_STATUS
,
&
phy
->
bmsr
);
ret_val
|=
e1e_rphy
(
hw
,
PHY_AUTONEG_ADV
,
&
phy
->
advertise
);
...
...
@@ -4147,7 +4150,6 @@ static void e1000_watchdog_task(struct work_struct *work)
struct
e1000_ring
*
tx_ring
=
adapter
->
tx_ring
;
struct
e1000_hw
*
hw
=
&
adapter
->
hw
;
u32
link
,
tctl
;
int
tx_pending
=
0
;
link
=
e1000e_has_link
(
adapter
);
if
((
netif_carrier_ok
(
netdev
))
&&
link
)
{
...
...
@@ -4285,7 +4287,9 @@ static void e1000_watchdog_task(struct work_struct *work)
}
link_up:
spin_lock
(
&
adapter
->
stats64_lock
);
e1000e_update_stats
(
adapter
);
spin_unlock
(
&
adapter
->
stats64_lock
);
mac
->
tx_packet_delta
=
adapter
->
stats
.
tpt
-
adapter
->
tpt_old
;
adapter
->
tpt_old
=
adapter
->
stats
.
tpt
;
...
...
@@ -4299,21 +4303,18 @@ static void e1000_watchdog_task(struct work_struct *work)
e1000e_update_adaptive
(
&
adapter
->
hw
);
if
(
!
netif_carrier_ok
(
netdev
))
{
tx_pending
=
(
e1000_desc_unused
(
tx_ring
)
+
1
<
tx_ring
->
count
);
if
(
tx_pending
)
{
/*
* We've lost link, so the controller stops DMA,
* but we've got queued Tx work that's never going
* to get done, so reset controller to flush Tx.
* (Do the reset outside of interrupt context).
*/
adapter
->
tx_timeout_count
++
;
schedule_work
(
&
adapter
->
reset_task
);
/* return immediately since reset is imminent */
return
;
}
if
(
!
netif_carrier_ok
(
netdev
)
&&
(
e1000_desc_unused
(
tx_ring
)
+
1
<
tx_ring
->
count
))
{
/*
* We've lost link, so the controller stops DMA,
* but we've got queued Tx work that's never going
* to get done, so reset controller to flush Tx.
* (Do the reset outside of interrupt context).
*/
adapter
->
tx_timeout_count
++
;
schedule_work
(
&
adapter
->
reset_task
);
/* return immediately since reset is imminent */
return
;
}
/* Simple mode for Interrupt Throttle Rate (ITR) */
...
...
@@ -4384,13 +4385,13 @@ static int e1000_tso(struct e1000_adapter *adapter,
u32
cmd_length
=
0
;
u16
ipcse
=
0
,
tucse
,
mss
;
u8
ipcss
,
ipcso
,
tucss
,
tucso
,
hdr_len
;
int
err
;
if
(
!
skb_is_gso
(
skb
))
return
0
;
if
(
skb_header_cloned
(
skb
))
{
err
=
pskb_expand_head
(
skb
,
0
,
0
,
GFP_ATOMIC
);
int
err
=
pskb_expand_head
(
skb
,
0
,
0
,
GFP_ATOMIC
);
if
(
err
)
return
err
;
}
...
...
@@ -4897,16 +4898,55 @@ static void e1000_reset_task(struct work_struct *work)
}
/**
* e1000_get_stats - Get System Network Statistics
* e1000_get_stats
64
- Get System Network Statistics
* @netdev: network interface device structure
* @stats: rtnl_link_stats64 pointer
*
* Returns the address of the device statistics structure.
* The statistics are actually updated from the timer callback.
**/
static
struct
net_device_stats
*
e1000_get_stats
(
struct
net_device
*
netdev
)
struct
rtnl_link_stats64
*
e1000e_get_stats64
(
struct
net_device
*
netdev
,
struct
rtnl_link_stats64
*
stats
)
{
/* only return the current stats */
return
&
netdev
->
stats
;
struct
e1000_adapter
*
adapter
=
netdev_priv
(
netdev
);
memset
(
stats
,
0
,
sizeof
(
struct
rtnl_link_stats64
));
spin_lock
(
&
adapter
->
stats64_lock
);
e1000e_update_stats
(
adapter
);
/* Fill out the OS statistics structure */
stats
->
rx_bytes
=
adapter
->
stats
.
gorc
;
stats
->
rx_packets
=
adapter
->
stats
.
gprc
;
stats
->
tx_bytes
=
adapter
->
stats
.
gotc
;
stats
->
tx_packets
=
adapter
->
stats
.
gptc
;
stats
->
multicast
=
adapter
->
stats
.
mprc
;
stats
->
collisions
=
adapter
->
stats
.
colc
;
/* Rx Errors */
/*
* RLEC on some newer hardware can be incorrect so build
* our own version based on RUC and ROC
*/
stats
->
rx_errors
=
adapter
->
stats
.
rxerrc
+
adapter
->
stats
.
crcerrs
+
adapter
->
stats
.
algnerrc
+
adapter
->
stats
.
ruc
+
adapter
->
stats
.
roc
+
adapter
->
stats
.
cexterr
;
stats
->
rx_length_errors
=
adapter
->
stats
.
ruc
+
adapter
->
stats
.
roc
;
stats
->
rx_crc_errors
=
adapter
->
stats
.
crcerrs
;
stats
->
rx_frame_errors
=
adapter
->
stats
.
algnerrc
;
stats
->
rx_missed_errors
=
adapter
->
stats
.
mpc
;
/* Tx Errors */
stats
->
tx_errors
=
adapter
->
stats
.
ecol
+
adapter
->
stats
.
latecol
;
stats
->
tx_aborted_errors
=
adapter
->
stats
.
ecol
;
stats
->
tx_window_errors
=
adapter
->
stats
.
latecol
;
stats
->
tx_carrier_errors
=
adapter
->
stats
.
tncrs
;
/* Tx Dropped needs to be maintained elsewhere */
spin_unlock
(
&
adapter
->
stats64_lock
);
return
stats
;
}
/**
...
...
@@ -5476,9 +5516,10 @@ static irqreturn_t e1000_intr_msix(int irq, void *data)
{
struct
net_device
*
netdev
=
data
;
struct
e1000_adapter
*
adapter
=
netdev_priv
(
netdev
);
int
vector
,
msix_irq
;
if
(
adapter
->
msix_entries
)
{
int
vector
,
msix_irq
;
vector
=
0
;
msix_irq
=
adapter
->
msix_entries
[
vector
].
vector
;
disable_irq
(
msix_irq
);
...
...
@@ -5675,7 +5716,7 @@ static const struct net_device_ops e1000e_netdev_ops = {
.
ndo_open
=
e1000_open
,
.
ndo_stop
=
e1000_close
,
.
ndo_start_xmit
=
e1000_xmit_frame
,
.
ndo_get_stats
=
e1000_get_stats
,
.
ndo_get_stats
64
=
e1000e_get_stats64
,
.
ndo_set_multicast_list
=
e1000_set_multi
,
.
ndo_set_mac_address
=
e1000_set_mac
,
.
ndo_change_mtu
=
e1000_change_mtu
,
...
...
drivers/net/e1000e/phy.c
浏览文件 @
b6f40988
...
...
@@ -2409,9 +2409,7 @@ static u32 e1000_get_phy_addr_for_bm_page(u32 page, u32 reg)
s32
e1000e_write_phy_reg_bm
(
struct
e1000_hw
*
hw
,
u32
offset
,
u16
data
)
{
s32
ret_val
;
u32
page_select
=
0
;
u32
page
=
offset
>>
IGP_PAGE_SHIFT
;
u32
page_shift
=
0
;
ret_val
=
hw
->
phy
.
ops
.
acquire
(
hw
);
if
(
ret_val
)
...
...
@@ -2427,6 +2425,8 @@ s32 e1000e_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data)
hw
->
phy
.
addr
=
e1000_get_phy_addr_for_bm_page
(
page
,
offset
);
if
(
offset
>
MAX_PHY_MULTI_PAGE_REG
)
{
u32
page_shift
,
page_select
;
/*
* Page select is register 31 for phy address 1 and 22 for
* phy address 2 and 3. Page select is shifted only for
...
...
@@ -2468,9 +2468,7 @@ s32 e1000e_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data)
s32
e1000e_read_phy_reg_bm
(
struct
e1000_hw
*
hw
,
u32
offset
,
u16
*
data
)
{
s32
ret_val
;
u32
page_select
=
0
;
u32
page
=
offset
>>
IGP_PAGE_SHIFT
;
u32
page_shift
=
0
;
ret_val
=
hw
->
phy
.
ops
.
acquire
(
hw
);
if
(
ret_val
)
...
...
@@ -2486,6 +2484,8 @@ s32 e1000e_read_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data)
hw
->
phy
.
addr
=
e1000_get_phy_addr_for_bm_page
(
page
,
offset
);
if
(
offset
>
MAX_PHY_MULTI_PAGE_REG
)
{
u32
page_shift
,
page_select
;
/*
* Page select is register 31 for phy address 1 and 22 for
* phy address 2 and 3. Page select is shifted only for
...
...
drivers/net/igb/e1000_82575.c
浏览文件 @
b6f40988
...
...
@@ -129,6 +129,7 @@ static s32 igb_get_invariants_82575(struct e1000_hw *hw)
break
;
case
E1000_DEV_ID_82580_COPPER
:
case
E1000_DEV_ID_82580_FIBER
:
case
E1000_DEV_ID_82580_QUAD_FIBER
:
case
E1000_DEV_ID_82580_SERDES
:
case
E1000_DEV_ID_82580_SGMII
:
case
E1000_DEV_ID_82580_COPPER_DUAL
:
...
...
drivers/net/igb/e1000_hw.h
浏览文件 @
b6f40988
...
...
@@ -54,6 +54,7 @@ struct e1000_hw;
#define E1000_DEV_ID_82580_SERDES 0x1510
#define E1000_DEV_ID_82580_SGMII 0x1511
#define E1000_DEV_ID_82580_COPPER_DUAL 0x1516
#define E1000_DEV_ID_82580_QUAD_FIBER 0x1527
#define E1000_DEV_ID_DH89XXCC_SGMII 0x0438
#define E1000_DEV_ID_DH89XXCC_SERDES 0x043A
#define E1000_DEV_ID_DH89XXCC_BACKPLANE 0x043C
...
...
drivers/net/igb/igb_main.c
浏览文件 @
b6f40988
...
...
@@ -68,6 +68,7 @@ static DEFINE_PCI_DEVICE_TABLE(igb_pci_tbl) = {
{
PCI_VDEVICE
(
INTEL
,
E1000_DEV_ID_I350_SGMII
),
board_82575
},
{
PCI_VDEVICE
(
INTEL
,
E1000_DEV_ID_82580_COPPER
),
board_82575
},
{
PCI_VDEVICE
(
INTEL
,
E1000_DEV_ID_82580_FIBER
),
board_82575
},
{
PCI_VDEVICE
(
INTEL
,
E1000_DEV_ID_82580_QUAD_FIBER
),
board_82575
},
{
PCI_VDEVICE
(
INTEL
,
E1000_DEV_ID_82580_SERDES
),
board_82575
},
{
PCI_VDEVICE
(
INTEL
,
E1000_DEV_ID_82580_SGMII
),
board_82575
},
{
PCI_VDEVICE
(
INTEL
,
E1000_DEV_ID_82580_COPPER_DUAL
),
board_82575
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录