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
154a6649
Commit
154a6649
authored
Sep 19, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
ppc32: merge network card Kconfig duplication
parents
116ab81c
315d4573
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
97 additions
and
64 deletions
+97
-64
drivers/ieee1394/eth1394.c
drivers/ieee1394/eth1394.c
+1
-1
drivers/net/Kconfig
drivers/net/Kconfig
+2
-2
drivers/net/r8169.c
drivers/net/r8169.c
+14
-2
drivers/net/wireless/airo.c
drivers/net/wireless/airo.c
+80
-59
No files found.
drivers/ieee1394/eth1394.c
View file @
154a6649
...
@@ -132,7 +132,7 @@ struct eth1394_node_info {
...
@@ -132,7 +132,7 @@ struct eth1394_node_info {
};
};
/* Our ieee1394 highlevel driver */
/* Our ieee1394 highlevel driver */
#define ETH1394_DRIVER_NAME "
ip
1394"
#define ETH1394_DRIVER_NAME "
eth
1394"
static
const
char
driver_name
[]
=
ETH1394_DRIVER_NAME
;
static
const
char
driver_name
[]
=
ETH1394_DRIVER_NAME
;
static
kmem_cache_t
*
packet_task_cache
;
static
kmem_cache_t
*
packet_task_cache
;
...
...
drivers/net/Kconfig
View file @
154a6649
...
@@ -200,7 +200,7 @@ source "drivers/net/arm/Kconfig"
...
@@ -200,7 +200,7 @@ source "drivers/net/arm/Kconfig"
config MACE
config MACE
tristate "MACE (Power Mac ethernet) support"
tristate "MACE (Power Mac ethernet) support"
depends on NET_ETHERNET && PPC
32 && PPC_PMAC
depends on NET_ETHERNET && PPC
_PMAC && PPC32
select CRC32
select CRC32
help
help
Power Macintoshes and clones with Ethernet built-in on the
Power Macintoshes and clones with Ethernet built-in on the
...
@@ -223,7 +223,7 @@ config MACE_AAUI_PORT
...
@@ -223,7 +223,7 @@ config MACE_AAUI_PORT
config BMAC
config BMAC
tristate "BMAC (G3 ethernet) support"
tristate "BMAC (G3 ethernet) support"
depends on NET_ETHERNET && PPC
32 && PPC_PMAC
depends on NET_ETHERNET && PPC
_PMAC && PPC32
select CRC32
select CRC32
help
help
Say Y for support of BMAC Ethernet interfaces. These are used on G3
Say Y for support of BMAC Ethernet interfaces. These are used on G3
...
...
drivers/net/r8169.c
View file @
154a6649
...
@@ -156,6 +156,7 @@ static struct pci_device_id rtl8169_pci_tbl[] = {
...
@@ -156,6 +156,7 @@ static struct pci_device_id rtl8169_pci_tbl[] = {
MODULE_DEVICE_TABLE
(
pci
,
rtl8169_pci_tbl
);
MODULE_DEVICE_TABLE
(
pci
,
rtl8169_pci_tbl
);
static
int
rx_copybreak
=
200
;
static
int
rx_copybreak
=
200
;
static
int
use_dac
;
enum
RTL8169_registers
{
enum
RTL8169_registers
{
MAC0
=
0
,
/* Ethernet hardware address. */
MAC0
=
0
,
/* Ethernet hardware address. */
...
@@ -358,6 +359,8 @@ MODULE_AUTHOR("Realtek");
...
@@ -358,6 +359,8 @@ MODULE_AUTHOR("Realtek");
MODULE_DESCRIPTION
(
"RealTek RTL-8169 Gigabit Ethernet driver"
);
MODULE_DESCRIPTION
(
"RealTek RTL-8169 Gigabit Ethernet driver"
);
MODULE_PARM
(
media
,
"1-"
__MODULE_STRING
(
MAX_UNITS
)
"i"
);
MODULE_PARM
(
media
,
"1-"
__MODULE_STRING
(
MAX_UNITS
)
"i"
);
MODULE_PARM
(
rx_copybreak
,
"i"
);
MODULE_PARM
(
rx_copybreak
,
"i"
);
MODULE_PARM
(
use_dac
,
"i"
);
MODULE_PARM_DESC
(
use_dac
,
"Enable PCI DAC. Unsafe on 32 bit PCI slot."
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
static
int
rtl8169_open
(
struct
net_device
*
dev
);
static
int
rtl8169_open
(
struct
net_device
*
dev
);
...
@@ -375,7 +378,7 @@ static int rtl8169_poll(struct net_device *dev, int *budget);
...
@@ -375,7 +378,7 @@ static int rtl8169_poll(struct net_device *dev, int *budget);
#endif
#endif
static
const
u16
rtl8169_intr_mask
=
static
const
u16
rtl8169_intr_mask
=
LinkChg
|
RxOverflow
|
RxFIFOOver
|
TxErr
|
TxOK
|
RxErr
|
RxOK
;
SYSErr
|
LinkChg
|
RxOverflow
|
RxFIFOOver
|
TxErr
|
TxOK
|
RxErr
|
RxOK
;
static
const
u16
rtl8169_napi_event
=
static
const
u16
rtl8169_napi_event
=
RxOK
|
RxOverflow
|
RxFIFOOver
|
TxOK
|
TxErr
;
RxOK
|
RxOverflow
|
RxFIFOOver
|
TxOK
|
TxErr
;
static
const
unsigned
int
rtl8169_rx_config
=
static
const
unsigned
int
rtl8169_rx_config
=
...
@@ -984,7 +987,7 @@ rtl8169_init_board(struct pci_dev *pdev, struct net_device **dev_out,
...
@@ -984,7 +987,7 @@ rtl8169_init_board(struct pci_dev *pdev, struct net_device **dev_out,
tp
->
cp_cmd
=
PCIMulRW
|
RxChkSum
;
tp
->
cp_cmd
=
PCIMulRW
|
RxChkSum
;
if
((
sizeof
(
dma_addr_t
)
>
4
)
&&
if
((
sizeof
(
dma_addr_t
)
>
4
)
&&
!
pci_set_dma_mask
(
pdev
,
DMA_64BIT_MASK
))
!
pci_set_dma_mask
(
pdev
,
DMA_64BIT_MASK
)
&&
use_dac
)
tp
->
cp_cmd
|=
PCIDAC
;
tp
->
cp_cmd
|=
PCIDAC
;
else
{
else
{
rc
=
pci_set_dma_mask
(
pdev
,
DMA_32BIT_MASK
);
rc
=
pci_set_dma_mask
(
pdev
,
DMA_32BIT_MASK
);
...
@@ -1761,6 +1764,15 @@ rtl8169_interrupt(int irq, void *dev_instance, struct pt_regs *regs)
...
@@ -1761,6 +1764,15 @@ rtl8169_interrupt(int irq, void *dev_instance, struct pt_regs *regs)
if
(
!
(
status
&
rtl8169_intr_mask
))
if
(
!
(
status
&
rtl8169_intr_mask
))
break
;
break
;
if
(
unlikely
(
status
&
SYSErr
))
{
printk
(
KERN_ERR
PFX
"%s: PCI error (status: 0x%04x)."
" Device disabled.
\n
"
,
dev
->
name
,
status
);
RTL_W8
(
ChipCmd
,
0x00
);
RTL_W16
(
IntrMask
,
0x0000
);
RTL_R16
(
IntrMask
);
break
;
}
if
(
status
&
LinkChg
)
if
(
status
&
LinkChg
)
rtl8169_check_link_status
(
dev
,
tp
,
ioaddr
);
rtl8169_check_link_status
(
dev
,
tp
,
ioaddr
);
...
...
drivers/net/wireless/airo.c
View file @
154a6649
...
@@ -1816,7 +1816,8 @@ static int writeConfigRid(struct airo_info*ai, int lock) {
...
@@ -1816,7 +1816,8 @@ static int writeConfigRid(struct airo_info*ai, int lock) {
if
(
!
test_bit
(
FLAG_COMMIT
,
&
ai
->
flags
))
if
(
!
test_bit
(
FLAG_COMMIT
,
&
ai
->
flags
))
return
SUCCESS
;
return
SUCCESS
;
clear_bit
(
FLAG_COMMIT
|
FLAG_RESET
,
&
ai
->
flags
);
clear_bit
(
FLAG_COMMIT
,
&
ai
->
flags
);
clear_bit
(
FLAG_RESET
,
&
ai
->
flags
);
checkThrottle
(
ai
);
checkThrottle
(
ai
);
cfgr
=
ai
->
config
;
cfgr
=
ai
->
config
;
...
@@ -1980,9 +1981,6 @@ static int mpi_send_packet (struct net_device *dev)
...
@@ -1980,9 +1981,6 @@ static int mpi_send_packet (struct net_device *dev)
ai
->
txfids
[
0
].
tx_desc
.
eoc
=
1
;
ai
->
txfids
[
0
].
tx_desc
.
eoc
=
1
;
ai
->
txfids
[
0
].
tx_desc
.
len
=
len
+
sizeof
(
WifiHdr
);
ai
->
txfids
[
0
].
tx_desc
.
len
=
len
+
sizeof
(
WifiHdr
);
memcpy
((
char
*
)
ai
->
txfids
[
0
].
card_ram_off
,
(
char
*
)
&
ai
->
txfids
[
0
].
tx_desc
,
sizeof
(
TxFid
));
/*
/*
* Magic, the cards firmware needs a length count (2 bytes) in the host buffer
* Magic, the cards firmware needs a length count (2 bytes) in the host buffer
* right after TXFID_HDR.The TXFID_HDR contains the status short so payloadlen
* right after TXFID_HDR.The TXFID_HDR contains the status short so payloadlen
...
@@ -2012,6 +2010,7 @@ static int mpi_send_packet (struct net_device *dev)
...
@@ -2012,6 +2010,7 @@ static int mpi_send_packet (struct net_device *dev)
return
ERROR
;
return
ERROR
;
*
payloadLen
=
cpu_to_le16
(
len
-
sizeof
(
etherHead
)
+
sizeof
(
pMic
));
*
payloadLen
=
cpu_to_le16
(
len
-
sizeof
(
etherHead
)
+
sizeof
(
pMic
));
ai
->
txfids
[
0
].
tx_desc
.
len
+=
sizeof
(
pMic
);
/* copy data into airo dma buffer */
/* copy data into airo dma buffer */
memcpy
(
sendbuf
,
buffer
,
sizeof
(
etherHead
));
memcpy
(
sendbuf
,
buffer
,
sizeof
(
etherHead
));
buffer
+=
sizeof
(
etherHead
);
buffer
+=
sizeof
(
etherHead
);
...
@@ -2030,6 +2029,9 @@ static int mpi_send_packet (struct net_device *dev)
...
@@ -2030,6 +2029,9 @@ static int mpi_send_packet (struct net_device *dev)
memcpy
(
sendbuf
,
buffer
,
len
);
memcpy
(
sendbuf
,
buffer
,
len
);
}
}
memcpy
((
char
*
)
ai
->
txfids
[
0
].
card_ram_off
,
(
char
*
)
&
ai
->
txfids
[
0
].
tx_desc
,
sizeof
(
TxFid
));
OUT4500
(
ai
,
EVACK
,
8
);
OUT4500
(
ai
,
EVACK
,
8
);
dev_kfree_skb_any
(
skb
);
dev_kfree_skb_any
(
skb
);
...
@@ -2184,6 +2186,12 @@ static int airo_start_xmit11(struct sk_buff *skb, struct net_device *dev) {
...
@@ -2184,6 +2186,12 @@ static int airo_start_xmit11(struct sk_buff *skb, struct net_device *dev) {
struct
airo_info
*
priv
=
dev
->
priv
;
struct
airo_info
*
priv
=
dev
->
priv
;
u32
*
fids
=
priv
->
fids
;
u32
*
fids
=
priv
->
fids
;
if
(
test_bit
(
FLAG_MPI
,
&
priv
->
flags
))
{
/* Not implemented yet for MPI350 */
netif_stop_queue
(
dev
);
return
-
ENETDOWN
;
}
if
(
skb
==
NULL
)
{
if
(
skb
==
NULL
)
{
printk
(
KERN_ERR
"airo: skb == NULL!!!
\n
"
);
printk
(
KERN_ERR
"airo: skb == NULL!!!
\n
"
);
return
0
;
return
0
;
...
@@ -2249,12 +2257,14 @@ struct net_device_stats *airo_get_stats(struct net_device *dev)
...
@@ -2249,12 +2257,14 @@ struct net_device_stats *airo_get_stats(struct net_device *dev)
{
{
struct
airo_info
*
local
=
dev
->
priv
;
struct
airo_info
*
local
=
dev
->
priv
;
/* Get stats out of the card if available */
if
(
!
test_bit
(
JOB_STATS
,
&
local
->
flags
))
{
if
(
down_trylock
(
&
local
->
sem
)
!=
0
)
{
/* Get stats out of the card if available */
set_bit
(
JOB_STATS
,
&
local
->
flags
);
if
(
down_trylock
(
&
local
->
sem
)
!=
0
)
{
wake_up_interruptible
(
&
local
->
thr_wait
);
set_bit
(
JOB_STATS
,
&
local
->
flags
);
}
else
wake_up_interruptible
(
&
local
->
thr_wait
);
airo_read_stats
(
local
);
}
else
airo_read_stats
(
local
);
}
return
&
local
->
stats
;
return
&
local
->
stats
;
}
}
...
@@ -2340,6 +2350,9 @@ static void del_airo_dev( struct net_device *dev );
...
@@ -2340,6 +2350,9 @@ static void del_airo_dev( struct net_device *dev );
void
stop_airo_card
(
struct
net_device
*
dev
,
int
freeres
)
void
stop_airo_card
(
struct
net_device
*
dev
,
int
freeres
)
{
{
struct
airo_info
*
ai
=
dev
->
priv
;
struct
airo_info
*
ai
=
dev
->
priv
;
set_bit
(
FLAG_RADIO_DOWN
,
&
ai
->
flags
);
disable_MAC
(
ai
,
1
);
disable_interrupts
(
ai
);
disable_interrupts
(
ai
);
free_irq
(
dev
->
irq
,
dev
);
free_irq
(
dev
->
irq
,
dev
);
takedown_proc_entry
(
dev
,
ai
);
takedown_proc_entry
(
dev
,
ai
);
...
@@ -3406,13 +3419,8 @@ static void disable_MAC( struct airo_info *ai, int lock ) {
...
@@ -3406,13 +3419,8 @@ static void disable_MAC( struct airo_info *ai, int lock ) {
}
}
static
void
enable_interrupts
(
struct
airo_info
*
ai
)
{
static
void
enable_interrupts
(
struct
airo_info
*
ai
)
{
/* Reset the status register */
u16
status
=
IN4500
(
ai
,
EVSTAT
);
OUT4500
(
ai
,
EVACK
,
status
);
/* Enable the interrupts */
/* Enable the interrupts */
OUT4500
(
ai
,
EVINTEN
,
STATUS_INTS
);
OUT4500
(
ai
,
EVINTEN
,
STATUS_INTS
);
/* Note there is a race condition between the last two lines that
I don't know how to get rid of right now... */
}
}
static
void
disable_interrupts
(
struct
airo_info
*
ai
)
{
static
void
disable_interrupts
(
struct
airo_info
*
ai
)
{
...
@@ -3460,7 +3468,7 @@ static void mpi_receive_802_3(struct airo_info *ai)
...
@@ -3460,7 +3468,7 @@ static void mpi_receive_802_3(struct airo_info *ai)
memcpy
(
buffer
+
ETH_ALEN
*
2
,
memcpy
(
buffer
+
ETH_ALEN
*
2
,
ai
->
rxfids
[
0
].
virtual_host_addr
+
ETH_ALEN
*
2
+
off
,
ai
->
rxfids
[
0
].
virtual_host_addr
+
ETH_ALEN
*
2
+
off
,
len
-
ETH_ALEN
*
2
-
off
);
len
-
ETH_ALEN
*
2
-
off
);
if
(
decapsulate
(
ai
,
&
micbuf
,
(
etherHead
*
)
buffer
,
len
-
off
))
{
if
(
decapsulate
(
ai
,
&
micbuf
,
(
etherHead
*
)
buffer
,
len
-
off
-
ETH_ALEN
*
2
))
{
badmic:
badmic:
dev_kfree_skb_irq
(
skb
);
dev_kfree_skb_irq
(
skb
);
goto
badrx
;
goto
badrx
;
...
@@ -3670,18 +3678,6 @@ static u16 setup_card(struct airo_info *ai, u8 *mac, int lock)
...
@@ -3670,18 +3678,6 @@ static u16 setup_card(struct airo_info *ai, u8 *mac, int lock)
status
=
readCapabilityRid
(
ai
,
&
cap_rid
,
lock
);
status
=
readCapabilityRid
(
ai
,
&
cap_rid
,
lock
);
if
(
status
!=
SUCCESS
)
return
ERROR
;
if
(
status
!=
SUCCESS
)
return
ERROR
;
/*
* This driver supports MPI350 firmwares up to, and
* including 5.30.17
*/
if
(
test_bit
(
FLAG_MPI
,
&
ai
->
flags
)
&&
strncmp
(
cap_rid
.
prodVer
,
"5.00."
,
5
)
&&
strncmp
(
cap_rid
.
prodVer
,
"5b00."
,
5
)
&&
strncmp
(
cap_rid
.
prodVer
,
"5.02."
,
5
)
&&
strncmp
(
cap_rid
.
prodVer
,
"5.20."
,
5
)
&&
strncmp
(
cap_rid
.
prodVer
,
"5.30."
,
5
))
printk
(
KERN_ERR
"airo: Firmware version %s is not supported. Use it at your own risk!
\n
"
,
cap_rid
.
prodVer
);
status
=
PC4500_readrid
(
ai
,
RID_RSSI
,
&
rssi_rid
,
sizeof
(
rssi_rid
),
lock
);
status
=
PC4500_readrid
(
ai
,
RID_RSSI
,
&
rssi_rid
,
sizeof
(
rssi_rid
),
lock
);
if
(
status
==
SUCCESS
)
{
if
(
status
==
SUCCESS
)
{
if
(
ai
->
rssi
||
(
ai
->
rssi
=
kmalloc
(
512
,
GFP_KERNEL
))
!=
NULL
)
if
(
ai
->
rssi
||
(
ai
->
rssi
=
kmalloc
(
512
,
GFP_KERNEL
))
!=
NULL
)
...
@@ -3716,9 +3712,9 @@ static u16 setup_card(struct airo_info *ai, u8 *mac, int lock)
...
@@ -3716,9 +3712,9 @@ static u16 setup_card(struct airo_info *ai, u8 *mac, int lock)
/* Check to see if there are any insmod configured
/* Check to see if there are any insmod configured
rates to add */
rates to add */
if
(
rates
)
{
if
(
rates
[
0
]
)
{
int
i
=
0
;
int
i
=
0
;
if
(
rates
[
0
]
)
memset
(
ai
->
config
.
rates
,
0
,
sizeof
(
ai
->
config
.
rates
));
memset
(
ai
->
config
.
rates
,
0
,
sizeof
(
ai
->
config
.
rates
));
for
(
i
=
0
;
i
<
8
&&
rates
[
i
];
i
++
)
{
for
(
i
=
0
;
i
<
8
&&
rates
[
i
];
i
++
)
{
ai
->
config
.
rates
[
i
]
=
rates
[
i
];
ai
->
config
.
rates
[
i
]
=
rates
[
i
];
}
}
...
@@ -3785,7 +3781,6 @@ static u16 setup_card(struct airo_info *ai, u8 *mac, int lock)
...
@@ -3785,7 +3781,6 @@ static u16 setup_card(struct airo_info *ai, u8 *mac, int lock)
static
u16
issuecommand
(
struct
airo_info
*
ai
,
Cmd
*
pCmd
,
Resp
*
pRsp
)
{
static
u16
issuecommand
(
struct
airo_info
*
ai
,
Cmd
*
pCmd
,
Resp
*
pRsp
)
{
// Im really paranoid about letting it run forever!
// Im really paranoid about letting it run forever!
int
max_tries
=
600000
;
int
max_tries
=
600000
;
u16
cmd
;
if
(
IN4500
(
ai
,
EVSTAT
)
&
EV_CMD
)
if
(
IN4500
(
ai
,
EVSTAT
)
&
EV_CMD
)
OUT4500
(
ai
,
EVACK
,
EV_CMD
);
OUT4500
(
ai
,
EVACK
,
EV_CMD
);
...
@@ -3794,26 +3789,23 @@ static u16 issuecommand(struct airo_info *ai, Cmd *pCmd, Resp *pRsp) {
...
@@ -3794,26 +3789,23 @@ static u16 issuecommand(struct airo_info *ai, Cmd *pCmd, Resp *pRsp) {
OUT4500
(
ai
,
PARAM1
,
pCmd
->
parm1
);
OUT4500
(
ai
,
PARAM1
,
pCmd
->
parm1
);
OUT4500
(
ai
,
PARAM2
,
pCmd
->
parm2
);
OUT4500
(
ai
,
PARAM2
,
pCmd
->
parm2
);
OUT4500
(
ai
,
COMMAND
,
pCmd
->
cmd
);
OUT4500
(
ai
,
COMMAND
,
pCmd
->
cmd
);
while
(
max_tries
--
&&
(
IN4500
(
ai
,
EVSTAT
)
&
EV_CMD
)
==
0
&&
(
cmd
=
IN4500
(
ai
,
COMMAND
))
!=
0
)
if
(
cmd
==
pCmd
->
cmd
)
// PC4500 didn't notice command, try again
OUT4500
(
ai
,
COMMAND
,
pCmd
->
cmd
);
if
(
max_tries
==
-
1
)
{
printk
(
KERN_ERR
"airo: Max tries exceeded when issueing command
\n
"
);
return
ERROR
;
}
while
(
max_tries
--
&&
(
IN4500
(
ai
,
EVSTAT
)
&
EV_CMD
)
==
0
)
{
while
(
max_tries
--
&&
(
IN4500
(
ai
,
EVSTAT
)
&
EV_CMD
)
==
0
)
{
if
((
IN4500
(
ai
,
COMMAND
))
==
pCmd
->
cmd
)
// PC4500 didn't notice command, try again
OUT4500
(
ai
,
COMMAND
,
pCmd
->
cmd
);
if
(
!
in_atomic
()
&&
(
max_tries
&
255
)
==
0
)
if
(
!
in_atomic
()
&&
(
max_tries
&
255
)
==
0
)
schedule
();
schedule
();
}
}
if
(
max_tries
==
-
1
)
{
if
(
max_tries
==
-
1
)
{
printk
(
KERN_ERR
printk
(
KERN_ERR
"airo: Max tries exceeded waiting for command
\n
"
);
"airo: Max tries exceeded when issueing command
\n
"
);
return
ERROR
;
if
(
IN4500
(
ai
,
COMMAND
)
&
COMMAND_BUSY
)
OUT4500
(
ai
,
EVACK
,
EV_CLEARCOMMANDBUSY
);
return
ERROR
;
}
}
// command completed
// command completed
pRsp
->
status
=
IN4500
(
ai
,
STATUS
);
pRsp
->
status
=
IN4500
(
ai
,
STATUS
);
pRsp
->
rsp0
=
IN4500
(
ai
,
RESP0
);
pRsp
->
rsp0
=
IN4500
(
ai
,
RESP0
);
...
@@ -4509,8 +4501,6 @@ static ssize_t proc_read( struct file *file,
...
@@ -4509,8 +4501,6 @@ static ssize_t proc_read( struct file *file,
len
=
priv
->
readlen
-
pos
;
len
=
priv
->
readlen
-
pos
;
if
(
copy_to_user
(
buffer
,
priv
->
rbuffer
+
pos
,
len
))
if
(
copy_to_user
(
buffer
,
priv
->
rbuffer
+
pos
,
len
))
return
-
EFAULT
;
return
-
EFAULT
;
if
(
pos
+
len
>
priv
->
writelen
)
priv
->
writelen
=
pos
+
len
;
*
offset
=
pos
+
len
;
*
offset
=
pos
+
len
;
return
len
;
return
len
;
}
}
...
@@ -5521,7 +5511,6 @@ static int airo_pci_resume(struct pci_dev *pdev)
...
@@ -5521,7 +5511,6 @@ static int airo_pci_resume(struct pci_dev *pdev)
mpi_init_descriptors
(
ai
);
mpi_init_descriptors
(
ai
);
setup_card
(
ai
,
dev
->
dev_addr
,
0
);
setup_card
(
ai
,
dev
->
dev_addr
,
0
);
clear_bit
(
FLAG_RADIO_OFF
,
&
ai
->
flags
);
clear_bit
(
FLAG_RADIO_OFF
,
&
ai
->
flags
);
clear_bit
(
FLAG_RADIO_DOWN
,
&
ai
->
flags
);
clear_bit
(
FLAG_PENDING_XMIT
,
&
ai
->
flags
);
clear_bit
(
FLAG_PENDING_XMIT
,
&
ai
->
flags
);
}
else
{
}
else
{
OUT4500
(
ai
,
EVACK
,
EV_AWAKEN
);
OUT4500
(
ai
,
EVACK
,
EV_AWAKEN
);
...
@@ -5606,6 +5595,30 @@ static void __exit airo_cleanup_module( void )
...
@@ -5606,6 +5595,30 @@ static void __exit airo_cleanup_module( void )
* would not work at all... - Jean II
* would not work at all... - Jean II
*/
*/
static
int
airo_get_quality
(
StatusRid
*
status_rid
,
CapabilityRid
*
cap_rid
)
{
int
quality
=
0
;
if
((
status_rid
->
mode
&
0x3f
)
==
0x3f
&&
(
cap_rid
->
hardCap
&
8
))
{
if
(
memcmp
(
cap_rid
->
prodName
,
"350"
,
3
))
if
(
status_rid
->
signalQuality
>
0x20
)
quality
=
0
;
else
quality
=
0x20
-
status_rid
->
signalQuality
;
else
if
(
status_rid
->
signalQuality
>
0xb0
)
quality
=
0
;
else
if
(
status_rid
->
signalQuality
<
0x10
)
quality
=
0xa0
;
else
quality
=
0xb0
-
status_rid
->
signalQuality
;
}
return
quality
;
}
#define airo_get_max_quality(cap_rid) (memcmp((cap_rid)->prodName, "350", 3) ? 0x20 : 0xa0)
#define airo_get_avg_quality(cap_rid) (memcmp((cap_rid)->prodName, "350", 3) ? 0x10 : 0x50);
/*------------------------------------------------------------------*/
/*------------------------------------------------------------------*/
/*
/*
* Wireless Handler : get protocol name
* Wireless Handler : get protocol name
...
@@ -6293,7 +6306,8 @@ static int airo_set_txpow(struct net_device *dev,
...
@@ -6293,7 +6306,8 @@ static int airo_set_txpow(struct net_device *dev,
readCapabilityRid
(
local
,
&
cap_rid
,
1
);
readCapabilityRid
(
local
,
&
cap_rid
,
1
);
if
(
vwrq
->
disabled
)
{
if
(
vwrq
->
disabled
)
{
set_bit
(
FLAG_RADIO_OFF
|
FLAG_COMMIT
,
&
local
->
flags
);
set_bit
(
FLAG_RADIO_OFF
,
&
local
->
flags
);
set_bit
(
FLAG_COMMIT
,
&
local
->
flags
);
return
-
EINPROGRESS
;
/* Call commit handler */
return
-
EINPROGRESS
;
/* Call commit handler */
}
}
if
(
vwrq
->
flags
!=
IW_TXPOW_MWATT
)
{
if
(
vwrq
->
flags
!=
IW_TXPOW_MWATT
)
{
...
@@ -6432,7 +6446,7 @@ static int airo_get_range(struct net_device *dev,
...
@@ -6432,7 +6446,7 @@ static int airo_get_range(struct net_device *dev,
range
->
num_frequency
=
k
;
range
->
num_frequency
=
k
;
/* Hum... Should put the right values there */
/* Hum... Should put the right values there */
range
->
max_qual
.
qual
=
10
;
range
->
max_qual
.
qual
=
airo_get_max_quality
(
&
cap_rid
)
;
range
->
max_qual
.
level
=
0x100
-
120
;
/* -120 dBm */
range
->
max_qual
.
level
=
0x100
-
120
;
/* -120 dBm */
range
->
max_qual
.
noise
=
0
;
range
->
max_qual
.
noise
=
0
;
range
->
sensitivity
=
65535
;
range
->
sensitivity
=
65535
;
...
@@ -6499,7 +6513,7 @@ static int airo_get_range(struct net_device *dev,
...
@@ -6499,7 +6513,7 @@ static int airo_get_range(struct net_device *dev,
/* Experimental measurements - boundary 11/5.5 Mb/s */
/* Experimental measurements - boundary 11/5.5 Mb/s */
/* Note : with or without the (local->rssi), results
/* Note : with or without the (local->rssi), results
* are somewhat different. - Jean II */
* are somewhat different. - Jean II */
range
->
avg_qual
.
qual
=
6
;
range
->
avg_qual
.
qual
=
airo_get_avg_quality
(
&
cap_rid
)
;
if
(
local
->
rssi
)
if
(
local
->
rssi
)
range
->
avg_qual
.
level
=
186
;
/* -70 dBm */
range
->
avg_qual
.
level
=
186
;
/* -70 dBm */
else
else
...
@@ -7113,6 +7127,7 @@ static void airo_read_wireless_stats(struct airo_info *local)
...
@@ -7113,6 +7127,7 @@ static void airo_read_wireless_stats(struct airo_info *local)
{
{
StatusRid
status_rid
;
StatusRid
status_rid
;
StatsRid
stats_rid
;
StatsRid
stats_rid
;
CapabilityRid
cap_rid
;
u32
*
vals
=
stats_rid
.
vals
;
u32
*
vals
=
stats_rid
.
vals
;
/* Get stats out of the card */
/* Get stats out of the card */
...
@@ -7121,6 +7136,7 @@ static void airo_read_wireless_stats(struct airo_info *local)
...
@@ -7121,6 +7136,7 @@ static void airo_read_wireless_stats(struct airo_info *local)
up
(
&
local
->
sem
);
up
(
&
local
->
sem
);
return
;
return
;
}
}
readCapabilityRid
(
local
,
&
cap_rid
,
0
);
readStatusRid
(
local
,
&
status_rid
,
0
);
readStatusRid
(
local
,
&
status_rid
,
0
);
readStatsRid
(
local
,
&
stats_rid
,
RID_STATS
,
0
);
readStatsRid
(
local
,
&
stats_rid
,
RID_STATS
,
0
);
up
(
&
local
->
sem
);
up
(
&
local
->
sem
);
...
@@ -7129,7 +7145,7 @@ static void airo_read_wireless_stats(struct airo_info *local)
...
@@ -7129,7 +7145,7 @@ static void airo_read_wireless_stats(struct airo_info *local)
local
->
wstats
.
status
=
status_rid
.
mode
;
local
->
wstats
.
status
=
status_rid
.
mode
;
/* Signal quality and co. But where is the noise level ??? */
/* Signal quality and co. But where is the noise level ??? */
local
->
wstats
.
qual
.
qual
=
status_rid
.
signalQuality
;
local
->
wstats
.
qual
.
qual
=
airo_get_quality
(
&
status_rid
,
&
cap_rid
)
;
if
(
local
->
rssi
)
if
(
local
->
rssi
)
local
->
wstats
.
qual
.
level
=
0x100
-
local
->
rssi
[
status_rid
.
sigQuality
].
rssidBm
;
local
->
wstats
.
qual
.
level
=
0x100
-
local
->
rssi
[
status_rid
.
sigQuality
].
rssidBm
;
else
else
...
@@ -7156,12 +7172,14 @@ struct iw_statistics *airo_get_wireless_stats(struct net_device *dev)
...
@@ -7156,12 +7172,14 @@ struct iw_statistics *airo_get_wireless_stats(struct net_device *dev)
{
{
struct
airo_info
*
local
=
dev
->
priv
;
struct
airo_info
*
local
=
dev
->
priv
;
/* Get stats out of the card if available */
if
(
!
test_bit
(
JOB_WSTATS
,
&
local
->
flags
))
{
if
(
down_trylock
(
&
local
->
sem
)
!=
0
)
{
/* Get stats out of the card if available */
set_bit
(
JOB_WSTATS
,
&
local
->
flags
);
if
(
down_trylock
(
&
local
->
sem
)
!=
0
)
{
wake_up_interruptible
(
&
local
->
thr_wait
);
set_bit
(
JOB_WSTATS
,
&
local
->
flags
);
}
else
wake_up_interruptible
(
&
local
->
thr_wait
);
airo_read_wireless_stats
(
local
);
}
else
airo_read_wireless_stats
(
local
);
}
return
&
local
->
wstats
;
return
&
local
->
wstats
;
}
}
...
@@ -7188,9 +7206,11 @@ static int readrids(struct net_device *dev, aironet_ioctl *comp) {
...
@@ -7188,9 +7206,11 @@ static int readrids(struct net_device *dev, aironet_ioctl *comp) {
{
{
case
AIROGCAP
:
ridcode
=
RID_CAPABILITIES
;
break
;
case
AIROGCAP
:
ridcode
=
RID_CAPABILITIES
;
break
;
case
AIROGCFG
:
ridcode
=
RID_CONFIG
;
case
AIROGCFG
:
ridcode
=
RID_CONFIG
;
disable_MAC
(
ai
,
1
);
if
(
test_bit
(
FLAG_COMMIT
,
&
ai
->
flags
))
{
writeConfigRid
(
ai
,
1
);
disable_MAC
(
ai
,
1
);
enable_MAC
(
ai
,
&
rsp
,
1
);
writeConfigRid
(
ai
,
1
);
enable_MAC
(
ai
,
&
rsp
,
1
);
}
break
;
break
;
case
AIROGSLIST
:
ridcode
=
RID_SSID
;
break
;
case
AIROGSLIST
:
ridcode
=
RID_SSID
;
break
;
case
AIROGVLIST
:
ridcode
=
RID_APLIST
;
break
;
case
AIROGVLIST
:
ridcode
=
RID_APLIST
;
break
;
...
@@ -7270,6 +7290,7 @@ static int writerids(struct net_device *dev, aironet_ioctl *comp) {
...
@@ -7270,6 +7290,7 @@ static int writerids(struct net_device *dev, aironet_ioctl *comp) {
case
AIROPCAP
:
ridcode
=
RID_CAPABILITIES
;
break
;
case
AIROPCAP
:
ridcode
=
RID_CAPABILITIES
;
break
;
case
AIROPAPLIST
:
ridcode
=
RID_APLIST
;
break
;
case
AIROPAPLIST
:
ridcode
=
RID_APLIST
;
break
;
case
AIROPCFG
:
ai
->
config
.
len
=
0
;
case
AIROPCFG
:
ai
->
config
.
len
=
0
;
clear_bit
(
FLAG_COMMIT
,
&
ai
->
flags
);
ridcode
=
RID_CONFIG
;
break
;
ridcode
=
RID_CONFIG
;
break
;
case
AIROPWEPKEYNV
:
ridcode
=
RID_WEP_PERM
;
break
;
case
AIROPWEPKEYNV
:
ridcode
=
RID_WEP_PERM
;
break
;
case
AIROPLEAPUSR
:
ridcode
=
RID_LEAPUSERNAME
;
break
;
case
AIROPLEAPUSR
:
ridcode
=
RID_LEAPUSERNAME
;
break
;
...
...
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