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
8935f39e
Commit
8935f39e
authored
Oct 05, 2005
by
James Ketrenos
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed legacy WIRELESS_EXT checks from ipw2200.c
Signed-off-by:
James Ketrenos
<
jketreno@linux.intel.com
>
parent
97a78ca9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
1 addition
and
507 deletions
+1
-507
drivers/net/wireless/ipw2200.c
drivers/net/wireless/ipw2200.c
+1
-507
No files found.
drivers/net/wireless/ipw2200.c
View file @
8935f39e
...
...
@@ -6159,70 +6159,6 @@ static void ipw_bg_abort_scan(void *data)
up
(
&
priv
->
sem
);
}
#if WIRELESS_EXT < 18
/* Support for wpa_supplicant before WE-18, deprecated. */
/* following definitions must match definitions in driver_ipw.c */
#define IPW_IOCTL_WPA_SUPPLICANT SIOCIWFIRSTPRIV+30
#define IPW_CMD_SET_WPA_PARAM 1
#define IPW_CMD_SET_WPA_IE 2
#define IPW_CMD_SET_ENCRYPTION 3
#define IPW_CMD_MLME 4
#define IPW_PARAM_WPA_ENABLED 1
#define IPW_PARAM_TKIP_COUNTERMEASURES 2
#define IPW_PARAM_DROP_UNENCRYPTED 3
#define IPW_PARAM_PRIVACY_INVOKED 4
#define IPW_PARAM_AUTH_ALGS 5
#define IPW_PARAM_IEEE_802_1X 6
#define IPW_MLME_STA_DEAUTH 1
#define IPW_MLME_STA_DISASSOC 2
#define IPW_CRYPT_ERR_UNKNOWN_ALG 2
#define IPW_CRYPT_ERR_UNKNOWN_ADDR 3
#define IPW_CRYPT_ERR_CRYPT_INIT_FAILED 4
#define IPW_CRYPT_ERR_KEY_SET_FAILED 5
#define IPW_CRYPT_ERR_TX_KEY_SET_FAILED 6
#define IPW_CRYPT_ERR_CARD_CONF_FAILED 7
#define IPW_CRYPT_ALG_NAME_LEN 16
struct
ipw_param
{
u32
cmd
;
u8
sta_addr
[
ETH_ALEN
];
union
{
struct
{
u8
name
;
u32
value
;
}
wpa_param
;
struct
{
u32
len
;
u8
reserved
[
32
];
u8
data
[
0
];
}
wpa_ie
;
struct
{
u32
command
;
u32
reason_code
;
}
mlme
;
struct
{
u8
alg
[
IPW_CRYPT_ALG_NAME_LEN
];
u8
set_tx
;
u32
err
;
u8
idx
;
u8
seq
[
8
];
/* sequence counter (set: RX, get: TX) */
u16
key_len
;
u8
key
[
0
];
}
crypt
;
}
u
;
};
/* end of driver_ipw.c code */
#endif
static
int
ipw_wpa_enable
(
struct
ipw_priv
*
priv
,
int
value
)
{
/* This is called when wpa_supplicant loads and closes the driver
...
...
@@ -6231,11 +6167,6 @@ static int ipw_wpa_enable(struct ipw_priv *priv, int value)
return
0
;
}
#if WIRELESS_EXT < 18
#define IW_AUTH_ALG_OPEN_SYSTEM 0x1
#define IW_AUTH_ALG_SHARED_KEY 0x2
#endif
static
int
ipw_wpa_set_auth_algs
(
struct
ipw_priv
*
priv
,
int
value
)
{
struct
ieee80211_device
*
ieee
=
priv
->
ieee
;
...
...
@@ -6283,416 +6214,6 @@ static int ipw_set_rsn_capa(struct ipw_priv *priv,
return
ipw_send_cmd
(
priv
,
&
cmd
);
}
#if WIRELESS_EXT < 18
static
int
ipw_wpa_set_param
(
struct
net_device
*
dev
,
u8
name
,
u32
value
)
{
struct
ipw_priv
*
priv
=
ieee80211_priv
(
dev
);
struct
ieee80211_crypt_data
*
crypt
;
unsigned
long
flags
;
int
ret
=
0
;
switch
(
name
)
{
case
IPW_PARAM_WPA_ENABLED
:
ret
=
ipw_wpa_enable
(
priv
,
value
);
break
;
case
IPW_PARAM_TKIP_COUNTERMEASURES
:
crypt
=
priv
->
ieee
->
crypt
[
priv
->
ieee
->
tx_keyidx
];
if
(
!
crypt
||
!
crypt
->
ops
->
set_flags
||
!
crypt
->
ops
->
get_flags
)
{
IPW_WARNING
(
"Can't set TKIP countermeasures: "
"crypt not set!
\n
"
);
break
;
}
flags
=
crypt
->
ops
->
get_flags
(
crypt
->
priv
);
if
(
value
)
flags
|=
IEEE80211_CRYPTO_TKIP_COUNTERMEASURES
;
else
flags
&=
~
IEEE80211_CRYPTO_TKIP_COUNTERMEASURES
;
crypt
->
ops
->
set_flags
(
flags
,
crypt
->
priv
);
break
;
case
IPW_PARAM_DROP_UNENCRYPTED
:{
/* HACK:
*
* wpa_supplicant calls set_wpa_enabled when the driver
* is loaded and unloaded, regardless of if WPA is being
* used. No other calls are made which can be used to
* determine if encryption will be used or not prior to
* association being expected. If encryption is not being
* used, drop_unencrypted is set to false, else true -- we
* can use this to determine if the CAP_PRIVACY_ON bit should
* be set.
*/
struct
ieee80211_security
sec
=
{
.
flags
=
SEC_ENABLED
,
.
enabled
=
value
,
};
priv
->
ieee
->
drop_unencrypted
=
value
;
/* We only change SEC_LEVEL for open mode. Others
* are set by ipw_wpa_set_encryption.
*/
if
(
!
value
)
{
sec
.
flags
|=
SEC_LEVEL
;
sec
.
level
=
SEC_LEVEL_0
;
}
else
{
sec
.
flags
|=
SEC_LEVEL
;
sec
.
level
=
SEC_LEVEL_1
;
}
if
(
priv
->
ieee
->
set_security
)
priv
->
ieee
->
set_security
(
priv
->
ieee
->
dev
,
&
sec
);
break
;
}
case
IPW_PARAM_PRIVACY_INVOKED
:
priv
->
ieee
->
privacy_invoked
=
value
;
break
;
case
IPW_PARAM_AUTH_ALGS
:
ret
=
ipw_wpa_set_auth_algs
(
priv
,
value
);
break
;
case
IPW_PARAM_IEEE_802_1X
:
priv
->
ieee
->
ieee802_1x
=
value
;
break
;
default:
IPW_ERROR
(
"%s: Unknown WPA param: %d
\n
"
,
dev
->
name
,
name
);
ret
=
-
EOPNOTSUPP
;
}
return
ret
;
}
static
int
ipw_wpa_mlme
(
struct
net_device
*
dev
,
int
command
,
int
reason
)
{
struct
ipw_priv
*
priv
=
ieee80211_priv
(
dev
);
int
ret
=
0
;
switch
(
command
)
{
case
IPW_MLME_STA_DEAUTH
:
// silently ignore
break
;
case
IPW_MLME_STA_DISASSOC
:
ipw_disassociate
(
priv
);
break
;
default:
IPW_ERROR
(
"%s: Unknown MLME request: %d
\n
"
,
dev
->
name
,
command
);
ret
=
-
EOPNOTSUPP
;
}
return
ret
;
}
static
int
ipw_wpa_ie_cipher2level
(
u8
cipher
)
{
switch
(
cipher
)
{
case
4
:
/* CCMP */
return
SEC_LEVEL_3
;
case
2
:
/* TKIP */
return
SEC_LEVEL_2
;
case
5
:
/* WEP104 */
case
1
:
/* WEP40 */
return
SEC_LEVEL_1
;
case
0
:
/* NONE */
return
SEC_LEVEL_0
;
default:
return
-
1
;
}
}
static
int
ipw_wpa_set_wpa_ie
(
struct
net_device
*
dev
,
struct
ipw_param
*
param
,
int
plen
)
{
struct
ipw_priv
*
priv
=
ieee80211_priv
(
dev
);
struct
ieee80211_device
*
ieee
=
priv
->
ieee
;
u8
*
buf
;
u8
*
ptk
,
*
gtk
;
int
level
;
if
(
param
->
u
.
wpa_ie
.
len
>
MAX_WPA_IE_LEN
||
(
param
->
u
.
wpa_ie
.
len
&&
param
->
u
.
wpa_ie
.
data
==
NULL
))
return
-
EINVAL
;
if
(
param
->
u
.
wpa_ie
.
len
)
{
buf
=
kmalloc
(
param
->
u
.
wpa_ie
.
len
,
GFP_KERNEL
);
if
(
buf
==
NULL
)
return
-
ENOMEM
;
memcpy
(
buf
,
param
->
u
.
wpa_ie
.
data
,
param
->
u
.
wpa_ie
.
len
);
kfree
(
ieee
->
wpa_ie
);
ieee
->
wpa_ie
=
buf
;
ieee
->
wpa_ie_len
=
param
->
u
.
wpa_ie
.
len
;
}
else
{
kfree
(
ieee
->
wpa_ie
);
ieee
->
wpa_ie
=
NULL
;
ieee
->
wpa_ie_len
=
0
;
goto
done
;
}
if
(
priv
->
ieee
->
host_encrypt
)
goto
done
;
/* HACK: Parse wpa_ie here to get pairwise suite, otherwise
* we need to change driver_ipw.c from wpa_supplicant. This
* is OK since -Dipw is deprecated. The -Dwext driver has a
* clean way to handle this. */
gtk
=
ptk
=
(
u8
*
)
ieee
->
wpa_ie
;
if
(
ieee
->
wpa_ie
[
0
]
==
0x30
)
{
/* RSN IE */
gtk
+=
4
+
3
;
ptk
+=
4
+
4
+
2
+
3
;
}
else
{
/* WPA IE */
gtk
+=
8
+
3
;
ptk
+=
8
+
4
+
2
+
3
;
}
if
(
ptk
-
(
u8
*
)
ieee
->
wpa_ie
>
ieee
->
wpa_ie_len
)
return
-
EINVAL
;
level
=
ipw_wpa_ie_cipher2level
(
*
gtk
);
ipw_set_hw_decrypt_multicast
(
priv
,
level
);
level
=
ipw_wpa_ie_cipher2level
(
*
ptk
);
ipw_set_hw_decrypt_unicast
(
priv
,
level
);
done:
ipw_wpa_assoc_frame
(
priv
,
ieee
->
wpa_ie
,
ieee
->
wpa_ie_len
);
return
0
;
}
/* implementation borrowed from hostap driver */
static
int
ipw_wpa_set_encryption
(
struct
net_device
*
dev
,
struct
ipw_param
*
param
,
int
param_len
)
{
int
ret
=
0
;
int
group_key
=
0
;
struct
ipw_priv
*
priv
=
ieee80211_priv
(
dev
);
struct
ieee80211_device
*
ieee
=
priv
->
ieee
;
struct
ieee80211_crypto_ops
*
ops
;
struct
ieee80211_crypt_data
**
crypt
;
struct
ieee80211_security
sec
=
{
.
flags
=
0
,
};
param
->
u
.
crypt
.
err
=
0
;
param
->
u
.
crypt
.
alg
[
IPW_CRYPT_ALG_NAME_LEN
-
1
]
=
'\0'
;
if
(
param_len
!=
(
int
)((
char
*
)
param
->
u
.
crypt
.
key
-
(
char
*
)
param
)
+
param
->
u
.
crypt
.
key_len
)
{
IPW_DEBUG_INFO
(
"Len mismatch %d, %d
\n
"
,
param_len
,
param
->
u
.
crypt
.
key_len
);
return
-
EINVAL
;
}
if
(
param
->
sta_addr
[
0
]
==
0xff
&&
param
->
sta_addr
[
1
]
==
0xff
&&
param
->
sta_addr
[
2
]
==
0xff
&&
param
->
sta_addr
[
3
]
==
0xff
&&
param
->
sta_addr
[
4
]
==
0xff
&&
param
->
sta_addr
[
5
]
==
0xff
)
{
if
(
param
->
u
.
crypt
.
idx
>=
WEP_KEYS
)
return
-
EINVAL
;
crypt
=
&
ieee
->
crypt
[
param
->
u
.
crypt
.
idx
];
}
else
{
return
-
EINVAL
;
}
if
(
param
->
u
.
crypt
.
idx
!=
0
)
group_key
=
1
;
sec
.
flags
|=
SEC_ENABLED
|
SEC_ENCRYPT
;
if
(
strcmp
(
param
->
u
.
crypt
.
alg
,
"none"
)
==
0
)
{
if
(
crypt
)
{
sec
.
enabled
=
0
;
sec
.
encrypt
=
0
;
sec
.
level
=
SEC_LEVEL_0
;
sec
.
flags
|=
SEC_LEVEL
;
ieee80211_crypt_delayed_deinit
(
ieee
,
crypt
);
}
goto
done
;
}
sec
.
enabled
=
1
;
sec
.
encrypt
=
1
;
/* IPW HW cannot build TKIP MIC, host decryption still needed. */
if
(
strcmp
(
param
->
u
.
crypt
.
alg
,
"TKIP"
)
==
0
)
{
if
(
group_key
)
ieee
->
host_mc_decrypt
=
1
;
else
ieee
->
host_encrypt_msdu
=
1
;
}
/*if (!(ieee->host_encrypt || ieee->host_encrypt_msdu ||
ieee->host_decrypt))
goto skip_host_crypt; */
if
(
group_key
?
!
ieee
->
host_mc_decrypt
:
!
(
ieee
->
host_encrypt
||
ieee
->
host_decrypt
||
ieee
->
host_encrypt_msdu
))
goto
skip_host_crypt
;
ops
=
ieee80211_get_crypto_ops
(
param
->
u
.
crypt
.
alg
);
if
(
ops
==
NULL
&&
strcmp
(
param
->
u
.
crypt
.
alg
,
"WEP"
)
==
0
)
{
request_module
(
"ieee80211_crypt_wep"
);
ops
=
ieee80211_get_crypto_ops
(
param
->
u
.
crypt
.
alg
);
}
else
if
(
ops
==
NULL
&&
strcmp
(
param
->
u
.
crypt
.
alg
,
"TKIP"
)
==
0
)
{
request_module
(
"ieee80211_crypt_tkip"
);
ops
=
ieee80211_get_crypto_ops
(
param
->
u
.
crypt
.
alg
);
}
else
if
(
ops
==
NULL
&&
strcmp
(
param
->
u
.
crypt
.
alg
,
"CCMP"
)
==
0
)
{
request_module
(
"ieee80211_crypt_ccmp"
);
ops
=
ieee80211_get_crypto_ops
(
param
->
u
.
crypt
.
alg
);
}
if
(
ops
==
NULL
)
{
IPW_DEBUG_INFO
(
"%s: unknown crypto alg '%s'
\n
"
,
dev
->
name
,
param
->
u
.
crypt
.
alg
);
param
->
u
.
crypt
.
err
=
IPW_CRYPT_ERR_UNKNOWN_ALG
;
ret
=
-
EINVAL
;
goto
done
;
}
if
(
*
crypt
==
NULL
||
(
*
crypt
)
->
ops
!=
ops
)
{
struct
ieee80211_crypt_data
*
new_crypt
;
ieee80211_crypt_delayed_deinit
(
ieee
,
crypt
);
new_crypt
=
(
struct
ieee80211_crypt_data
*
)
kmalloc
(
sizeof
(
*
new_crypt
),
GFP_KERNEL
);
if
(
new_crypt
==
NULL
)
{
ret
=
-
ENOMEM
;
goto
done
;
}
memset
(
new_crypt
,
0
,
sizeof
(
struct
ieee80211_crypt_data
));
new_crypt
->
ops
=
ops
;
if
(
new_crypt
->
ops
&&
try_module_get
(
new_crypt
->
ops
->
owner
))
new_crypt
->
priv
=
new_crypt
->
ops
->
init
(
param
->
u
.
crypt
.
idx
);
if
(
new_crypt
->
priv
==
NULL
)
{
kfree
(
new_crypt
);
param
->
u
.
crypt
.
err
=
IPW_CRYPT_ERR_CRYPT_INIT_FAILED
;
ret
=
-
EINVAL
;
goto
done
;
}
*
crypt
=
new_crypt
;
}
if
(
param
->
u
.
crypt
.
key_len
>
0
&&
(
*
crypt
)
->
ops
->
set_key
&&
(
*
crypt
)
->
ops
->
set_key
(
param
->
u
.
crypt
.
key
,
param
->
u
.
crypt
.
key_len
,
param
->
u
.
crypt
.
seq
,
(
*
crypt
)
->
priv
)
<
0
)
{
IPW_DEBUG_INFO
(
"%s: key setting failed
\n
"
,
dev
->
name
);
param
->
u
.
crypt
.
err
=
IPW_CRYPT_ERR_KEY_SET_FAILED
;
ret
=
-
EINVAL
;
goto
done
;
}
skip_host_crypt:
if
(
param
->
u
.
crypt
.
set_tx
)
{
ieee
->
tx_keyidx
=
param
->
u
.
crypt
.
idx
;
sec
.
active_key
=
param
->
u
.
crypt
.
idx
;
sec
.
flags
|=
SEC_ACTIVE_KEY
;
}
else
sec
.
flags
&=
~
SEC_ACTIVE_KEY
;
if
(
param
->
u
.
crypt
.
alg
!=
NULL
)
{
memcpy
(
sec
.
keys
[
param
->
u
.
crypt
.
idx
],
param
->
u
.
crypt
.
key
,
param
->
u
.
crypt
.
key_len
);
sec
.
key_sizes
[
param
->
u
.
crypt
.
idx
]
=
param
->
u
.
crypt
.
key_len
;
sec
.
flags
|=
(
1
<<
param
->
u
.
crypt
.
idx
);
if
(
strcmp
(
param
->
u
.
crypt
.
alg
,
"WEP"
)
==
0
)
{
sec
.
flags
|=
SEC_LEVEL
;
sec
.
level
=
SEC_LEVEL_1
;
}
else
if
(
strcmp
(
param
->
u
.
crypt
.
alg
,
"TKIP"
)
==
0
)
{
sec
.
flags
|=
SEC_LEVEL
;
sec
.
level
=
SEC_LEVEL_2
;
}
else
if
(
strcmp
(
param
->
u
.
crypt
.
alg
,
"CCMP"
)
==
0
)
{
sec
.
flags
|=
SEC_LEVEL
;
sec
.
level
=
SEC_LEVEL_3
;
}
/* Don't set sec level for group keys. */
if
(
group_key
)
sec
.
flags
&=
~
SEC_LEVEL
;
}
done:
if
(
ieee
->
set_security
)
ieee
->
set_security
(
ieee
->
dev
,
&
sec
);
/* Do not reset port if card is in Managed mode since resetting will
* generate new IEEE 802.11 authentication which may end up in looping
* with IEEE 802.1X. If your hardware requires a reset after WEP
* configuration (for example... Prism2), implement the reset_port in
* the callbacks structures used to initialize the 802.11 stack. */
if
(
ieee
->
reset_on_keychange
&&
ieee
->
iw_mode
!=
IW_MODE_INFRA
&&
ieee
->
reset_port
&&
ieee
->
reset_port
(
dev
))
{
IPW_DEBUG_INFO
(
"%s: reset_port failed
\n
"
,
dev
->
name
);
param
->
u
.
crypt
.
err
=
IPW_CRYPT_ERR_CARD_CONF_FAILED
;
return
-
EINVAL
;
}
return
ret
;
}
static
int
ipw_wpa_supplicant
(
struct
net_device
*
dev
,
struct
iw_point
*
p
)
{
struct
ipw_param
*
param
;
struct
ipw_priv
*
priv
=
ieee80211_priv
(
dev
);
int
ret
=
0
;
IPW_DEBUG_INFO
(
"wpa_supplicant: len=%d
\n
"
,
p
->
length
);
if
(
p
->
length
<
sizeof
(
struct
ipw_param
)
||
!
p
->
pointer
)
return
-
EINVAL
;
param
=
(
struct
ipw_param
*
)
kmalloc
(
p
->
length
,
GFP_KERNEL
);
if
(
param
==
NULL
)
return
-
ENOMEM
;
if
(
copy_from_user
(
param
,
p
->
pointer
,
p
->
length
))
{
kfree
(
param
);
return
-
EFAULT
;
}
down
(
&
priv
->
sem
);
switch
(
param
->
cmd
)
{
case
IPW_CMD_SET_WPA_PARAM
:
ret
=
ipw_wpa_set_param
(
dev
,
param
->
u
.
wpa_param
.
name
,
param
->
u
.
wpa_param
.
value
);
break
;
case
IPW_CMD_SET_WPA_IE
:
ret
=
ipw_wpa_set_wpa_ie
(
dev
,
param
,
p
->
length
);
break
;
case
IPW_CMD_SET_ENCRYPTION
:
ret
=
ipw_wpa_set_encryption
(
dev
,
param
,
p
->
length
);
break
;
case
IPW_CMD_MLME
:
ret
=
ipw_wpa_mlme
(
dev
,
param
->
u
.
mlme
.
command
,
param
->
u
.
mlme
.
reason_code
);
break
;
default:
IPW_ERROR
(
"%s: Unknown WPA supplicant request: %d
\n
"
,
dev
->
name
,
param
->
cmd
);
ret
=
-
EOPNOTSUPP
;
}
up
(
&
priv
->
sem
);
if
(
ret
==
0
&&
copy_to_user
(
p
->
pointer
,
param
,
p
->
length
))
ret
=
-
EFAULT
;
kfree
(
param
);
return
ret
;
}
#else
/*
* WE-18 support
*/
...
...
@@ -7021,7 +6542,6 @@ static int ipw_wx_set_mlme(struct net_device *dev,
}
return
0
;
}
#endif
#ifdef CONFIG_IPW_QOS
...
...
@@ -9391,7 +8911,6 @@ static int ipw_wx_get_retry(struct net_device *dev,
return
0
;
}
#if WIRELESS_EXT > 17
static
int
ipw_request_direct_scan
(
struct
ipw_priv
*
priv
,
char
*
essid
,
int
essid_len
)
{
...
...
@@ -9455,14 +8974,12 @@ static int ipw_request_direct_scan(struct ipw_priv *priv, char *essid,
up
(
&
priv
->
sem
);
return
err
;
}
#endif
/* WIRELESS_EXT > 17 */
static
int
ipw_wx_set_scan
(
struct
net_device
*
dev
,
struct
iw_request_info
*
info
,
union
iwreq_data
*
wrqu
,
char
*
extra
)
{
struct
ipw_priv
*
priv
=
ieee80211_priv
(
dev
);
#if WIRELESS_EXT > 17
struct
iw_scan_req
*
req
=
NULL
;
if
(
wrqu
->
data
.
length
&&
wrqu
->
data
.
length
==
sizeof
(
struct
iw_scan_req
))
{
...
...
@@ -9473,7 +8990,7 @@ static int ipw_wx_set_scan(struct net_device *dev,
return
0
;
}
}
#endif
IPW_DEBUG_WX
(
"Start scan
\n
"
);
queue_work
(
priv
->
workqueue
,
&
priv
->
request_scan
);
...
...
@@ -9923,7 +9440,6 @@ static iw_handler ipw_wx_handlers[] = {
IW_IOCTL
(
SIOCGIWSPY
)
=
iw_handler_get_spy
,
IW_IOCTL
(
SIOCSIWTHRSPY
)
=
iw_handler_set_thrspy
,
IW_IOCTL
(
SIOCGIWTHRSPY
)
=
iw_handler_get_thrspy
,
#if WIRELESS_EXT > 17
IW_IOCTL
(
SIOCSIWGENIE
)
=
ipw_wx_set_genie
,
IW_IOCTL
(
SIOCGIWGENIE
)
=
ipw_wx_get_genie
,
IW_IOCTL
(
SIOCSIWMLME
)
=
ipw_wx_set_mlme
,
...
...
@@ -9931,7 +9447,6 @@ static iw_handler ipw_wx_handlers[] = {
IW_IOCTL
(
SIOCGIWAUTH
)
=
ipw_wx_get_auth
,
IW_IOCTL
(
SIOCSIWENCODEEXT
)
=
ipw_wx_set_encodeext
,
IW_IOCTL
(
SIOCGIWENCODEEXT
)
=
ipw_wx_get_encodeext
,
#endif
};
enum
{
...
...
@@ -11317,24 +10832,6 @@ static void ipw_bg_down(void *data)
up
(
&
priv
->
sem
);
}
#if WIRELESS_EXT < 18
static
int
ipw_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
{
struct
iwreq
*
wrq
=
(
struct
iwreq
*
)
rq
;
int
ret
=
-
1
;
switch
(
cmd
)
{
case
IPW_IOCTL_WPA_SUPPLICANT
:
ret
=
ipw_wpa_supplicant
(
dev
,
&
wrq
->
u
.
data
);
return
ret
;
default:
return
-
EOPNOTSUPP
;
}
return
-
EOPNOTSUPP
;
}
#endif
/* Called by register_netdev() */
static
int
ipw_net_init
(
struct
net_device
*
dev
)
{
...
...
@@ -11512,9 +11009,6 @@ static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
net_dev
->
open
=
ipw_net_open
;
net_dev
->
stop
=
ipw_net_stop
;
net_dev
->
init
=
ipw_net_init
;
#if WIRELESS_EXT < 18
net_dev
->
do_ioctl
=
ipw_ioctl
;
#endif
net_dev
->
get_stats
=
ipw_net_get_stats
;
net_dev
->
set_multicast_list
=
ipw_net_set_multicast_list
;
net_dev
->
set_mac_address
=
ipw_net_set_mac_address
;
...
...
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