Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
06bada94
Commit
06bada94
authored
Jul 19, 2003
by
Javier Achirica
Committed by
Jeff Garzik
Jul 19, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[wireless airo] Update to wireless extensions 15 (add monitor mode).
parent
a7799faa
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
20 deletions
+40
-20
drivers/net/wireless/airo.c
drivers/net/wireless/airo.c
+40
-20
No files found.
drivers/net/wireless/airo.c
View file @
06bada94
...
...
@@ -3239,18 +3239,21 @@ static int get_dec_u16( char *buffer, int *start, int limit ) {
return
value
;
}
static
int
airo_config_commit
(
struct
net_device
*
dev
,
struct
iw_request_info
*
info
,
void
*
zwrq
,
char
*
extra
);
static
void
proc_config_on_close
(
struct
inode
*
inode
,
struct
file
*
file
)
{
struct
proc_data
*
data
=
file
->
private_data
;
struct
proc_dir_entry
*
dp
=
PDE
(
inode
);
struct
net_device
*
dev
=
dp
->
data
;
struct
airo_info
*
ai
=
dev
->
priv
;
Resp
rsp
;
char
*
line
;
int
need_reset
=
0
;
if
(
!
data
->
writelen
)
return
;
readConfigRid
(
ai
,
1
);
ai
->
need_commit
=
1
;
line
=
data
->
wbuffer
;
while
(
line
[
0
]
)
{
...
...
@@ -3258,7 +3261,7 @@ static void proc_config_on_close( struct inode *inode, struct file *file ) {
if
(
!
strncmp
(
line
,
"Mode: "
,
6
)
)
{
line
+=
6
;
if
((
ai
->
config
.
rmode
&
0xff
)
>=
RXMODE_RFMON
)
need_reset
=
1
;
ai
->
need_commit
=
2
;
ai
->
config
.
rmode
&=
0xfe00
;
ai
->
flags
&=
~
FLAG_802_11
;
ai
->
config
.
opmode
&=
0xFF00
;
...
...
@@ -3436,22 +3439,7 @@ static void proc_config_on_close( struct inode *inode, struct file *file ) {
while
(
line
[
0
]
&&
line
[
0
]
!=
'\n'
)
line
++
;
if
(
line
[
0
]
)
line
++
;
}
disable_MAC
(
ai
,
1
);
if
(
need_reset
)
{
APListRid
APList_rid
;
SsidRid
SSID_rid
;
readAPListRid
(
ai
,
&
APList_rid
);
readSsidRid
(
ai
,
&
SSID_rid
);
reset_airo_card
(
dev
);
disable_MAC
(
ai
,
1
);
writeSsidRid
(
ai
,
&
SSID_rid
);
writeAPListRid
(
ai
,
&
APList_rid
);
}
writeConfigRid
(
ai
,
1
);
enable_MAC
(
ai
,
&
rsp
,
1
);
if
(
need_reset
)
airo_set_promisc
(
ai
);
airo_config_commit
(
dev
,
NULL
,
NULL
,
NULL
);
}
static
char
*
get_rmode
(
u16
mode
)
{
...
...
@@ -4550,28 +4538,47 @@ static int airo_set_mode(struct net_device *dev,
char
*
extra
)
{
struct
airo_info
*
local
=
dev
->
priv
;
int
commit
=
1
;
if
((
local
->
config
.
rmode
&
0xff
)
>=
RXMODE_RFMON
)
commit
=
2
;
switch
(
*
uwrq
)
{
case
IW_MODE_ADHOC
:
local
->
config
.
opmode
&=
0xFF00
;
local
->
config
.
opmode
|=
MODE_STA_IBSS
;
local
->
config
.
rmode
&=
0xfe00
;
local
->
flags
&=
~
FLAG_802_11
;
break
;
case
IW_MODE_INFRA
:
local
->
config
.
opmode
&=
0xFF00
;
local
->
config
.
opmode
|=
MODE_STA_ESS
;
local
->
config
.
rmode
&=
0xfe00
;
local
->
flags
&=
~
FLAG_802_11
;
break
;
case
IW_MODE_MASTER
:
local
->
config
.
opmode
&=
0xFF00
;
local
->
config
.
opmode
|=
MODE_AP
;
local
->
config
.
rmode
&=
0xfe00
;
local
->
flags
&=
~
FLAG_802_11
;
break
;
case
IW_MODE_REPEAT
:
local
->
config
.
opmode
&=
0xFF00
;
local
->
config
.
opmode
|=
MODE_AP_RPTR
;
local
->
config
.
rmode
&=
0xfe00
;
local
->
flags
&=
~
FLAG_802_11
;
break
;
case
IW_MODE_MONITOR
:
local
->
config
.
opmode
&=
0xFF00
;
local
->
config
.
opmode
|=
MODE_STA_ESS
;
local
->
config
.
rmode
&=
0xfe00
;
local
->
config
.
rmode
|=
RXMODE_RFMON
|
RXMODE_DISABLE_802_3_HEADER
;
local
->
flags
|=
FLAG_802_11
;
break
;
default:
return
-
EINVAL
;
}
local
->
need_commit
=
1
;
local
->
need_commit
=
commit
;
return
-
EINPROGRESS
;
/* Call commit handler */
}
...
...
@@ -5423,8 +5430,21 @@ static int airo_config_commit(struct net_device *dev,
/* Some of the "SET" function may have modified some of the
* parameters. It's now time to commit them in the card */
disable_MAC
(
local
,
1
);
if
(
local
->
need_commit
>
1
)
{
APListRid
APList_rid
;
SsidRid
SSID_rid
;
readAPListRid
(
local
,
&
APList_rid
);
readSsidRid
(
local
,
&
SSID_rid
);
reset_airo_card
(
dev
);
disable_MAC
(
local
,
1
);
writeSsidRid
(
local
,
&
SSID_rid
);
writeAPListRid
(
local
,
&
APList_rid
);
}
writeConfigRid
(
local
,
1
);
enable_MAC
(
local
,
&
rsp
,
1
);
if
(
local
->
need_commit
>
1
)
airo_set_promisc
(
local
);
return
0
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment