Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci-2.6.23
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci-2.6.23
Commits
2ecc26b8
Commit
2ecc26b8
authored
Nov 11, 2005
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'atmel'
parents
6af37fa9
b16a228d
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
94 additions
and
178 deletions
+94
-178
drivers/net/wireless/Kconfig
drivers/net/wireless/Kconfig
+1
-1
drivers/net/wireless/atmel.c
drivers/net/wireless/atmel.c
+43
-45
drivers/net/wireless/atmel.h
drivers/net/wireless/atmel.h
+2
-2
drivers/net/wireless/atmel_cs.c
drivers/net/wireless/atmel_cs.c
+47
-129
drivers/net/wireless/atmel_pci.c
drivers/net/wireless/atmel_pci.c
+1
-1
No files found.
drivers/net/wireless/Kconfig
View file @
2ecc26b8
...
@@ -330,7 +330,7 @@ config PCI_HERMES
...
@@ -330,7 +330,7 @@ config PCI_HERMES
config ATMEL
config ATMEL
tristate "Atmel at76c50x chipset 802.11b support"
tristate "Atmel at76c50x chipset 802.11b support"
depends on NET_RADIO
&& EXPERIMENTAL
depends on NET_RADIO
select FW_LOADER
select FW_LOADER
select CRC32
select CRC32
---help---
---help---
...
...
drivers/net/wireless/atmel.c
View file @
2ecc26b8
...
@@ -72,7 +72,7 @@
...
@@ -72,7 +72,7 @@
#include "atmel.h"
#include "atmel.h"
#define DRIVER_MAJOR 0
#define DRIVER_MAJOR 0
#define DRIVER_MINOR 9
6
#define DRIVER_MINOR 9
8
MODULE_AUTHOR
(
"Simon Kelley"
);
MODULE_AUTHOR
(
"Simon Kelley"
);
MODULE_DESCRIPTION
(
"Support for Atmel at76c50x 802.11 wireless ethernet cards."
);
MODULE_DESCRIPTION
(
"Support for Atmel at76c50x 802.11 wireless ethernet cards."
);
...
@@ -1504,7 +1504,7 @@ static int atmel_read_proc(char *page, char **start, off_t off,
...
@@ -1504,7 +1504,7 @@ static int atmel_read_proc(char *page, char **start, off_t off,
return
len
;
return
len
;
}
}
struct
net_device
*
init_atmel_card
(
unsigned
short
irq
,
int
port
,
const
AtmelFWType
fw_type
,
struct
net_device
*
init_atmel_card
(
unsigned
short
irq
,
unsigned
long
port
,
const
AtmelFWType
fw_type
,
struct
device
*
sys_dev
,
int
(
*
card_present
)(
void
*
),
void
*
card
)
struct
device
*
sys_dev
,
int
(
*
card_present
)(
void
*
),
void
*
card
)
{
{
struct
net_device
*
dev
;
struct
net_device
*
dev
;
...
@@ -1605,8 +1605,8 @@ struct net_device *init_atmel_card( unsigned short irq, int port, const AtmelFWT
...
@@ -1605,8 +1605,8 @@ struct net_device *init_atmel_card( unsigned short irq, int port, const AtmelFWT
goto
err_out_free
;
goto
err_out_free
;
}
}
if
(
priv
->
bus_type
==
BUS_TYPE_PCI
&&
if
(
!
request_region
(
dev
->
base_addr
,
32
,
!
request_region
(
dev
->
base_addr
,
64
,
dev
->
name
))
{
priv
->
bus_type
==
BUS_TYPE_PCCARD
?
"atmel_cs"
:
"atmel_pci"
))
{
goto
err_out_irq
;
goto
err_out_irq
;
}
}
...
@@ -1622,15 +1622,16 @@ struct net_device *init_atmel_card( unsigned short irq, int port, const AtmelFWT
...
@@ -1622,15 +1622,16 @@ struct net_device *init_atmel_card( unsigned short irq, int port, const AtmelFWT
create_proc_read_entry
(
"driver/atmel"
,
0
,
NULL
,
atmel_read_proc
,
priv
);
create_proc_read_entry
(
"driver/atmel"
,
0
,
NULL
,
atmel_read_proc
,
priv
);
printk
(
KERN_INFO
"%s: Atmel at76c50x wireless. Version %d.%d simon@thekelleys.org.uk
\n
"
,
printk
(
KERN_INFO
"%s: Atmel at76c50x. Version %d.%d. MAC %.2x:%.2x:%.2x:%.2x:%.2x:%.2x
\n
"
,
dev
->
name
,
DRIVER_MAJOR
,
DRIVER_MINOR
);
dev
->
name
,
DRIVER_MAJOR
,
DRIVER_MINOR
,
dev
->
dev_addr
[
0
],
dev
->
dev_addr
[
1
],
dev
->
dev_addr
[
2
],
dev
->
dev_addr
[
3
],
dev
->
dev_addr
[
4
],
dev
->
dev_addr
[
5
]
);
SET_MODULE_OWNER
(
dev
);
SET_MODULE_OWNER
(
dev
);
return
dev
;
return
dev
;
err_out_res:
err_out_res:
if
(
priv
->
bus_type
==
BUS_TYPE_PCI
)
release_region
(
dev
->
base_addr
,
32
);
release_region
(
dev
->
base_addr
,
64
);
err_out_irq:
err_out_irq:
free_irq
(
dev
->
irq
,
dev
);
free_irq
(
dev
->
irq
,
dev
);
err_out_free:
err_out_free:
...
@@ -1640,7 +1641,7 @@ struct net_device *init_atmel_card( unsigned short irq, int port, const AtmelFWT
...
@@ -1640,7 +1641,7 @@ struct net_device *init_atmel_card( unsigned short irq, int port, const AtmelFWT
EXPORT_SYMBOL
(
init_atmel_card
);
EXPORT_SYMBOL
(
init_atmel_card
);
void
stop_atmel_card
(
struct
net_device
*
dev
,
int
freeres
)
void
stop_atmel_card
(
struct
net_device
*
dev
)
{
{
struct
atmel_private
*
priv
=
netdev_priv
(
dev
);
struct
atmel_private
*
priv
=
netdev_priv
(
dev
);
...
@@ -1654,10 +1655,7 @@ void stop_atmel_card(struct net_device *dev, int freeres)
...
@@ -1654,10 +1655,7 @@ void stop_atmel_card(struct net_device *dev, int freeres)
remove_proc_entry
(
"driver/atmel"
,
NULL
);
remove_proc_entry
(
"driver/atmel"
,
NULL
);
free_irq
(
dev
->
irq
,
dev
);
free_irq
(
dev
->
irq
,
dev
);
kfree
(
priv
->
firmware
);
kfree
(
priv
->
firmware
);
if
(
freeres
)
{
release_region
(
dev
->
base_addr
,
32
);
/* PCMCIA frees this stuff, so only for PCI */
release_region
(
dev
->
base_addr
,
64
);
}
free_netdev
(
dev
);
free_netdev
(
dev
);
}
}
...
@@ -1810,9 +1808,9 @@ static int atmel_set_encode(struct net_device *dev,
...
@@ -1810,9 +1808,9 @@ static int atmel_set_encode(struct net_device *dev,
}
}
if
(
dwrq
->
flags
&
IW_ENCODE_RESTRICTED
)
if
(
dwrq
->
flags
&
IW_ENCODE_RESTRICTED
)
priv
->
exclude_unencrypted
=
1
;
priv
->
exclude_unencrypted
=
1
;
if
(
dwrq
->
flags
&
IW_ENCODE_OPEN
)
if
(
dwrq
->
flags
&
IW_ENCODE_OPEN
)
priv
->
exclude_unencrypted
=
0
;
priv
->
exclude_unencrypted
=
0
;
return
-
EINPROGRESS
;
/* Call commit handler */
return
-
EINPROGRESS
;
/* Call commit handler */
}
}
...
@@ -1827,11 +1825,12 @@ static int atmel_get_encode(struct net_device *dev,
...
@@ -1827,11 +1825,12 @@ static int atmel_get_encode(struct net_device *dev,
if
(
!
priv
->
wep_is_on
)
if
(
!
priv
->
wep_is_on
)
dwrq
->
flags
=
IW_ENCODE_DISABLED
;
dwrq
->
flags
=
IW_ENCODE_DISABLED
;
else
if
(
priv
->
exclude_unencrypted
)
else
{
dwrq
->
flags
=
IW_ENCODE_RESTRICTED
;
if
(
priv
->
exclude_unencrypted
)
else
dwrq
->
flags
=
IW_ENCODE_RESTRICTED
;
dwrq
->
flags
=
IW_ENCODE_OPEN
;
else
dwrq
->
flags
=
IW_ENCODE_OPEN
;
}
/* Which key do we want ? -1 -> tx index */
/* Which key do we want ? -1 -> tx index */
if
(
index
<
0
||
index
>=
4
)
if
(
index
<
0
||
index
>=
4
)
index
=
priv
->
default_key
;
index
=
priv
->
default_key
;
...
@@ -2645,8 +2644,8 @@ static void handle_beacon_probe(struct atmel_private *priv, u16 capability, u8 c
...
@@ -2645,8 +2644,8 @@ static void handle_beacon_probe(struct atmel_private *priv, u16 capability, u8 c
}
}
}
}
static
void
send_authentication_request
(
struct
atmel_private
*
priv
,
u8
*
challenge
,
int
challenge_len
)
static
void
send_authentication_request
(
struct
atmel_private
*
priv
,
u
16
system
,
u
8
*
challenge
,
int
challenge_len
)
{
{
struct
ieee80211_hdr_4addr
header
;
struct
ieee80211_hdr_4addr
header
;
struct
auth_body
auth
;
struct
auth_body
auth
;
...
@@ -2658,14 +2657,11 @@ static void send_authentication_request(struct atmel_private *priv, u8 *challeng
...
@@ -2658,14 +2657,11 @@ static void send_authentication_request(struct atmel_private *priv, u8 *challeng
memcpy
(
header
.
addr2
,
priv
->
dev
->
dev_addr
,
6
);
memcpy
(
header
.
addr2
,
priv
->
dev
->
dev_addr
,
6
);
memcpy
(
header
.
addr3
,
priv
->
CurrentBSSID
,
6
);
memcpy
(
header
.
addr3
,
priv
->
CurrentBSSID
,
6
);
if
(
priv
->
wep_is_on
)
{
if
(
priv
->
wep_is_on
&&
priv
->
CurrentAuthentTransactionSeqNum
!=
1
)
auth
.
alg
=
cpu_to_le16
(
C80211_MGMT_AAN_SHAREDKEY
);
/* no WEP for authentication frames with TrSeqNo 1 */
/* no WEP for authentication frames with TrSeqNo 1 */
if
(
priv
->
CurrentAuthentTransactionSeqNum
!=
1
)
header
.
frame_ctl
|=
cpu_to_le16
(
IEEE80211_FCTL_PROTECTED
);
header
.
frame_ctl
|=
cpu_to_le16
(
IEEE80211_FCTL_PROTECTED
);
}
else
{
auth
.
alg
=
cpu_to_le16
(
system
);
auth
.
alg
=
cpu_to_le16
(
C80211_MGMT_AAN_OPENSYSTEM
);
}
auth
.
status
=
0
;
auth
.
status
=
0
;
auth
.
trans_seq
=
cpu_to_le16
(
priv
->
CurrentAuthentTransactionSeqNum
);
auth
.
trans_seq
=
cpu_to_le16
(
priv
->
CurrentAuthentTransactionSeqNum
);
...
@@ -2834,6 +2830,7 @@ static void authenticate(struct atmel_private *priv, u16 frame_len)
...
@@ -2834,6 +2830,7 @@ static void authenticate(struct atmel_private *priv, u16 frame_len)
struct
auth_body
*
auth
=
(
struct
auth_body
*
)
priv
->
rx_buf
;
struct
auth_body
*
auth
=
(
struct
auth_body
*
)
priv
->
rx_buf
;
u16
status
=
le16_to_cpu
(
auth
->
status
);
u16
status
=
le16_to_cpu
(
auth
->
status
);
u16
trans_seq_no
=
le16_to_cpu
(
auth
->
trans_seq
);
u16
trans_seq_no
=
le16_to_cpu
(
auth
->
trans_seq
);
u16
system
=
le16_to_cpu
(
auth
->
alg
);
if
(
status
==
C80211_MGMT_SC_Success
&&
!
priv
->
wep_is_on
)
{
if
(
status
==
C80211_MGMT_SC_Success
&&
!
priv
->
wep_is_on
)
{
/* no WEP */
/* no WEP */
...
@@ -2855,7 +2852,7 @@ static void authenticate(struct atmel_private *priv, u16 frame_len)
...
@@ -2855,7 +2852,7 @@ static void authenticate(struct atmel_private *priv, u16 frame_len)
if
(
trans_seq_no
==
0x0002
&&
if
(
trans_seq_no
==
0x0002
&&
auth
->
el_id
==
C80211_MGMT_ElementID_ChallengeText
)
{
auth
->
el_id
==
C80211_MGMT_ElementID_ChallengeText
)
{
send_authentication_request
(
priv
,
auth
->
chall_text
,
auth
->
chall_text_len
);
send_authentication_request
(
priv
,
system
,
auth
->
chall_text
,
auth
->
chall_text_len
);
return
;
return
;
}
}
...
@@ -2872,14 +2869,20 @@ static void authenticate(struct atmel_private *priv, u16 frame_len)
...
@@ -2872,14 +2869,20 @@ static void authenticate(struct atmel_private *priv, u16 frame_len)
}
}
}
}
if
(
status
==
C80211_MGMT_SC_AuthAlgNotSupported
&&
priv
->
connect_to_any_BSS
)
{
if
(
status
==
C80211_MGMT_SC_AuthAlgNotSupported
)
{
int
bss_index
;
/* Do opensystem first, then try sharedkey */
if
(
system
==
C80211_MGMT_AAN_OPENSYSTEM
)
{
priv
->
BSSinfo
[(
int
)(
priv
->
current_BSS
)].
channel
|=
0x80
;
priv
->
CurrentAuthentTransactionSeqNum
=
0x001
;
send_authentication_request
(
priv
,
C80211_MGMT_AAN_SHAREDKEY
,
NULL
,
0
);
if
((
bss_index
=
retrieve_bss
(
priv
))
!=
-
1
)
{
}
else
if
(
priv
->
connect_to_any_BSS
)
{
atmel_join_bss
(
priv
,
bss_index
);
int
bss_index
;
return
;
priv
->
BSSinfo
[(
int
)(
priv
->
current_BSS
)].
channel
|=
0x80
;
if
((
bss_index
=
retrieve_bss
(
priv
))
!=
-
1
)
{
atmel_join_bss
(
priv
,
bss_index
);
return
;
}
}
}
}
}
...
@@ -3205,7 +3208,7 @@ static void atmel_management_timer(u_long a)
...
@@ -3205,7 +3208,7 @@ static void atmel_management_timer(u_long a)
priv
->
AuthenticationRequestRetryCnt
++
;
priv
->
AuthenticationRequestRetryCnt
++
;
priv
->
CurrentAuthentTransactionSeqNum
=
0x0001
;
priv
->
CurrentAuthentTransactionSeqNum
=
0x0001
;
mod_timer
(
&
priv
->
management_timer
,
jiffies
+
MGMT_JIFFIES
);
mod_timer
(
&
priv
->
management_timer
,
jiffies
+
MGMT_JIFFIES
);
send_authentication_request
(
priv
,
NULL
,
0
);
send_authentication_request
(
priv
,
C80211_MGMT_AAN_OPENSYSTEM
,
NULL
,
0
);
}
}
break
;
break
;
...
@@ -3312,7 +3315,7 @@ static void atmel_command_irq(struct atmel_private *priv)
...
@@ -3312,7 +3315,7 @@ static void atmel_command_irq(struct atmel_private *priv)
mod_timer
(
&
priv
->
management_timer
,
jiffies
+
MGMT_JIFFIES
);
mod_timer
(
&
priv
->
management_timer
,
jiffies
+
MGMT_JIFFIES
);
priv
->
CurrentAuthentTransactionSeqNum
=
0x0001
;
priv
->
CurrentAuthentTransactionSeqNum
=
0x0001
;
send_authentication_request
(
priv
,
NULL
,
0
);
send_authentication_request
(
priv
,
C80211_MGMT_AAN_SHAREDKEY
,
NULL
,
0
);
}
}
return
;
return
;
}
}
...
@@ -3482,11 +3485,6 @@ static int probe_atmel_card(struct net_device *dev)
...
@@ -3482,11 +3485,6 @@ static int probe_atmel_card(struct net_device *dev)
printk
(
KERN_ALERT
"%s: *** Invalid MAC address. UPGRADE Firmware ****
\n
"
,
dev
->
name
);
printk
(
KERN_ALERT
"%s: *** Invalid MAC address. UPGRADE Firmware ****
\n
"
,
dev
->
name
);
memcpy
(
dev
->
dev_addr
,
default_mac
,
6
);
memcpy
(
dev
->
dev_addr
,
default_mac
,
6
);
}
}
printk
(
KERN_INFO
"%s: MAC address %.2x:%.2x:%.2x:%.2x:%.2x:%.2x
\n
"
,
dev
->
name
,
dev
->
dev_addr
[
0
],
dev
->
dev_addr
[
1
],
dev
->
dev_addr
[
2
],
dev
->
dev_addr
[
3
],
dev
->
dev_addr
[
4
],
dev
->
dev_addr
[
5
]
);
}
}
return
rc
;
return
rc
;
...
...
drivers/net/wireless/atmel.h
View file @
2ecc26b8
...
@@ -35,9 +35,9 @@ typedef enum {
...
@@ -35,9 +35,9 @@ typedef enum {
ATMEL_FW_TYPE_506
ATMEL_FW_TYPE_506
}
AtmelFWType
;
}
AtmelFWType
;
struct
net_device
*
init_atmel_card
(
unsigned
short
,
int
,
const
AtmelFWType
,
struct
device
*
,
struct
net_device
*
init_atmel_card
(
unsigned
short
,
unsigned
long
,
const
AtmelFWType
,
struct
device
*
,
int
(
*
present_func
)(
void
*
),
void
*
);
int
(
*
present_func
)(
void
*
),
void
*
);
void
stop_atmel_card
(
struct
net_device
*
,
int
);
void
stop_atmel_card
(
struct
net_device
*
);
int
atmel_open
(
struct
net_device
*
);
int
atmel_open
(
struct
net_device
*
);
#endif
#endif
drivers/net/wireless/atmel_cs.c
View file @
2ecc26b8
This diff is collapsed.
Click to expand it.
drivers/net/wireless/atmel_pci.c
View file @
2ecc26b8
...
@@ -72,7 +72,7 @@ static int __devinit atmel_pci_probe(struct pci_dev *pdev,
...
@@ -72,7 +72,7 @@ static int __devinit atmel_pci_probe(struct pci_dev *pdev,
static
void
__devexit
atmel_pci_remove
(
struct
pci_dev
*
pdev
)
static
void
__devexit
atmel_pci_remove
(
struct
pci_dev
*
pdev
)
{
{
stop_atmel_card
(
pci_get_drvdata
(
pdev
)
,
1
);
stop_atmel_card
(
pci_get_drvdata
(
pdev
));
}
}
static
int
__init
atmel_init_module
(
void
)
static
int
__init
atmel_init_module
(
void
)
...
...
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