Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
xenomai
ipipe
Commits
cf10b285
Commit
cf10b285
authored
Jan 09, 2006
by
Linus Torvalds
Browse files
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
parents
14591de1
166c3436
Changes
28
Hide whitespace changes
Inline
Side-by-side
Documentation/networking/bonding.txt
View file @
cf10b285
...
...
@@ -945,7 +945,6 @@ bond0 Link encap:Ethernet HWaddr 00:C0:F0:1F:37:B4
collisions:0 txqueuelen:0
eth0 Link encap:Ethernet HWaddr 00:C0:F0:1F:37:B4
inet addr:XXX.XXX.XXX.YYY Bcast:XXX.XXX.XXX.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:3573025 errors:0 dropped:0 overruns:0 frame:0
TX packets:1643167 errors:1 dropped:0 overruns:1 carrier:0
...
...
@@ -953,7 +952,6 @@ eth0 Link encap:Ethernet HWaddr 00:C0:F0:1F:37:B4
Interrupt:10 Base address:0x1080
eth1 Link encap:Ethernet HWaddr 00:C0:F0:1F:37:B4
inet addr:XXX.XXX.XXX.YYY Bcast:XXX.XXX.XXX.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:3651769 errors:0 dropped:0 overruns:0 frame:0
TX packets:1643480 errors:0 dropped:0 overruns:0 carrier:0
...
...
MAINTAINERS
View file @
cf10b285
...
...
@@ -1697,7 +1697,6 @@ S: Maintained
MARVELL MV64340 ETHERNET DRIVER
P: Manish Lachwani
M: Manish_Lachwani@pmc-sierra.com
L: linux-mips@linux-mips.org
L: netdev@vger.kernel.org
S: Supported
...
...
drivers/net/3c503.c
View file @
cf10b285
...
...
@@ -148,14 +148,6 @@ el2_pio_probe(struct net_device *dev)
return
-
ENODEV
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
/* NB: el2_close() handles free_irq */
release_region
(
dev
->
base_addr
,
EL2_IO_EXTENT
);
if
(
ei_status
.
mem
)
iounmap
(
ei_status
.
mem
);
}
#ifndef MODULE
struct
net_device
*
__init
el2_probe
(
int
unit
)
{
...
...
@@ -726,6 +718,14 @@ init_module(void)
return
-
ENXIO
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
/* NB: el2_close() handles free_irq */
release_region
(
dev
->
base_addr
,
EL2_IO_EXTENT
);
if
(
ei_status
.
mem
)
iounmap
(
ei_status
.
mem
);
}
void
cleanup_module
(
void
)
{
...
...
drivers/net/Kconfig
View file @
cf10b285
...
...
@@ -129,7 +129,7 @@ config NET_SB1000
If you don't have this card, of course say N.
source "drivers/net/arcnet/Kconfig"
source "drivers/net/arcnet/Kconfig"
source "drivers/net/phy/Kconfig"
...
...
@@ -844,7 +844,7 @@ config SMC9194
config DM9000
tristate "DM9000 support"
depends on ARM && NET_ETHERNET
depends on
(
ARM
|| MIPS)
&& NET_ETHERNET
select CRC32
select MII
---help---
...
...
drivers/net/ac3200.c
View file @
cf10b285
...
...
@@ -123,14 +123,6 @@ static int __init do_ac3200_probe(struct net_device *dev)
return
-
ENODEV
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
/* Someday free_irq may be in ac_close_card() */
free_irq
(
dev
->
irq
,
dev
);
release_region
(
dev
->
base_addr
,
AC_IO_EXTENT
);
iounmap
(
ei_status
.
mem
);
}
#ifndef MODULE
struct
net_device
*
__init
ac3200_probe
(
int
unit
)
{
...
...
@@ -406,6 +398,14 @@ init_module(void)
return
-
ENXIO
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
/* Someday free_irq may be in ac_close_card() */
free_irq
(
dev
->
irq
,
dev
);
release_region
(
dev
->
base_addr
,
AC_IO_EXTENT
);
iounmap
(
ei_status
.
mem
);
}
void
cleanup_module
(
void
)
{
...
...
drivers/net/bonding/bonding.h
View file @
cf10b285
...
...
@@ -205,7 +205,7 @@ struct bonding {
*
* Caller must hold bond lock for read
*/
extern
inline
struct
slave
*
bond_get_slave_by_dev
(
struct
bonding
*
bond
,
struct
net_device
*
slave_dev
)
static
inline
struct
slave
*
bond_get_slave_by_dev
(
struct
bonding
*
bond
,
struct
net_device
*
slave_dev
)
{
struct
slave
*
slave
=
NULL
;
int
i
;
...
...
@@ -219,7 +219,7 @@ extern inline struct slave *bond_get_slave_by_dev(struct bonding *bond, struct n
return
slave
;
}
extern
inline
struct
bonding
*
bond_get_bond_by_slave
(
struct
slave
*
slave
)
static
inline
struct
bonding
*
bond_get_bond_by_slave
(
struct
slave
*
slave
)
{
if
(
!
slave
||
!
slave
->
dev
->
master
)
{
return
NULL
;
...
...
@@ -228,13 +228,13 @@ extern inline struct bonding *bond_get_bond_by_slave(struct slave *slave)
return
(
struct
bonding
*
)
slave
->
dev
->
master
->
priv
;
}
extern
inline
void
bond_set_slave_inactive_flags
(
struct
slave
*
slave
)
static
inline
void
bond_set_slave_inactive_flags
(
struct
slave
*
slave
)
{
slave
->
state
=
BOND_STATE_BACKUP
;
slave
->
dev
->
flags
|=
IFF_NOARP
;
}
extern
inline
void
bond_set_slave_active_flags
(
struct
slave
*
slave
)
static
inline
void
bond_set_slave_active_flags
(
struct
slave
*
slave
)
{
slave
->
state
=
BOND_STATE_ACTIVE
;
slave
->
dev
->
flags
&=
~
IFF_NOARP
;
...
...
drivers/net/e1000/e1000_param.c
View file @
cf10b285
...
...
@@ -545,7 +545,7 @@ e1000_check_fiber_options(struct e1000_adapter *adapter)
static
void
__devinit
e1000_check_copper_options
(
struct
e1000_adapter
*
adapter
)
{
int
speed
,
dplx
;
int
speed
,
dplx
,
an
;
int
bd
=
adapter
->
bd_number
;
{
/* Speed */
...
...
@@ -641,8 +641,12 @@ e1000_check_copper_options(struct e1000_adapter *adapter)
.
p
=
an_list
}}
};
int
an
=
AutoNeg
[
bd
];
e1000_validate_option
(
&
an
,
&
opt
,
adapter
);
if
(
num_AutoNeg
>
bd
)
{
an
=
AutoNeg
[
bd
];
e1000_validate_option
(
&
an
,
&
opt
,
adapter
);
}
else
{
an
=
opt
.
def
;
}
adapter
->
hw
.
autoneg_advertised
=
an
;
}
...
...
drivers/net/e2100.c
View file @
cf10b285
...
...
@@ -140,13 +140,6 @@ static int __init do_e2100_probe(struct net_device *dev)
return
-
ENODEV
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
/* NB: e21_close() handles free_irq */
iounmap
(
ei_status
.
mem
);
release_region
(
dev
->
base_addr
,
E21_IO_EXTENT
);
}
#ifndef MODULE
struct
net_device
*
__init
e2100_probe
(
int
unit
)
{
...
...
@@ -463,6 +456,13 @@ init_module(void)
return
-
ENXIO
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
/* NB: e21_close() handles free_irq */
iounmap
(
ei_status
.
mem
);
release_region
(
dev
->
base_addr
,
E21_IO_EXTENT
);
}
void
cleanup_module
(
void
)
{
...
...
drivers/net/es3210.c
View file @
cf10b285
...
...
@@ -155,13 +155,6 @@ static int __init do_es_probe(struct net_device *dev)
return
-
ENODEV
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
free_irq
(
dev
->
irq
,
dev
);
release_region
(
dev
->
base_addr
,
ES_IO_EXTENT
);
iounmap
(
ei_status
.
mem
);
}
#ifndef MODULE
struct
net_device
*
__init
es_probe
(
int
unit
)
{
...
...
@@ -456,6 +449,13 @@ init_module(void)
return
-
ENXIO
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
free_irq
(
dev
->
irq
,
dev
);
release_region
(
dev
->
base_addr
,
ES_IO_EXTENT
);
iounmap
(
ei_status
.
mem
);
}
void
cleanup_module
(
void
)
{
...
...
drivers/net/forcedeth.c
View file @
cf10b285
...
...
@@ -101,6 +101,7 @@
* 0.46: 20 Oct 2005: Add irq optimization modes.
* 0.47: 26 Oct 2005: Add phyaddr 0 in phy scan.
* 0.48: 24 Dec 2005: Disable TSO, bugfix for pci_map_single
* 0.49: 10 Dec 2005: Fix tso for large buffers.
*
* Known bugs:
* We suspect that on some hardware no TX done interrupts are generated.
...
...
@@ -112,7 +113,7 @@
* DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few
* superfluous timer interrupts from the nic.
*/
#define FORCEDETH_VERSION "0.4
8
"
#define FORCEDETH_VERSION "0.4
9
"
#define DRV_NAME "forcedeth"
#include <linux/module.h>
...
...
@@ -349,6 +350,8 @@ typedef union _ring_type {
#define NV_TX2_VALID (1<<31)
#define NV_TX2_TSO (1<<28)
#define NV_TX2_TSO_SHIFT 14
#define NV_TX2_TSO_MAX_SHIFT 14
#define NV_TX2_TSO_MAX_SIZE (1<<NV_TX2_TSO_MAX_SHIFT)
#define NV_TX2_CHECKSUM_L3 (1<<27)
#define NV_TX2_CHECKSUM_L4 (1<<26)
...
...
@@ -408,15 +411,15 @@ typedef union _ring_type {
#define NV_WATCHDOG_TIMEO (5*HZ)
#define RX_RING 128
#define TX_RING 6
4
#define TX_RING
25
6
/*
* If your nic mysteriously hangs then try to reduce the limits
* to 1/0: It might be required to set NV_TX_LASTPACKET in the
* last valid ring entry. But this would be impossible to
* implement - probably a disassembly error.
*/
#define TX_LIMIT_STOP
63
#define TX_LIMIT_START
6
2
#define TX_LIMIT_STOP
255
#define TX_LIMIT_START 2
54
/* rx/tx mac addr + type + vlan + align + slack*/
#define NV_RX_HEADERS (64)
...
...
@@ -535,6 +538,7 @@ struct fe_priv {
unsigned
int
next_tx
,
nic_tx
;
struct
sk_buff
*
tx_skbuff
[
TX_RING
];
dma_addr_t
tx_dma
[
TX_RING
];
unsigned
int
tx_dma_len
[
TX_RING
];
u32
tx_flags
;
};
...
...
@@ -935,6 +939,7 @@ static void nv_init_tx(struct net_device *dev)
else
np
->
tx_ring
.
ex
[
i
].
FlagLen
=
0
;
np
->
tx_skbuff
[
i
]
=
NULL
;
np
->
tx_dma
[
i
]
=
0
;
}
}
...
...
@@ -945,30 +950,27 @@ static int nv_init_ring(struct net_device *dev)
return
nv_alloc_rx
(
dev
);
}
static
void
nv_release_txskb
(
struct
net_device
*
dev
,
unsigned
int
skbnr
)
static
int
nv_release_txskb
(
struct
net_device
*
dev
,
unsigned
int
skbnr
)
{
struct
fe_priv
*
np
=
netdev_priv
(
dev
);
struct
sk_buff
*
skb
=
np
->
tx_skbuff
[
skbnr
];
unsigned
int
j
,
entry
,
fragments
;
dprintk
(
KERN_INFO
"%s: nv_release_txskb for skbnr %d, skb %p
\n
"
,
dev
->
name
,
skbnr
,
np
->
tx_skbuff
[
skbnr
]);
entry
=
skbnr
;
if
((
fragments
=
skb_shinfo
(
skb
)
->
nr_frags
)
!=
0
)
{
for
(
j
=
fragments
;
j
>=
1
;
j
--
)
{
skb_frag_t
*
frag
=
&
skb_shinfo
(
skb
)
->
frags
[
j
-
1
];
pci_unmap_page
(
np
->
pci_dev
,
np
->
tx_dma
[
entry
],
frag
->
size
,
PCI_DMA_TODEVICE
);
entry
=
(
entry
-
1
)
%
TX_RING
;
}
dprintk
(
KERN_INFO
"%s: nv_release_txskb for skbnr %d
\n
"
,
dev
->
name
,
skbnr
);
if
(
np
->
tx_dma
[
skbnr
])
{
pci_unmap_page
(
np
->
pci_dev
,
np
->
tx_dma
[
skbnr
],
np
->
tx_dma_len
[
skbnr
],
PCI_DMA_TODEVICE
);
np
->
tx_dma
[
skbnr
]
=
0
;
}
if
(
np
->
tx_skbuff
[
skbnr
])
{
dev_kfree_skb_irq
(
np
->
tx_skbuff
[
skbnr
]);
np
->
tx_skbuff
[
skbnr
]
=
NULL
;
return
1
;
}
else
{
return
0
;
}
pci_unmap_single
(
np
->
pci_dev
,
np
->
tx_dma
[
entry
],
skb
->
len
-
skb
->
data_len
,
PCI_DMA_TODEVICE
);
dev_kfree_skb_irq
(
skb
);
np
->
tx_skbuff
[
skbnr
]
=
NULL
;
}
static
void
nv_drain_tx
(
struct
net_device
*
dev
)
...
...
@@ -981,10 +983,8 @@ static void nv_drain_tx(struct net_device *dev)
np
->
tx_ring
.
orig
[
i
].
FlagLen
=
0
;
else
np
->
tx_ring
.
ex
[
i
].
FlagLen
=
0
;
if
(
np
->
tx_skbuff
[
i
])
{
nv_release_txskb
(
dev
,
i
);
if
(
nv_release_txskb
(
dev
,
i
))
np
->
stats
.
tx_dropped
++
;
}
}
}
...
...
@@ -1021,68 +1021,105 @@ static void drain_ring(struct net_device *dev)
static
int
nv_start_xmit
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
)
{
struct
fe_priv
*
np
=
netdev_priv
(
dev
);
u32
tx_flags
=
0
;
u32
tx_flags_extra
=
(
np
->
desc_ver
==
DESC_VER_1
?
NV_TX_LASTPACKET
:
NV_TX2_LASTPACKET
);
unsigned
int
fragments
=
skb_shinfo
(
skb
)
->
nr_frags
;
unsigned
int
nr
=
(
np
->
next_tx
+
fragments
)
%
TX_RING
;
unsigned
int
nr
=
(
np
->
next_tx
-
1
)
%
TX_RING
;
unsigned
int
start_nr
=
np
->
next_tx
%
TX_RING
;
unsigned
int
i
;
u32
offset
=
0
;
u32
bcnt
;
u32
size
=
skb
->
len
-
skb
->
data_len
;
u32
entries
=
(
size
>>
NV_TX2_TSO_MAX_SHIFT
)
+
((
size
&
(
NV_TX2_TSO_MAX_SIZE
-
1
))
?
1
:
0
);
/* add fragments to entries count */
for
(
i
=
0
;
i
<
fragments
;
i
++
)
{
entries
+=
(
skb_shinfo
(
skb
)
->
frags
[
i
].
size
>>
NV_TX2_TSO_MAX_SHIFT
)
+
((
skb_shinfo
(
skb
)
->
frags
[
i
].
size
&
(
NV_TX2_TSO_MAX_SIZE
-
1
))
?
1
:
0
);
}
spin_lock_irq
(
&
np
->
lock
);
if
((
np
->
next_tx
-
np
->
nic_tx
+
fragments
)
>
TX_LIMIT_STOP
)
{
if
((
np
->
next_tx
-
np
->
nic_tx
+
entries
-
1
)
>
TX_LIMIT_STOP
)
{
spin_unlock_irq
(
&
np
->
lock
);
netif_stop_queue
(
dev
);
return
NETDEV_TX_BUSY
;
}
np
->
tx_skbuff
[
nr
]
=
skb
;
if
(
fragments
)
{
dprintk
(
KERN_DEBUG
"%s: nv_start_xmit: buffer contains %d fragments
\n
"
,
dev
->
name
,
fragments
);
/* setup descriptors in reverse order */
for
(
i
=
fragments
;
i
>=
1
;
i
--
)
{
skb_frag_t
*
frag
=
&
skb_shinfo
(
skb
)
->
frags
[
i
-
1
];
np
->
tx_dma
[
nr
]
=
pci_map_page
(
np
->
pci_dev
,
frag
->
page
,
frag
->
page_offset
,
frag
->
size
,
PCI_DMA_TODEVICE
);
/* setup the header buffer */
do
{
bcnt
=
(
size
>
NV_TX2_TSO_MAX_SIZE
)
?
NV_TX2_TSO_MAX_SIZE
:
size
;
nr
=
(
nr
+
1
)
%
TX_RING
;
np
->
tx_dma
[
nr
]
=
pci_map_single
(
np
->
pci_dev
,
skb
->
data
+
offset
,
bcnt
,
PCI_DMA_TODEVICE
);
np
->
tx_dma_len
[
nr
]
=
bcnt
;
if
(
np
->
desc_ver
==
DESC_VER_1
||
np
->
desc_ver
==
DESC_VER_2
)
{
np
->
tx_ring
.
orig
[
nr
].
PacketBuffer
=
cpu_to_le32
(
np
->
tx_dma
[
nr
]);
np
->
tx_ring
.
orig
[
nr
].
FlagLen
=
cpu_to_le32
((
bcnt
-
1
)
|
tx_flags
);
}
else
{
np
->
tx_ring
.
ex
[
nr
].
PacketBufferHigh
=
cpu_to_le64
(
np
->
tx_dma
[
nr
])
>>
32
;
np
->
tx_ring
.
ex
[
nr
].
PacketBufferLow
=
cpu_to_le64
(
np
->
tx_dma
[
nr
])
&
0x0FFFFFFFF
;
np
->
tx_ring
.
ex
[
nr
].
FlagLen
=
cpu_to_le32
((
bcnt
-
1
)
|
tx_flags
);
}
tx_flags
=
np
->
tx_flags
;
offset
+=
bcnt
;
size
-=
bcnt
;
}
while
(
size
);
/* setup the fragments */
for
(
i
=
0
;
i
<
fragments
;
i
++
)
{
skb_frag_t
*
frag
=
&
skb_shinfo
(
skb
)
->
frags
[
i
];
u32
size
=
frag
->
size
;
offset
=
0
;
do
{
bcnt
=
(
size
>
NV_TX2_TSO_MAX_SIZE
)
?
NV_TX2_TSO_MAX_SIZE
:
size
;
nr
=
(
nr
+
1
)
%
TX_RING
;
np
->
tx_dma
[
nr
]
=
pci_map_page
(
np
->
pci_dev
,
frag
->
page
,
frag
->
page_offset
+
offset
,
bcnt
,
PCI_DMA_TODEVICE
);
np
->
tx_dma_len
[
nr
]
=
bcnt
;
if
(
np
->
desc_ver
==
DESC_VER_1
||
np
->
desc_ver
==
DESC_VER_2
)
{
np
->
tx_ring
.
orig
[
nr
].
PacketBuffer
=
cpu_to_le32
(
np
->
tx_dma
[
nr
]);
np
->
tx_ring
.
orig
[
nr
].
FlagLen
=
cpu_to_le32
(
(
frag
->
size
-
1
)
|
np
->
tx_flags
|
tx_flags_extra
);
np
->
tx_ring
.
orig
[
nr
].
FlagLen
=
cpu_to_le32
(
(
bcnt
-
1
)
|
tx_flags
);
}
else
{
np
->
tx_ring
.
ex
[
nr
].
PacketBufferHigh
=
cpu_to_le64
(
np
->
tx_dma
[
nr
])
>>
32
;
np
->
tx_ring
.
ex
[
nr
].
PacketBufferLow
=
cpu_to_le64
(
np
->
tx_dma
[
nr
])
&
0x0FFFFFFFF
;
np
->
tx_ring
.
ex
[
nr
].
FlagLen
=
cpu_to_le32
(
(
frag
->
size
-
1
)
|
np
->
tx_flags
|
tx_flags_extra
);
np
->
tx_ring
.
ex
[
nr
].
FlagLen
=
cpu_to_le32
(
(
bcnt
-
1
)
|
tx_flags
);
}
nr
=
(
nr
-
1
)
%
TX_RING
;
offset
+=
bcnt
;
size
-=
bcnt
;
}
while
(
size
);
}
if
(
np
->
desc_ver
==
DESC_VER_1
)
tx_flags_extra
&=
~
NV_TX_LASTPACKET
;
else
tx_flags_extra
&=
~
NV_TX2_LASTPACKET
;
}
/* set last fragment flag */
if
(
np
->
desc_ver
==
DESC_VER_1
||
np
->
desc_ver
==
DESC_VER_2
)
{
np
->
tx_ring
.
orig
[
nr
].
FlagLen
|=
cpu_to_le32
(
tx_flags_extra
);
}
else
{
np
->
tx_ring
.
ex
[
nr
].
FlagLen
|=
cpu_to_le32
(
tx_flags_extra
);
}
np
->
tx_skbuff
[
nr
]
=
skb
;
#ifdef NETIF_F_TSO
if
(
skb_shinfo
(
skb
)
->
tso_size
)
tx_flags_extra
|
=
NV_TX2_TSO
|
(
skb_shinfo
(
skb
)
->
tso_size
<<
NV_TX2_TSO_SHIFT
);
tx_flags_extra
=
NV_TX2_TSO
|
(
skb_shinfo
(
skb
)
->
tso_size
<<
NV_TX2_TSO_SHIFT
);
else
#endif
tx_flags_extra
|
=
(
skb
->
ip_summed
==
CHECKSUM_HW
?
(
NV_TX2_CHECKSUM_L3
|
NV_TX2_CHECKSUM_L4
)
:
0
);
tx_flags_extra
=
(
skb
->
ip_summed
==
CHECKSUM_HW
?
(
NV_TX2_CHECKSUM_L3
|
NV_TX2_CHECKSUM_L4
)
:
0
);
np
->
tx_dma
[
nr
]
=
pci_map_single
(
np
->
pci_dev
,
skb
->
data
,
skb
->
len
-
skb
->
data_len
,
PCI_DMA_TODEVICE
);
/* set tx flags */
if
(
np
->
desc_ver
==
DESC_VER_1
||
np
->
desc_ver
==
DESC_VER_2
)
{
np
->
tx_ring
.
orig
[
nr
].
PacketBuffer
=
cpu_to_le32
(
np
->
tx_dma
[
nr
]);
np
->
tx_ring
.
orig
[
nr
].
FlagLen
=
cpu_to_le32
(
(
skb
->
len
-
skb
->
data_len
-
1
)
|
np
->
tx_flags
|
tx_flags_extra
);
np
->
tx_ring
.
orig
[
start_nr
].
FlagLen
|=
cpu_to_le32
(
tx_flags
|
tx_flags_extra
);
}
else
{
np
->
tx_ring
.
ex
[
nr
].
PacketBufferHigh
=
cpu_to_le64
(
np
->
tx_dma
[
nr
])
>>
32
;
np
->
tx_ring
.
ex
[
nr
].
PacketBufferLow
=
cpu_to_le64
(
np
->
tx_dma
[
nr
])
&
0x0FFFFFFFF
;
np
->
tx_ring
.
ex
[
nr
].
FlagLen
=
cpu_to_le32
(
(
skb
->
len
-
skb
->
data_len
-
1
)
|
np
->
tx_flags
|
tx_flags_extra
);
np
->
tx_ring
.
ex
[
start_nr
].
FlagLen
|=
cpu_to_le32
(
tx_flags
|
tx_flags_extra
);
}
dprintk
(
KERN_DEBUG
"%s: nv_start_xmit: packet
packet
%d queued for transmission. tx_flags_extra: %x
\n
"
,
dev
->
name
,
np
->
next_tx
,
tx_flags_extra
);
dprintk
(
KERN_DEBUG
"%s: nv_start_xmit: packet
%d (entries
%d
)
queued for transmission. tx_flags_extra: %x
\n
"
,
dev
->
name
,
np
->
next_tx
,
entries
,
tx_flags_extra
);
{
int
j
;
for
(
j
=
0
;
j
<
64
;
j
++
)
{
...
...
@@ -1093,7 +1130,7 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
dprintk
(
"
\n
"
);
}
np
->
next_tx
+=
1
+
fragm
ents
;
np
->
next_tx
+=
ent
rie
s
;
dev
->
trans_start
=
jiffies
;
spin_unlock_irq
(
&
np
->
lock
);
...
...
@@ -1140,7 +1177,6 @@ static void nv_tx_done(struct net_device *dev)
np
->
stats
.
tx_packets
++
;
np
->
stats
.
tx_bytes
+=
skb
->
len
;
}
nv_release_txskb
(
dev
,
i
);
}
}
else
{
if
(
Flags
&
NV_TX2_LASTPACKET
)
{
...
...
@@ -1156,9 +1192,9 @@ static void nv_tx_done(struct net_device *dev)
np
->
stats
.
tx_packets
++
;
np
->
stats
.
tx_bytes
+=
skb
->
len
;
}
nv_release_txskb
(
dev
,
i
);
}
}
nv_release_txskb
(
dev
,
i
);
np
->
nic_tx
++
;
}
if
(
np
->
next_tx
-
np
->
nic_tx
<
TX_LIMIT_START
)
...
...
@@ -2456,7 +2492,7 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
np
->
txrxctl_bits
|=
NVREG_TXRXCTL_RXCHECK
;
dev
->
features
|=
NETIF_F_HW_CSUM
|
NETIF_F_SG
;
#ifdef NETIF_F_TSO
/* disabled
dev->features |= NETIF_F_TSO;
*/
dev
->
features
|=
NETIF_F_TSO
;
#endif
}
...
...
drivers/net/gianfar.h
View file @
cf10b285
...
...
@@ -718,14 +718,14 @@ struct gfar_private {
uint32_t
msg_enable
;
};
extern
inline
u32
gfar_read
(
volatile
unsigned
*
addr
)
static
inline
u32
gfar_read
(
volatile
unsigned
*
addr
)
{
u32
val
;
val
=
in_be32
(
addr
);
return
val
;
}
extern
inline
void
gfar_write
(
volatile
unsigned
*
addr
,
u32
val
)
static
inline
void
gfar_write
(
volatile
unsigned
*
addr
,
u32
val
)
{
out_be32
(
addr
,
val
);
}
...
...
drivers/net/hp-plus.c
View file @
cf10b285
...
...
@@ -138,12 +138,6 @@ static int __init do_hpp_probe(struct net_device *dev)
return
-
ENODEV
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
/* NB: hpp_close() handles free_irq */
release_region
(
dev
->
base_addr
-
NIC_OFFSET
,
HP_IO_EXTENT
);
}
#ifndef MODULE
struct
net_device
*
__init
hp_plus_probe
(
int
unit
)
{
...
...
@@ -473,6 +467,12 @@ init_module(void)
return
-
ENXIO
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
/* NB: hpp_close() handles free_irq */
release_region
(
dev
->
base_addr
-
NIC_OFFSET
,
HP_IO_EXTENT
);
}
void
cleanup_module
(
void
)
{
...
...
drivers/net/hp.c
View file @
cf10b285
...
...
@@ -102,12 +102,6 @@ static int __init do_hp_probe(struct net_device *dev)
return
-
ENODEV
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
free_irq
(
dev
->
irq
,
dev
);
release_region
(
dev
->
base_addr
-
NIC_OFFSET
,
HP_IO_EXTENT
);
}
#ifndef MODULE
struct
net_device
*
__init
hp_probe
(
int
unit
)
{
...
...
@@ -444,6 +438,12 @@ init_module(void)
return
-
ENXIO
;
}
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
free_irq
(
dev
->
irq
,
dev
);
release_region
(
dev
->
base_addr
-
NIC_OFFSET
,
HP_IO_EXTENT
);
}
void
cleanup_module
(
void
)
{
...
...
drivers/net/ibm_emac/ibm_emac.h
View file @
cf10b285
...
...
@@ -110,6 +110,7 @@ struct emac_regs {
#define EMAC_MR1_TFS_2K 0x00080000
#define EMAC_MR1_TR0_MULT 0x00008000
#define EMAC_MR1_JPSM 0x00000000
#define EMAC_MR1_MWSW_001 0x00000000
#define EMAC_MR1_BASE(opb) (EMAC_MR1_TFS_2K | EMAC_MR1_TR0_MULT)
#else
#define EMAC_MR1_RFS_4K 0x00180000
...
...
@@ -130,7 +131,7 @@ struct emac_regs {
(freq) <= 83 ? EMAC_MR1_OBCI_83 : \
(freq) <= 100 ? EMAC_MR1_OBCI_100 : EMAC_MR1_OBCI_100P)
#define EMAC_MR1_BASE(opb) (EMAC_MR1_TFS_2K | EMAC_MR1_TR | \
EMAC_MR1_MWSW_001 |
EMAC_MR1_OBCI(opb))
EMAC_MR1_OBCI(opb))
#endif
/* EMACx_TMR0 */
...
...
drivers/net/ibm_emac/ibm_emac_core.c
View file @
cf10b285
...
...
@@ -408,7 +408,7 @@ static int emac_configure(struct ocp_enet_private *dev)
/* Mode register */
r
=
EMAC_MR1_BASE
(
emac_opb_mhz
())
|
EMAC_MR1_VLE
|
EMAC_MR1_IST
;
if
(
dev
->
phy
.
duplex
==
DUPLEX_FULL
)
r
|=
EMAC_MR1_FDE
;
r
|=
EMAC_MR1_FDE
|
EMAC_MR1_MWSW_001
;
dev
->
stop_timeout
=
STOP_TIMEOUT_10
;
switch
(
dev
->
phy
.
speed
)
{
case
SPEED_1000
:
...
...
drivers/net/lance.c
View file @
cf10b285
...
...
@@ -309,17 +309,6 @@ static void lance_tx_timeout (struct net_device *dev);
static
void
cleanup_card
(
struct
net_device
*
dev
)
{
struct
lance_private
*
lp
=
dev
->
priv
;
if
(
dev
->
dma
!=
4
)