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
Kirill Smelkov
linux
Commits
afe1ba38
Commit
afe1ba38
authored
Feb 25, 2003
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge redhat.com:/garz/repo/linus-2.5
into redhat.com:/garz/repo/net-drivers-2.5
parents
09c49f76
8d7a36f3
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
194 additions
and
836 deletions
+194
-836
Documentation/networking/netdevices.txt
Documentation/networking/netdevices.txt
+4
-1
drivers/net/pcmcia/Kconfig
drivers/net/pcmcia/Kconfig
+0
-14
drivers/net/pcmcia/Makefile
drivers/net/pcmcia/Makefile
+0
-3
drivers/net/pcmcia/aironet4500_cs.c
drivers/net/pcmcia/aironet4500_cs.c
+0
-706
drivers/net/tg3.c
drivers/net/tg3.c
+122
-22
drivers/net/tg3.h
drivers/net/tg3.h
+3
-0
drivers/net/wireless/Kconfig
drivers/net/wireless/Kconfig
+57
-66
drivers/net/wireless/todo.txt
drivers/net/wireless/todo.txt
+2
-16
net/core/Makefile
net/core/Makefile
+0
-2
net/core/dev.c
net/core/dev.c
+2
-2
net/netsyms.c
net/netsyms.c
+2
-2
net/socket.c
net/socket.c
+2
-2
No files found.
Documentation/networking/netdevices.txt
View file @
afe1ba38
...
@@ -18,7 +18,8 @@ dev->open:
...
@@ -18,7 +18,8 @@ dev->open:
dev->stop:
dev->stop:
Synchronization: rtnl_lock() semaphore.
Synchronization: rtnl_lock() semaphore.
Context: process
Context: process
Notes: netif_running() is guaranteed false when this is called
Note1: netif_running() is guaranteed false
Note2: dev->poll() is guaranteed to be stopped
dev->do_ioctl:
dev->do_ioctl:
Synchronization: rtnl_lock() semaphore.
Synchronization: rtnl_lock() semaphore.
...
@@ -31,10 +32,12 @@ dev->get_stats:
...
@@ -31,10 +32,12 @@ dev->get_stats:
dev->hard_start_xmit:
dev->hard_start_xmit:
Synchronization: dev->xmit_lock spinlock.
Synchronization: dev->xmit_lock spinlock.
Context: BHs disabled
Context: BHs disabled
Notes: netif_queue_stopped() is guaranteed false
dev->tx_timeout:
dev->tx_timeout:
Synchronization: dev->xmit_lock spinlock.
Synchronization: dev->xmit_lock spinlock.
Context: BHs disabled
Context: BHs disabled
Notes: netif_queue_stopped() is guaranteed true
dev->set_multicast_list:
dev->set_multicast_list:
Synchronization: dev->xmit_lock spinlock.
Synchronization: dev->xmit_lock spinlock.
...
...
drivers/net/pcmcia/Kconfig
View file @
afe1ba38
...
@@ -153,19 +153,5 @@ config PCMCIA_IBMTR
...
@@ -153,19 +153,5 @@ config PCMCIA_IBMTR
The module will be called ibmtr_cs. If you want to compile it as
The module will be called ibmtr_cs. If you want to compile it as
a module, say M here and read <file:Documentation/modules.txt>.
a module, say M here and read <file:Documentation/modules.txt>.
config AIRONET4500_CS
tristate "Aironet 4500/4800 PCMCIA support"
depends on NET_PCMCIA_RADIO && AIRONET4500 && PCMCIA
help
Say Y here if you have a PCMCIA Aironet 4500/4800 card which you
want to use with the standard PCMCIA cardservices provided by the
pcmcia-cs package.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called aironet4500_cs. If you want to
compile it as a module, say M here and read
<file:Documentation/modules.txt>.
endmenu
endmenu
drivers/net/pcmcia/Makefile
View file @
afe1ba38
...
@@ -13,7 +13,4 @@ obj-$(CONFIG_PCMCIA_XIRC2PS) += xirc2ps_cs.o
...
@@ -13,7 +13,4 @@ obj-$(CONFIG_PCMCIA_XIRC2PS) += xirc2ps_cs.o
obj-$(CONFIG_ARCNET_COM20020_CS)
+=
com20020_cs.o
obj-$(CONFIG_ARCNET_COM20020_CS)
+=
com20020_cs.o
obj-$(CONFIG_PCMCIA_AXNET)
+=
axnet_cs.o
obj-$(CONFIG_PCMCIA_AXNET)
+=
axnet_cs.o
# 16-bit wireless client drivers
obj-$(CONFIG_AIRONET4500_CS)
+=
aironet4500_cs.o
obj-$(CONFIG_PCMCIA_IBMTR)
+=
ibmtr_cs.o
obj-$(CONFIG_PCMCIA_IBMTR)
+=
ibmtr_cs.o
drivers/net/pcmcia/aironet4500_cs.c
deleted
100644 → 0
View file @
09c49f76
This diff is collapsed.
Click to expand it.
drivers/net/tg3.c
View file @
afe1ba38
...
@@ -25,6 +25,7 @@
...
@@ -25,6 +25,7 @@
#include <linux/if_vlan.h>
#include <linux/if_vlan.h>
#include <linux/ip.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/tcp.h>
#include <linux/workqueue.h>
#include <asm/system.h>
#include <asm/system.h>
#include <asm/io.h>
#include <asm/io.h>
...
@@ -54,8 +55,8 @@
...
@@ -54,8 +55,8 @@
#define DRV_MODULE_NAME "tg3"
#define DRV_MODULE_NAME "tg3"
#define PFX DRV_MODULE_NAME ": "
#define PFX DRV_MODULE_NAME ": "
#define DRV_MODULE_VERSION "1.4"
#define DRV_MODULE_VERSION "1.4
c
"
#define DRV_MODULE_RELDATE "Feb 1, 2003"
#define DRV_MODULE_RELDATE "Feb 1
8
, 2003"
#define TG3_DEF_MAC_MODE 0
#define TG3_DEF_MAC_MODE 0
#define TG3_DEF_RX_MODE 0
#define TG3_DEF_RX_MODE 0
...
@@ -216,6 +217,12 @@ static void tg3_disable_ints(struct tg3 *tp)
...
@@ -216,6 +217,12 @@ static void tg3_disable_ints(struct tg3 *tp)
tr32
(
MAILBOX_INTERRUPT_0
+
TG3_64BIT_REG_LOW
);
tr32
(
MAILBOX_INTERRUPT_0
+
TG3_64BIT_REG_LOW
);
}
}
static
inline
void
tg3_cond_int
(
struct
tg3
*
tp
)
{
if
(
tp
->
hw_status
->
status
&
SD_STATUS_UPDATED
)
tw32
(
GRC_LOCAL_CTRL
,
tp
->
grc_local_ctrl
|
GRC_LCLCTRL_SETINT
);
}
static
void
tg3_enable_ints
(
struct
tg3
*
tp
)
static
void
tg3_enable_ints
(
struct
tg3
*
tp
)
{
{
tw32
(
TG3PCI_MISC_HOST_CTRL
,
tw32
(
TG3PCI_MISC_HOST_CTRL
,
...
@@ -223,9 +230,55 @@ static void tg3_enable_ints(struct tg3 *tp)
...
@@ -223,9 +230,55 @@ static void tg3_enable_ints(struct tg3 *tp)
tw32_mailbox
(
MAILBOX_INTERRUPT_0
+
TG3_64BIT_REG_LOW
,
0x00000000
);
tw32_mailbox
(
MAILBOX_INTERRUPT_0
+
TG3_64BIT_REG_LOW
,
0x00000000
);
tr32
(
MAILBOX_INTERRUPT_0
+
TG3_64BIT_REG_LOW
);
tr32
(
MAILBOX_INTERRUPT_0
+
TG3_64BIT_REG_LOW
);
if
(
tp
->
hw_status
->
status
&
SD_STATUS_UPDATED
)
tg3_cond_int
(
tp
);
tw32
(
GRC_LOCAL_CTRL
,
}
tp
->
grc_local_ctrl
|
GRC_LCLCTRL_SETINT
);
/* these netif_xxx funcs should be moved into generic net layer */
static
void
netif_poll_disable
(
struct
net_device
*
dev
)
{
while
(
test_and_set_bit
(
__LINK_STATE_RX_SCHED
,
&
dev
->
state
))
{
current
->
state
=
TASK_INTERRUPTIBLE
;
schedule_timeout
(
1
);
}
}
static
inline
void
netif_poll_enable
(
struct
net_device
*
dev
)
{
clear_bit
(
__LINK_STATE_RX_SCHED
,
&
dev
->
state
);
}
/* same as netif_rx_complete, except that local_irq_save(flags)
* has already been issued
*/
static
inline
void
__netif_rx_complete
(
struct
net_device
*
dev
)
{
if
(
!
test_bit
(
__LINK_STATE_RX_SCHED
,
&
dev
->
state
))
BUG
();
list_del
(
&
dev
->
poll_list
);
clear_bit
(
__LINK_STATE_RX_SCHED
,
&
dev
->
state
);
}
static
inline
void
netif_tx_disable
(
struct
net_device
*
dev
)
{
spin_lock_bh
(
&
dev
->
xmit_lock
);
netif_stop_queue
(
dev
);
spin_unlock_bh
(
&
dev
->
xmit_lock
);
}
static
inline
void
tg3_netif_stop
(
struct
tg3
*
tp
)
{
netif_poll_disable
(
tp
->
dev
);
netif_tx_disable
(
tp
->
dev
);
}
static
inline
void
tg3_netif_start
(
struct
tg3
*
tp
)
{
netif_wake_queue
(
tp
->
dev
);
/* NOTE: unconditional netif_wake_queue is only appropriate
* so long as all callers are assured to have free tx slots
* (such as after tg3_init_hw)
*/
netif_poll_enable
(
tp
->
dev
);
tg3_cond_int
(
tp
);
}
}
static
void
tg3_switch_clocks
(
struct
tg3
*
tp
)
static
void
tg3_switch_clocks
(
struct
tg3
*
tp
)
...
@@ -387,7 +440,6 @@ static int tg3_phy_reset(struct tg3 *tp, int force)
...
@@ -387,7 +440,6 @@ static int tg3_phy_reset(struct tg3 *tp, int force)
}
}
static
int
tg3_setup_phy
(
struct
tg3
*
);
static
int
tg3_setup_phy
(
struct
tg3
*
);
static
int
tg3_halt
(
struct
tg3
*
);
static
int
tg3_set_power_state
(
struct
tg3
*
tp
,
int
state
)
static
int
tg3_set_power_state
(
struct
tg3
*
tp
,
int
state
)
{
{
...
@@ -458,8 +510,6 @@ static int tg3_set_power_state(struct tg3 *tp, int state)
...
@@ -458,8 +510,6 @@ static int tg3_set_power_state(struct tg3 *tp, int state)
tg3_setup_phy
(
tp
);
tg3_setup_phy
(
tp
);
}
}
tg3_halt
(
tp
);
pci_read_config_word
(
tp
->
pdev
,
pm
+
PCI_PM_PMC
,
&
power_caps
);
pci_read_config_word
(
tp
->
pdev
,
pm
+
PCI_PM_PMC
,
&
power_caps
);
if
(
tp
->
tg3_flags
&
TG3_FLAG_WOL_ENABLE
)
{
if
(
tp
->
tg3_flags
&
TG3_FLAG_WOL_ENABLE
)
{
...
@@ -2044,7 +2094,12 @@ static int tg3_poll(struct net_device *netdev, int *budget)
...
@@ -2044,7 +2094,12 @@ static int tg3_poll(struct net_device *netdev, int *budget)
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock
(
&
tp
->
tx_lock
);
}
}
/* run RX thread, within the bounds set by NAPI */
spin_unlock_irqrestore
(
&
tp
->
lock
,
flags
);
/* run RX thread, within the bounds set by NAPI.
* All RX "locking" is done by ensuring outside
* code synchronizes with dev->poll()
*/
done
=
1
;
done
=
1
;
if
(
sblk
->
idx
[
0
].
rx_producer
!=
tp
->
rx_rcb_ptr
)
{
if
(
sblk
->
idx
[
0
].
rx_producer
!=
tp
->
rx_rcb_ptr
)
{
int
orig_budget
=
*
budget
;
int
orig_budget
=
*
budget
;
...
@@ -2064,12 +2119,12 @@ static int tg3_poll(struct net_device *netdev, int *budget)
...
@@ -2064,12 +2119,12 @@ static int tg3_poll(struct net_device *netdev, int *budget)
/* if no more work, tell net stack and NIC we're done */
/* if no more work, tell net stack and NIC we're done */
if
(
done
)
{
if
(
done
)
{
netif_rx_complete
(
netdev
);
spin_lock_irqsave
(
&
tp
->
lock
,
flags
);
__netif_rx_complete
(
netdev
);
tg3_enable_ints
(
tp
);
tg3_enable_ints
(
tp
);
spin_unlock_irqrestore
(
&
tp
->
lock
,
flags
);
}
}
spin_unlock_irqrestore
(
&
tp
->
lock
,
flags
);
return
(
done
?
0
:
1
);
return
(
done
?
0
:
1
);
}
}
...
@@ -2136,17 +2191,21 @@ static void tg3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -2136,17 +2191,21 @@ static void tg3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
static
void
tg3_init_rings
(
struct
tg3
*
);
static
void
tg3_init_rings
(
struct
tg3
*
);
static
int
tg3_init_hw
(
struct
tg3
*
);
static
int
tg3_init_hw
(
struct
tg3
*
);
static
int
tg3_halt
(
struct
tg3
*
);
static
void
tg3_
tx_timeout
(
struct
net_device
*
dev
)
static
void
tg3_
reset_task
(
void
*
_data
)
{
{
struct
tg3
*
tp
=
dev
->
priv
;
struct
tg3
*
tp
=
_data
;
unsigned
int
restart_timer
;
printk
(
KERN_ERR
PFX
"%s: transmit timed out, resetting
\n
"
,
tg3_netif_stop
(
tp
);
dev
->
name
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock
(
&
tp
->
tx_lock
);
spin_lock
(
&
tp
->
tx_lock
);
restart_timer
=
tp
->
tg3_flags2
&
TG3_FLG2_RESTART_TIMER
;
tp
->
tg3_flags2
&=
~
TG3_FLG2_RESTART_TIMER
;
tg3_halt
(
tp
);
tg3_halt
(
tp
);
tg3_init_rings
(
tp
);
tg3_init_rings
(
tp
);
tg3_init_hw
(
tp
);
tg3_init_hw
(
tp
);
...
@@ -2154,7 +2213,20 @@ static void tg3_tx_timeout(struct net_device *dev)
...
@@ -2154,7 +2213,20 @@ static void tg3_tx_timeout(struct net_device *dev)
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock_irq
(
&
tp
->
lock
);
spin_unlock_irq
(
&
tp
->
lock
);
netif_wake_queue
(
dev
);
tg3_netif_start
(
tp
);
if
(
restart_timer
)
mod_timer
(
&
tp
->
timer
,
jiffies
+
1
);
}
static
void
tg3_tx_timeout
(
struct
net_device
*
dev
)
{
struct
tg3
*
tp
=
dev
->
priv
;
printk
(
KERN_ERR
PFX
"%s: transmit timed out, resetting
\n
"
,
dev
->
name
);
schedule_work
(
&
tp
->
reset_task
);
}
}
#if !PCI_DMA_BUS_IS_PHYS
#if !PCI_DMA_BUS_IS_PHYS
...
@@ -2686,6 +2758,7 @@ static int tg3_change_mtu(struct net_device *dev, int new_mtu)
...
@@ -2686,6 +2758,7 @@ static int tg3_change_mtu(struct net_device *dev, int new_mtu)
return
0
;
return
0
;
}
}
tg3_netif_stop
(
tp
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock
(
&
tp
->
tx_lock
);
spin_lock
(
&
tp
->
tx_lock
);
...
@@ -2698,6 +2771,7 @@ static int tg3_change_mtu(struct net_device *dev, int new_mtu)
...
@@ -2698,6 +2771,7 @@ static int tg3_change_mtu(struct net_device *dev, int new_mtu)
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock_irq
(
&
tp
->
lock
);
spin_unlock_irq
(
&
tp
->
lock
);
tg3_netif_start
(
tp
);
return
0
;
return
0
;
}
}
...
@@ -3073,6 +3147,7 @@ static int tg3_abort_hw(struct tg3 *tp)
...
@@ -3073,6 +3147,7 @@ static int tg3_abort_hw(struct tg3 *tp)
static
void
tg3_chip_reset
(
struct
tg3
*
tp
)
static
void
tg3_chip_reset
(
struct
tg3
*
tp
)
{
{
u32
val
;
u32
val
;
u32
flags_save
;
/* Force NVRAM to settle.
/* Force NVRAM to settle.
* This deals with a chip bug which can result in EEPROM
* This deals with a chip bug which can result in EEPROM
...
@@ -3089,8 +3164,21 @@ static void tg3_chip_reset(struct tg3 *tp)
...
@@ -3089,8 +3164,21 @@ static void tg3_chip_reset(struct tg3 *tp)
}
}
}
}
/*
* We must avoid the readl() that normally takes place.
* It locks machines, causes machine checks, and other
* fun things. So, temporarily disable the 5701
* hardware workaround, while we do the reset.
*/
flags_save
=
tp
->
tg3_flags
;
tp
->
tg3_flags
&=
~
TG3_FLAG_5701_REG_WRITE_BUG
;
/* do the reset */
tw32
(
GRC_MISC_CFG
,
GRC_MISC_CFG_CORECLK_RESET
);
tw32
(
GRC_MISC_CFG
,
GRC_MISC_CFG_CORECLK_RESET
);
/* restore 5701 hardware bug workaround flag */
tp
->
tg3_flags
=
flags_save
;
/* Flush PCI posted writes. The normal MMIO registers
/* Flush PCI posted writes. The normal MMIO registers
* are inaccessible at this time so this is the only
* are inaccessible at this time so this is the only
* way to make this reliably. I tried to use indirect
* way to make this reliably. I tried to use indirect
...
@@ -4394,9 +4482,11 @@ static void tg3_timer(unsigned long __opaque)
...
@@ -4394,9 +4482,11 @@ static void tg3_timer(unsigned long __opaque)
}
}
if
(
!
(
tr32
(
WDMAC_MODE
)
&
WDMAC_MODE_ENABLE
))
{
if
(
!
(
tr32
(
WDMAC_MODE
)
&
WDMAC_MODE_ENABLE
))
{
tg3_halt
(
tp
);
tp
->
tg3_flags2
|=
TG3_FLG2_RESTART_TIMER
;
tg3_init_rings
(
tp
);
spin_unlock
(
&
tp
->
tx_lock
);
tg3_init_hw
(
tp
);
spin_unlock_irqrestore
(
&
tp
->
lock
,
flags
);
schedule_work
(
&
tp
->
reset_task
);
return
;
}
}
/* This part only runs once per second. */
/* This part only runs once per second. */
...
@@ -4527,8 +4617,6 @@ static int tg3_open(struct net_device *dev)
...
@@ -4527,8 +4617,6 @@ static int tg3_open(struct net_device *dev)
return
err
;
return
err
;
}
}
netif_start_queue
(
dev
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock
(
&
tp
->
tx_lock
);
spin_lock
(
&
tp
->
tx_lock
);
...
@@ -4537,6 +4625,8 @@ static int tg3_open(struct net_device *dev)
...
@@ -4537,6 +4625,8 @@ static int tg3_open(struct net_device *dev)
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock_irq
(
&
tp
->
lock
);
spin_unlock_irq
(
&
tp
->
lock
);
netif_start_queue
(
dev
);
return
0
;
return
0
;
}
}
...
@@ -5302,6 +5392,7 @@ static int tg3_ethtool_ioctl (struct net_device *dev, void *useraddr)
...
@@ -5302,6 +5392,7 @@ static int tg3_ethtool_ioctl (struct net_device *dev, void *useraddr)
(
ering
.
tx_pending
>
TG3_TX_RING_SIZE
-
1
))
(
ering
.
tx_pending
>
TG3_TX_RING_SIZE
-
1
))
return
-
EINVAL
;
return
-
EINVAL
;
tg3_netif_stop
(
tp
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock
(
&
tp
->
tx_lock
);
spin_lock
(
&
tp
->
tx_lock
);
...
@@ -5315,6 +5406,7 @@ static int tg3_ethtool_ioctl (struct net_device *dev, void *useraddr)
...
@@ -5315,6 +5406,7 @@ static int tg3_ethtool_ioctl (struct net_device *dev, void *useraddr)
netif_wake_queue
(
tp
->
dev
);
netif_wake_queue
(
tp
->
dev
);
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock_irq
(
&
tp
->
lock
);
spin_unlock_irq
(
&
tp
->
lock
);
tg3_netif_start
(
tp
);
return
0
;
return
0
;
}
}
...
@@ -5337,6 +5429,7 @@ static int tg3_ethtool_ioctl (struct net_device *dev, void *useraddr)
...
@@ -5337,6 +5429,7 @@ static int tg3_ethtool_ioctl (struct net_device *dev, void *useraddr)
if
(
copy_from_user
(
&
epause
,
useraddr
,
sizeof
(
epause
)))
if
(
copy_from_user
(
&
epause
,
useraddr
,
sizeof
(
epause
)))
return
-
EFAULT
;
return
-
EFAULT
;
tg3_netif_stop
(
tp
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock
(
&
tp
->
tx_lock
);
spin_lock
(
&
tp
->
tx_lock
);
if
(
epause
.
autoneg
)
if
(
epause
.
autoneg
)
...
@@ -5356,6 +5449,7 @@ static int tg3_ethtool_ioctl (struct net_device *dev, void *useraddr)
...
@@ -5356,6 +5449,7 @@ static int tg3_ethtool_ioctl (struct net_device *dev, void *useraddr)
tg3_init_hw
(
tp
);
tg3_init_hw
(
tp
);
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock_irq
(
&
tp
->
lock
);
spin_unlock_irq
(
&
tp
->
lock
);
tg3_netif_start
(
tp
);
return
0
;
return
0
;
}
}
...
@@ -6710,6 +6804,7 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
...
@@ -6710,6 +6804,7 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
spin_lock_init
(
&
tp
->
lock
);
spin_lock_init
(
&
tp
->
lock
);
spin_lock_init
(
&
tp
->
tx_lock
);
spin_lock_init
(
&
tp
->
tx_lock
);
spin_lock_init
(
&
tp
->
indirect_lock
);
spin_lock_init
(
&
tp
->
indirect_lock
);
PREPARE_WORK
(
&
tp
->
reset_task
,
tg3_reset_task
,
tp
);
tp
->
regs
=
(
unsigned
long
)
ioremap
(
tg3reg_base
,
tg3reg_len
);
tp
->
regs
=
(
unsigned
long
)
ioremap
(
tg3reg_base
,
tg3reg_len
);
if
(
tp
->
regs
==
0UL
)
{
if
(
tp
->
regs
==
0UL
)
{
...
@@ -6851,6 +6946,8 @@ static int tg3_suspend(struct pci_dev *pdev, u32 state)
...
@@ -6851,6 +6946,8 @@ static int tg3_suspend(struct pci_dev *pdev, u32 state)
if
(
!
netif_running
(
dev
))
if
(
!
netif_running
(
dev
))
return
0
;
return
0
;
tg3_netif_stop
(
tp
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock_irq
(
&
tp
->
lock
);
spin_lock
(
&
tp
->
tx_lock
);
spin_lock
(
&
tp
->
tx_lock
);
tg3_disable_ints
(
tp
);
tg3_disable_ints
(
tp
);
...
@@ -6877,6 +6974,7 @@ static int tg3_suspend(struct pci_dev *pdev, u32 state)
...
@@ -6877,6 +6974,7 @@ static int tg3_suspend(struct pci_dev *pdev, u32 state)
spin_unlock_irq
(
&
tp
->
lock
);
spin_unlock_irq
(
&
tp
->
lock
);
netif_device_attach
(
dev
);
netif_device_attach
(
dev
);
tg3_netif_start
(
tp
);
}
}
return
err
;
return
err
;
...
@@ -6907,6 +7005,8 @@ static int tg3_resume(struct pci_dev *pdev)
...
@@ -6907,6 +7005,8 @@ static int tg3_resume(struct pci_dev *pdev)
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock
(
&
tp
->
tx_lock
);
spin_unlock_irq
(
&
tp
->
lock
);
spin_unlock_irq
(
&
tp
->
lock
);
tg3_netif_start
(
tp
);
return
0
;
return
0
;
}
}
...
...
drivers/net/tg3.h
View file @
afe1ba38
...
@@ -1821,6 +1821,8 @@ struct tg3 {
...
@@ -1821,6 +1821,8 @@ struct tg3 {
#define TG3_FLAG_GOT_SERDES_FLOWCTL 0x20000000
#define TG3_FLAG_GOT_SERDES_FLOWCTL 0x20000000
#define TG3_FLAG_SPLIT_MODE 0x40000000
#define TG3_FLAG_SPLIT_MODE 0x40000000
#define TG3_FLAG_INIT_COMPLETE 0x80000000
#define TG3_FLAG_INIT_COMPLETE 0x80000000
u32
tg3_flags2
;
#define TG3_FLG2_RESTART_TIMER 0x00000001
u32
split_mode_max_reqs
;
u32
split_mode_max_reqs
;
#define SPLIT_MODE_5704_MAX_REQ 3
#define SPLIT_MODE_5704_MAX_REQ 3
...
@@ -1889,6 +1891,7 @@ struct tg3 {
...
@@ -1889,6 +1891,7 @@ struct tg3 {
struct
tg3_hw_stats
*
hw_stats
;
struct
tg3_hw_stats
*
hw_stats
;
dma_addr_t
stats_mapping
;
dma_addr_t
stats_mapping
;
struct
work_struct
reset_task
;
};
};
#endif
/* !(_T3_H) */
#endif
/* !(_T3_H) */
drivers/net/wireless/Kconfig
View file @
afe1ba38
...
@@ -6,13 +6,13 @@ menu "Wireless LAN (non-hamradio)"
...
@@ -6,13 +6,13 @@ menu "Wireless LAN (non-hamradio)"
depends on NETDEVICES
depends on NETDEVICES
config NET_RADIO
config NET_RADIO
bool "Wireless LAN
(non-hamradio)
"
bool "Wireless LAN
drivers (non-hamradio) & Wireless Extensions
"
---help---
---help---
Support for wireless LANs and everything having to do with radio,
Support for wireless LANs and everything having to do with radio,
but not with amateur radio or FM broadcasting.
but not with amateur radio or FM broadcasting.
Saying Y here also enables the Wireless Extensions (creates
Saying Y here also enables the Wireless Extensions (creates
/proc/net/wireless and enables i
f
config access). The Wireless
/proc/net/wireless and enables i
w
config access). The Wireless
Extension is a generic API allowing a driver to expose to the user
Extension is a generic API allowing a driver to expose to the user
space configuration and statistics specific to common Wireless LANs.
space configuration and statistics specific to common Wireless LANs.
The beauty of it is that a single set of tool can support all the
The beauty of it is that a single set of tool can support all the
...
@@ -28,6 +28,11 @@ config NET_RADIO
...
@@ -28,6 +28,11 @@ config NET_RADIO
special kernel support are available from
special kernel support are available from
<ftp://shadow.cabi.net/pub/Linux/>.
<ftp://shadow.cabi.net/pub/Linux/>.
# Note : the cards are obsolete (can't buy them anymore), but the drivers
# are not, as people are still using them...
comment "Obsolete Wireless cards support (pre-802.11)"
depends on NET_RADIO && (INET || ISA || PCMCIA)
config STRIP
config STRIP
tristate "STRIP (Metricom starmode radio IP)"
tristate "STRIP (Metricom starmode radio IP)"
depends on NET_RADIO && INET
depends on NET_RADIO && INET
...
@@ -68,10 +73,6 @@ config ARLAN
...
@@ -68,10 +73,6 @@ config ARLAN
On some computers the card ends up in non-valid state after some
On some computers the card ends up in non-valid state after some
time. Use a ping-reset script to clear it.
time. Use a ping-reset script to clear it.
comment "Wireless ISA/PCI cards support"
depends on NET_RADIO && (ISA || PCI || ALL_PPC || PCMCIA)
# Good old obsolete Wavelan.
config WAVELAN
config WAVELAN
tristate "AT&T/Lucent old WaveLAN & DEC RoamAbout DS ISA support"
tristate "AT&T/Lucent old WaveLAN & DEC RoamAbout DS ISA support"
depends on NET_RADIO && ISA
depends on NET_RADIO && ISA
...
@@ -102,7 +103,54 @@ config WAVELAN
...
@@ -102,7 +103,54 @@ config WAVELAN
module, say M here and read <file:Documentation/modules.txt> as well
module, say M here and read <file:Documentation/modules.txt> as well
as <file:Documentation/networking/net-modules.txt>.
as <file:Documentation/networking/net-modules.txt>.
# 802.11b cards
config PCMCIA_WAVELAN
tristate "AT&T/Lucent old WaveLAN Pcmcia wireless support"
depends on NET_RADIO && PCMCIA
help
Say Y here if you intend to attach an AT&T/Lucent Wavelan PCMCIA
(PC-card) wireless Ethernet networking card to your computer. This
driver is for the non-IEEE-802.11 Wavelan cards.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called wavelan_cs. If you want to compile it
as a module, say M here and read <file:Documentation/modules.txt>.
If unsure, say N.
config PCMCIA_NETWAVE
tristate "Xircom Netwave AirSurfer Pcmcia wireless support"
depends on NET_RADIO && PCMCIA
help
Say Y here if you intend to attach this type of PCMCIA (PC-card)
wireless Ethernet networking card to your computer.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called netwave_cs. If you want to compile it
as a module, say M here and read <file:Documentation/modules.txt>.
If unsure, say N.
comment "Wireless 802.11 Frequency Hopping cards support"
depends on NET_RADIO && PCMCIA
config PCMCIA_RAYCS
tristate "Aviator/Raytheon 2.4MHz wireless support"
depends on NET_RADIO && PCMCIA
---help---
Say Y here if you intend to attach an Aviator/Raytheon PCMCIA
(PC-card) wireless Ethernet networking card to your computer.
Please read the file <file:Documentation/networking/ray_cs.txt> for
details.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called ray_cs. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>. If
unsure, say N.
comment "Wireless 802.11b ISA/PCI cards support"
depends on NET_RADIO && (ISA || PCI || ALL_PPC || PCMCIA)
config AIRO
config AIRO
tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"
tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"
depends on NET_RADIO && (ISA || PCI)
depends on NET_RADIO && (ISA || PCI)
...
@@ -175,41 +223,12 @@ config PCI_HERMES
...
@@ -175,41 +223,12 @@ config PCI_HERMES
this variety.
this variety.
# If Pcmcia is compiled in, offer Pcmcia cards...
# If Pcmcia is compiled in, offer Pcmcia cards...
comment "Wireless Pcmcia/Cardbus cards support"
comment "Wireless 802.11b Pcmcia/Cardbus cards support"
depends on NET_RADIO && PCMCIA
# Obsolete cards
config PCMCIA_NETWAVE
tristate "Xircom Netwave AirSurfer Pcmcia wireless support"
depends on NET_RADIO && PCMCIA
help
Say Y here if you intend to attach this type of PCMCIA (PC-card)
wireless Ethernet networking card to your computer.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called netwave_cs. If you want to compile it
as a module, say M here and read <file:Documentation/modules.txt>.
If unsure, say N.
config PCMCIA_WAVELAN
tristate "AT&T/Lucent old Wavelan Pcmcia wireless support"
depends on NET_RADIO && PCMCIA
depends on NET_RADIO && PCMCIA
help
Say Y here if you intend to attach an AT&T/Lucent Wavelan PCMCIA
(PC-card) wireless Ethernet networking card to your computer. This
driver is for the non-IEEE-802.11 Wavelan cards.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called wavelan_cs. If you want to compile it
as a module, say M here and read <file:Documentation/modules.txt>.
If unsure, say N.
# 802.11b cards
config PCMCIA_HERMES
config PCMCIA_HERMES
tristate "Hermes PCMCIA card support"
tristate "Hermes PCMCIA card support"
depends on
PCMCIA!=n
&& HERMES
depends on
NET_RADIO && PCMCIA
&& HERMES
---help---
---help---
A driver for "Hermes" chipset based PCMCIA wireless adaptors, such
A driver for "Hermes" chipset based PCMCIA wireless adaptors, such
as the Lucent WavelanIEEE/Orinoco cards and their OEM (Cabletron/
as the Lucent WavelanIEEE/Orinoco cards and their OEM (Cabletron/
...
@@ -249,34 +268,6 @@ config AIRO_CS
...
@@ -249,34 +268,6 @@ config AIRO_CS
for location). You also want to check out the PCMCIA-HOWTO,
for location). You also want to check out the PCMCIA-HOWTO,
available from <http://www.linuxdoc.org/docs.html#howto>.
available from <http://www.linuxdoc.org/docs.html#howto>.
config NET_PCMCIA_RADIO
bool "PCMCIA Wireless LAN"
depends on NET_PCMCIA
help
Say Y here if you would like to use a PCMCIA (PC-card) device to
connect to a wireless local area network. Then say Y to the driver
for your particular card below.
To use your PC-cards, you will need supporting software from David
Hinds' pcmcia-cs package (see the file <file:Documentation/Changes>
for location). You also want to check out the PCMCIA-HOWTO,
available from <http://www.linuxdoc.org/docs.html#howto>.
config PCMCIA_RAYCS
tristate "Aviator/Raytheon 2.4MHz wireless support"
depends on NET_PCMCIA_RADIO && PCMCIA
---help---
Say Y here if you intend to attach an Aviator/Raytheon PCMCIA
(PC-card) wireless Ethernet networking card to your computer.
Please read the file <file:Documentation/networking/ray_cs.txt> for
details.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called ray_cs. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>. If
unsure, say N.
# yes, this works even when no drivers are selected
# yes, this works even when no drivers are selected
config NET_WIRELESS
config NET_WIRELESS
bool
bool
...
...
drivers/net/wireless/todo.txt
View file @
afe1ba38
...
@@ -2,28 +2,14 @@
...
@@ -2,28 +2,14 @@
-------------
-------------
1) Bring other kernel Wireless LAN drivers here
1) Bring other kernel Wireless LAN drivers here
Already done :
Completed
o hermes.c/orinoco.c -> Wavelan IEEE driver + Airport driver
o airo.c/airo_cs.c -> Ben's Aironet driver
o wavelan.c -> old Wavelan ISA driver
o wavelan_cs.c -> old Wavelan Pcmcia driver
o netwave_cs.c -> Netwave Pcmcia driver
Drivers likely to go :
o ray_cs.c -> Raytheon/Aviator driver (maintainer MIA)
Drivers I have absolutely no control over :
o arlan.c -> old Aironet Arlan 655 (need to ask Elmer)
o aironet4500_xxx.c -> Elmer's Aironet driver (need to ask Elmer)
o strip.c -> Metricom's stuff. Not a wlan. Hum...
ETA : Kernel 2.5.X
2) Bring new Wireless LAN driver not yet in the kernel there
2) Bring new Wireless LAN driver not yet in the kernel there
See my web page for details
See my web page for details
In particular : HostAP
3) Misc
3) Misc
o Mark wavelan, wavelan_cs, netwave_cs drivers as obsolete
o Mark wavelan, wavelan_cs, netwave_cs drivers as obsolete
o Maybe arlan.c, ray_cs.c and strip.c also deserve to be obsolete
o Maybe arlan.c, ray_cs.c and strip.c also deserve to be obsolete
o Use new Probe/module stuff in wavelan.c
o New Wireless Extension API (pending)
Jean II
Jean II
net/core/Makefile
View file @
afe1ba38
...
@@ -19,5 +19,3 @@ obj-$(CONFIG_NET_DIVERT) += dv.o
...
@@ -19,5 +19,3 @@ obj-$(CONFIG_NET_DIVERT) += dv.o
obj-$(CONFIG_NET_PROFILE)
+=
profile.o
obj-$(CONFIG_NET_PROFILE)
+=
profile.o
obj-$(CONFIG_NET_PKTGEN)
+=
pktgen.o
obj-$(CONFIG_NET_PKTGEN)
+=
pktgen.o
obj-$(CONFIG_NET_RADIO)
+=
wireless.o
obj-$(CONFIG_NET_RADIO)
+=
wireless.o
# Ugly. I wish all wireless drivers were moved in drivers/net/wireless
obj-$(CONFIG_NET_PCMCIA_RADIO)
+=
wireless.o
net/core/dev.c
View file @
afe1ba38
...
@@ -107,10 +107,10 @@
...
@@ -107,10 +107,10 @@
#include <linux/kmod.h>
#include <linux/kmod.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/kallsyms.h>
#include <linux/kallsyms.h>
#if
defined(CONFIG_NET_RADIO) || defined(CONFIG_NET_PCMCIA_RADIO)
#if
def CONFIG_NET_RADIO
#include <linux/wireless.h>
/* Note : will define WIRELESS_EXT */
#include <linux/wireless.h>
/* Note : will define WIRELESS_EXT */
#include <net/iw_handler.h>
#include <net/iw_handler.h>
#endif
/* CONFIG_NET_RADIO
|| CONFIG_NET_PCMCIA_RADIO
*/
#endif
/* CONFIG_NET_RADIO */
#ifdef CONFIG_PLIP
#ifdef CONFIG_PLIP
extern
int
plip_init
(
void
);
extern
int
plip_init
(
void
);
#endif
#endif
...
...
net/netsyms.c
View file @
afe1ba38
...
@@ -646,12 +646,12 @@ EXPORT_SYMBOL(register_gifconf);
...
@@ -646,12 +646,12 @@ EXPORT_SYMBOL(register_gifconf);
EXPORT_SYMBOL
(
softnet_data
);
EXPORT_SYMBOL
(
softnet_data
);
#if
defined(CONFIG_NET_RADIO) || defined(CONFIG_NET_PCMCIA_RADIO)
#if
def CONFIG_NET_RADIO
/* Don't include the whole header mess for a single function */
/* Don't include the whole header mess for a single function */
union
iwreq_data
;
union
iwreq_data
;
extern
void
wireless_send_event
(
struct
net_device
*
dev
,
unsigned
int
cmd
,
union
iwreq_data
*
wrqu
,
char
*
extra
);
extern
void
wireless_send_event
(
struct
net_device
*
dev
,
unsigned
int
cmd
,
union
iwreq_data
*
wrqu
,
char
*
extra
);
EXPORT_SYMBOL
(
wireless_send_event
);
EXPORT_SYMBOL
(
wireless_send_event
);
#endif
/* CONFIG_NET_RADIO
|| CONFIG_NET_PCMCIA_RADIO
*/
#endif
/* CONFIG_NET_RADIO */
EXPORT_SYMBOL
(
linkwatch_fire_event
);
EXPORT_SYMBOL
(
linkwatch_fire_event
);
...
...
net/socket.c
View file @
afe1ba38
...
@@ -83,9 +83,9 @@
...
@@ -83,9 +83,9 @@
#include <linux/kmod.h>
#include <linux/kmod.h>
#endif
#endif
#if
defined(CONFIG_NET_RADIO) || defined(CONFIG_NET_PCMCIA_RADIO)
#if
def CONFIG_NET_RADIO
#include <linux/wireless.h>
/* Note : will define WIRELESS_EXT */
#include <linux/wireless.h>
/* Note : will define WIRELESS_EXT */
#endif
/* CONFIG_NET_RADIO
|| CONFIG_NET_PCMCIA_RADIO
*/
#endif
/* CONFIG_NET_RADIO */
#include <asm/uaccess.h>
#include <asm/uaccess.h>
...
...
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