Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
09e62666
Commit
09e62666
authored
May 25, 2005
by
Committed by
Jeff Garzik
May 25, 2005
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of /spare/repo/netdev-2.6 branch ixgb
parents
34812c9e
ac79c82e
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
70 additions
and
116 deletions
+70
-116
drivers/net/ixgb/ixgb.h
drivers/net/ixgb/ixgb.h
+1
-1
drivers/net/ixgb/ixgb_ee.c
drivers/net/ixgb/ixgb_ee.c
+12
-12
drivers/net/ixgb/ixgb_ethtool.c
drivers/net/ixgb/ixgb_ethtool.c
+3
-1
drivers/net/ixgb/ixgb_main.c
drivers/net/ixgb/ixgb_main.c
+53
-100
drivers/net/ixgb/ixgb_osdep.h
drivers/net/ixgb/ixgb_osdep.h
+1
-2
No files found.
drivers/net/ixgb/ixgb.h
View file @
09e62666
...
...
@@ -110,7 +110,7 @@ struct ixgb_adapter;
#define IXGB_TX_QUEUE_WAKE 16
/* How many Rx Buffers do we bundle into one write to the hardware ? */
#define IXGB_RX_BUFFER_WRITE
16
/* Must be power of 2 */
#define IXGB_RX_BUFFER_WRITE
4
/* Must be power of 2 */
/* only works for sizes that are powers of 2 */
#define IXGB_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1)))
...
...
drivers/net/ixgb/ixgb_ee.c
View file @
09e62666
...
...
@@ -411,7 +411,7 @@ ixgb_write_eeprom(struct ixgb_hw *hw, uint16_t offset, uint16_t data)
ixgb_cleanup_eeprom
(
hw
);
/* clear the init_ctrl_reg_1 to signify that the cache is invalidated */
ee_map
->
init_ctrl_reg_1
=
EEPROM_ICW1_SIGNATURE_CLEAR
;
ee_map
->
init_ctrl_reg_1
=
le16_to_cpu
(
EEPROM_ICW1_SIGNATURE_CLEAR
)
;
return
;
}
...
...
@@ -483,7 +483,7 @@ ixgb_get_eeprom_data(struct ixgb_hw *hw)
DEBUGOUT
(
"ixgb_ee: Checksum invalid.
\n
"
);
/* clear the init_ctrl_reg_1 to signify that the cache is
* invalidated */
ee_map
->
init_ctrl_reg_1
=
EEPROM_ICW1_SIGNATURE_CLEAR
;
ee_map
->
init_ctrl_reg_1
=
le16_to_cpu
(
EEPROM_ICW1_SIGNATURE_CLEAR
)
;
return
(
FALSE
);
}
...
...
@@ -579,7 +579,7 @@ ixgb_get_ee_compatibility(struct ixgb_hw *hw)
struct
ixgb_ee_map_type
*
ee_map
=
(
struct
ixgb_ee_map_type
*
)
hw
->
eeprom
;
if
(
ixgb_check_and_get_eeprom_data
(
hw
)
==
TRUE
)
return
(
ee_map
->
compatibility
);
return
(
le16_to_cpu
(
ee_map
->
compatibility
)
);
return
(
0
);
}
...
...
@@ -616,7 +616,7 @@ ixgb_get_ee_init_ctrl_reg_1(struct ixgb_hw *hw)
struct
ixgb_ee_map_type
*
ee_map
=
(
struct
ixgb_ee_map_type
*
)
hw
->
eeprom
;
if
(
ixgb_check_and_get_eeprom_data
(
hw
)
==
TRUE
)
return
(
ee_map
->
init_ctrl_reg_1
);
return
(
le16_to_cpu
(
ee_map
->
init_ctrl_reg_1
)
);
return
(
0
);
}
...
...
@@ -635,7 +635,7 @@ ixgb_get_ee_init_ctrl_reg_2(struct ixgb_hw *hw)
struct
ixgb_ee_map_type
*
ee_map
=
(
struct
ixgb_ee_map_type
*
)
hw
->
eeprom
;
if
(
ixgb_check_and_get_eeprom_data
(
hw
)
==
TRUE
)
return
(
ee_map
->
init_ctrl_reg_2
);
return
(
le16_to_cpu
(
ee_map
->
init_ctrl_reg_2
)
);
return
(
0
);
}
...
...
@@ -654,7 +654,7 @@ ixgb_get_ee_subsystem_id(struct ixgb_hw *hw)
struct
ixgb_ee_map_type
*
ee_map
=
(
struct
ixgb_ee_map_type
*
)
hw
->
eeprom
;
if
(
ixgb_check_and_get_eeprom_data
(
hw
)
==
TRUE
)
return
(
ee_map
->
subsystem_id
);
return
(
le16_to_cpu
(
ee_map
->
subsystem_id
)
);
return
(
0
);
}
...
...
@@ -673,7 +673,7 @@ ixgb_get_ee_subvendor_id(struct ixgb_hw *hw)
struct
ixgb_ee_map_type
*
ee_map
=
(
struct
ixgb_ee_map_type
*
)
hw
->
eeprom
;
if
(
ixgb_check_and_get_eeprom_data
(
hw
)
==
TRUE
)
return
(
ee_map
->
subvendor_id
);
return
(
le16_to_cpu
(
ee_map
->
subvendor_id
)
);
return
(
0
);
}
...
...
@@ -692,7 +692,7 @@ ixgb_get_ee_device_id(struct ixgb_hw *hw)
struct
ixgb_ee_map_type
*
ee_map
=
(
struct
ixgb_ee_map_type
*
)
hw
->
eeprom
;
if
(
ixgb_check_and_get_eeprom_data
(
hw
)
==
TRUE
)
return
(
ee_map
->
device_id
);
return
(
le16_to_cpu
(
ee_map
->
device_id
)
);
return
(
0
);
}
...
...
@@ -711,7 +711,7 @@ ixgb_get_ee_vendor_id(struct ixgb_hw *hw)
struct
ixgb_ee_map_type
*
ee_map
=
(
struct
ixgb_ee_map_type
*
)
hw
->
eeprom
;
if
(
ixgb_check_and_get_eeprom_data
(
hw
)
==
TRUE
)
return
(
ee_map
->
vendor_id
);
return
(
le16_to_cpu
(
ee_map
->
vendor_id
)
);
return
(
0
);
}
...
...
@@ -730,7 +730,7 @@ ixgb_get_ee_swdpins_reg(struct ixgb_hw *hw)
struct
ixgb_ee_map_type
*
ee_map
=
(
struct
ixgb_ee_map_type
*
)
hw
->
eeprom
;
if
(
ixgb_check_and_get_eeprom_data
(
hw
)
==
TRUE
)
return
(
ee_map
->
swdpins_reg
);
return
(
le16_to_cpu
(
ee_map
->
swdpins_reg
)
);
return
(
0
);
}
...
...
@@ -749,7 +749,7 @@ ixgb_get_ee_d3_power(struct ixgb_hw *hw)
struct
ixgb_ee_map_type
*
ee_map
=
(
struct
ixgb_ee_map_type
*
)
hw
->
eeprom
;
if
(
ixgb_check_and_get_eeprom_data
(
hw
)
==
TRUE
)
return
(
ee_map
->
d3_power
);
return
(
le16_to_cpu
(
ee_map
->
d3_power
)
);
return
(
0
);
}
...
...
@@ -768,7 +768,7 @@ ixgb_get_ee_d0_power(struct ixgb_hw *hw)
struct
ixgb_ee_map_type
*
ee_map
=
(
struct
ixgb_ee_map_type
*
)
hw
->
eeprom
;
if
(
ixgb_check_and_get_eeprom_data
(
hw
)
==
TRUE
)
return
(
ee_map
->
d0_power
);
return
(
le16_to_cpu
(
ee_map
->
d0_power
)
);
return
(
0
);
}
drivers/net/ixgb/ixgb_ethtool.c
View file @
09e62666
...
...
@@ -252,7 +252,9 @@ ixgb_get_regs(struct net_device *netdev,
uint32_t
*
reg_start
=
reg
;
uint8_t
i
;
regs
->
version
=
(
adapter
->
hw
.
device_id
<<
16
)
|
adapter
->
hw
.
subsystem_id
;
/* the 1 (one) below indicates an attempt at versioning, if the
* interface in ethtool or the driver this 1 should be incremented */
regs
->
version
=
(
1
<<
24
)
|
hw
->
revision_id
<<
16
|
hw
->
device_id
;
/* General Registers */
*
reg
++
=
IXGB_READ_REG
(
hw
,
CTRL0
);
/* 0 */
...
...
drivers/net/ixgb/ixgb_main.c
View file @
09e62666
...
...
@@ -47,7 +47,7 @@ char ixgb_driver_string[] = "Intel(R) PRO/10GbE Network Driver";
#else
#define DRIVERNAPI "-NAPI"
#endif
char
ixgb_driver_version
[]
=
"1.0.9
0
-k2"
DRIVERNAPI
;
char
ixgb_driver_version
[]
=
"1.0.9
5
-k2"
DRIVERNAPI
;
char
ixgb_copyright
[]
=
"Copyright (c) 1999-2005 Intel Corporation."
;
/* ixgb_pci_tbl - PCI Device ID Table
...
...
@@ -103,6 +103,7 @@ static int ixgb_change_mtu(struct net_device *netdev, int new_mtu);
static
int
ixgb_set_mac
(
struct
net_device
*
netdev
,
void
*
p
);
static
irqreturn_t
ixgb_intr
(
int
irq
,
void
*
data
,
struct
pt_regs
*
regs
);
static
boolean_t
ixgb_clean_tx_irq
(
struct
ixgb_adapter
*
adapter
);
#ifdef CONFIG_IXGB_NAPI
static
int
ixgb_clean
(
struct
net_device
*
netdev
,
int
*
budget
);
static
boolean_t
ixgb_clean_rx_irq
(
struct
ixgb_adapter
*
adapter
,
...
...
@@ -120,33 +121,20 @@ static void ixgb_vlan_rx_add_vid(struct net_device *netdev, uint16_t vid);
static
void
ixgb_vlan_rx_kill_vid
(
struct
net_device
*
netdev
,
uint16_t
vid
);
static
void
ixgb_restore_vlan
(
struct
ixgb_adapter
*
adapter
);
static
int
ixgb_notify_reboot
(
struct
notifier_block
*
,
unsigned
long
event
,
void
*
ptr
);
static
int
ixgb_suspend
(
struct
pci_dev
*
pdev
,
uint32_t
state
);
#ifdef CONFIG_NET_POLL_CONTROLLER
/* for netdump / net console */
static
void
ixgb_netpoll
(
struct
net_device
*
dev
);
#endif
struct
notifier_block
ixgb_notifier_reboot
=
{
.
notifier_call
=
ixgb_notify_reboot
,
.
next
=
NULL
,
.
priority
=
0
};
/* Exported from other modules */
extern
void
ixgb_check_options
(
struct
ixgb_adapter
*
adapter
);
static
struct
pci_driver
ixgb_driver
=
{
.
name
=
ixgb_driver_name
,
.
name
=
ixgb_driver_name
,
.
id_table
=
ixgb_pci_tbl
,
.
probe
=
ixgb_probe
,
.
remove
=
__devexit_p
(
ixgb_remove
),
/* Power Managment Hooks */
.
suspend
=
NULL
,
.
resume
=
NULL
.
probe
=
ixgb_probe
,
.
remove
=
__devexit_p
(
ixgb_remove
),
};
MODULE_AUTHOR
(
"Intel Corporation, <linux.nics@intel.com>"
);
...
...
@@ -169,17 +157,12 @@ MODULE_LICENSE("GPL");
static
int
__init
ixgb_init_module
(
void
)
{
int
ret
;
printk
(
KERN_INFO
"%s - version %s
\n
"
,
ixgb_driver_string
,
ixgb_driver_version
);
printk
(
KERN_INFO
"%s
\n
"
,
ixgb_copyright
);
ret
=
pci_module_init
(
&
ixgb_driver
);
if
(
ret
>=
0
)
{
register_reboot_notifier
(
&
ixgb_notifier_reboot
);
}
return
ret
;
return
pci_module_init
(
&
ixgb_driver
);
}
module_init
(
ixgb_init_module
);
...
...
@@ -194,7 +177,6 @@ module_init(ixgb_init_module);
static
void
__exit
ixgb_exit_module
(
void
)
{
unregister_reboot_notifier
(
&
ixgb_notifier_reboot
);
pci_unregister_driver
(
&
ixgb_driver
);
}
...
...
@@ -224,8 +206,8 @@ ixgb_irq_enable(struct ixgb_adapter *adapter)
{
if
(
atomic_dec_and_test
(
&
adapter
->
irq_sem
))
{
IXGB_WRITE_REG
(
&
adapter
->
hw
,
IMS
,
IXGB_INT_RXT0
|
IXGB_INT_RXDMT0
|
IXGB_INT_TXDW
|
IXGB_INT_RXO
|
IXGB_INT_LSC
);
IXGB_INT_RXT0
|
IXGB_INT_RXDMT0
|
IXGB_INT_TXDW
|
IXGB_INT_LSC
);
IXGB_WRITE_FLUSH
(
&
adapter
->
hw
);
}
}
...
...
@@ -1209,10 +1191,10 @@ ixgb_tso(struct ixgb_adapter *adapter, struct sk_buff *skb)
|
IXGB_CONTEXT_DESC_CMD_TSE
|
IXGB_CONTEXT_DESC_CMD_IP
|
IXGB_CONTEXT_DESC_CMD_TCP
|
IXGB_CONTEXT_DESC_CMD_RS
|
IXGB_CONTEXT_DESC_CMD_IDE
|
(
skb
->
len
-
(
hdr_len
)));
if
(
++
i
==
adapter
->
tx_ring
.
count
)
i
=
0
;
adapter
->
tx_ring
.
next_to_use
=
i
;
...
...
@@ -1247,8 +1229,7 @@ ixgb_tx_csum(struct ixgb_adapter *adapter, struct sk_buff *skb)
context_desc
->
mss
=
0
;
context_desc
->
cmd_type_len
=
cpu_to_le32
(
IXGB_CONTEXT_DESC_TYPE
|
IXGB_TX_DESC_CMD_RS
|
IXGB_TX_DESC_CMD_IDE
);
|
IXGB_TX_DESC_CMD_IDE
);
if
(
++
i
==
adapter
->
tx_ring
.
count
)
i
=
0
;
adapter
->
tx_ring
.
next_to_use
=
i
;
...
...
@@ -1273,6 +1254,7 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
unsigned
int
nr_frags
=
skb_shinfo
(
skb
)
->
nr_frags
;
unsigned
int
f
;
len
-=
skb
->
data_len
;
i
=
tx_ring
->
next_to_use
;
...
...
@@ -1526,14 +1508,33 @@ ixgb_change_mtu(struct net_device *netdev, int new_mtu)
void
ixgb_update_stats
(
struct
ixgb_adapter
*
adapter
)
{
struct
net_device
*
netdev
=
adapter
->
netdev
;
if
((
netdev
->
flags
&
IFF_PROMISC
)
||
(
netdev
->
flags
&
IFF_ALLMULTI
)
||
(
netdev
->
mc_count
>
IXGB_MAX_NUM_MULTICAST_ADDRESSES
))
{
u64
multi
=
IXGB_READ_REG
(
&
adapter
->
hw
,
MPRCL
);
u32
bcast_l
=
IXGB_READ_REG
(
&
adapter
->
hw
,
BPRCL
);
u32
bcast_h
=
IXGB_READ_REG
(
&
adapter
->
hw
,
BPRCH
);
u64
bcast
=
((
u64
)
bcast_h
<<
32
)
|
bcast_l
;
multi
|=
((
u64
)
IXGB_READ_REG
(
&
adapter
->
hw
,
MPRCH
)
<<
32
);
/* fix up multicast stats by removing broadcasts */
multi
-=
bcast
;
adapter
->
stats
.
mprcl
+=
(
multi
&
0xFFFFFFFF
);
adapter
->
stats
.
mprch
+=
(
multi
>>
32
);
adapter
->
stats
.
bprcl
+=
bcast_l
;
adapter
->
stats
.
bprch
+=
bcast_h
;
}
else
{
adapter
->
stats
.
mprcl
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
MPRCL
);
adapter
->
stats
.
mprch
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
MPRCH
);
adapter
->
stats
.
bprcl
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
BPRCL
);
adapter
->
stats
.
bprch
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
BPRCH
);
}
adapter
->
stats
.
tprl
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
TPRL
);
adapter
->
stats
.
tprh
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
TPRH
);
adapter
->
stats
.
gprcl
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
GPRCL
);
adapter
->
stats
.
gprch
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
GPRCH
);
adapter
->
stats
.
bprcl
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
BPRCL
);
adapter
->
stats
.
bprch
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
BPRCH
);
adapter
->
stats
.
mprcl
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
MPRCL
);
adapter
->
stats
.
mprch
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
MPRCH
);
adapter
->
stats
.
uprcl
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
UPRCL
);
adapter
->
stats
.
uprch
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
UPRCH
);
adapter
->
stats
.
vprcl
+=
IXGB_READ_REG
(
&
adapter
->
hw
,
VPRCL
);
...
...
@@ -1823,7 +1824,6 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
struct
pci_dev
*
pdev
=
adapter
->
pdev
;
struct
ixgb_rx_desc
*
rx_desc
,
*
next_rxd
;
struct
ixgb_buffer
*
buffer_info
,
*
next_buffer
,
*
next2_buffer
;
struct
sk_buff
*
skb
,
*
next_skb
;
uint32_t
length
;
unsigned
int
i
,
j
;
boolean_t
cleaned
=
FALSE
;
...
...
@@ -1833,6 +1833,8 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
buffer_info
=
&
rx_ring
->
buffer_info
[
i
];
while
(
rx_desc
->
status
&
IXGB_RX_DESC_STATUS_DD
)
{
struct
sk_buff
*
skb
,
*
next_skb
;
u8
status
;
#ifdef CONFIG_IXGB_NAPI
if
(
*
work_done
>=
work_to_do
)
...
...
@@ -1840,7 +1842,9 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
(
*
work_done
)
++
;
#endif
status
=
rx_desc
->
status
;
skb
=
buffer_info
->
skb
;
prefetch
(
skb
->
data
);
if
(
++
i
==
rx_ring
->
count
)
i
=
0
;
...
...
@@ -1855,7 +1859,6 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
next_skb
=
next_buffer
->
skb
;
prefetch
(
next_skb
);
cleaned
=
TRUE
;
pci_unmap_single
(
pdev
,
...
...
@@ -1865,7 +1868,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
length
=
le16_to_cpu
(
rx_desc
->
length
);
if
(
unlikely
(
!
(
rx_desc
->
status
&
IXGB_RX_DESC_STATUS_EOP
)))
{
if
(
unlikely
(
!
(
status
&
IXGB_RX_DESC_STATUS_EOP
)))
{
/* All receives must fit into a single buffer */
...
...
@@ -1873,12 +1876,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
"length<%x>
\n
"
,
length
);
dev_kfree_skb_irq
(
skb
);
rx_desc
->
status
=
0
;
buffer_info
->
skb
=
NULL
;
rx_desc
=
next_rxd
;
buffer_info
=
next_buffer
;
continue
;
goto
rxdesc_done
;
}
if
(
unlikely
(
rx_desc
->
errors
...
...
@@ -1887,12 +1885,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
IXGB_RX_DESC_ERRORS_RXE
)))
{
dev_kfree_skb_irq
(
skb
);
rx_desc
->
status
=
0
;
buffer_info
->
skb
=
NULL
;
rx_desc
=
next_rxd
;
buffer_info
=
next_buffer
;
continue
;
goto
rxdesc_done
;
}
/* Good Receive */
...
...
@@ -1903,7 +1896,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
skb
->
protocol
=
eth_type_trans
(
skb
,
netdev
);
#ifdef CONFIG_IXGB_NAPI
if
(
adapter
->
vlgrp
&&
(
rx_desc
->
status
&
IXGB_RX_DESC_STATUS_VP
))
{
if
(
adapter
->
vlgrp
&&
(
status
&
IXGB_RX_DESC_STATUS_VP
))
{
vlan_hwaccel_receive_skb
(
skb
,
adapter
->
vlgrp
,
le16_to_cpu
(
rx_desc
->
special
)
&
IXGB_RX_DESC_SPECIAL_VLAN_MASK
);
...
...
@@ -1911,7 +1904,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
netif_receive_skb
(
skb
);
}
#else
/* CONFIG_IXGB_NAPI */
if
(
adapter
->
vlgrp
&&
(
rx_desc
->
status
&
IXGB_RX_DESC_STATUS_VP
))
{
if
(
adapter
->
vlgrp
&&
(
status
&
IXGB_RX_DESC_STATUS_VP
))
{
vlan_hwaccel_rx
(
skb
,
adapter
->
vlgrp
,
le16_to_cpu
(
rx_desc
->
special
)
&
IXGB_RX_DESC_SPECIAL_VLAN_MASK
);
...
...
@@ -1921,9 +1914,12 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter)
#endif
/* CONFIG_IXGB_NAPI */
netdev
->
last_rx
=
jiffies
;
rxdesc_done:
/* clean up descriptor, might be written over by hw */
rx_desc
->
status
=
0
;
buffer_info
->
skb
=
NULL
;
/* use prefetched values */
rx_desc
=
next_rxd
;
buffer_info
=
next_buffer
;
}
...
...
@@ -1959,8 +1955,8 @@ ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter)
num_group_tail_writes
=
IXGB_RX_BUFFER_WRITE
;
/* leave
one descriptor
unused */
while
(
--
cleancount
>
0
)
{
/* leave
three descriptors
unused */
while
(
--
cleancount
>
2
)
{
rx_desc
=
IXGB_RX_DESC
(
*
rx_ring
,
i
);
skb
=
dev_alloc_skb
(
adapter
->
rx_buffer_len
+
NET_IP_ALIGN
);
...
...
@@ -1987,6 +1983,10 @@ ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter)
PCI_DMA_FROMDEVICE
);
rx_desc
->
buff_addr
=
cpu_to_le64
(
buffer_info
->
dma
);
/* guarantee DD bit not set now before h/w gets descriptor
* this is the rest of the workaround for h/w double
* writeback. */
rx_desc
->
status
=
0
;
if
((
i
&
~
(
num_group_tail_writes
-
1
))
==
i
)
{
/* Force memory writes to complete before letting h/w
...
...
@@ -2099,54 +2099,6 @@ ixgb_restore_vlan(struct ixgb_adapter *adapter)
}
}
/**
* ixgb_notify_reboot - handles OS notification of reboot event.
* @param nb notifier block, unused
* @param event Event being passed to driver to act upon
* @param p A pointer to our net device
**/
static
int
ixgb_notify_reboot
(
struct
notifier_block
*
nb
,
unsigned
long
event
,
void
*
p
)
{
struct
pci_dev
*
pdev
=
NULL
;
switch
(
event
)
{
case
SYS_DOWN
:
case
SYS_HALT
:
case
SYS_POWER_OFF
:
while
((
pdev
=
pci_find_device
(
PCI_ANY_ID
,
PCI_ANY_ID
,
pdev
)))
{
if
(
pci_dev_driver
(
pdev
)
==
&
ixgb_driver
)
ixgb_suspend
(
pdev
,
3
);
}
}
return
NOTIFY_DONE
;
}
/**
* ixgb_suspend - driver suspend function called from notify.
* @param pdev pci driver structure used for passing to
* @param state power state to enter
**/
static
int
ixgb_suspend
(
struct
pci_dev
*
pdev
,
uint32_t
state
)
{
struct
net_device
*
netdev
=
pci_get_drvdata
(
pdev
);
struct
ixgb_adapter
*
adapter
=
netdev
->
priv
;
netif_device_detach
(
netdev
);
if
(
netif_running
(
netdev
))
ixgb_down
(
adapter
,
TRUE
);
pci_save_state
(
pdev
);
state
=
(
state
>
0
)
?
3
:
0
;
pci_set_power_state
(
pdev
,
state
);
msec_delay
(
200
);
return
0
;
}
#ifdef CONFIG_NET_POLL_CONTROLLER
/*
* Polling 'interrupt' - used by things like netconsole to send skbs
...
...
@@ -2157,6 +2109,7 @@ ixgb_suspend(struct pci_dev *pdev, uint32_t state)
static
void
ixgb_netpoll
(
struct
net_device
*
dev
)
{
struct
ixgb_adapter
*
adapter
=
dev
->
priv
;
disable_irq
(
adapter
->
pdev
->
irq
);
ixgb_intr
(
adapter
->
pdev
->
irq
,
dev
,
NULL
);
enable_irq
(
adapter
->
pdev
->
irq
);
...
...
drivers/net/ixgb/ixgb_osdep.h
View file @
09e62666
...
...
@@ -45,8 +45,7 @@
/* Don't mdelay in interrupt context! */
\
BUG(); \
} else { \
set_current_state(TASK_UNINTERRUPTIBLE); \
schedule_timeout((x * HZ)/1000 + 2); \
msleep(x); \
} } while(0)
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment