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
b4c22221
Commit
b4c22221
authored
Sep 03, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://gkernel.bkbits.net/net-drivers-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
6560092a
498566ae
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
66 additions
and
41 deletions
+66
-41
drivers/net/3c527.c
drivers/net/3c527.c
+5
-8
drivers/net/8139cp.c
drivers/net/8139cp.c
+1
-1
drivers/net/forcedeth.c
drivers/net/forcedeth.c
+52
-26
drivers/net/r8169.c
drivers/net/r8169.c
+1
-1
drivers/net/wireless/airo.c
drivers/net/wireless/airo.c
+1
-0
drivers/net/wireless/wavelan.c
drivers/net/wireless/wavelan.c
+6
-5
No files found.
drivers/net/3c527.c
View file @
b4c22221
...
...
@@ -751,18 +751,15 @@ static int mc32_load_rx_ring(struct net_device *dev)
rx_base
=
lp
->
rx_chain
;
for
(
i
=
0
;
i
<
RX_RING_LEN
;
i
++
)
{
for
(
i
=
0
;
i
<
RX_RING_LEN
;
i
++
)
{
lp
->
rx_ring
[
i
].
skb
=
alloc_skb
(
1532
,
GFP_KERNEL
);
skb_reserve
(
lp
->
rx_ring
[
i
].
skb
,
18
);
if
(
lp
->
rx_ring
[
i
].
skb
==
NULL
)
{
for
(;
i
>=
0
;
i
--
)
if
(
lp
->
rx_ring
[
i
].
skb
==
NULL
)
{
for
(;
i
>=
0
;
i
--
)
kfree_skb
(
lp
->
rx_ring
[
i
].
skb
);
return
-
ENOBUFS
;
}
skb_reserve
(
lp
->
rx_ring
[
i
].
skb
,
18
);
p
=
isa_bus_to_virt
(
lp
->
base
+
rx_base
);
p
->
control
=
0
;
...
...
drivers/net/8139cp.c
View file @
b4c22221
...
...
@@ -1698,7 +1698,7 @@ static int cp_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
}
/* Configure DMA attributes. */
if
((
sizeof
(
dma_addr_t
)
>
32
)
&&
if
((
sizeof
(
dma_addr_t
)
>
4
)
&&
!
pci_set_consistent_dma_mask
(
pdev
,
0xffffffffffffffffULL
)
&&
!
pci_set_dma_mask
(
pdev
,
0xffffffffffffffffULL
))
{
pci_using_dac
=
1
;
...
...
drivers/net/forcedeth.c
View file @
b4c22221
...
...
@@ -75,6 +75,7 @@
* added CK804/MCP04 device IDs, code fixes
* for registers, link status and other minor fixes.
* 0.28: 21 Jun 2004: Big cleanup, making driver mostly endian safe
* 0.29: 31 Aug 2004: Add backup timer for link change notification.
*
* Known bugs:
* We suspect that on some hardware no TX done interrupts are generated.
...
...
@@ -86,7 +87,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.2
8
"
#define FORCEDETH_VERSION "0.2
9
"
#define DRV_NAME "forcedeth"
#include <linux/module.h>
...
...
@@ -120,10 +121,11 @@
* Hardware access:
*/
#define DEV_NEED_LASTPACKET1 0x0001
#define DEV_IRQMASK_1 0x0002
#define DEV_IRQMASK_2 0x0004
#define DEV_NEED_TIMERIRQ 0x0008
#define DEV_NEED_LASTPACKET1 0x0001
/* set LASTPACKET1 in tx flags */
#define DEV_IRQMASK_1 0x0002
/* use NVREG_IRQMASK_WANTED_1 for irq mask */
#define DEV_IRQMASK_2 0x0004
/* use NVREG_IRQMASK_WANTED_2 for irq mask */
#define DEV_NEED_TIMERIRQ 0x0008
/* set the timer irq flag in the irq mask */
#define DEV_NEED_LINKTIMER 0x0010
/* poll link settings. Relies on the timer irq */
enum
{
NvRegIrqStatus
=
0x000
,
...
...
@@ -367,6 +369,7 @@ struct ring_desc {
#define OOM_REFILL (1+HZ/20)
#define POLL_WAIT (1+HZ/100)
#define LINK_TIMEOUT (3*HZ)
#define DESC_VER_1 0x0
#define DESC_VER_2 0x02100
...
...
@@ -446,6 +449,11 @@ struct fe_priv {
struct
timer_list
oom_kick
;
struct
timer_list
nic_poll
;
/* media detection workaround.
* Locking: Within irq hander or disable_irq+spin_lock(&np->lock);
*/
int
need_linktimer
;
unsigned
long
link_timeout
;
/*
* tx specific fields.
*/
...
...
@@ -1384,6 +1392,25 @@ static int nv_update_linkspeed(struct net_device *dev)
return
retval
;
}
static
void
nv_linkchange
(
struct
net_device
*
dev
)
{
if
(
nv_update_linkspeed
(
dev
))
{
if
(
netif_carrier_ok
(
dev
))
{
nv_stop_rx
(
dev
);
}
else
{
netif_carrier_on
(
dev
);
printk
(
KERN_INFO
"%s: link up.
\n
"
,
dev
->
name
);
}
nv_start_rx
(
dev
);
}
else
{
if
(
netif_carrier_ok
(
dev
))
{
netif_carrier_off
(
dev
);
printk
(
KERN_INFO
"%s: link down.
\n
"
,
dev
->
name
);
nv_stop_rx
(
dev
);
}
}
}
static
void
nv_link_irq
(
struct
net_device
*
dev
)
{
u8
*
base
=
get_hwbase
(
dev
);
...
...
@@ -1391,25 +1418,10 @@ static void nv_link_irq(struct net_device *dev)
miistat
=
readl
(
base
+
NvRegMIIStatus
);
writel
(
NVREG_MIISTAT_MASK
,
base
+
NvRegMIIStatus
);
dprintk
(
KERN_
DEBUG
"%s: link change notification
, status 0x%x.
\n
"
,
dev
->
name
,
miistat
);
dprintk
(
KERN_
INFO
"%s: link change irq
, status 0x%x.
\n
"
,
dev
->
name
,
miistat
);
if
(
miistat
&
(
NVREG_MIISTAT_LINKCHANGE
))
{
if
(
nv_update_linkspeed
(
dev
))
{
if
(
netif_carrier_ok
(
dev
))
{
nv_stop_rx
(
dev
);
}
else
{
netif_carrier_on
(
dev
);
printk
(
KERN_INFO
"%s: link up.
\n
"
,
dev
->
name
);
}
nv_start_rx
(
dev
);
}
else
{
if
(
netif_carrier_ok
(
dev
))
{
netif_carrier_off
(
dev
);
printk
(
KERN_INFO
"%s: link down.
\n
"
,
dev
->
name
);
nv_stop_rx
(
dev
);
}
}
}
if
(
miistat
&
(
NVREG_MIISTAT_LINKCHANGE
))
nv_linkchange
(
dev
);
dprintk
(
KERN_DEBUG
"%s: link change notification done.
\n
"
,
dev
->
name
);
}
...
...
@@ -1452,6 +1464,12 @@ static irqreturn_t nv_nic_irq(int foo, void *data, struct pt_regs *regs)
nv_link_irq
(
dev
);
spin_unlock
(
&
np
->
lock
);
}
if
(
np
->
need_linktimer
&&
time_after
(
jiffies
,
np
->
link_timeout
))
{
spin_lock
(
&
np
->
lock
);
nv_linkchange
(
dev
);
spin_unlock
(
&
np
->
lock
);
np
->
link_timeout
=
jiffies
+
LINK_TIMEOUT
;
}
if
(
events
&
(
NVREG_IRQ_TX_ERR
))
{
dprintk
(
KERN_DEBUG
"%s: received irq with events 0x%x. Probably TX fail.
\n
"
,
dev
->
name
,
events
);
...
...
@@ -1816,6 +1834,14 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
np
->
irqmask
=
NVREG_IRQMASK_WANTED_2
;
if
(
id
->
driver_data
&
DEV_NEED_TIMERIRQ
)
np
->
irqmask
|=
NVREG_IRQ_TIMER
;
if
(
id
->
driver_data
&
DEV_NEED_LINKTIMER
)
{
dprintk
(
KERN_INFO
"%s: link timer on.
\n
"
,
pci_name
(
pci_dev
));
np
->
need_linktimer
=
1
;
np
->
link_timeout
=
jiffies
+
LINK_TIMEOUT
;
}
else
{
dprintk
(
KERN_INFO
"%s: link timer off.
\n
"
,
pci_name
(
pci_dev
));
np
->
need_linktimer
=
0
;
}
/* find a suitable phy */
for
(
i
=
1
;
i
<
32
;
i
++
)
{
...
...
@@ -1909,21 +1935,21 @@ static struct pci_device_id pci_tbl[] = {
.
device
=
PCI_DEVICE_ID_NVIDIA_NVENET_1
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
.
driver_data
=
DEV_IRQMASK_1
|
DEV_NEED_TIMERIRQ
,
.
driver_data
=
DEV_IRQMASK_1
|
DEV_NEED_TIMERIRQ
|
DEV_NEED_LINKTIMER
,
},
{
/* nForce2 Ethernet Controller */
.
vendor
=
PCI_VENDOR_ID_NVIDIA
,
.
device
=
PCI_DEVICE_ID_NVIDIA_NVENET_2
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
.
driver_data
=
DEV_NEED_LASTPACKET1
|
DEV_IRQMASK_2
|
DEV_NEED_TIMERIRQ
,
.
driver_data
=
DEV_NEED_LASTPACKET1
|
DEV_IRQMASK_2
|
DEV_NEED_TIMERIRQ
|
DEV_NEED_LINKTIMER
,
},
{
/* nForce3 Ethernet Controller */
.
vendor
=
PCI_VENDOR_ID_NVIDIA
,
.
device
=
PCI_DEVICE_ID_NVIDIA_NVENET_3
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
.
driver_data
=
DEV_NEED_LASTPACKET1
|
DEV_IRQMASK_2
|
DEV_NEED_TIMERIRQ
,
.
driver_data
=
DEV_NEED_LASTPACKET1
|
DEV_IRQMASK_2
|
DEV_NEED_TIMERIRQ
|
DEV_NEED_LINKTIMER
,
},
{
/* nForce3 Ethernet Controller */
.
vendor
=
PCI_VENDOR_ID_NVIDIA
,
...
...
drivers/net/r8169.c
View file @
b4c22221
...
...
@@ -983,7 +983,7 @@ rtl8169_init_board(struct pci_dev *pdev, struct net_device **dev_out,
tp
->
cp_cmd
=
PCIMulRW
|
RxChkSum
;
if
((
sizeof
(
dma_addr_t
)
>
32
)
&&
if
((
sizeof
(
dma_addr_t
)
>
4
)
&&
!
pci_set_dma_mask
(
pdev
,
DMA_64BIT_MASK
))
tp
->
cp_cmd
|=
PCIDAC
;
else
{
...
...
drivers/net/wireless/airo.c
View file @
b4c22221
...
...
@@ -25,6 +25,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/smp_lock.h>
#include <linux/sched.h>
#include <linux/ptrace.h>
...
...
drivers/net/wireless/wavelan.c
View file @
b4c22221
...
...
@@ -3822,17 +3822,18 @@ static irqreturn_t wavelan_interrupt(int irq, void *dev_id, struct pt_regs *regs
if
((
hasr
&
HASR_MMC_INTR
)
&&
(
lp
->
hacr
&
HACR_MMC_INT_ENABLE
))
{
u8
dce_status
;
#ifdef DEBUG_INTERRUPT_ERROR
printk
(
KERN_INFO
"%s: wavelan_interrupt(): unexpected mmc interrupt: status 0x%04x.
\n
"
,
dev
->
name
,
dce_status
);
#endif
/*
* Interrupt from the modem management controller.
* This will clear it -- ignored for now.
*/
mmc_read
(
ioaddr
,
mmroff
(
0
,
mmr_dce_status
),
&
dce_status
,
sizeof
(
dce_status
));
#ifdef DEBUG_INTERRUPT_ERROR
printk
(
KERN_INFO
"%s: wavelan_interrupt(): unexpected mmc interrupt: status 0x%04x.
\n
"
,
dev
->
name
,
dce_status
);
#endif
}
/* Check if not controller interrupt */
...
...
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