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
4b743325
Commit
4b743325
authored
Oct 21, 2004
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge pobox.com:/garz/repo/netdev-2.6/prism54
into pobox.com:/garz/repo/net-drivers-2.6
parents
1fc12ca8
991ae550
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
728 additions
and
136 deletions
+728
-136
drivers/net/wireless/prism54/isl_38xx.c
drivers/net/wireless/prism54/isl_38xx.c
+5
-10
drivers/net/wireless/prism54/isl_38xx.h
drivers/net/wireless/prism54/isl_38xx.h
+4
-0
drivers/net/wireless/prism54/isl_ioctl.c
drivers/net/wireless/prism54/isl_ioctl.c
+554
-85
drivers/net/wireless/prism54/isl_ioctl.h
drivers/net/wireless/prism54/isl_ioctl.h
+2
-0
drivers/net/wireless/prism54/isl_oid.h
drivers/net/wireless/prism54/isl_oid.h
+9
-0
drivers/net/wireless/prism54/islpci_dev.c
drivers/net/wireless/prism54/islpci_dev.c
+32
-17
drivers/net/wireless/prism54/islpci_dev.h
drivers/net/wireless/prism54/islpci_dev.h
+4
-0
drivers/net/wireless/prism54/islpci_eth.c
drivers/net/wireless/prism54/islpci_eth.c
+3
-2
drivers/net/wireless/prism54/islpci_hotplug.c
drivers/net/wireless/prism54/islpci_hotplug.c
+0
-3
drivers/net/wireless/prism54/islpci_mgt.c
drivers/net/wireless/prism54/islpci_mgt.c
+1
-0
drivers/net/wireless/prism54/islpci_mgt.h
drivers/net/wireless/prism54/islpci_mgt.h
+0
-2
drivers/net/wireless/prism54/oid_mgt.c
drivers/net/wireless/prism54/oid_mgt.c
+110
-16
drivers/net/wireless/prism54/oid_mgt.h
drivers/net/wireless/prism54/oid_mgt.h
+4
-1
No files found.
drivers/net/wireless/prism54/isl_38xx.c
View file @
4b743325
...
...
@@ -133,8 +133,8 @@ isl38xx_trigger_device(int asleep, void __iomem *device_base)
readl
(
device_base
+
ISL38XX_CTRL_STAT_REG
));
udelay
(
ISL38XX_WRITEIO_DELAY
);
if
(
reg
=
readl
(
device_base
+
ISL38XX_INT_IDENT_REG
),
reg
==
0xabadface
)
{
reg
=
readl
(
device_base
+
ISL38XX_INT_IDENT_REG
);
if
(
reg
==
0xabadface
)
{
#if VERBOSE > SHOW_ERROR_MESSAGES
do_gettimeofday
(
&
current_time
);
DEBUG
(
SHOW_TRACING
,
...
...
@@ -192,10 +192,8 @@ isl38xx_trigger_device(int asleep, void __iomem *device_base)
void
isl38xx_interface_reset
(
void
__iomem
*
device_base
,
dma_addr_t
host_address
)
{
u32
reg
;
#if VERBOSE > SHOW_ERROR_MESSAGES
DEBUG
(
SHOW_FUNCTION_CALLS
,
"isl38xx_interface_reset
\n
"
);
DEBUG
(
SHOW_FUNCTION_CALLS
,
"isl38xx_interface_reset
\n
"
);
#endif
/* load the address of the control block in the device */
...
...
@@ -203,8 +201,7 @@ isl38xx_interface_reset(void __iomem *device_base, dma_addr_t host_address)
udelay
(
ISL38XX_WRITEIO_DELAY
);
/* set the reset bit in the Device Interrupt Register */
isl38xx_w32_flush
(
device_base
,
ISL38XX_DEV_INT_RESET
,
ISL38XX_DEV_INT_REG
);
isl38xx_w32_flush
(
device_base
,
ISL38XX_DEV_INT_RESET
,
ISL38XX_DEV_INT_REG
);
udelay
(
ISL38XX_WRITEIO_DELAY
);
/* enable the interrupt for detecting initialization */
...
...
@@ -212,9 +209,7 @@ isl38xx_interface_reset(void __iomem *device_base, dma_addr_t host_address)
/* Note: Do not enable other interrupts here. We want the
* device to have come up first 100% before allowing any other
* interrupts. */
reg
=
ISL38XX_INT_IDENT_INIT
;
isl38xx_w32_flush
(
device_base
,
reg
,
ISL38XX_INT_EN_REG
);
isl38xx_w32_flush
(
device_base
,
ISL38XX_INT_IDENT_INIT
,
ISL38XX_INT_EN_REG
);
udelay
(
ISL38XX_WRITEIO_DELAY
);
/* allow complete full reset */
}
...
...
drivers/net/wireless/prism54/isl_38xx.h
View file @
4b743325
...
...
@@ -95,6 +95,10 @@ isl38xx_w32_flush(void __iomem *base, u32 val, unsigned long offset)
#define ISL38XX_INT_SOURCES 0x001E
/* Control/Status register bits */
/* Looks like there are other meaningful bits
0x20004400 seen in normal operation,
0x200044db at 'timeout waiting for mgmt response'
*/
#define ISL38XX_CTRL_STAT_SLEEPMODE 0x00000200
#define ISL38XX_CTRL_STAT_CLKRUN 0x00800000
#define ISL38XX_CTRL_STAT_RESET 0x10000000
...
...
drivers/net/wireless/prism54/isl_ioctl.c
View file @
4b743325
This diff is collapsed.
Click to expand it.
drivers/net/wireless/prism54/isl_ioctl.h
View file @
4b743325
...
...
@@ -48,6 +48,8 @@ size_t prism54_wpa_ie_get(islpci_private *priv, u8 *bssid, u8 *wpa_ie);
int
prism54_set_mac_address
(
struct
net_device
*
,
void
*
);
int
prism54_ioctl
(
struct
net_device
*
,
struct
ifreq
*
,
int
);
int
prism54_set_wpa
(
struct
net_device
*
,
struct
iw_request_info
*
,
__u32
*
,
char
*
);
extern
const
struct
iw_handler_def
prism54_handler_def
;
...
...
drivers/net/wireless/prism54/isl_oid.h
View file @
4b743325
...
...
@@ -91,6 +91,14 @@ struct obj_frequencies {
u16
mhz
[
0
];
}
__attribute__
((
packed
));
struct
obj_attachment
{
char
type
;
char
reserved
;
short
id
;
short
size
;
char
data
[
0
];
}
__attribute__
((
packed
));
/*
* in case everything's ok, the inlined function below will be
* optimized away by the compiler...
...
...
@@ -472,6 +480,7 @@ enum oid_num_t {
#define OID_TYPE_MLMEEX 0x09
#define OID_TYPE_ADDR 0x0A
#define OID_TYPE_RAW 0x0B
#define OID_TYPE_ATTACH 0x0C
/* OID_TYPE_MLMEEX is special because of a variable size field when sending.
* Not yet implemented (not used in driver anyway).
...
...
drivers/net/wireless/prism54/islpci_dev.c
View file @
4b743325
...
...
@@ -105,7 +105,7 @@ isl_upload_firmware(islpci_private *priv)
"%s: firmware '%s' size is not multiple of 32bit, aborting!
\n
"
,
"prism54"
,
priv
->
firmware
);
release_firmware
(
fw_entry
);
return
EILSEQ
;
/* Illegal byte sequence */
;
return
-
EILSEQ
;
/* Illegal byte sequence */
;
}
while
(
fw_len
>
0
)
{
...
...
@@ -142,6 +142,10 @@ isl_upload_firmware(islpci_private *priv)
BUG_ON
(
fw_len
!=
0
);
/* Firmware version is at offset 40 (also for "newmac") */
printk
(
KERN_DEBUG
"%s: firmware version: %.8s
\n
"
,
priv
->
ndev
->
name
,
fw_entry
->
data
+
40
);
release_firmware
(
fw_entry
);
}
...
...
@@ -375,8 +379,6 @@ islpci_open(struct net_device *ndev)
u32
rc
;
islpci_private
*
priv
=
netdev_priv
(
ndev
);
printk
(
KERN_DEBUG
"%s: islpci_open()
\n
"
,
ndev
->
name
);
/* reset data structures, upload firmware and reset device */
rc
=
islpci_reset
(
priv
,
1
);
if
(
rc
)
{
...
...
@@ -462,8 +464,7 @@ islpci_upload_fw(islpci_private *priv)
return
rc
;
}
printk
(
KERN_DEBUG
"%s: firmware uploaded done, now triggering reset...
\n
"
,
printk
(
KERN_DEBUG
"%s: firmware upload complete
\n
"
,
priv
->
ndev
->
name
);
islpci_set_state
(
priv
,
PRV_STATE_POSTBOOT
);
...
...
@@ -489,6 +490,7 @@ islpci_reset_if(islpci_private *priv)
/* The software reset acknowledge needs about 220 msec here.
* Be conservative and wait for up to one second. */
set_current_state
(
TASK_UNINTERRUPTIBLE
);
remaining
=
schedule_timeout
(
HZ
);
if
(
remaining
>
0
)
{
...
...
@@ -499,15 +501,16 @@ islpci_reset_if(islpci_private *priv)
/* If we're here it's because our IRQ hasn't yet gone through.
* Retry a bit more...
*/
printk
(
KERN_ERR
"%s: device soft reset timed out
\n
"
,
priv
->
ndev
->
name
);
printk
(
KERN_ERR
"%s: no 'reset complete' IRQ seen - retrying
\n
"
,
priv
->
ndev
->
name
);
}
finish_wait
(
&
priv
->
reset_done
,
&
wait
);
if
(
result
)
if
(
result
)
{
printk
(
KERN_ERR
"%s: interface reset failure
\n
"
,
priv
->
ndev
->
name
);
return
result
;
}
islpci_set_state
(
priv
,
PRV_STATE_INIT
);
...
...
@@ -519,11 +522,17 @@ islpci_reset_if(islpci_private *priv)
isl38xx_enable_common_interrupts
(
priv
->
device_base
);
down_write
(
&
priv
->
mib_sem
);
mgt_commit
(
priv
);
result
=
mgt_commit
(
priv
);
if
(
result
)
{
printk
(
KERN_ERR
"%s: interface reset failure
\n
"
,
priv
->
ndev
->
name
);
up_write
(
&
priv
->
mib_sem
);
return
result
;
}
up_write
(
&
priv
->
mib_sem
);
islpci_set_state
(
priv
,
PRV_STATE_READY
);
printk
(
KERN_DEBUG
"%s: interface reset complete
\n
"
,
priv
->
ndev
->
name
);
return
0
;
}
...
...
@@ -584,18 +593,18 @@ islpci_reset(islpci_private *priv, int reload_firmware)
/* now that the data structures are cleaned up, upload
* firmware and reset interface */
rc
=
islpci_upload_fw
(
priv
);
if
(
rc
)
if
(
rc
)
{
printk
(
KERN_ERR
"%s: islpci_reset: failure
\n
"
,
priv
->
ndev
->
name
);
return
rc
;
}
}
/* finally reset interface */
rc
=
islpci_reset_if
(
priv
);
if
(
!
rc
)
/* If successful */
return
rc
;
printk
(
KERN_DEBUG
"prism54: Your card/socket may be faulty, or IRQ line too busy :(
\n
"
);
if
(
rc
)
printk
(
KERN_ERR
"prism54: Your card/socket may be faulty, or IRQ line too busy :(
\n
"
);
return
rc
;
}
struct
net_device_stats
*
...
...
@@ -604,7 +613,7 @@ islpci_statistics(struct net_device *ndev)
islpci_private
*
priv
=
netdev_priv
(
ndev
);
#if VERBOSE > SHOW_ERROR_MESSAGES
DEBUG
(
SHOW_FUNCTION_CALLS
,
"islpci_statistics
\n
"
);
DEBUG
(
SHOW_FUNCTION_CALLS
,
"islpci_statistics
\n
"
);
#endif
return
&
priv
->
statistics
;
...
...
@@ -830,6 +839,12 @@ islpci_setup(struct pci_dev *pdev)
priv
->
ndev
->
type
=
(
priv
->
iw_mode
==
IW_MODE_MONITOR
)
?
priv
->
monitor_type
:
ARPHRD_ETHER
;
#if WIRELESS_EXT > 16
/* Add pointers to enable iwspy support. */
priv
->
wireless_data
.
spy_data
=
&
priv
->
spy_data
;
ndev
->
wireless_data
=
&
priv
->
wireless_data
;
#endif
/* WIRELESS_EXT > 16 */
/* save the start and end address of the PCI memory area */
ndev
->
mem_start
=
(
unsigned
long
)
priv
->
device_base
;
ndev
->
mem_end
=
ndev
->
mem_start
+
ISL38XX_PCI_MEM_SIZE
;
...
...
drivers/net/wireless/prism54/islpci_dev.h
View file @
4b743325
...
...
@@ -100,6 +100,10 @@ typedef struct {
struct
iw_spy_data
spy_data
;
/* iwspy support */
#if WIRELESS_EXT > 16
struct
iw_public_data
wireless_data
;
#endif
/* WIRELESS_EXT > 16 */
int
monitor_type
;
/* ARPHRD_IEEE80211 or ARPHRD_IEEE80211_PRISM */
struct
islpci_acl
acl
;
...
...
drivers/net/wireless/prism54/islpci_eth.c
View file @
4b743325
...
...
@@ -508,11 +508,12 @@ islpci_eth_tx_timeout(struct net_device *ndev)
/* increment the transmit error counter */
statistics
->
tx_errors
++
;
printk
(
KERN_WARNING
"%s: tx_timeout"
,
ndev
->
name
);
if
(
!
priv
->
reset_task_pending
)
{
priv
->
reset_task_pending
=
1
;
printk
(
", scheduling a reset"
);
netif_stop_queue
(
ndev
);
schedule_work
(
&
priv
->
reset_task
);
}
return
;
printk
(
"
\n
"
);
}
drivers/net/wireless/prism54/islpci_hotplug.c
View file @
4b743325
...
...
@@ -107,9 +107,6 @@ prism54_probe(struct pci_dev *pdev, const struct pci_device_id *id)
islpci_private
*
priv
;
int
rvalue
;
/* TRACE(DRV_NAME); */
/* Enable the pci device */
if
(
pci_enable_device
(
pdev
))
{
printk
(
KERN_ERR
"%s: pci_enable_device() failed.
\n
"
,
DRV_NAME
);
...
...
drivers/net/wireless/prism54/islpci_mgt.c
View file @
4b743325
...
...
@@ -473,6 +473,7 @@ islpci_mgt_transaction(struct net_device *ndev,
int
timeleft
;
struct
islpci_mgmtframe
*
frame
;
set_current_state
(
TASK_UNINTERRUPTIBLE
);
timeleft
=
schedule_timeout
(
wait_cycle_jiffies
);
frame
=
xchg
(
&
priv
->
mgmt_received
,
NULL
);
if
(
frame
)
{
...
...
drivers/net/wireless/prism54/islpci_mgt.h
View file @
4b743325
...
...
@@ -31,8 +31,6 @@
#define K_DEBUG(f, m, args...) do { if(f & m) printk(KERN_DEBUG args); } while(0)
#define DEBUG(f, args...) K_DEBUG(f, pc_debug, args)
#define TRACE(devname) K_DEBUG(SHOW_TRACING, VERBOSE, "%s: -> " __FUNCTION__ "()\n", devname)
extern
int
pc_debug
;
#define init_wds 0
/* help compiler optimize away dead code */
...
...
drivers/net/wireless/prism54/oid_mgt.c
View file @
4b743325
...
...
@@ -201,7 +201,8 @@ struct oid_t isl_oid[] = {
OID_U32
(
DOT11_OID_STATIMEOUT
,
0x19000000
),
OID_U32_C
(
DOT11_OID_MLMEAUTOLEVEL
,
0x19000001
),
OID_U32
(
DOT11_OID_BSSTIMEOUT
,
0x19000002
),
OID_UNKNOWN
(
DOT11_OID_ATTACHMENT
,
0x19000003
),
[
DOT11_OID_ATTACHMENT
]
=
{
0x19000003
,
0
,
sizeof
(
struct
obj_attachment
),
OID_TYPE_ATTACH
},
OID_STRUCT_C
(
DOT11_OID_PSMBUFFER
,
0x19000004
,
struct
obj_buffer
,
OID_TYPE_BUFFER
),
...
...
@@ -329,6 +330,12 @@ mgt_le_to_cpu(int type, void *data)
mlme
->
size
=
le16_to_cpu
(
mlme
->
size
);
break
;
}
case
OID_TYPE_ATTACH
:{
struct
obj_attachment
*
attach
=
data
;
attach
->
id
=
le16_to_cpu
(
attach
->
id
);
attach
->
size
=
le16_to_cpu
(
attach
->
size
);;
break
;
}
case
OID_TYPE_SSID
:
case
OID_TYPE_KEY
:
case
OID_TYPE_ADDR
:
...
...
@@ -392,6 +399,12 @@ mgt_cpu_to_le(int type, void *data)
mlme
->
size
=
cpu_to_le16
(
mlme
->
size
);
break
;
}
case
OID_TYPE_ATTACH
:{
struct
obj_attachment
*
attach
=
data
;
attach
->
id
=
cpu_to_le16
(
attach
->
id
);
attach
->
size
=
cpu_to_le16
(
attach
->
size
);;
break
;
}
case
OID_TYPE_SSID
:
case
OID_TYPE_KEY
:
case
OID_TYPE_ADDR
:
...
...
@@ -465,6 +478,42 @@ mgt_set_request(islpci_private *priv, enum oid_num_t n, int extra, void *data)
return
ret
;
}
/* None of these are cached */
int
mgt_set_varlen
(
islpci_private
*
priv
,
enum
oid_num_t
n
,
void
*
data
,
int
extra_len
)
{
int
ret
=
0
;
struct
islpci_mgmtframe
*
response
;
int
response_op
=
PIMFOR_OP_ERROR
;
int
dlen
;
u32
oid
;
BUG_ON
(
OID_NUM_LAST
<=
n
);
dlen
=
isl_oid
[
n
].
size
;
oid
=
isl_oid
[
n
].
oid
;
mgt_cpu_to_le
(
isl_oid
[
n
].
flags
&
OID_FLAG_TYPE
,
data
);
if
(
islpci_get_state
(
priv
)
>=
PRV_STATE_READY
)
{
ret
=
islpci_mgt_transaction
(
priv
->
ndev
,
PIMFOR_OP_SET
,
oid
,
data
,
dlen
+
extra_len
,
&
response
);
if
(
!
ret
)
{
response_op
=
response
->
header
->
operation
;
islpci_mgt_release
(
response
);
}
if
(
ret
||
response_op
==
PIMFOR_OP_ERROR
)
ret
=
-
EIO
;
}
else
ret
=
-
EIO
;
/* re-set given data to what it was */
if
(
data
)
mgt_le_to_cpu
(
isl_oid
[
n
].
flags
&
OID_FLAG_TYPE
,
data
);
return
ret
;
}
int
mgt_get_request
(
islpci_private
*
priv
,
enum
oid_num_t
n
,
int
extra
,
void
*
data
,
union
oid_res_t
*
res
)
...
...
@@ -555,15 +604,18 @@ mgt_commit_list(islpci_private *priv, enum oid_num_t *l, int n)
u32
oid
=
t
->
oid
;
BUG_ON
(
data
==
NULL
);
while
(
j
<=
t
->
range
)
{
response
=
NULL
;
ret
|=
islpci_mgt_transaction
(
priv
->
ndev
,
PIMFOR_OP_SET
,
int
r
=
islpci_mgt_transaction
(
priv
->
ndev
,
PIMFOR_OP_SET
,
oid
,
data
,
t
->
size
,
&
response
);
if
(
response
)
{
ret
|=
(
response
->
header
->
operation
==
PIMFOR_OP_ERROR
);
r
|=
(
response
->
header
->
operation
==
PIMFOR_OP_ERROR
);
islpci_mgt_release
(
response
);
}
if
(
r
)
printk
(
KERN_ERR
"%s: mgt_commit_list: failure. "
"oid=%08x err=%d
\n
"
,
priv
->
ndev
->
name
,
oid
,
r
);
ret
|=
r
;
j
++
;
oid
++
;
data
+=
t
->
size
;
...
...
@@ -624,7 +676,7 @@ static enum oid_num_t commit_part2[] = {
static
int
mgt_update_addr
(
islpci_private
*
priv
)
{
struct
islpci_mgmtframe
*
res
=
NULL
;
struct
islpci_mgmtframe
*
res
;
int
ret
;
ret
=
islpci_mgt_transaction
(
priv
->
ndev
,
PIMFOR_OP_GET
,
...
...
@@ -638,26 +690,26 @@ mgt_update_addr(islpci_private *priv)
if
(
res
)
islpci_mgt_release
(
res
);
if
(
ret
)
printk
(
KERN_ERR
"%s: mgt_update_addr: failure
\n
"
,
priv
->
ndev
->
name
);
return
ret
;
}
void
#define VEC_SIZE(a) (sizeof(a)/sizeof(a[0]))
int
mgt_commit
(
islpci_private
*
priv
)
{
int
rvalue
;
u32
u
;
if
(
islpci_get_state
(
priv
)
<
PRV_STATE_INIT
)
return
;
return
0
;
rvalue
=
mgt_commit_list
(
priv
,
commit_part1
,
sizeof
(
commit_part1
)
/
sizeof
(
commit_part1
[
0
]));
rvalue
=
mgt_commit_list
(
priv
,
commit_part1
,
VEC_SIZE
(
commit_part1
));
if
(
priv
->
iw_mode
!=
IW_MODE_MONITOR
)
rvalue
|=
mgt_commit_list
(
priv
,
commit_part2
,
sizeof
(
commit_part2
)
/
sizeof
(
commit_part2
[
0
]));
rvalue
|=
mgt_commit_list
(
priv
,
commit_part2
,
VEC_SIZE
(
commit_part2
));
u
=
OID_INL_MODE
;
rvalue
|=
mgt_commit_list
(
priv
,
&
u
,
1
);
...
...
@@ -666,9 +718,43 @@ mgt_commit(islpci_private *priv)
if
(
rvalue
)
{
/* some request have failed. The device might be in an
incoherent state. We should reset it ! */
printk
(
KERN_DEBUG
"%s: mgt_commit has failed. Restart the "
"device
\n
"
,
priv
->
ndev
->
name
);
printk
(
KERN_DEBUG
"%s: mgt_commit: failure
\n
"
,
priv
->
ndev
->
name
);
}
return
rvalue
;
}
/* The following OIDs need to be "unlatched":
*
* MEDIUMLIMIT,BEACONPERIOD,DTIMPERIOD,ATIMWINDOW,LISTENINTERVAL
* FREQUENCY,EXTENDEDRATES.
*
* The way to do this is to set ESSID. Note though that they may get
* unlatch before though by setting another OID. */
void
mgt_unlatch_all
(
islpci_private
*
priv
)
{
u32
u
;
int
rvalue
=
0
;
if
(
islpci_get_state
(
priv
)
<
PRV_STATE_INIT
)
return
;
u
=
DOT11_OID_SSID
;
rvalue
=
mgt_commit_list
(
priv
,
&
u
,
1
);
/* Necessary if in MANUAL RUN mode? */
#if 0
u = OID_INL_MODE;
rvalue |= mgt_commit_list(priv, &u, 1);
u = DOT11_OID_MLMEAUTOLEVEL;
rvalue |= mgt_commit_list(priv, &u, 1);
u = OID_INL_MODE;
rvalue |= mgt_commit_list(priv, &u, 1);
#endif
if
(
rvalue
)
printk
(
KERN_DEBUG
"%s: Unlatching OIDs failed
\n
"
,
priv
->
ndev
->
name
);
}
/* This will tell you if you are allowed to answer a mlme(ex) request .*/
...
...
@@ -771,6 +857,14 @@ mgt_response_to_str(enum oid_num_t n, union oid_res_t *r, char *str)
mlme
->
state
,
mlme
->
code
,
mlme
->
size
);
}
break
;
case
OID_TYPE_ATTACH
:{
struct
obj_attachment
*
attach
=
r
->
ptr
;
return
snprintf
(
str
,
PRIV_STR_SIZE
,
"id=%d
\n
size=%d
\n
"
,
attach
->
id
,
attach
->
size
);
}
break
;
case
OID_TYPE_SSID
:{
struct
obj_ssid
*
ssid
=
r
->
ptr
;
return
snprintf
(
str
,
PRIV_STR_SIZE
,
...
...
drivers/net/wireless/prism54/oid_mgt.h
View file @
4b743325
...
...
@@ -36,6 +36,8 @@ int channel_of_freq(int);
void
mgt_le_to_cpu
(
int
,
void
*
);
int
mgt_set_request
(
islpci_private
*
,
enum
oid_num_t
,
int
,
void
*
);
int
mgt_set_varlen
(
islpci_private
*
,
enum
oid_num_t
,
void
*
,
int
);
int
mgt_get_request
(
islpci_private
*
,
enum
oid_num_t
,
int
,
void
*
,
union
oid_res_t
*
);
...
...
@@ -46,7 +48,8 @@ void mgt_set(islpci_private *, enum oid_num_t, void *);
void
mgt_get
(
islpci_private
*
,
enum
oid_num_t
,
void
*
);
void
mgt_commit
(
islpci_private
*
);
int
mgt_commit
(
islpci_private
*
);
void
mgt_unlatch_all
(
islpci_private
*
);
int
mgt_mlme_answer
(
islpci_private
*
);
...
...
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