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
4e3ceac6
Commit
4e3ceac6
authored
May 20, 2006
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'upstream-fixes' into upstream
parents
badc48e6
bb02aacc
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
131 additions
and
302 deletions
+131
-302
drivers/net/forcedeth.c
drivers/net/forcedeth.c
+84
-228
drivers/net/pcmcia/axnet_cs.c
drivers/net/pcmcia/axnet_cs.c
+2
-11
drivers/net/skge.c
drivers/net/skge.c
+3
-5
drivers/net/sky2.c
drivers/net/sky2.c
+32
-22
drivers/net/sky2.h
drivers/net/sky2.h
+2
-0
drivers/net/tulip/winbond-840.c
drivers/net/tulip/winbond-840.c
+2
-2
drivers/net/via-rhine.c
drivers/net/via-rhine.c
+3
-31
drivers/net/wireless/bcm43xx/bcm43xx_main.c
drivers/net/wireless/bcm43xx/bcm43xx_main.c
+3
-3
No files found.
drivers/net/forcedeth.c
View file @
4e3ceac6
This diff is collapsed.
Click to expand it.
drivers/net/pcmcia/axnet_cs.c
View file @
4e3ceac6
...
...
@@ -1691,17 +1691,6 @@ static void do_set_multicast_list(struct net_device *dev)
memset
(
ei_local
->
mcfilter
,
0xFF
,
8
);
}
/*
* DP8390 manuals don't specify any magic sequence for altering
* the multicast regs on an already running card. To be safe, we
* ensure multicast mode is off prior to loading up the new hash
* table. If this proves to be not enough, we can always resort
* to stopping the NIC, loading the table and then restarting.
*/
if
(
netif_running
(
dev
))
outb_p
(
E8390_RXCONFIG
,
e8390_base
+
EN0_RXCR
);
outb_p
(
E8390_NODMA
+
E8390_PAGE1
,
e8390_base
+
E8390_CMD
);
for
(
i
=
0
;
i
<
8
;
i
++
)
{
...
...
@@ -1715,6 +1704,8 @@ static void do_set_multicast_list(struct net_device *dev)
outb_p
(
E8390_RXCONFIG
|
0x48
,
e8390_base
+
EN0_RXCR
);
else
outb_p
(
E8390_RXCONFIG
|
0x40
,
e8390_base
+
EN0_RXCR
);
outb_p
(
E8390_NODMA
+
E8390_PAGE0
+
E8390_START
,
e8390_base
+
E8390_CMD
);
}
/*
...
...
drivers/net/skge.c
View file @
4e3ceac6
...
...
@@ -78,8 +78,7 @@ static const struct pci_device_id skge_id_table[] = {
{
PCI_DEVICE
(
PCI_VENDOR_ID_SYSKONNECT
,
PCI_DEVICE_ID_SYSKONNECT_GE
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_SYSKONNECT
,
PCI_DEVICE_ID_SYSKONNECT_YU
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_DLINK
,
PCI_DEVICE_ID_DLINK_DGE510T
),
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_DLINK
,
0x4b00
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_DLINK
,
0x4b01
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_DLINK
,
0x4b01
)
},
/* DGE-530T */
{
PCI_DEVICE
(
PCI_VENDOR_ID_MARVELL
,
0x4320
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_MARVELL
,
0x5005
)
},
/* Belkin */
{
PCI_DEVICE
(
PCI_VENDOR_ID_CNET
,
PCI_DEVICE_ID_CNET_GIGACARD
)
},
...
...
@@ -402,7 +401,7 @@ static int skge_set_ring_param(struct net_device *dev,
int
err
;
if
(
p
->
rx_pending
==
0
||
p
->
rx_pending
>
MAX_RX_RING_SIZE
||
p
->
tx_pending
==
0
||
p
->
tx_pending
>
MAX_TX_RING_SIZE
)
p
->
tx_pending
<
MAX_SKB_FRAGS
+
1
||
p
->
tx_pending
>
MAX_TX_RING_SIZE
)
return
-
EINVAL
;
skge
->
rx_ring
.
count
=
p
->
rx_pending
;
...
...
@@ -2717,8 +2716,7 @@ static int skge_poll(struct net_device *dev, int *budget)
if
(
control
&
BMU_OWN
)
break
;
skb
=
skge_rx_get
(
skge
,
e
,
control
,
rd
->
status
,
le16_to_cpu
(
rd
->
csum2
));
skb
=
skge_rx_get
(
skge
,
e
,
control
,
rd
->
status
,
rd
->
csum2
);
if
(
likely
(
skb
))
{
dev
->
last_rx
=
jiffies
;
netif_receive_skb
(
skb
);
...
...
drivers/net/sky2.c
View file @
4e3ceac6
...
...
@@ -51,7 +51,7 @@
#include "sky2.h"
#define DRV_NAME "sky2"
#define DRV_VERSION "1.
3
"
#define DRV_VERSION "1.
4
"
#define PFX DRV_NAME " "
/*
...
...
@@ -105,6 +105,7 @@ MODULE_PARM_DESC(idle_timeout, "Idle timeout workaround for lost interrupts (ms)
static
const
struct
pci_device_id
sky2_id_table
[]
=
{
{
PCI_DEVICE
(
PCI_VENDOR_ID_SYSKONNECT
,
0x9000
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_SYSKONNECT
,
0x9E00
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_DLINK
,
0x4b00
)
},
/* DGE-560T */
{
PCI_DEVICE
(
PCI_VENDOR_ID_MARVELL
,
0x4340
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_MARVELL
,
0x4341
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_MARVELL
,
0x4342
)
},
...
...
@@ -235,6 +236,7 @@ static int sky2_set_power_state(struct sky2_hw *hw, pci_power_t state)
}
if
(
hw
->
chip_id
==
CHIP_ID_YUKON_EC_U
)
{
sky2_write16
(
hw
,
B0_CTST
,
Y2_HW_WOL_ON
);
sky2_pci_write32
(
hw
,
PCI_DEV_REG3
,
0
);
reg1
=
sky2_pci_read32
(
hw
,
PCI_DEV_REG4
);
reg1
&=
P_ASPM_CONTROL_MSK
;
...
...
@@ -306,7 +308,7 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port)
u16
ctrl
,
ct1000
,
adv
,
pg
,
ledctrl
,
ledover
;
if
(
sky2
->
autoneg
==
AUTONEG_ENABLE
&&
(
hw
->
chip_id
!
=
CHIP_ID_YUKON_XL
||
hw
->
chip_id
==
CHIP_ID_YUKON_EC_U
))
{
!
(
hw
->
chip_id
=
=
CHIP_ID_YUKON_XL
||
hw
->
chip_id
==
CHIP_ID_YUKON_EC_U
))
{
u16
ectrl
=
gm_phy_read
(
hw
,
port
,
PHY_MARV_EXT_CTRL
);
ectrl
&=
~
(
PHY_M_EC_M_DSC_MSK
|
PHY_M_EC_S_DSC_MSK
|
...
...
@@ -1020,19 +1022,26 @@ static int sky2_up(struct net_device *dev)
struct
sky2_hw
*
hw
=
sky2
->
hw
;
unsigned
port
=
sky2
->
port
;
u32
ramsize
,
rxspace
,
imask
;
int
err
;
int
cap
,
err
=
-
ENOMEM
;
struct
net_device
*
otherdev
=
hw
->
dev
[
sky2
->
port
^
1
];
/*
Block bringing up both ports at the same time on a dual port card.
* There is an unfixed bug where receiver gets confused and picks up
*
packets out of order. Until this is fixed, prevent data corruption.
/*
* On dual port PCI-X card, there is an problem where status
*
can be received out of order due to split transactions
*/
if
(
otherdev
&&
netif_running
(
otherdev
))
{
printk
(
KERN_INFO
PFX
"dual port support is disabled.
\n
"
);
return
-
EBUSY
;
}
if
(
otherdev
&&
netif_running
(
otherdev
)
&&
(
cap
=
pci_find_capability
(
hw
->
pdev
,
PCI_CAP_ID_PCIX
)))
{
struct
sky2_port
*
osky2
=
netdev_priv
(
otherdev
);
u16
cmd
;
cmd
=
sky2_pci_read16
(
hw
,
cap
+
PCI_X_CMD
);
cmd
&=
~
PCI_X_CMD_MAX_SPLIT
;
sky2_pci_write16
(
hw
,
cap
+
PCI_X_CMD
,
cmd
);
sky2
->
rx_csum
=
0
;
osky2
->
rx_csum
=
0
;
}
err
=
-
ENOMEM
;
if
(
netif_msg_ifup
(
sky2
))
printk
(
KERN_INFO
PFX
"%s: enabling interface
\n
"
,
dev
->
name
);
...
...
@@ -1910,6 +1919,12 @@ static inline void sky2_tx_done(struct net_device *dev, u16 last)
}
}
/* Is status ring empty or is there more to do? */
static
inline
int
sky2_more_work
(
const
struct
sky2_hw
*
hw
)
{
return
(
hw
->
st_idx
!=
sky2_read16
(
hw
,
STAT_PUT_IDX
));
}
/* Process status response ring */
static
int
sky2_status_intr
(
struct
sky2_hw
*
hw
,
int
to_do
)
{
...
...
@@ -2182,19 +2197,19 @@ static int sky2_poll(struct net_device *dev0, int *budget)
if
(
status
&
Y2_IS_CHK_TXA2
)
sky2_descriptor_error
(
hw
,
1
,
"transmit"
,
Y2_IS_CHK_TXA2
);
if
(
status
&
Y2_IS_STAT_BMU
)
sky2_write32
(
hw
,
STAT_CTRL
,
SC_STAT_CLR_IRQ
);
work_done
=
sky2_status_intr
(
hw
,
work_limit
);
*
budget
-=
work_done
;
dev0
->
quota
-=
work_done
;
if
(
work_done
>=
work_limit
)
if
(
status
&
Y2_IS_STAT_BMU
)
sky2_write32
(
hw
,
STAT_CTRL
,
SC_STAT_CLR_IRQ
);
if
(
sky2_more_work
(
hw
))
return
1
;
netif_rx_complete
(
dev0
);
s
tatus
=
s
ky2_read32
(
hw
,
B0_Y2_SP_LISR
);
sky2_read32
(
hw
,
B0_Y2_SP_LISR
);
return
0
;
}
...
...
@@ -3078,12 +3093,7 @@ static __devinit struct net_device *sky2_init_netdev(struct sky2_hw *hw,
sky2
->
duplex
=
-
1
;
sky2
->
speed
=
-
1
;
sky2
->
advertising
=
sky2_supported_modes
(
hw
);
/* Receive checksum disabled for Yukon XL
* because of observed problems with incorrect
* values when multiple packets are received in one interrupt
*/
sky2
->
rx_csum
=
(
hw
->
chip_id
!=
CHIP_ID_YUKON_XL
);
sky2
->
rx_csum
=
1
;
spin_lock_init
(
&
sky2
->
phy_lock
);
sky2
->
tx_pending
=
TX_DEF_PENDING
;
...
...
drivers/net/sky2.h
View file @
4e3ceac6
...
...
@@ -214,6 +214,8 @@ enum csr_regs {
enum
{
Y2_VMAIN_AVAIL
=
1
<<
17
,
/* VMAIN available (YUKON-2 only) */
Y2_VAUX_AVAIL
=
1
<<
16
,
/* VAUX available (YUKON-2 only) */
Y2_HW_WOL_ON
=
1
<<
15
,
/* HW WOL On (Yukon-EC Ultra A1 only) */
Y2_HW_WOL_OFF
=
1
<<
14
,
/* HW WOL On (Yukon-EC Ultra A1 only) */
Y2_ASF_ENABLE
=
1
<<
13
,
/* ASF Unit Enable (YUKON-2 only) */
Y2_ASF_DISABLE
=
1
<<
12
,
/* ASF Unit Disable (YUKON-2 only) */
Y2_CLK_RUN_ENA
=
1
<<
11
,
/* CLK_RUN Enable (YUKON-2 only) */
...
...
drivers/net/tulip/winbond-840.c
View file @
4e3ceac6
...
...
@@ -850,7 +850,7 @@ static void init_rxtx_rings(struct net_device *dev)
break
;
skb
->
dev
=
dev
;
/* Mark as being used by this device. */
np
->
rx_addr
[
i
]
=
pci_map_single
(
np
->
pci_dev
,
skb
->
data
,
skb
->
len
,
PCI_DMA_FROMDEVICE
);
np
->
rx_buf_sz
,
PCI_DMA_FROMDEVICE
);
np
->
rx_ring
[
i
].
buffer1
=
np
->
rx_addr
[
i
];
np
->
rx_ring
[
i
].
status
=
DescOwn
;
...
...
@@ -1316,7 +1316,7 @@ static int netdev_rx(struct net_device *dev)
skb
->
dev
=
dev
;
/* Mark as being used by this device. */
np
->
rx_addr
[
entry
]
=
pci_map_single
(
np
->
pci_dev
,
skb
->
data
,
skb
->
len
,
PCI_DMA_FROMDEVICE
);
np
->
rx_buf_sz
,
PCI_DMA_FROMDEVICE
);
np
->
rx_ring
[
entry
].
buffer1
=
np
->
rx_addr
[
entry
];
}
wmb
();
...
...
drivers/net/via-rhine.c
View file @
4e3ceac6
...
...
@@ -491,8 +491,6 @@ struct rhine_private {
u8
tx_thresh
,
rx_thresh
;
struct
mii_if_info
mii_if
;
struct
work_struct
tx_timeout_task
;
struct
work_struct
check_media_task
;
void
__iomem
*
base
;
};
...
...
@@ -500,8 +498,6 @@ static int mdio_read(struct net_device *dev, int phy_id, int location);
static
void
mdio_write
(
struct
net_device
*
dev
,
int
phy_id
,
int
location
,
int
value
);
static
int
rhine_open
(
struct
net_device
*
dev
);
static
void
rhine_tx_timeout
(
struct
net_device
*
dev
);
static
void
rhine_tx_timeout_task
(
struct
net_device
*
dev
);
static
void
rhine_check_media_task
(
struct
net_device
*
dev
);
static
int
rhine_start_tx
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
);
static
irqreturn_t
rhine_interrupt
(
int
irq
,
void
*
dev_instance
,
struct
pt_regs
*
regs
);
static
void
rhine_tx
(
struct
net_device
*
dev
);
...
...
@@ -856,12 +852,6 @@ static int __devinit rhine_init_one(struct pci_dev *pdev,
if
(
rp
->
quirks
&
rqRhineI
)
dev
->
features
|=
NETIF_F_SG
|
NETIF_F_HW_CSUM
;
INIT_WORK
(
&
rp
->
tx_timeout_task
,
(
void
(
*
)(
void
*
))
rhine_tx_timeout_task
,
dev
);
INIT_WORK
(
&
rp
->
check_media_task
,
(
void
(
*
)(
void
*
))
rhine_check_media_task
,
dev
);
/* dev->name not defined before register_netdev()! */
rc
=
register_netdev
(
dev
);
if
(
rc
)
...
...
@@ -1108,11 +1098,6 @@ static void rhine_set_carrier(struct mii_if_info *mii)
netif_carrier_ok
(
mii
->
dev
));
}
static
void
rhine_check_media_task
(
struct
net_device
*
dev
)
{
rhine_check_media
(
dev
,
0
);
}
static
void
init_registers
(
struct
net_device
*
dev
)
{
struct
rhine_private
*
rp
=
netdev_priv
(
dev
);
...
...
@@ -1166,8 +1151,8 @@ static void rhine_disable_linkmon(void __iomem *ioaddr, u32 quirks)
if
(
quirks
&
rqRhineI
)
{
iowrite8
(
0x01
,
ioaddr
+
MIIRegAddr
);
// MII_BMSR
/*
Do not call from ISR!
*/
m
sleep
(
1
);
/*
Can be called from ISR. Evil.
*/
m
delay
(
1
);
/* 0x80 must be set immediately before turning it off */
iowrite8
(
0x80
,
ioaddr
+
MIICmd
);
...
...
@@ -1255,16 +1240,6 @@ static int rhine_open(struct net_device *dev)
}
static
void
rhine_tx_timeout
(
struct
net_device
*
dev
)
{
struct
rhine_private
*
rp
=
netdev_priv
(
dev
);
/*
* Move bulk of work outside of interrupt context
*/
schedule_work
(
&
rp
->
tx_timeout_task
);
}
static
void
rhine_tx_timeout_task
(
struct
net_device
*
dev
)
{
struct
rhine_private
*
rp
=
netdev_priv
(
dev
);
void
__iomem
*
ioaddr
=
rp
->
base
;
...
...
@@ -1677,7 +1652,7 @@ static void rhine_error(struct net_device *dev, int intr_status)
spin_lock
(
&
rp
->
lock
);
if
(
intr_status
&
IntrLinkChange
)
schedule_work
(
&
rp
->
check_media_task
);
rhine_check_media
(
dev
,
0
);
if
(
intr_status
&
IntrStatsMax
)
{
rp
->
stats
.
rx_crc_errors
+=
ioread16
(
ioaddr
+
RxCRCErrs
);
rp
->
stats
.
rx_missed_errors
+=
ioread16
(
ioaddr
+
RxMissed
);
...
...
@@ -1927,9 +1902,6 @@ static int rhine_close(struct net_device *dev)
spin_unlock_irq
(
&
rp
->
lock
);
free_irq
(
rp
->
pdev
->
irq
,
dev
);
flush_scheduled_work
();
free_rbufs
(
dev
);
free_tbufs
(
dev
);
free_ring
(
dev
);
...
...
drivers/net/wireless/bcm43xx/bcm43xx_main.c
View file @
4e3ceac6
...
...
@@ -3271,6 +3271,9 @@ static int bcm43xx_init_board(struct bcm43xx_private *bcm)
bcm43xx_sysfs_register
(
bcm
);
//FIXME: check for bcm43xx_sysfs_register failure. This function is a bit messy regarding unwinding, though...
/*FIXME: This should be handled by softmac instead. */
schedule_work
(
&
bcm
->
softmac
->
associnfo
.
work
);
assert
(
err
==
0
);
out:
return
err
;
...
...
@@ -3931,9 +3934,6 @@ static int bcm43xx_resume(struct pci_dev *pdev)
netif_device_attach
(
net_dev
);
/*FIXME: This should be handled by softmac instead. */
schedule_work
(
&
bcm
->
softmac
->
associnfo
.
work
);
dprintk
(
KERN_INFO
PFX
"Device resumed.
\n
"
);
return
0
;
...
...
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