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
5afe9abc
Commit
5afe9abc
authored
Sep 22, 2004
by
Dave Airlie
Browse files
Options
Browse Files
Download
Plain Diff
Merge starflyer.(none):/home/airlied/bitkeeper/drm-2.6
into starflyer.(none):/home/airlied/bitkeeper/drm-removecount
parents
9b01dc3a
088b4154
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
135 additions
and
75 deletions
+135
-75
arch/sparc64/kernel/traps.c
arch/sparc64/kernel/traps.c
+36
-8
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
drivers/serial/sunsu.c
drivers/serial/sunsu.c
+1
-1
drivers/serial/sunzilog.c
drivers/serial/sunzilog.c
+1
-2
No files found.
arch/sparc64/kernel/traps.c
View file @
5afe9abc
...
@@ -1843,6 +1843,37 @@ void dump_stack(void)
...
@@ -1843,6 +1843,37 @@ void dump_stack(void)
EXPORT_SYMBOL
(
dump_stack
);
EXPORT_SYMBOL
(
dump_stack
);
static
inline
int
is_kernel_stack
(
struct
task_struct
*
task
,
struct
reg_window
*
rw
)
{
unsigned
long
rw_addr
=
(
unsigned
long
)
rw
;
unsigned
long
thread_base
,
thread_end
;
if
(
rw_addr
<
PAGE_OFFSET
)
{
if
(
task
!=
&
init_task
)
return
0
;
}
thread_base
=
(
unsigned
long
)
task
->
thread_info
;
thread_end
=
thread_base
+
sizeof
(
union
thread_union
);
if
(
rw_addr
>=
thread_base
&&
rw_addr
<
thread_end
&&
!
(
rw_addr
&
0x7UL
))
return
1
;
return
0
;
}
static
inline
struct
reg_window
*
kernel_stack_up
(
struct
reg_window
*
rw
)
{
unsigned
long
fp
=
rw
->
ins
[
6
];
if
(
!
fp
)
return
NULL
;
return
(
struct
reg_window
*
)
(
fp
+
STACK_BIAS
);
}
void
die_if_kernel
(
char
*
str
,
struct
pt_regs
*
regs
)
void
die_if_kernel
(
char
*
str
,
struct
pt_regs
*
regs
)
{
{
static
int
die_counter
;
static
int
die_counter
;
...
@@ -1868,17 +1899,14 @@ void die_if_kernel(char *str, struct pt_regs *regs)
...
@@ -1868,17 +1899,14 @@ void die_if_kernel(char *str, struct pt_regs *regs)
/* Stop the back trace when we hit userland or we
/* Stop the back trace when we hit userland or we
* find some badly aligned kernel stack.
* find some badly aligned kernel stack.
*/
*/
while
(
rw
&&
while
(
rw
&&
count
++
<
30
&&
count
++
<
30
&&
(((
unsigned
long
)
rw
)
>=
PAGE_OFFSET
)
&&
is_kernel_stack
(
current
,
rw
))
{
(
char
*
)
rw
<
((
char
*
)
current
)
+
sizeof
(
union
thread_union
)
&&
!
(((
unsigned
long
)
rw
)
&
0x7
))
{
printk
(
"Caller[%016lx]"
,
rw
->
ins
[
7
]);
printk
(
"Caller[%016lx]"
,
rw
->
ins
[
7
]);
print_symbol
(
": %s"
,
rw
->
ins
[
7
]);
print_symbol
(
": %s"
,
rw
->
ins
[
7
]);
printk
(
"
\n
"
);
printk
(
"
\n
"
);
rw
=
(
struct
reg_window
*
)
(
rw
->
ins
[
6
]
+
STACK_BIAS
);
rw
=
kernel_stack_up
(
rw
);
}
}
instruction_dump
((
unsigned
int
*
)
regs
->
tpc
);
instruction_dump
((
unsigned
int
*
)
regs
->
tpc
);
}
else
{
}
else
{
...
...
drivers/ieee1394/eth1394.c
View file @
5afe9abc
...
@@ -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 @
5afe9abc
...
@@ -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 @
5afe9abc
...
@@ -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 @
5afe9abc
...
@@ -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
;
...
...
drivers/serial/sunsu.c
View file @
5afe9abc
...
@@ -1309,7 +1309,7 @@ static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up, int channel)
...
@@ -1309,7 +1309,7 @@ static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up, int channel)
#ifdef CONFIG_SERIO
#ifdef CONFIG_SERIO
up
->
serio
=
serio
=
kmalloc
(
sizeof
(
struct
serio
),
GFP_KERNEL
);
up
->
serio
=
serio
=
kmalloc
(
sizeof
(
struct
serio
),
GFP_KERNEL
);
if
(
serio
)
{
if
(
serio
)
{
memset
(
serio
,
0
,
sizeof
(
serio
));
memset
(
serio
,
0
,
sizeof
(
*
serio
));
serio
->
port_data
=
up
;
serio
->
port_data
=
up
;
...
...
drivers/serial/sunzilog.c
View file @
5afe9abc
...
@@ -1556,8 +1556,7 @@ static void __init sunzilog_register_serio(struct uart_sunzilog_port *up, int ch
...
@@ -1556,8 +1556,7 @@ static void __init sunzilog_register_serio(struct uart_sunzilog_port *up, int ch
up
->
serio
=
serio
=
kmalloc
(
sizeof
(
struct
serio
),
GFP_KERNEL
);
up
->
serio
=
serio
=
kmalloc
(
sizeof
(
struct
serio
),
GFP_KERNEL
);
if
(
serio
)
{
if
(
serio
)
{
memset
(
serio
,
0
,
sizeof
(
*
serio
));
memset
(
serio
,
0
,
sizeof
(
serio
));
serio
->
port_data
=
up
;
serio
->
port_data
=
up
;
...
...
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