Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
e62112c5
Commit
e62112c5
authored
Jul 30, 2008
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'upstream-davem' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
parents
031cf19e
68905eb4
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
948 additions
and
333 deletions
+948
-333
arch/arm/mach-kirkwood/rd88f6281-setup.c
arch/arm/mach-kirkwood/rd88f6281-setup.c
+3
-0
arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+3
-0
arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+3
-0
arch/arm/mach-orion5x/wnr854t-setup.c
arch/arm/mach-orion5x/wnr854t-setup.c
+3
-0
arch/arm/mach-orion5x/wrt350n-v2-setup.c
arch/arm/mach-orion5x/wrt350n-v2-setup.c
+3
-0
drivers/net/Kconfig
drivers/net/Kconfig
+2
-2
drivers/net/bfin_mac.c
drivers/net/bfin_mac.c
+81
-30
drivers/net/cxgb3/t3_hw.c
drivers/net/cxgb3/t3_hw.c
+1
-1
drivers/net/ehea/ehea_main.c
drivers/net/ehea/ehea_main.c
+2
-2
drivers/net/enc28j60.c
drivers/net/enc28j60.c
+4
-2
drivers/net/forcedeth.c
drivers/net/forcedeth.c
+58
-6
drivers/net/mv643xx_eth.c
drivers/net/mv643xx_eth.c
+236
-122
drivers/net/ne.c
drivers/net/ne.c
+3
-3
drivers/net/s2io.c
drivers/net/s2io.c
+23
-6
drivers/net/sh_eth.c
drivers/net/sh_eth.c
+166
-36
drivers/net/sh_eth.h
drivers/net/sh_eth.h
+314
-112
drivers/net/usb/dm9601.c
drivers/net/usb/dm9601.c
+42
-10
drivers/net/wd.c
drivers/net/wd.c
+1
-1
No files found.
arch/arm/mach-kirkwood/rd88f6281-setup.c
View file @
e62112c5
...
...
@@ -18,6 +18,7 @@
#include <linux/timer.h>
#include <linux/ata_platform.h>
#include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/pci.h>
...
...
@@ -69,6 +70,8 @@ static struct platform_device rd88f6281_nand_flash = {
static
struct
mv643xx_eth_platform_data
rd88f6281_ge00_data
=
{
.
phy_addr
=
-
1
,
.
speed
=
SPEED_1000
,
.
duplex
=
DUPLEX_FULL
,
};
static
struct
mv_sata_platform_data
rd88f6281_sata_data
=
{
...
...
arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
View file @
e62112c5
...
...
@@ -15,6 +15,7 @@
#include <linux/irq.h>
#include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <asm/mach-types.h>
#include <asm/gpio.h>
#include <asm/leds.h>
...
...
@@ -88,6 +89,8 @@ static struct orion5x_mpp_mode rd88f5181l_fxo_mpp_modes[] __initdata = {
static
struct
mv643xx_eth_platform_data
rd88f5181l_fxo_eth_data
=
{
.
phy_addr
=
-
1
,
.
speed
=
SPEED_1000
,
.
duplex
=
DUPLEX_FULL
,
};
static
void
__init
rd88f5181l_fxo_init
(
void
)
...
...
arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
View file @
e62112c5
...
...
@@ -15,6 +15,7 @@
#include <linux/irq.h>
#include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <linux/i2c.h>
#include <asm/mach-types.h>
#include <asm/gpio.h>
...
...
@@ -89,6 +90,8 @@ static struct orion5x_mpp_mode rd88f5181l_ge_mpp_modes[] __initdata = {
static
struct
mv643xx_eth_platform_data
rd88f5181l_ge_eth_data
=
{
.
phy_addr
=
-
1
,
.
speed
=
SPEED_1000
,
.
duplex
=
DUPLEX_FULL
,
};
static
struct
i2c_board_info
__initdata
rd88f5181l_ge_i2c_rtc
=
{
...
...
arch/arm/mach-orion5x/wnr854t-setup.c
View file @
e62112c5
...
...
@@ -14,6 +14,7 @@
#include <linux/delay.h>
#include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <asm/mach-types.h>
#include <asm/gpio.h>
#include <asm/mach/arch.h>
...
...
@@ -92,6 +93,8 @@ static struct platform_device wnr854t_nor_flash = {
static
struct
mv643xx_eth_platform_data
wnr854t_eth_data
=
{
.
phy_addr
=
-
1
,
.
speed
=
SPEED_1000
,
.
duplex
=
DUPLEX_FULL
,
};
static
void
__init
wnr854t_init
(
void
)
...
...
arch/arm/mach-orion5x/wrt350n-v2-setup.c
View file @
e62112c5
...
...
@@ -14,6 +14,7 @@
#include <linux/delay.h>
#include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <asm/mach-types.h>
#include <asm/gpio.h>
#include <asm/mach/arch.h>
...
...
@@ -100,6 +101,8 @@ static struct platform_device wrt350n_v2_nor_flash = {
static
struct
mv643xx_eth_platform_data
wrt350n_v2_eth_data
=
{
.
phy_addr
=
-
1
,
.
speed
=
SPEED_1000
,
.
duplex
=
DUPLEX_FULL
,
};
static
void
__init
wrt350n_v2_init
(
void
)
...
...
drivers/net/Kconfig
View file @
e62112c5
...
...
@@ -510,14 +510,14 @@ config STNIC
config SH_ETH
tristate "Renesas SuperH Ethernet support"
depends on SUPERH && \
(CPU_SUBTYPE_SH7710 || CPU_SUBTYPE_SH7712)
(CPU_SUBTYPE_SH7710 || CPU_SUBTYPE_SH7712
|| CPU_SUBTYPE_SH7763
)
select CRC32
select MII
select MDIO_BITBANG
select PHYLIB
help
Renesas SuperH Ethernet device driver.
This driver support SH7710
and SH7712
.
This driver support SH7710
, SH7712 and SH7763
.
config SUNLANCE
tristate "Sun LANCE support"
...
...
drivers/net/bfin_mac.c
View file @
e62112c5
...
...
@@ -605,36 +605,87 @@ adjust_head:
static
int
bfin_mac_hard_start_xmit
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
)
{
u
nsigned
int
data
;
u
16
*
data
;
current_tx_ptr
->
skb
=
skb
;
/*
* Is skb->data always 16-bit aligned?
* Do we need to memcpy((char *)(tail->packet + 2), skb->data, len)?
*/
if
((((
unsigned
int
)(
skb
->
data
))
&
0x02
)
==
2
)
{
/* move skb->data to current_tx_ptr payload */
data
=
(
unsigned
int
)(
skb
->
data
)
-
2
;
*
((
unsigned
short
*
)
data
)
=
(
unsigned
short
)(
skb
->
len
);
current_tx_ptr
->
desc_a
.
start_addr
=
(
unsigned
long
)
data
;
/* this is important! */
blackfin_dcache_flush_range
(
data
,
(
data
+
(
skb
->
len
))
+
2
);
if
(
ANOMALY_05000285
)
{
/*
* TXDWA feature is not avaible to older revision < 0.3 silicon
* of BF537
*
* Only if data buffer is ODD WORD alignment, we do not
* need to memcpy
*/
u32
data_align
=
(
u32
)(
skb
->
data
)
&
0x3
;
if
(
data_align
==
0x2
)
{
/* move skb->data to current_tx_ptr payload */
data
=
(
u16
*
)(
skb
->
data
)
-
1
;
*
data
=
(
u16
)(
skb
->
len
);
current_tx_ptr
->
desc_a
.
start_addr
=
(
u32
)
data
;
/* this is important! */
blackfin_dcache_flush_range
((
u32
)
data
,
(
u32
)((
u8
*
)
data
+
skb
->
len
+
4
));
}
else
{
*
((
u16
*
)(
current_tx_ptr
->
packet
))
=
(
u16
)(
skb
->
len
);
memcpy
((
u8
*
)(
current_tx_ptr
->
packet
+
2
),
skb
->
data
,
skb
->
len
);
current_tx_ptr
->
desc_a
.
start_addr
=
(
u32
)
current_tx_ptr
->
packet
;
if
(
current_tx_ptr
->
status
.
status_word
!=
0
)
current_tx_ptr
->
status
.
status_word
=
0
;
blackfin_dcache_flush_range
(
(
u32
)
current_tx_ptr
->
packet
,
(
u32
)(
current_tx_ptr
->
packet
+
skb
->
len
+
2
));
}
}
else
{
*
((
unsigned
short
*
)(
current_tx_ptr
->
packet
))
=
(
unsigned
short
)(
skb
->
len
);
memcpy
((
char
*
)(
current_tx_ptr
->
packet
+
2
),
skb
->
data
,
(
skb
->
len
));
current_tx_ptr
->
desc_a
.
start_addr
=
(
unsigned
long
)
current_tx_ptr
->
packet
;
if
(
current_tx_ptr
->
status
.
status_word
!=
0
)
current_tx_ptr
->
status
.
status_word
=
0
;
blackfin_dcache_flush_range
((
unsigned
int
)
current_tx_ptr
->
packet
,
(
unsigned
int
)(
current_tx_ptr
->
packet
+
skb
->
len
)
+
2
);
/*
* TXDWA feature is avaible to revision < 0.3 silicon of
* BF537 and always avaible to BF52x
*/
u32
data_align
=
(
u32
)(
skb
->
data
)
&
0x3
;
if
(
data_align
==
0x0
)
{
u16
sysctl
=
bfin_read_EMAC_SYSCTL
();
sysctl
|=
TXDWA
;
bfin_write_EMAC_SYSCTL
(
sysctl
);
/* move skb->data to current_tx_ptr payload */
data
=
(
u16
*
)(
skb
->
data
)
-
2
;
*
data
=
(
u16
)(
skb
->
len
);
current_tx_ptr
->
desc_a
.
start_addr
=
(
u32
)
data
;
/* this is important! */
blackfin_dcache_flush_range
(
(
u32
)
data
,
(
u32
)((
u8
*
)
data
+
skb
->
len
+
4
));
}
else
if
(
data_align
==
0x2
)
{
u16
sysctl
=
bfin_read_EMAC_SYSCTL
();
sysctl
&=
~
TXDWA
;
bfin_write_EMAC_SYSCTL
(
sysctl
);
/* move skb->data to current_tx_ptr payload */
data
=
(
u16
*
)(
skb
->
data
)
-
1
;
*
data
=
(
u16
)(
skb
->
len
);
current_tx_ptr
->
desc_a
.
start_addr
=
(
u32
)
data
;
/* this is important! */
blackfin_dcache_flush_range
(
(
u32
)
data
,
(
u32
)((
u8
*
)
data
+
skb
->
len
+
4
));
}
else
{
u16
sysctl
=
bfin_read_EMAC_SYSCTL
();
sysctl
&=
~
TXDWA
;
bfin_write_EMAC_SYSCTL
(
sysctl
);
*
((
u16
*
)(
current_tx_ptr
->
packet
))
=
(
u16
)(
skb
->
len
);
memcpy
((
u8
*
)(
current_tx_ptr
->
packet
+
2
),
skb
->
data
,
skb
->
len
);
current_tx_ptr
->
desc_a
.
start_addr
=
(
u32
)
current_tx_ptr
->
packet
;
if
(
current_tx_ptr
->
status
.
status_word
!=
0
)
current_tx_ptr
->
status
.
status_word
=
0
;
blackfin_dcache_flush_range
(
(
u32
)
current_tx_ptr
->
packet
,
(
u32
)(
current_tx_ptr
->
packet
+
skb
->
len
+
2
));
}
}
/* enable this packet's dma */
...
...
@@ -691,7 +742,6 @@ static void bfin_mac_rx(struct net_device *dev)
(
unsigned
long
)
skb
->
tail
);
dev
->
last_rx
=
jiffies
;
skb
->
dev
=
dev
;
skb
->
protocol
=
eth_type_trans
(
skb
,
dev
);
#if defined(BFIN_MAC_CSUM_OFFLOAD)
skb
->
csum
=
current_rx_ptr
->
status
.
ip_payload_csum
;
...
...
@@ -920,6 +970,7 @@ static int bfin_mac_open(struct net_device *dev)
phy_start
(
lp
->
phydev
);
phy_write
(
lp
->
phydev
,
MII_BMCR
,
BMCR_RESET
);
setup_system_regs
(
dev
);
setup_mac_addr
(
dev
->
dev_addr
);
bfin_mac_disable
();
bfin_mac_enable
();
pr_debug
(
"hardware init finished
\n
"
);
...
...
@@ -955,7 +1006,7 @@ static int bfin_mac_close(struct net_device *dev)
return
0
;
}
static
int
__init
bfin_mac_probe
(
struct
platform_device
*
pdev
)
static
int
__
dev
init
bfin_mac_probe
(
struct
platform_device
*
pdev
)
{
struct
net_device
*
ndev
;
struct
bfin_mac_local
*
lp
;
...
...
@@ -1081,7 +1132,7 @@ out_err_probe_mac:
return
rc
;
}
static
int
bfin_mac_remove
(
struct
platform_device
*
pdev
)
static
int
__devexit
bfin_mac_remove
(
struct
platform_device
*
pdev
)
{
struct
net_device
*
ndev
=
platform_get_drvdata
(
pdev
);
struct
bfin_mac_local
*
lp
=
netdev_priv
(
ndev
);
...
...
@@ -1128,7 +1179,7 @@ static int bfin_mac_resume(struct platform_device *pdev)
static
struct
platform_driver
bfin_mac_driver
=
{
.
probe
=
bfin_mac_probe
,
.
remove
=
bfin_mac_remove
,
.
remove
=
__devexit_p
(
bfin_mac_remove
)
,
.
resume
=
bfin_mac_resume
,
.
suspend
=
bfin_mac_suspend
,
.
driver
=
{
...
...
drivers/net/cxgb3/t3_hw.c
View file @
e62112c5
...
...
@@ -683,7 +683,7 @@ enum {
SF_ERASE_SECTOR
=
0xd8
,
/* erase sector */
FW_FLASH_BOOT_ADDR
=
0x70000
,
/* start address of FW in flash */
FW_VERS_ADDR
=
0x7
7
ffc
,
/* flash address holding FW version */
FW_VERS_ADDR
=
0x7
f
ffc
,
/* flash address holding FW version */
FW_MIN_SIZE
=
8
/* at least version and csum */
};
...
...
drivers/net/ehea/ehea_main.c
View file @
e62112c5
...
...
@@ -2937,9 +2937,9 @@ static void ehea_rereg_mrs(struct work_struct *work)
}
}
}
mutex_unlock
(
&
dlpar_mem_lock
);
ehea_info
(
"re-initializing driver complete"
);
ehea_info
(
"re-initializing driver complete"
);
out:
mutex_unlock
(
&
dlpar_mem_lock
);
return
;
}
...
...
drivers/net/enc28j60.c
View file @
e62112c5
...
...
@@ -1547,8 +1547,10 @@ static int __devinit enc28j60_probe(struct spi_device *spi)
random_ether_addr
(
dev
->
dev_addr
);
enc28j60_set_hw_macaddr
(
dev
);
ret
=
request_irq
(
spi
->
irq
,
enc28j60_irq
,
IRQF_TRIGGER_FALLING
,
DRV_NAME
,
priv
);
/* Board setup must set the relevant edge trigger type;
* level triggers won't currently work.
*/
ret
=
request_irq
(
spi
->
irq
,
enc28j60_irq
,
0
,
DRV_NAME
,
priv
);
if
(
ret
<
0
)
{
if
(
netif_msg_probe
(
priv
))
dev_err
(
&
spi
->
dev
,
DRV_NAME
": request irq %d failed "
...
...
drivers/net/forcedeth.c
View file @
e62112c5
...
...
@@ -333,6 +333,7 @@ enum {
NvRegPowerState2
=
0x600
,
#define NVREG_POWERSTATE2_POWERUP_MASK 0x0F11
#define NVREG_POWERSTATE2_POWERUP_REV_A3 0x0001
#define NVREG_POWERSTATE2_PHY_RESET 0x0004
};
/* Big endian: should work, but is untested */
...
...
@@ -529,6 +530,7 @@ union ring_type {
#define PHY_REALTEK_INIT_REG4 0x14
#define PHY_REALTEK_INIT_REG5 0x18
#define PHY_REALTEK_INIT_REG6 0x11
#define PHY_REALTEK_INIT_REG7 0x01
#define PHY_REALTEK_INIT1 0x0000
#define PHY_REALTEK_INIT2 0x8e00
#define PHY_REALTEK_INIT3 0x0001
...
...
@@ -537,6 +539,9 @@ union ring_type {
#define PHY_REALTEK_INIT6 0xf5c7
#define PHY_REALTEK_INIT7 0x1000
#define PHY_REALTEK_INIT8 0x0003
#define PHY_REALTEK_INIT9 0x0008
#define PHY_REALTEK_INIT10 0x0005
#define PHY_REALTEK_INIT11 0x0200
#define PHY_REALTEK_INIT_MSK1 0x0003
#define PHY_GIGABIT 0x0100
...
...
@@ -1149,6 +1154,42 @@ static int phy_init(struct net_device *dev)
return
PHY_ERROR
;
}
}
if
(
np
->
phy_model
==
PHY_MODEL_REALTEK_8211
&&
np
->
phy_rev
==
PHY_REV_REALTEK_8211C
)
{
u32
powerstate
=
readl
(
base
+
NvRegPowerState2
);
/* need to perform hw phy reset */
powerstate
|=
NVREG_POWERSTATE2_PHY_RESET
;
writel
(
powerstate
,
base
+
NvRegPowerState2
);
msleep
(
25
);
powerstate
&=
~
NVREG_POWERSTATE2_PHY_RESET
;
writel
(
powerstate
,
base
+
NvRegPowerState2
);
msleep
(
25
);
reg
=
mii_rw
(
dev
,
np
->
phyaddr
,
PHY_REALTEK_INIT_REG6
,
MII_READ
);
reg
|=
PHY_REALTEK_INIT9
;
if
(
mii_rw
(
dev
,
np
->
phyaddr
,
PHY_REALTEK_INIT_REG6
,
reg
))
{
printk
(
KERN_INFO
"%s: phy init failed.
\n
"
,
pci_name
(
np
->
pci_dev
));
return
PHY_ERROR
;
}
if
(
mii_rw
(
dev
,
np
->
phyaddr
,
PHY_REALTEK_INIT_REG1
,
PHY_REALTEK_INIT10
))
{
printk
(
KERN_INFO
"%s: phy init failed.
\n
"
,
pci_name
(
np
->
pci_dev
));
return
PHY_ERROR
;
}
reg
=
mii_rw
(
dev
,
np
->
phyaddr
,
PHY_REALTEK_INIT_REG7
,
MII_READ
);
if
(
!
(
reg
&
PHY_REALTEK_INIT11
))
{
reg
|=
PHY_REALTEK_INIT11
;
if
(
mii_rw
(
dev
,
np
->
phyaddr
,
PHY_REALTEK_INIT_REG7
,
reg
))
{
printk
(
KERN_INFO
"%s: phy init failed.
\n
"
,
pci_name
(
np
->
pci_dev
));
return
PHY_ERROR
;
}
}
if
(
mii_rw
(
dev
,
np
->
phyaddr
,
PHY_REALTEK_INIT_REG1
,
PHY_REALTEK_INIT1
))
{
printk
(
KERN_INFO
"%s: phy init failed.
\n
"
,
pci_name
(
np
->
pci_dev
));
return
PHY_ERROR
;
}
}
if
(
np
->
phy_model
==
PHY_MODEL_REALTEK_8201
)
{
if
(
np
->
device_id
==
PCI_DEVICE_ID_NVIDIA_NVENET_32
||
np
->
device_id
==
PCI_DEVICE_ID_NVIDIA_NVENET_33
||
...
...
@@ -1201,12 +1242,23 @@ static int phy_init(struct net_device *dev)
mii_control
=
mii_rw
(
dev
,
np
->
phyaddr
,
MII_BMCR
,
MII_READ
);
mii_control
|=
BMCR_ANENABLE
;
/* reset the phy
* (certain phys need bmcr to be setup with reset)
*/
if
(
phy_reset
(
dev
,
mii_control
))
{
printk
(
KERN_INFO
"%s: phy reset failed
\n
"
,
pci_name
(
np
->
pci_dev
));
return
PHY_ERROR
;
if
(
np
->
phy_oui
==
PHY_OUI_REALTEK
&&
np
->
phy_model
==
PHY_MODEL_REALTEK_8211
&&
np
->
phy_rev
==
PHY_REV_REALTEK_8211C
)
{
/* start autoneg since we already performed hw reset above */
mii_control
|=
BMCR_ANRESTART
;
if
(
mii_rw
(
dev
,
np
->
phyaddr
,
MII_BMCR
,
mii_control
))
{
printk
(
KERN_INFO
"%s: phy init failed
\n
"
,
pci_name
(
np
->
pci_dev
));
return
PHY_ERROR
;
}
}
else
{
/* reset the phy
* (certain phys need bmcr to be setup with reset)
*/
if
(
phy_reset
(
dev
,
mii_control
))
{
printk
(
KERN_INFO
"%s: phy reset failed
\n
"
,
pci_name
(
np
->
pci_dev
));
return
PHY_ERROR
;
}
}
/* phy vendor specific configuration */
...
...
drivers/net/mv643xx_eth.c
View file @
e62112c5
This diff is collapsed.
Click to expand it.
drivers/net/ne.c
View file @
e62112c5
...
...
@@ -536,7 +536,7 @@ static int __init ne_probe1(struct net_device *dev, unsigned long ioaddr)
#ifdef CONFIG_NET_POLL_CONTROLLER
dev
->
poll_controller
=
eip_poll
;
#endif
NS8390_init
(
dev
,
0
);
NS8390
p
_init
(
dev
,
0
);
ret
=
register_netdev
(
dev
);
if
(
ret
)
...
...
@@ -794,7 +794,7 @@ retry:
if
(
time_after
(
jiffies
,
dma_start
+
2
*
HZ
/
100
))
{
/* 20ms */
printk
(
KERN_WARNING
"%s: timeout waiting for Tx RDC.
\n
"
,
dev
->
name
);
ne_reset_8390
(
dev
);
NS8390
_init
(
dev
,
1
);
NS8390
p_init
(
dev
,
1
);
break
;
}
...
...
@@ -855,7 +855,7 @@ static int ne_drv_resume(struct platform_device *pdev)
if
(
netif_running
(
dev
))
{
ne_reset_8390
(
dev
);
NS8390_init
(
dev
,
1
);
NS8390
p
_init
(
dev
,
1
);
netif_device_attach
(
dev
);
}
return
0
;
...
...
drivers/net/s2io.c
View file @
e62112c5
...
...
@@ -3143,7 +3143,7 @@ static void tx_intr_handler(struct fifo_info *fifo_data)
pkt_cnt
++
;
/* Updating the statistics block */
nic
->
stats
.
tx_bytes
+=
skb
->
len
;
nic
->
dev
->
stats
.
tx_bytes
+=
skb
->
len
;
nic
->
mac_control
.
stats_info
->
sw_stat
.
mem_freed
+=
skb
->
truesize
;
dev_kfree_skb_irq
(
skb
);
...
...
@@ -4896,25 +4896,42 @@ static struct net_device_stats *s2io_get_stats(struct net_device *dev)
/* Configure Stats for immediate updt */
s2io_updt_stats
(
sp
);
/* Using sp->stats as a staging area, because reset (due to mtu
change, for example) will clear some hardware counters */
dev
->
stats
.
tx_packets
+=
le32_to_cpu
(
mac_control
->
stats_info
->
tmac_frms
)
-
sp
->
stats
.
tx_packets
;
sp
->
stats
.
tx_packets
=
le32_to_cpu
(
mac_control
->
stats_info
->
tmac_frms
);
dev
->
stats
.
tx_errors
+=
le32_to_cpu
(
mac_control
->
stats_info
->
tmac_any_err_frms
)
-
sp
->
stats
.
tx_errors
;
sp
->
stats
.
tx_errors
=
le32_to_cpu
(
mac_control
->
stats_info
->
tmac_any_err_frms
);
dev
->
stats
.
rx_errors
+=
le64_to_cpu
(
mac_control
->
stats_info
->
rmac_drop_frms
)
-
sp
->
stats
.
rx_errors
;
sp
->
stats
.
rx_errors
=
le64_to_cpu
(
mac_control
->
stats_info
->
rmac_drop_frms
);
dev
->
stats
.
multicast
=
le32_to_cpu
(
mac_control
->
stats_info
->
rmac_vld_mcst_frms
)
-
sp
->
stats
.
multicast
;
sp
->
stats
.
multicast
=
le32_to_cpu
(
mac_control
->
stats_info
->
rmac_vld_mcst_frms
);
dev
->
stats
.
rx_length_errors
=
le64_to_cpu
(
mac_control
->
stats_info
->
rmac_long_frms
)
-
sp
->
stats
.
rx_length_errors
;
sp
->
stats
.
rx_length_errors
=
le64_to_cpu
(
mac_control
->
stats_info
->
rmac_long_frms
);
/* collect per-ring rx_packets and rx_bytes */
sp
->
stats
.
rx_packets
=
sp
->
stats
.
rx_bytes
=
0
;
dev
->
stats
.
rx_packets
=
dev
->
stats
.
rx_bytes
=
0
;
for
(
i
=
0
;
i
<
config
->
rx_ring_num
;
i
++
)
{
sp
->
stats
.
rx_packets
+=
mac_control
->
rings
[
i
].
rx_packets
;
sp
->
stats
.
rx_bytes
+=
mac_control
->
rings
[
i
].
rx_bytes
;
dev
->
stats
.
rx_packets
+=
mac_control
->
rings
[
i
].
rx_packets
;
dev
->
stats
.
rx_bytes
+=
mac_control
->
rings
[
i
].
rx_bytes
;
}
return
(
&
sp
->
stats
);
return
(
&
dev
->
stats
);
}
/**
...
...
@@ -7419,7 +7436,7 @@ static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp)
if
(
err_mask
!=
0x5
)
{
DBG_PRINT
(
ERR_DBG
,
"%s: Rx error Value: 0x%x
\n
"
,
dev
->
name
,
err_mask
);
sp
->
stats
.
rx_crc_errors
++
;
dev
->
stats
.
rx_crc_errors
++
;
sp
->
mac_control
.
stats_info
->
sw_stat
.
mem_freed
+=
skb
->
truesize
;
dev_kfree_skb
(
skb
);
...
...
drivers/net/sh_eth.c
View file @
e62112c5
This diff is collapsed.
Click to expand it.
drivers/net/sh_eth.h
View file @
e62112c5
This diff is collapsed.
Click to expand it.
drivers/net/usb/dm9601.c
View file @
e62112c5
...
...
@@ -55,12 +55,28 @@
static
int
dm_read
(
struct
usbnet
*
dev
,
u8
reg
,
u16
length
,
void
*
data
)
{
void
*
buf
;
int
err
=
-
ENOMEM
;
devdbg
(
dev
,
"dm_read() reg=0x%02x length=%d"
,
reg
,
length
);
return
usb_control_msg
(
dev
->
udev
,
usb_rcvctrlpipe
(
dev
->
udev
,
0
),
DM_READ_REGS
,
USB_DIR_IN
|
USB_TYPE_VENDOR
|
USB_RECIP_DEVICE
,
0
,
reg
,
data
,
length
,
USB_CTRL_SET_TIMEOUT
);
buf
=
kmalloc
(
length
,
GFP_KERNEL
);
if
(
!
buf
)
goto
out
;
err
=
usb_control_msg
(
dev
->
udev
,
usb_rcvctrlpipe
(
dev
->
udev
,
0
),
DM_READ_REGS
,
USB_DIR_IN
|
USB_TYPE_VENDOR
|
USB_RECIP_DEVICE
,
0
,
reg
,
buf
,
length
,
USB_CTRL_SET_TIMEOUT
);
if
(
err
==
length
)
memcpy
(
data
,
buf
,
length
);
else
if
(
err
>=
0
)
err
=
-
EINVAL
;
kfree
(
buf
);
out:
return
err
;
}
static
int
dm_read_reg
(
struct
usbnet
*
dev
,
u8
reg
,
u8
*
value
)
...
...
@@ -70,12 +86,28 @@ static int dm_read_reg(struct usbnet *dev, u8 reg, u8 *value)
static
int
dm_write
(
struct
usbnet
*
dev
,
u8
reg
,
u16
length
,
void
*
data
)
{
void
*
buf
=
NULL
;
int
err
=
-
ENOMEM
;
devdbg
(
dev
,
"dm_write() reg=0x%02x, length=%d"
,
reg
,
length
);
return
usb_control_msg
(
dev
->
udev
,
usb_sndctrlpipe
(
dev
->
udev
,
0
),
DM_WRITE_REGS
,
USB_DIR_OUT
|
USB_TYPE_VENDOR
|
USB_RECIP_DEVICE
,
0
,
reg
,
data
,
length
,
USB_CTRL_SET_TIMEOUT
);
if
(
data
)
{
buf
=
kmalloc
(
length
,
GFP_KERNEL
);
if
(
!
buf
)
goto
out
;
memcpy
(
buf
,
data
,
length
);
}
err
=
usb_control_msg
(
dev
->
udev
,
usb_sndctrlpipe
(
dev
->
udev
,
0
),
DM_WRITE_REGS
,
USB_DIR_OUT
|
USB_TYPE_VENDOR
|
USB_RECIP_DEVICE
,
0
,
reg
,
buf
,
length
,
USB_CTRL_SET_TIMEOUT
);
kfree
(
buf
);
if
(
err
>=
0
&&
err
<
length
)
err
=
-
EINVAL
;
out:
return
err
;
}
static
int
dm_write_reg
(
struct
usbnet
*
dev
,
u8
reg
,
u8
value
)
...
...
drivers/net/wd.c
View file @
e62112c5
...
...
@@ -337,7 +337,7 @@ static int __init wd_probe1(struct net_device *dev, int ioaddr)
#ifdef CONFIG_NET_POLL_CONTROLLER
dev
->
poll_controller
=
ei_poll
;
#endif
NS8390_init
(
dev
,
0
);
NS8390
p
_init
(
dev
,
0
);
#if 1
/* Enable interrupt generation on softconfig cards -- M.U */
...
...
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