Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
X
xcap-capability-linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
xcap
xcap-capability-linux
Commits
e5dfa928
Commit
e5dfa928
authored
Oct 28, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'upstream' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
parents
5dd96249
b2ab040d
Changes
145
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
145 changed files
with
8157 additions
and
4645 deletions
+8157
-4645
Documentation/networking/bonding.txt
Documentation/networking/bonding.txt
+3
-2
drivers/net/8139cp.c
drivers/net/8139cp.c
+3
-2
drivers/net/8139too.c
drivers/net/8139too.c
+4
-1
drivers/net/Kconfig
drivers/net/Kconfig
+23
-0
drivers/net/Makefile
drivers/net/Makefile
+3
-1
drivers/net/au1000_eth.c
drivers/net/au1000_eth.c
+5
-8
drivers/net/b44.c
drivers/net/b44.c
+128
-8
drivers/net/b44.h
drivers/net/b44.h
+2
-0
drivers/net/bonding/bond_main.c
drivers/net/bonding/bond_main.c
+55
-2
drivers/net/declance.c
drivers/net/declance.c
+16
-21
drivers/net/e100.c
drivers/net/e100.c
+3
-1
drivers/net/e1000/e1000.h
drivers/net/e1000/e1000.h
+60
-14
drivers/net/e1000/e1000_ethtool.c
drivers/net/e1000/e1000_ethtool.c
+67
-28
drivers/net/e1000/e1000_hw.c
drivers/net/e1000/e1000_hw.c
+187
-33
drivers/net/e1000/e1000_hw.h
drivers/net/e1000/e1000_hw.h
+84
-12
drivers/net/e1000/e1000_main.c
drivers/net/e1000/e1000_main.c
+822
-256
drivers/net/e1000/e1000_param.c
drivers/net/e1000/e1000_param.c
+8
-2
drivers/net/epic100.c
drivers/net/epic100.c
+2
-2
drivers/net/forcedeth.c
drivers/net/forcedeth.c
+202
-108
drivers/net/gianfar.c
drivers/net/gianfar.c
+86
-326
drivers/net/gianfar.h
drivers/net/gianfar.h
+16
-14
drivers/net/gianfar_ethtool.c
drivers/net/gianfar_ethtool.c
+64
-36
drivers/net/gianfar_mii.c
drivers/net/gianfar_mii.c
+219
-0
drivers/net/gianfar_mii.h
drivers/net/gianfar_mii.h
+45
-0
drivers/net/gianfar_phy.c
drivers/net/gianfar_phy.c
+0
-661
drivers/net/gianfar_phy.h
drivers/net/gianfar_phy.h
+0
-213
drivers/net/hamradio/Kconfig
drivers/net/hamradio/Kconfig
+1
-0
drivers/net/hamradio/bpqether.c
drivers/net/hamradio/bpqether.c
+3
-6
drivers/net/hamradio/mkiss.c
drivers/net/hamradio/mkiss.c
+149
-33
drivers/net/hamradio/mkiss.h
drivers/net/hamradio/mkiss.h
+0
-62
drivers/net/hp100.c
drivers/net/hp100.c
+16
-32
drivers/net/irda/stir4200.c
drivers/net/irda/stir4200.c
+3
-4
drivers/net/ixgb/ixgb_ethtool.c
drivers/net/ixgb/ixgb_ethtool.c
+4
-4
drivers/net/ixgb/ixgb_main.c
drivers/net/ixgb/ixgb_main.c
+2
-1
drivers/net/lne390.c
drivers/net/lne390.c
+1
-1
drivers/net/mii.c
drivers/net/mii.c
+15
-0
drivers/net/mipsnet.c
drivers/net/mipsnet.c
+371
-0
drivers/net/mipsnet.h
drivers/net/mipsnet.h
+127
-0
drivers/net/ne.c
drivers/net/ne.c
+15
-0
drivers/net/ne2k-pci.c
drivers/net/ne2k-pci.c
+2
-0
drivers/net/ns83820.c
drivers/net/ns83820.c
+1
-2
drivers/net/pcnet32.c
drivers/net/pcnet32.c
+220
-58
drivers/net/phy/Kconfig
drivers/net/phy/Kconfig
+0
-8
drivers/net/phy/phy.c
drivers/net/phy/phy.c
+0
-8
drivers/net/phy/phy_device.c
drivers/net/phy/phy_device.c
+0
-3
drivers/net/r8169.c
drivers/net/r8169.c
+2
-0
drivers/net/rionet.c
drivers/net/rionet.c
+574
-0
drivers/net/s2io-regs.h
drivers/net/s2io-regs.h
+11
-0
drivers/net/s2io.c
drivers/net/s2io.c
+672
-119
drivers/net/s2io.h
drivers/net/s2io.h
+45
-5
drivers/net/sb1250-mac.c
drivers/net/sb1250-mac.c
+694
-690
drivers/net/sgiseeq.c
drivers/net/sgiseeq.c
+18
-19
drivers/net/skge.c
drivers/net/skge.c
+2
-0
drivers/net/sundance.c
drivers/net/sundance.c
+25
-24
drivers/net/tokenring/ibmtr.c
drivers/net/tokenring/ibmtr.c
+4
-5
drivers/net/tokenring/olympic.c
drivers/net/tokenring/olympic.c
+1
-1
drivers/net/tokenring/tms380tr.c
drivers/net/tokenring/tms380tr.c
+1
-2
drivers/net/tulip/de2104x.c
drivers/net/tulip/de2104x.c
+5
-0
drivers/net/typhoon.c
drivers/net/typhoon.c
+3
-4
drivers/net/via-rhine.c
drivers/net/via-rhine.c
+34
-4
drivers/net/wan/cosa.c
drivers/net/wan/cosa.c
+2
-4
drivers/net/wan/cycx_drv.c
drivers/net/wan/cycx_drv.c
+3
-4
drivers/net/wan/cycx_main.c
drivers/net/wan/cycx_main.c
+1
-1
drivers/net/wan/cycx_x25.c
drivers/net/wan/cycx_x25.c
+3
-2
drivers/net/wan/dscc4.c
drivers/net/wan/dscc4.c
+11
-12
drivers/net/wan/farsync.c
drivers/net/wan/farsync.c
+13
-14
drivers/net/wan/hdlc_fr.c
drivers/net/wan/hdlc_fr.c
+1
-1
drivers/net/wan/lmc/lmc_debug.c
drivers/net/wan/lmc/lmc_debug.c
+4
-6
drivers/net/wan/lmc/lmc_media.c
drivers/net/wan/lmc/lmc_media.c
+0
-8
drivers/net/wan/pc300.h
drivers/net/wan/pc300.h
+0
-16
drivers/net/wan/pc300_drv.c
drivers/net/wan/pc300_drv.c
+44
-43
drivers/net/wan/pc300_tty.c
drivers/net/wan/pc300_tty.c
+9
-9
drivers/net/wan/sdla.c
drivers/net/wan/sdla.c
+10
-10
drivers/net/wan/sdla_fr.c
drivers/net/wan/sdla_fr.c
+2
-2
drivers/net/wan/sdla_x25.c
drivers/net/wan/sdla_x25.c
+4
-4
drivers/net/wan/sdladrv.c
drivers/net/wan/sdladrv.c
+6
-10
drivers/net/wan/syncppp.c
drivers/net/wan/syncppp.c
+3
-7
drivers/net/wireless/airo.c
drivers/net/wireless/airo.c
+11
-26
drivers/net/wireless/airport.c
drivers/net/wireless/airport.c
+1
-18
drivers/net/wireless/atmel.c
drivers/net/wireless/atmel.c
+12
-12
drivers/net/wireless/hermes.c
drivers/net/wireless/hermes.c
+2
-9
drivers/net/wireless/hermes.h
drivers/net/wireless/hermes.h
+55
-56
drivers/net/wireless/hostap/hostap.c
drivers/net/wireless/hostap/hostap.c
+0
-6
drivers/net/wireless/hostap/hostap_80211_rx.c
drivers/net/wireless/hostap/hostap_80211_rx.c
+22
-21
drivers/net/wireless/hostap/hostap_80211_tx.c
drivers/net/wireless/hostap/hostap_80211_tx.c
+14
-14
drivers/net/wireless/hostap/hostap_ap.c
drivers/net/wireless/hostap/hostap_ap.c
+40
-40
drivers/net/wireless/hostap/hostap_ap.h
drivers/net/wireless/hostap/hostap_ap.h
+3
-3
drivers/net/wireless/hostap/hostap_cs.c
drivers/net/wireless/hostap/hostap_cs.c
+13
-37
drivers/net/wireless/hostap/hostap_hw.c
drivers/net/wireless/hostap/hostap_hw.c
+12
-10
drivers/net/wireless/hostap/hostap_ioctl.c
drivers/net/wireless/hostap/hostap_ioctl.c
+8
-15
drivers/net/wireless/hostap/hostap_pci.c
drivers/net/wireless/hostap/hostap_pci.c
+11
-10
drivers/net/wireless/hostap/hostap_plx.c
drivers/net/wireless/hostap/hostap_plx.c
+3
-8
drivers/net/wireless/hostap/hostap_wlan.h
drivers/net/wireless/hostap/hostap_wlan.h
+0
-2
drivers/net/wireless/ipw2100.c
drivers/net/wireless/ipw2100.c
+10
-14
drivers/net/wireless/ipw2100.h
drivers/net/wireless/ipw2100.h
+1
-1
drivers/net/wireless/ipw2200.c
drivers/net/wireless/ipw2200.c
+13
-14
drivers/net/wireless/ipw2200.h
drivers/net/wireless/ipw2200.h
+2
-2
drivers/net/wireless/netwave_cs.c
drivers/net/wireless/netwave_cs.c
+0
-185
drivers/net/wireless/orinoco.c
drivers/net/wireless/orinoco.c
+74
-161
drivers/net/wireless/orinoco.h
drivers/net/wireless/orinoco.h
+7
-9
drivers/net/wireless/orinoco_cs.c
drivers/net/wireless/orinoco_cs.c
+60
-50
drivers/net/wireless/orinoco_nortel.c
drivers/net/wireless/orinoco_nortel.c
+2
-18
drivers/net/wireless/orinoco_pci.c
drivers/net/wireless/orinoco_pci.c
+1
-17
drivers/net/wireless/orinoco_plx.c
drivers/net/wireless/orinoco_plx.c
+1
-17
drivers/net/wireless/orinoco_tmd.c
drivers/net/wireless/orinoco_tmd.c
+1
-17
drivers/net/wireless/prism54/isl_ioctl.c
drivers/net/wireless/prism54/isl_ioctl.c
+1
-9
drivers/net/wireless/prism54/islpci_dev.c
drivers/net/wireless/prism54/islpci_dev.c
+2
-8
drivers/net/wireless/prism54/islpci_dev.h
drivers/net/wireless/prism54/islpci_dev.h
+0
-2
drivers/net/wireless/prism54/islpci_mgt.c
drivers/net/wireless/prism54/islpci_mgt.c
+2
-3
drivers/net/wireless/ray_cs.c
drivers/net/wireless/ray_cs.c
+23
-23
drivers/net/wireless/spectrum_cs.c
drivers/net/wireless/spectrum_cs.c
+16
-63
drivers/net/wireless/wavelan.c
drivers/net/wireless/wavelan.c
+0
-8
drivers/net/wireless/wavelan.p.h
drivers/net/wireless/wavelan.p.h
+0
-4
drivers/net/wireless/wavelan_cs.c
drivers/net/wireless/wavelan_cs.c
+0
-8
drivers/net/wireless/wavelan_cs.p.h
drivers/net/wireless/wavelan_cs.p.h
+0
-4
drivers/net/wireless/wl3501.h
drivers/net/wireless/wl3501.h
+1
-1
drivers/s390/net/qeth.h
drivers/s390/net/qeth.h
+42
-3
drivers/s390/net/qeth_fs.h
drivers/s390/net/qeth_fs.h
+11
-1
drivers/s390/net/qeth_main.c
drivers/s390/net/qeth_main.c
+318
-101
drivers/s390/net/qeth_mpc.c
drivers/s390/net/qeth_mpc.c
+4
-2
drivers/s390/net/qeth_mpc.h
drivers/s390/net/qeth_mpc.h
+12
-3
drivers/s390/net/qeth_sys.c
drivers/s390/net/qeth_sys.c
+26
-2
include/asm-mips/sgi/hpc3.h
include/asm-mips/sgi/hpc3.h
+20
-20
include/linux/cyclomx.h
include/linux/cyclomx.h
+0
-2
include/linux/cycx_drv.h
include/linux/cycx_drv.h
+0
-1
include/linux/ibmtr.h
include/linux/ibmtr.h
+2
-2
include/linux/if_arp.h
include/linux/if_arp.h
+1
-0
include/linux/mii.h
include/linux/mii.h
+1
-0
include/linux/netdevice.h
include/linux/netdevice.h
+2
-4
include/linux/sdladrv.h
include/linux/sdladrv.h
+0
-4
include/linux/wanpipe.h
include/linux/wanpipe.h
+0
-9
include/net/ieee80211.h
include/net/ieee80211.h
+402
-123
include/net/ieee80211_crypt.h
include/net/ieee80211_crypt.h
+25
-13
include/net/ieee80211_radiotap.h
include/net/ieee80211_radiotap.h
+231
-0
include/net/syncppp.h
include/net/syncppp.h
+0
-1
net/ieee80211/Makefile
net/ieee80211/Makefile
+2
-1
net/ieee80211/ieee80211_crypt.c
net/ieee80211/ieee80211_crypt.c
+40
-19
net/ieee80211/ieee80211_crypt_ccmp.c
net/ieee80211/ieee80211_crypt_ccmp.c
+46
-29
net/ieee80211/ieee80211_crypt_tkip.c
net/ieee80211/ieee80211_crypt_tkip.c
+96
-54
net/ieee80211/ieee80211_crypt_wep.c
net/ieee80211/ieee80211_crypt_wep.c
+13
-13
net/ieee80211/ieee80211_geo.c
net/ieee80211/ieee80211_geo.c
+141
-0
net/ieee80211/ieee80211_module.c
net/ieee80211/ieee80211_module.c
+36
-29
net/ieee80211/ieee80211_rx.c
net/ieee80211/ieee80211_rx.c
+464
-146
net/ieee80211/ieee80211_tx.c
net/ieee80211/ieee80211_tx.c
+237
-84
net/ieee80211/ieee80211_wx.c
net/ieee80211/ieee80211_wx.c
+317
-55
No files found.
Documentation/networking/bonding.txt
View file @
e5dfa928
...
...
@@ -777,7 +777,7 @@ doing so is the same as described in the "Configuring Multiple Bonds
Manually" section, below.
NOTE: It has been observed that some Red Hat supplied kernels
are apparently unable to rename modules at load time (the "-o
bonding
1"
are apparently unable to rename modules at load time (the "-o
bond
1"
part). Attempts to pass that option to modprobe will produce an
"Operation not permitted" error. This has been reported on some
Fedora Core kernels, and has been seen on RHEL 4 as well. On kernels
...
...
@@ -883,7 +883,8 @@ the above does not work, and the second bonding instance never sees
its options. In that case, the second options line can be substituted
as follows:
install bonding1 /sbin/modprobe bonding -obond1 mode=balance-alb miimon=50
install bond1 /sbin/modprobe --ignore-install bonding -o bond1 \
mode=balance-alb miimon=50
This may be repeated any number of times, specifying a new and
unique name in place of bond1 for each subsequent instance.
...
...
drivers/net/8139cp.c
View file @
e5dfa928
...
...
@@ -1027,8 +1027,7 @@ static void cp_reset_hw (struct cp_private *cp)
if
(
!
(
cpr8
(
Cmd
)
&
CmdReset
))
return
;
set_current_state
(
TASK_UNINTERRUPTIBLE
);
schedule_timeout
(
10
);
schedule_timeout_uninterruptible
(
10
);
}
printk
(
KERN_ERR
"%s: hardware reset timeout
\n
"
,
cp
->
dev
->
name
);
...
...
@@ -1575,6 +1574,7 @@ static struct ethtool_ops cp_ethtool_ops = {
.
set_wol
=
cp_set_wol
,
.
get_strings
=
cp_get_strings
,
.
get_ethtool_stats
=
cp_get_ethtool_stats
,
.
get_perm_addr
=
ethtool_op_get_perm_addr
,
};
static
int
cp_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
...
...
@@ -1773,6 +1773,7 @@ static int cp_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
for
(
i
=
0
;
i
<
3
;
i
++
)
((
u16
*
)
(
dev
->
dev_addr
))[
i
]
=
le16_to_cpu
(
read_eeprom
(
regs
,
i
+
7
,
addr_len
));
memcpy
(
dev
->
perm_addr
,
dev
->
dev_addr
,
dev
->
addr_len
);
dev
->
open
=
cp_open
;
dev
->
stop
=
cp_close
;
...
...
drivers/net/8139too.c
View file @
e5dfa928
...
...
@@ -552,7 +552,8 @@ const static struct {
{
"RTL-8100B/8139D"
,
HW_REVID
(
1
,
1
,
1
,
0
,
1
,
0
,
1
),
HasLWake
,
HasHltClk
/* XXX undocumented? */
|
HasLWake
,
},
{
"RTL-8101"
,
...
...
@@ -970,6 +971,7 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev,
for
(
i
=
0
;
i
<
3
;
i
++
)
((
u16
*
)
(
dev
->
dev_addr
))[
i
]
=
le16_to_cpu
(
read_eeprom
(
ioaddr
,
i
+
7
,
addr_len
));
memcpy
(
dev
->
perm_addr
,
dev
->
dev_addr
,
dev
->
addr_len
);
/* The Rtl8139-specific entries in the device structure. */
dev
->
open
=
rtl8139_open
;
...
...
@@ -2465,6 +2467,7 @@ static struct ethtool_ops rtl8139_ethtool_ops = {
.
get_strings
=
rtl8139_get_strings
,
.
get_stats_count
=
rtl8139_get_stats_count
,
.
get_ethtool_stats
=
rtl8139_get_ethtool_stats
,
.
get_perm_addr
=
ethtool_op_get_perm_addr
,
};
static
int
netdev_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
...
...
drivers/net/Kconfig
View file @
e5dfa928
...
...
@@ -475,6 +475,14 @@ config SGI_IOC3_ETH_HW_TX_CSUM
the moment only acceleration of IPv4 is supported. This option
enables offloading for checksums on transmit. If unsure, say Y.
config MIPS_SIM_NET
tristate "MIPS simulator Network device (EXPERIMENTAL)"
depends on NETDEVICES && MIPS_SIM && EXPERIMENTAL
help
The MIPSNET device is a simple Ethernet network device which is
emulated by the MIPS Simulator.
If you are not using a MIPSsim or are unsure, say N.
config SGI_O2MACE_ETH
tristate "SGI O2 MACE Fast Ethernet support"
depends on NET_ETHERNET && SGI_IP32=y
...
...
@@ -2083,6 +2091,7 @@ config SPIDER_NET
config GIANFAR
tristate "Gianfar Ethernet"
depends on 85xx || 83xx
select PHYLIB
help
This driver supports the Gigabit TSEC on the MPC85xx
family of chips, and the FEC on the 8540
...
...
@@ -2243,6 +2252,20 @@ config ISERIES_VETH
tristate "iSeries Virtual Ethernet driver support"
depends on PPC_ISERIES
config RIONET
tristate "RapidIO Ethernet over messaging driver support"
depends on NETDEVICES && RAPIDIO
config RIONET_TX_SIZE
int "Number of outbound queue entries"
depends on RIONET
default "128"
config RIONET_RX_SIZE
int "Number of inbound queue entries"
depends on RIONET
default "128"
config FDDI
bool "FDDI driver support"
depends on (PCI || EISA)
...
...
drivers/net/Makefile
View file @
e5dfa928
...
...
@@ -13,7 +13,7 @@ obj-$(CONFIG_CHELSIO_T1) += chelsio/
obj-$(CONFIG_BONDING)
+=
bonding/
obj-$(CONFIG_GIANFAR)
+=
gianfar_driver.o
gianfar_driver-objs
:=
gianfar.o gianfar_ethtool.o gianfar_
phy
.o
gianfar_driver-objs
:=
gianfar.o gianfar_ethtool.o gianfar_
mii
.o
#
# link order important here
...
...
@@ -64,6 +64,7 @@ obj-$(CONFIG_SKFP) += skfp/
obj-$(CONFIG_VIA_RHINE)
+=
via-rhine.o
obj-$(CONFIG_VIA_VELOCITY)
+=
via-velocity.o
obj-$(CONFIG_ADAPTEC_STARFIRE)
+=
starfire.o
obj-$(CONFIG_RIONET)
+=
rionet.o
#
# end link order section
...
...
@@ -166,6 +167,7 @@ obj-$(CONFIG_EQUALIZER) += eql.o
obj-$(CONFIG_MIPS_JAZZ_SONIC)
+=
jazzsonic.o
obj-$(CONFIG_MIPS_GT96100ETH)
+=
gt96100eth.o
obj-$(CONFIG_MIPS_AU1X00_ENET)
+=
au1000_eth.o
obj-$(CONFIG_MIPS_SIM_NET)
+=
mipsnet.o
obj-$(CONFIG_SGI_IOC3_ETH)
+=
ioc3-eth.o
obj-$(CONFIG_DECLANCE)
+=
declance.o
obj-$(CONFIG_ATARILANCE)
+=
atarilance.o
...
...
drivers/net/au1000_eth.c
View file @
e5dfa928
...
...
@@ -151,13 +151,6 @@ struct au1000_private *au_macs[NUM_ETH_INTERFACES];
SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | \
SUPPORTED_Autoneg
static
char
*
phy_link
[]
=
{
"unknown"
,
"10Base2"
,
"10BaseT"
,
"AUI"
,
"100BaseT"
,
"100BaseTX"
,
"100BaseFX"
};
int
bcm_5201_init
(
struct
net_device
*
dev
,
int
phy_addr
)
{
s16
data
;
...
...
@@ -785,6 +778,7 @@ static struct mii_chip_info {
{
"Broadcom BCM5201 10/100 BaseT PHY"
,
0x0040
,
0x6212
,
&
bcm_5201_ops
,
0
},
{
"Broadcom BCM5221 10/100 BaseT PHY"
,
0x0040
,
0x61e4
,
&
bcm_5201_ops
,
0
},
{
"Broadcom BCM5222 10/100 BaseT PHY"
,
0x0040
,
0x6322
,
&
bcm_5201_ops
,
1
},
{
"NS DP83847 PHY"
,
0x2000
,
0x5c30
,
&
bcm_5201_ops
,
0
},
{
"AMD 79C901 HomePNA PHY"
,
0x0000
,
0x35c8
,
&
am79c901_ops
,
0
},
{
"AMD 79C874 10/100 BaseT PHY"
,
0x0022
,
0x561b
,
&
am79c874_ops
,
0
},
{
"LSI 80227 10/100 BaseT PHY"
,
0x0016
,
0xf840
,
&
lsi_80227_ops
,
0
},
...
...
@@ -1045,7 +1039,7 @@ found:
#endif
if
(
aup
->
mii
->
chip_info
==
NULL
)
{
printk
(
KERN_ERR
"%s: Au1x No MII transceivers found!
\n
"
,
printk
(
KERN_ERR
"%s: Au1x No
known
MII transceivers found!
\n
"
,
dev
->
name
);
return
-
1
;
}
...
...
@@ -1546,6 +1540,9 @@ au1000_probe(u32 ioaddr, int irq, int port_num)
printk
(
KERN_ERR
"%s: out of memory
\n
"
,
dev
->
name
);
goto
err_out
;
}
aup
->
mii
->
next
=
NULL
;
aup
->
mii
->
chip_info
=
NULL
;
aup
->
mii
->
status
=
0
;
aup
->
mii
->
mii_control_reg
=
0
;
aup
->
mii
->
mii_data_reg
=
0
;
...
...
drivers/net/b44.c
View file @
e5dfa928
...
...
@@ -106,6 +106,29 @@ static int b44_poll(struct net_device *dev, int *budget);
static
void
b44_poll_controller
(
struct
net_device
*
dev
);
#endif
static
int
dma_desc_align_mask
;
static
int
dma_desc_sync_size
;
static
inline
void
b44_sync_dma_desc_for_device
(
struct
pci_dev
*
pdev
,
dma_addr_t
dma_base
,
unsigned
long
offset
,
enum
dma_data_direction
dir
)
{
dma_sync_single_range_for_device
(
&
pdev
->
dev
,
dma_base
,
offset
&
dma_desc_align_mask
,
dma_desc_sync_size
,
dir
);
}
static
inline
void
b44_sync_dma_desc_for_cpu
(
struct
pci_dev
*
pdev
,
dma_addr_t
dma_base
,
unsigned
long
offset
,
enum
dma_data_direction
dir
)
{
dma_sync_single_range_for_cpu
(
&
pdev
->
dev
,
dma_base
,
offset
&
dma_desc_align_mask
,
dma_desc_sync_size
,
dir
);
}
static
inline
unsigned
long
br32
(
const
struct
b44
*
bp
,
unsigned
long
reg
)
{
return
readl
(
bp
->
regs
+
reg
);
...
...
@@ -668,6 +691,11 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
dp
->
ctrl
=
cpu_to_le32
(
ctrl
);
dp
->
addr
=
cpu_to_le32
((
u32
)
mapping
+
bp
->
rx_offset
+
bp
->
dma_offset
);
if
(
bp
->
flags
&
B44_FLAG_RX_RING_HACK
)
b44_sync_dma_desc_for_device
(
bp
->
pdev
,
bp
->
rx_ring_dma
,
dest_idx
*
sizeof
(
dp
),
DMA_BIDIRECTIONAL
);
return
RX_PKT_BUF_SZ
;
}
...
...
@@ -692,6 +720,11 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
pci_unmap_addr_set
(
dest_map
,
mapping
,
pci_unmap_addr
(
src_map
,
mapping
));
if
(
bp
->
flags
&
B44_FLAG_RX_RING_HACK
)
b44_sync_dma_desc_for_cpu
(
bp
->
pdev
,
bp
->
rx_ring_dma
,
src_idx
*
sizeof
(
src_desc
),
DMA_BIDIRECTIONAL
);
ctrl
=
src_desc
->
ctrl
;
if
(
dest_idx
==
(
B44_RX_RING_SIZE
-
1
))
ctrl
|=
cpu_to_le32
(
DESC_CTRL_EOT
);
...
...
@@ -700,8 +733,14 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
dest_desc
->
ctrl
=
ctrl
;
dest_desc
->
addr
=
src_desc
->
addr
;
src_map
->
skb
=
NULL
;
if
(
bp
->
flags
&
B44_FLAG_RX_RING_HACK
)
b44_sync_dma_desc_for_device
(
bp
->
pdev
,
bp
->
rx_ring_dma
,
dest_idx
*
sizeof
(
dest_desc
),
DMA_BIDIRECTIONAL
);
pci_dma_sync_single_for_device
(
bp
->
pdev
,
src_desc
->
addr
,
RX_PKT_BUF_SZ
,
PCI_DMA_FROMDEVICE
);
...
...
@@ -959,6 +998,11 @@ static int b44_start_xmit(struct sk_buff *skb, struct net_device *dev)
bp
->
tx_ring
[
entry
].
ctrl
=
cpu_to_le32
(
ctrl
);
bp
->
tx_ring
[
entry
].
addr
=
cpu_to_le32
((
u32
)
mapping
+
bp
->
dma_offset
);
if
(
bp
->
flags
&
B44_FLAG_TX_RING_HACK
)
b44_sync_dma_desc_for_device
(
bp
->
pdev
,
bp
->
tx_ring_dma
,
entry
*
sizeof
(
bp
->
tx_ring
[
0
]),
DMA_TO_DEVICE
);
entry
=
NEXT_TX
(
entry
);
bp
->
tx_prod
=
entry
;
...
...
@@ -1064,6 +1108,16 @@ static void b44_init_rings(struct b44 *bp)
memset
(
bp
->
rx_ring
,
0
,
B44_RX_RING_BYTES
);
memset
(
bp
->
tx_ring
,
0
,
B44_TX_RING_BYTES
);
if
(
bp
->
flags
&
B44_FLAG_RX_RING_HACK
)
dma_sync_single_for_device
(
&
bp
->
pdev
->
dev
,
bp
->
rx_ring_dma
,
DMA_TABLE_BYTES
,
PCI_DMA_BIDIRECTIONAL
);
if
(
bp
->
flags
&
B44_FLAG_TX_RING_HACK
)
dma_sync_single_for_device
(
&
bp
->
pdev
->
dev
,
bp
->
tx_ring_dma
,
DMA_TABLE_BYTES
,
PCI_DMA_TODEVICE
);
for
(
i
=
0
;
i
<
bp
->
rx_pending
;
i
++
)
{
if
(
b44_alloc_rx_skb
(
bp
,
-
1
,
i
)
<
0
)
break
;
...
...
@@ -1085,14 +1139,28 @@ static void b44_free_consistent(struct b44 *bp)
bp
->
tx_buffers
=
NULL
;
}
if
(
bp
->
rx_ring
)
{
pci_free_consistent
(
bp
->
pdev
,
DMA_TABLE_BYTES
,
bp
->
rx_ring
,
bp
->
rx_ring_dma
);
if
(
bp
->
flags
&
B44_FLAG_RX_RING_HACK
)
{
dma_unmap_single
(
&
bp
->
pdev
->
dev
,
bp
->
rx_ring_dma
,
DMA_TABLE_BYTES
,
DMA_BIDIRECTIONAL
);
kfree
(
bp
->
rx_ring
);
}
else
pci_free_consistent
(
bp
->
pdev
,
DMA_TABLE_BYTES
,
bp
->
rx_ring
,
bp
->
rx_ring_dma
);
bp
->
rx_ring
=
NULL
;
bp
->
flags
&=
~
B44_FLAG_RX_RING_HACK
;
}
if
(
bp
->
tx_ring
)
{
pci_free_consistent
(
bp
->
pdev
,
DMA_TABLE_BYTES
,
bp
->
tx_ring
,
bp
->
tx_ring_dma
);
if
(
bp
->
flags
&
B44_FLAG_TX_RING_HACK
)
{
dma_unmap_single
(
&
bp
->
pdev
->
dev
,
bp
->
tx_ring_dma
,
DMA_TABLE_BYTES
,
DMA_TO_DEVICE
);
kfree
(
bp
->
tx_ring
);
}
else
pci_free_consistent
(
bp
->
pdev
,
DMA_TABLE_BYTES
,
bp
->
tx_ring
,
bp
->
tx_ring_dma
);
bp
->
tx_ring
=
NULL
;
bp
->
flags
&=
~
B44_FLAG_TX_RING_HACK
;
}
}
...
...
@@ -1118,12 +1186,56 @@ static int b44_alloc_consistent(struct b44 *bp)
size
=
DMA_TABLE_BYTES
;
bp
->
rx_ring
=
pci_alloc_consistent
(
bp
->
pdev
,
size
,
&
bp
->
rx_ring_dma
);
if
(
!
bp
->
rx_ring
)
goto
out_err
;
if
(
!
bp
->
rx_ring
)
{
/* Allocation may have failed due to pci_alloc_consistent
insisting on use of GFP_DMA, which is more restrictive
than necessary... */
struct
dma_desc
*
rx_ring
;
dma_addr_t
rx_ring_dma
;
if
(
!
(
rx_ring
=
(
struct
dma_desc
*
)
kmalloc
(
size
,
GFP_KERNEL
)))
goto
out_err
;
memset
(
rx_ring
,
0
,
size
);
rx_ring_dma
=
dma_map_single
(
&
bp
->
pdev
->
dev
,
rx_ring
,
DMA_TABLE_BYTES
,
DMA_BIDIRECTIONAL
);
if
(
rx_ring_dma
+
size
>
B44_DMA_MASK
)
{
kfree
(
rx_ring
);
goto
out_err
;
}
bp
->
rx_ring
=
rx_ring
;
bp
->
rx_ring_dma
=
rx_ring_dma
;
bp
->
flags
|=
B44_FLAG_RX_RING_HACK
;
}
bp
->
tx_ring
=
pci_alloc_consistent
(
bp
->
pdev
,
size
,
&
bp
->
tx_ring_dma
);
if
(
!
bp
->
tx_ring
)
goto
out_err
;
if
(
!
bp
->
tx_ring
)
{
/* Allocation may have failed due to pci_alloc_consistent
insisting on use of GFP_DMA, which is more restrictive
than necessary... */
struct
dma_desc
*
tx_ring
;
dma_addr_t
tx_ring_dma
;
if
(
!
(
tx_ring
=
(
struct
dma_desc
*
)
kmalloc
(
size
,
GFP_KERNEL
)))
goto
out_err
;
memset
(
tx_ring
,
0
,
size
);
tx_ring_dma
=
dma_map_single
(
&
bp
->
pdev
->
dev
,
tx_ring
,
DMA_TABLE_BYTES
,
DMA_TO_DEVICE
);
if
(
tx_ring_dma
+
size
>
B44_DMA_MASK
)
{
kfree
(
tx_ring
);
goto
out_err
;
}
bp
->
tx_ring
=
tx_ring
;
bp
->
tx_ring_dma
=
tx_ring_dma
;
bp
->
flags
|=
B44_FLAG_TX_RING_HACK
;
}
return
0
;
...
...
@@ -1676,6 +1788,7 @@ static struct ethtool_ops b44_ethtool_ops = {
.
set_pauseparam
=
b44_set_pauseparam
,
.
get_msglevel
=
b44_get_msglevel
,
.
set_msglevel
=
b44_set_msglevel
,
.
get_perm_addr
=
ethtool_op_get_perm_addr
,
};
static
int
b44_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
ifr
,
int
cmd
)
...
...
@@ -1718,6 +1831,7 @@ static int __devinit b44_get_invariants(struct b44 *bp)
bp
->
dev
->
dev_addr
[
3
]
=
eeprom
[
80
];
bp
->
dev
->
dev_addr
[
4
]
=
eeprom
[
83
];
bp
->
dev
->
dev_addr
[
5
]
=
eeprom
[
82
];
memcpy
(
bp
->
dev
->
perm_addr
,
bp
->
dev
->
dev_addr
,
bp
->
dev
->
addr_len
);
bp
->
phy_addr
=
eeprom
[
90
]
&
0x1f
;
...
...
@@ -1971,6 +2085,12 @@ static struct pci_driver b44_driver = {
static
int
__init
b44_init
(
void
)
{
unsigned
int
dma_desc_align_size
=
dma_get_cache_alignment
();
/* Setup paramaters for syncing RX/TX DMA descriptors */
dma_desc_align_mask
=
~
(
dma_desc_align_size
-
1
);
dma_desc_sync_size
=
max
(
dma_desc_align_size
,
sizeof
(
struct
dma_desc
));
return
pci_module_init
(
&
b44_driver
);
}
...
...
drivers/net/b44.h
View file @
e5dfa928
...
...
@@ -400,6 +400,8 @@ struct b44 {
#define B44_FLAG_ADV_100HALF 0x04000000
#define B44_FLAG_ADV_100FULL 0x08000000
#define B44_FLAG_INTERNAL_PHY 0x10000000
#define B44_FLAG_RX_RING_HACK 0x20000000
#define B44_FLAG_TX_RING_HACK 0x40000000
u32
rx_offset
;
...
...
drivers/net/bonding/bond_main.c
View file @
e5dfa928
...
...
@@ -4241,6 +4241,43 @@ out:
return
0
;
}
static
void
bond_activebackup_xmit_copy
(
struct
sk_buff
*
skb
,
struct
bonding
*
bond
,
struct
slave
*
slave
)
{
struct
sk_buff
*
skb2
=
skb_copy
(
skb
,
GFP_ATOMIC
);
struct
ethhdr
*
eth_data
;
u8
*
hwaddr
;
int
res
;
if
(
!
skb2
)
{
printk
(
KERN_ERR
DRV_NAME
": Error: "
"bond_activebackup_xmit_copy(): skb_copy() failed
\n
"
);
return
;
}
skb2
->
mac
.
raw
=
(
unsigned
char
*
)
skb2
->
data
;
eth_data
=
eth_hdr
(
skb2
);
/* Pick an appropriate source MAC address
* -- use slave's perm MAC addr, unless used by bond
* -- otherwise, borrow active slave's perm MAC addr
* since that will not be used
*/
hwaddr
=
slave
->
perm_hwaddr
;
if
(
!
memcmp
(
eth_data
->
h_source
,
hwaddr
,
ETH_ALEN
))
hwaddr
=
bond
->
curr_active_slave
->
perm_hwaddr
;
/* Set source MAC address appropriately */
memcpy
(
eth_data
->
h_source
,
hwaddr
,
ETH_ALEN
);
res
=
bond_dev_queue_xmit
(
bond
,
skb2
,
slave
->
dev
);
if
(
res
)
dev_kfree_skb
(
skb2
);
return
;
}
/*
* in active-backup mode, we know that bond->curr_active_slave is always valid if
* the bond has a usable interface.
...
...
@@ -4257,10 +4294,26 @@ static int bond_xmit_activebackup(struct sk_buff *skb, struct net_device *bond_d
goto
out
;
}
if
(
bond
->
curr_active_slave
)
{
/* one usable interface */
res
=
bond_dev_queue_xmit
(
bond
,
skb
,
bond
->
curr_active_slave
->
dev
);
if
(
!
bond
->
curr_active_slave
)
goto
out
;
/* Xmit IGMP frames on all slaves to ensure rapid fail-over
for multicast traffic on snooping switches */
if
(
skb
->
protocol
==
__constant_htons
(
ETH_P_IP
)
&&
skb
->
nh
.
iph
->
protocol
==
IPPROTO_IGMP
)
{
struct
slave
*
slave
,
*
active_slave
;
int
i
;
active_slave
=
bond
->
curr_active_slave
;
bond_for_each_slave_from_to
(
bond
,
slave
,
i
,
active_slave
->
next
,
active_slave
->
prev
)
if
(
IS_UP
(
slave
->
dev
)
&&
(
slave
->
link
==
BOND_LINK_UP
))
bond_activebackup_xmit_copy
(
skb
,
bond
,
slave
);
}
res
=
bond_dev_queue_xmit
(
bond
,
skb
,
bond
->
curr_active_slave
->
dev
);
out:
if
(
res
)
{
/* no suitable interface, frame not sent */
...
...
drivers/net/declance.c
View file @
e5dfa928
...
...
@@ -5,7 +5,7 @@
*
* adopted from sunlance.c by Richard van den Berg
*
* Copyright (C) 2002, 2003 Maciej W. Rozycki
* Copyright (C) 2002, 2003
, 2005
Maciej W. Rozycki
*
* additional sources:
* - PMAD-AA TURBOchannel Ethernet Module Functional Specification,
...
...
@@ -57,13 +57,15 @@
#include <linux/string.h>
#include <asm/addrspace.h>
#include <asm/system.h>
#include <asm/dec/interrupts.h>
#include <asm/dec/ioasic.h>
#include <asm/dec/ioasic_addrs.h>
#include <asm/dec/kn01.h>
#include <asm/dec/machtype.h>
#include <asm/dec/system.h>
#include <asm/dec/tc.h>
#include <asm/system.h>
static
char
version
[]
__devinitdata
=
"declance.c: v0.009 by Linux MIPS DECstation task force
\n
"
;
...
...
@@ -79,10 +81,6 @@ MODULE_LICENSE("GPL");
#define PMAD_LANCE 2
#define PMAX_LANCE 3
#ifndef CONFIG_TC
unsigned
long
system_base
;
unsigned
long
dmaptr
;
#endif
#define LE_CSR0 0
#define LE_CSR1 1
...
...
@@ -237,7 +235,7 @@ struct lance_init_block {
/*
* This works *only* for the ring descriptors
*/
#define LANCE_ADDR(x) (PHYSADDR(x) >> 1)
#define LANCE_ADDR(x) (
C
PHYSADDR(x) >> 1)
struct
lance_private
{
struct
net_device
*
next
;
...
...
@@ -697,12 +695,13 @@ out:
spin_unlock
(
&
lp
->
lock
);
}
static
void
lance_dma_merr_int
(
const
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
static
irqreturn_t
lance_dma_merr_int
(
const
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
struct
net_device
*
dev
=
(
struct
net_device
*
)
dev_id
;
printk
(
"%s: DMA error
\n
"
,
dev
->
name
);
return
IRQ_HANDLED
;
}
static
irqreturn_t
...
...
@@ -1026,10 +1025,6 @@ static int __init dec_lance_init(const int type, const int slot)
unsigned
long
esar_base
;
unsigned
char
*
esar
;
#ifndef CONFIG_TC
system_base
=
KN01_LANCE_BASE
;
#endif
if
(
dec_lance_debug
&&
version_printed
++
==
0
)
printk
(
version
);
...
...
@@ -1062,16 +1057,16 @@ static int __init dec_lance_init(const int type, const int slot)
switch
(
type
)
{
#ifdef CONFIG_TC
case
ASIC_LANCE
:
dev
->
base_addr
=
system_base
+
IOASIC_LANCE
;
dev
->
base_addr
=
CKSEG1ADDR
(
dec_kn_slot_base
+
IOASIC_LANCE
)
;
/* buffer space for the on-board LANCE shared memory */
/*
* FIXME: ugly hack!
*/
dev
->
mem_start
=
KSEG1ADDR
(
0x00020000
);
dev
->
mem_start
=
C
KSEG1ADDR
(
0x00020000
);
dev
->
mem_end
=
dev
->
mem_start
+
0x00020000
;
dev
->
irq
=
dec_interrupt
[
DEC_IRQ_LANCE
];
esar_base
=
system_base
+
IOASIC_ESAR
;
esar_base
=
CKSEG1ADDR
(
dec_kn_slot_base
+
IOASIC_ESAR
)
;
/* Workaround crash with booting KN04 2.1k from Disk */
memset
((
void
*
)
dev
->
mem_start
,
0
,
...
...
@@ -1101,14 +1096,14 @@ static int __init dec_lance_init(const int type, const int slot)
/* Setup I/O ASIC LANCE DMA. */
lp
->
dma_irq
=
dec_interrupt
[
DEC_IRQ_LANCE_MERR
];
ioasic_write
(
IO_REG_LANCE_DMA_P
,
PHYSADDR
(
dev
->
mem_start
)
<<
3
);