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
4144cb2a
Commit
4144cb2a
authored
Jan 17, 2012
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
parents
59f608d8
604c4ef1
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
108 additions
and
112 deletions
+108
-112
MAINTAINERS
MAINTAINERS
+8
-7
drivers/bcma/bcma_private.h
drivers/bcma/bcma_private.h
+1
-0
drivers/bcma/host_pci.c
drivers/bcma/host_pci.c
+18
-25
drivers/bcma/main.c
drivers/bcma/main.c
+24
-0
drivers/net/wireless/ath/ath9k/ar9003_mac.c
drivers/net/wireless/ath/ath9k/ar9003_mac.c
+3
-2
drivers/net/wireless/ath/ath9k/mac.c
drivers/net/wireless/ath/ath9k/mac.c
+3
-2
drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/main.c
+4
-1
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
+1
-1
drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
+4
-36
drivers/net/wireless/ipw2x00/ipw2200.c
drivers/net/wireless/ipw2x00/ipw2200.c
+2
-2
drivers/net/wireless/iwlwifi/iwl-scan.c
drivers/net/wireless/iwlwifi/iwl-scan.c
+1
-1
drivers/net/wireless/mwl8k.c
drivers/net/wireless/mwl8k.c
+2
-2
drivers/net/wireless/rt2x00/rt2800pci.c
drivers/net/wireless/rt2x00/rt2800pci.c
+8
-20
include/linux/bcma/bcma.h
include/linux/bcma/bcma.h
+1
-1
net/mac80211/cfg.c
net/mac80211/cfg.c
+1
-1
net/mac80211/rx.c
net/mac80211/rx.c
+1
-0
net/mac80211/sta_info.c
net/mac80211/sta_info.c
+4
-2
net/mac80211/tx.c
net/mac80211/tx.c
+1
-9
net/mac80211/wpa.c
net/mac80211/wpa.c
+19
-0
net/mac80211/wpa.h
net/mac80211/wpa.h
+2
-0
No files found.
MAINTAINERS
View file @
4144cb2a
...
...
@@ -1411,6 +1411,7 @@ F: net/ax25/
B43 WIRELESS DRIVER
M: Stefano Brivio <stefano.brivio@polimi.it>
L: linux-wireless@vger.kernel.org
L: b43-dev@lists.infradead.org (moderated for non-subscribers)
W: http://linuxwireless.org/en/users/Drivers/b43
S: Maintained
F: drivers/net/wireless/b43/
...
...
@@ -1587,6 +1588,13 @@ L: linux-scsi@vger.kernel.org
S: Supported
F: drivers/scsi/bnx2fc/
BROADCOM SPECIFIC AMBA DRIVER (BCMA)
M: Rafał Miłecki <zajec5@gmail.com>
L: linux-wireless@vger.kernel.org
S: Maintained
F: drivers/bcma/
F: include/linux/bcma/
BROCADE BFA FC SCSI DRIVER
M: Jing Huang <huangj@brocade.com>
L: linux-scsi@vger.kernel.org
...
...
@@ -6099,13 +6107,6 @@ S: Maintained
F: drivers/ssb/
F: include/linux/ssb/
BROADCOM SPECIFIC AMBA DRIVER (BCMA)
M: Rafał Miłecki <zajec5@gmail.com>
L: linux-wireless@vger.kernel.org
S: Maintained
F: drivers/bcma/
F: include/linux/bcma/
SONY VAIO CONTROL DEVICE DRIVER
M: Mattia Dongili <malattia@linux.it>
L: platform-driver-x86@vger.kernel.org
...
...
drivers/bcma/bcma_private.h
View file @
4144cb2a
...
...
@@ -19,6 +19,7 @@ int __init bcma_bus_early_register(struct bcma_bus *bus,
struct
bcma_device
*
core_cc
,
struct
bcma_device
*
core_mips
);
#ifdef CONFIG_PM
int
bcma_bus_suspend
(
struct
bcma_bus
*
bus
);
int
bcma_bus_resume
(
struct
bcma_bus
*
bus
);
#endif
...
...
drivers/bcma/host_pci.c
View file @
4144cb2a
...
...
@@ -235,38 +235,32 @@ static void bcma_host_pci_remove(struct pci_dev *dev)
}
#ifdef CONFIG_PM
static
int
bcma_host_pci_suspend
(
struct
pci_dev
*
dev
,
pm_message_t
state
)
static
int
bcma_host_pci_suspend
(
struct
device
*
dev
)
{
/* Host specific */
pci_save_state
(
dev
);
pci_disable_device
(
dev
);
pci_set_power_state
(
dev
,
pci_choose_state
(
dev
,
state
));
struct
pci_dev
*
pdev
=
to_pci_dev
(
dev
);
struct
bcma_bus
*
bus
=
pci_get_drvdata
(
pdev
);
return
0
;
bus
->
mapped_core
=
NULL
;
return
bcma_bus_suspend
(
bus
);
}
static
int
bcma_host_pci_resume
(
struct
pci_dev
*
dev
)
static
int
bcma_host_pci_resume
(
struct
device
*
dev
)
{
struct
bcma_bus
*
bus
=
pci_get_drvdata
(
dev
);
int
err
;
struct
pci_dev
*
pdev
=
to_pci_dev
(
dev
);
struct
bcma_bus
*
bus
=
pci_get_drvdata
(
pdev
)
;
/* Host specific */
pci_set_power_state
(
dev
,
0
);
err
=
pci_enable_device
(
dev
);
if
(
err
)
return
err
;
pci_restore_state
(
dev
);
return
bcma_bus_resume
(
bus
);
}
/* Bus specific */
err
=
bcma_bus_resume
(
bus
);
if
(
err
)
return
err
;
static
SIMPLE_DEV_PM_OPS
(
bcma_pm_ops
,
bcma_host_pci_suspend
,
bcma_host_pci_resume
);
#define BCMA_PM_OPS (&bcma_pm_ops)
return
0
;
}
#else
/* CONFIG_PM */
# define bcma_host_pci_suspend NULL
# define bcma_host_pci_resume NULL
#define BCMA_PM_OPS NULL
#endif
/* CONFIG_PM */
static
DEFINE_PCI_DEVICE_TABLE
(
bcma_pci_bridge_tbl
)
=
{
...
...
@@ -284,8 +278,7 @@ static struct pci_driver bcma_pci_bridge_driver = {
.
id_table
=
bcma_pci_bridge_tbl
,
.
probe
=
bcma_host_pci_probe
,
.
remove
=
bcma_host_pci_remove
,
.
suspend
=
bcma_host_pci_suspend
,
.
resume
=
bcma_host_pci_resume
,
.
driver
.
pm
=
BCMA_PM_OPS
,
};
int
__init
bcma_host_pci_init
(
void
)
...
...
drivers/bcma/main.c
View file @
4144cb2a
...
...
@@ -241,6 +241,21 @@ int __init bcma_bus_early_register(struct bcma_bus *bus,
}
#ifdef CONFIG_PM
int
bcma_bus_suspend
(
struct
bcma_bus
*
bus
)
{
struct
bcma_device
*
core
;
list_for_each_entry
(
core
,
&
bus
->
cores
,
list
)
{
struct
device_driver
*
drv
=
core
->
dev
.
driver
;
if
(
drv
)
{
struct
bcma_driver
*
adrv
=
container_of
(
drv
,
struct
bcma_driver
,
drv
);
if
(
adrv
->
suspend
)
adrv
->
suspend
(
core
);
}
}
return
0
;
}
int
bcma_bus_resume
(
struct
bcma_bus
*
bus
)
{
struct
bcma_device
*
core
;
...
...
@@ -252,6 +267,15 @@ int bcma_bus_resume(struct bcma_bus *bus)
bcma_core_chipcommon_init
(
&
bus
->
drv_cc
);
}
list_for_each_entry
(
core
,
&
bus
->
cores
,
list
)
{
struct
device_driver
*
drv
=
core
->
dev
.
driver
;
if
(
drv
)
{
struct
bcma_driver
*
adrv
=
container_of
(
drv
,
struct
bcma_driver
,
drv
);
if
(
adrv
->
resume
)
adrv
->
resume
(
core
);
}
}
return
0
;
}
#endif
...
...
drivers/net/wireless/ath/ath9k/ar9003_mac.c
View file @
4144cb2a
...
...
@@ -557,10 +557,11 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, struct ath_rx_status *rxs,
rxs
->
rs_status
|=
ATH9K_RXERR_DECRYPT
;
else
if
(
rxsp
->
status11
&
AR_MichaelErr
)
rxs
->
rs_status
|=
ATH9K_RXERR_MIC
;
if
(
rxsp
->
status11
&
AR_KeyMiss
)
rxs
->
rs_status
|=
ATH9K_RXERR_KEYMISS
;
}
if
(
rxsp
->
status11
&
AR_KeyMiss
)
rxs
->
rs_status
|=
ATH9K_RXERR_KEYMISS
;
return
0
;
}
EXPORT_SYMBOL
(
ath9k_hw_process_rxdesc_edma
);
...
...
drivers/net/wireless/ath/ath9k/mac.c
View file @
4144cb2a
...
...
@@ -618,10 +618,11 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
rs
->
rs_status
|=
ATH9K_RXERR_DECRYPT
;
else
if
(
ads
.
ds_rxstatus8
&
AR_MichaelErr
)
rs
->
rs_status
|=
ATH9K_RXERR_MIC
;
if
(
ads
.
ds_rxstatus8
&
AR_KeyMiss
)
rs
->
rs_status
|=
ATH9K_RXERR_KEYMISS
;
}
if
(
ads
.
ds_rxstatus8
&
AR_KeyMiss
)
rs
->
rs_status
|=
ATH9K_RXERR_KEYMISS
;
return
0
;
}
EXPORT_SYMBOL
(
ath9k_hw_rxprocdesc
);
...
...
drivers/net/wireless/b43/main.c
View file @
4144cb2a
...
...
@@ -4852,6 +4852,9 @@ static void b43_op_stop(struct ieee80211_hw *hw)
cancel_work_sync
(
&
(
wl
->
beacon_update_trigger
));
if
(
!
dev
)
goto
out
;
mutex_lock
(
&
wl
->
mutex
);
if
(
b43_status
(
dev
)
>=
B43_STAT_STARTED
)
{
dev
=
b43_wireless_core_stop
(
dev
);
...
...
@@ -4863,7 +4866,7 @@ static void b43_op_stop(struct ieee80211_hw *hw)
out_unlock:
mutex_unlock
(
&
wl
->
mutex
);
out:
cancel_work_sync
(
&
(
wl
->
txpower_adjust_work
));
}
...
...
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
View file @
4144cb2a
...
...
@@ -2475,7 +2475,7 @@ static s32 brcmf_init_iscan(struct brcmf_cfg80211_priv *cfg_priv)
return
err
;
}
static
void
brcmf_delay
(
u32
ms
)
static
__always_inline
void
brcmf_delay
(
u32
ms
)
{
if
(
ms
<
1000
/
HZ
)
{
cond_resched
();
...
...
drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
View file @
4144cb2a
...
...
@@ -1128,14 +1128,7 @@ static int __devinit brcms_bcma_probe(struct bcma_device *pdev)
return
0
;
}
static
int
brcms_pci_suspend
(
struct
pci_dev
*
pdev
)
{
pci_save_state
(
pdev
);
pci_disable_device
(
pdev
);
return
pci_set_power_state
(
pdev
,
PCI_D3hot
);
}
static
int
brcms_suspend
(
struct
bcma_device
*
pdev
,
pm_message_t
state
)
static
int
brcms_suspend
(
struct
bcma_device
*
pdev
)
{
struct
brcms_info
*
wl
;
struct
ieee80211_hw
*
hw
;
...
...
@@ -1153,40 +1146,15 @@ static int brcms_suspend(struct bcma_device *pdev, pm_message_t state)
wl
->
pub
->
hw_up
=
false
;
spin_unlock_bh
(
&
wl
->
lock
);
/* temporarily do suspend ourselves */
return
brcms_pci_suspend
(
pdev
->
bus
->
host_pci
);
}
static
int
brcms_pci_resume
(
struct
pci_dev
*
pdev
)
{
int
err
=
0
;
uint
val
;
err
=
pci_set_power_state
(
pdev
,
PCI_D0
);
if
(
err
)
return
err
;
pci_restore_state
(
pdev
);
err
=
pci_enable_device
(
pdev
);
if
(
err
)
return
err
;
pci_set_master
(
pdev
);
pci_read_config_dword
(
pdev
,
0x40
,
&
val
);
if
((
val
&
0x0000ff00
)
!=
0
)
pci_write_config_dword
(
pdev
,
0x40
,
val
&
0xffff00ff
);
pr_debug
(
"brcms_suspend ok
\n
"
);
return
0
;
}
static
int
brcms_resume
(
struct
bcma_device
*
pdev
)
{
/*
* just do pci resume for now until bcma supports it.
*/
return
brcms_pci_resume
(
pdev
->
bus
->
host_pci
);
pr_debug
(
"brcms_resume ok
\n
"
);
return
0
;
}
static
struct
bcma_driver
brcms_bcma_driver
=
{
...
...
drivers/net/wireless/ipw2x00/ipw2200.c
View file @
4144cb2a
...
...
@@ -7848,7 +7848,7 @@ static void ipw_handle_data_packet_monitor(struct ipw_priv *priv,
* more efficiently than we can parse it. ORDER MATTERS HERE */
struct
ipw_rt_hdr
*
ipw_rt
;
short
len
=
le16_to_cpu
(
pkt
->
u
.
frame
.
length
);
unsigned
short
len
=
le16_to_cpu
(
pkt
->
u
.
frame
.
length
);
/* We received data from the HW, so stop the watchdog */
dev
->
trans_start
=
jiffies
;
...
...
@@ -8023,7 +8023,7 @@ static void ipw_handle_promiscuous_rx(struct ipw_priv *priv,
s8
signal
=
frame
->
rssi_dbm
-
IPW_RSSI_TO_DBM
;
s8
noise
=
(
s8
)
le16_to_cpu
(
frame
->
noise
);
u8
rate
=
frame
->
rate
;
short
len
=
le16_to_cpu
(
pkt
->
u
.
frame
.
length
);
unsigned
short
len
=
le16_to_cpu
(
pkt
->
u
.
frame
.
length
);
struct
sk_buff
*
skb
;
int
hdr_only
=
0
;
u16
filter
=
priv
->
prom_priv
->
filter
;
...
...
drivers/net/wireless/iwlwifi/iwl-scan.c
View file @
4144cb2a
...
...
@@ -569,7 +569,7 @@ static int iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif)
struct
iwl_scan_cmd
*
scan
;
struct
iwl_rxon_context
*
ctx
=
&
priv
->
contexts
[
IWL_RXON_CTX_BSS
];
u32
rate_flags
=
0
;
u16
cmd_len
;
u16
cmd_len
=
0
;
u16
rx_chain
=
0
;
enum
ieee80211_band
band
;
u8
n_probes
=
0
;
...
...
drivers/net/wireless/mwl8k.c
View file @
4144cb2a
...
...
@@ -2777,7 +2777,7 @@ static int mwl8k_cmd_tx_power(struct ieee80211_hw *hw,
else
if
(
channel
->
band
==
IEEE80211_BAND_5GHZ
)
cmd
->
band
=
cpu_to_le16
(
0x4
);
cmd
->
channel
=
c
hannel
->
hw_value
;
cmd
->
channel
=
c
pu_to_le16
(
channel
->
hw_value
)
;
if
(
conf
->
channel_type
==
NL80211_CHAN_NO_HT
||
conf
->
channel_type
==
NL80211_CHAN_HT20
)
{
...
...
@@ -4066,7 +4066,7 @@ static int mwl8k_cmd_encryption_remove_key(struct ieee80211_hw *hw,
goto
done
;
if
(
key
->
cipher
==
WLAN_CIPHER_SUITE_WEP40
||
WLAN_CIPHER_SUITE_WEP104
)
key
->
cipher
==
WLAN_CIPHER_SUITE_WEP104
)
mwl8k_vif
->
wep_key_conf
[
key
->
keyidx
].
enabled
=
0
;
cmd
->
action
=
cpu_to_le32
(
MWL8K_ENCR_REMOVE_KEY
);
...
...
drivers/net/wireless/rt2x00/rt2800pci.c
View file @
4144cb2a
...
...
@@ -422,7 +422,6 @@ static int rt2800pci_init_queues(struct rt2x00_dev *rt2x00dev)
static
void
rt2800pci_toggle_irq
(
struct
rt2x00_dev
*
rt2x00dev
,
enum
dev_state
state
)
{
int
mask
=
(
state
==
STATE_RADIO_IRQ_ON
);
u32
reg
;
unsigned
long
flags
;
...
...
@@ -436,25 +435,14 @@ static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev,
}
spin_lock_irqsave
(
&
rt2x00dev
->
irqmask_lock
,
flags
);
rt2x00pci_register_read
(
rt2x00dev
,
INT_MASK_CSR
,
&
reg
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_RXDELAYINT
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_TXDELAYINT
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_RX_DONE
,
mask
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_AC0_DMA_DONE
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_AC1_DMA_DONE
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_AC2_DMA_DONE
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_AC3_DMA_DONE
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_HCCA_DMA_DONE
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_MGMT_DMA_DONE
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_MCU_COMMAND
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_RXTX_COHERENT
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_TBTT
,
mask
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_PRE_TBTT
,
mask
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_TX_FIFO_STATUS
,
mask
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_AUTO_WAKEUP
,
mask
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_GPTIMER
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_RX_COHERENT
,
0
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_TX_COHERENT
,
0
);
reg
=
0
;
if
(
state
==
STATE_RADIO_IRQ_ON
)
{
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_RX_DONE
,
1
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_TBTT
,
1
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_PRE_TBTT
,
1
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_TX_FIFO_STATUS
,
1
);
rt2x00_set_field32
(
&
reg
,
INT_MASK_CSR_AUTO_WAKEUP
,
1
);
}
rt2x00pci_register_write
(
rt2x00dev
,
INT_MASK_CSR
,
reg
);
spin_unlock_irqrestore
(
&
rt2x00dev
->
irqmask_lock
,
flags
);
...
...
include/linux/bcma/bcma.h
View file @
4144cb2a
...
...
@@ -162,7 +162,7 @@ struct bcma_driver {
int
(
*
probe
)(
struct
bcma_device
*
dev
);
void
(
*
remove
)(
struct
bcma_device
*
dev
);
int
(
*
suspend
)(
struct
bcma_device
*
dev
,
pm_message_t
state
);
int
(
*
suspend
)(
struct
bcma_device
*
dev
);
int
(
*
resume
)(
struct
bcma_device
*
dev
);
void
(
*
shutdown
)(
struct
bcma_device
*
dev
);
...
...
net/mac80211/cfg.c
View file @
4144cb2a
...
...
@@ -791,7 +791,7 @@ static int sta_apply_parameters(struct ieee80211_local *local,
if
(
set
&
BIT
(
NL80211_STA_FLAG_AUTHORIZED
))
ret
=
sta_info_move_state_checked
(
sta
,
IEEE80211_STA_AUTHORIZED
);
else
else
if
(
test_sta_flag
(
sta
,
WLAN_STA_AUTHORIZED
))
ret
=
sta_info_move_state_checked
(
sta
,
IEEE80211_STA_ASSOC
);
if
(
ret
)
...
...
net/mac80211/rx.c
View file @
4144cb2a
...
...
@@ -1979,6 +1979,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
mesh_path_error_tx
(
ifmsh
->
mshcfg
.
element_ttl
,
fwd_hdr
->
addr3
,
0
,
reason
,
fwd_hdr
->
addr2
,
sdata
);
IEEE80211_IFSTA_MESH_CTR_INC
(
ifmsh
,
dropped_frames_no_route
);
kfree_skb
(
fwd_skb
);
return
RX_DROP_MONITOR
;
}
...
...
net/mac80211/sta_info.c
View file @
4144cb2a
...
...
@@ -238,9 +238,11 @@ static void sta_unblock(struct work_struct *wk)
if
(
sta
->
dead
)
return
;
if
(
!
test_sta_flag
(
sta
,
WLAN_STA_PS_STA
))
if
(
!
test_sta_flag
(
sta
,
WLAN_STA_PS_STA
))
{
local_bh_disable
();
ieee80211_sta_ps_deliver_wakeup
(
sta
);
else
if
(
test_and_clear_sta_flag
(
sta
,
WLAN_STA_PSPOLL
))
{
local_bh_enable
();
}
else
if
(
test_and_clear_sta_flag
(
sta
,
WLAN_STA_PSPOLL
))
{
clear_sta_flag
(
sta
,
WLAN_STA_PS_DRIVER
);
local_bh_disable
();
...
...
net/mac80211/tx.c
View file @
4144cb2a
...
...
@@ -1001,8 +1001,6 @@ ieee80211_tx_h_stats(struct ieee80211_tx_data *tx)
static
ieee80211_tx_result
debug_noinline
ieee80211_tx_h_encrypt
(
struct
ieee80211_tx_data
*
tx
)
{
struct
ieee80211_tx_info
*
info
=
IEEE80211_SKB_CB
(
tx
->
skb
);
if
(
!
tx
->
key
)
return
TX_CONTINUE
;
...
...
@@ -1017,13 +1015,7 @@ ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx)
case
WLAN_CIPHER_SUITE_AES_CMAC
:
return
ieee80211_crypto_aes_cmac_encrypt
(
tx
);
default:
/* handle hw-only algorithm */
if
(
info
->
control
.
hw_key
)
{
ieee80211_tx_set_protected
(
tx
);
return
TX_CONTINUE
;
}
break
;
return
ieee80211_crypto_hw_encrypt
(
tx
);
}
return
TX_DROP
;
...
...
net/mac80211/wpa.c
View file @
4144cb2a
...
...
@@ -643,3 +643,22 @@ ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx)
return
RX_CONTINUE
;
}
ieee80211_tx_result
ieee80211_crypto_hw_encrypt
(
struct
ieee80211_tx_data
*
tx
)
{
struct
sk_buff
*
skb
;
struct
ieee80211_tx_info
*
info
=
NULL
;
skb_queue_walk
(
&
tx
->
skbs
,
skb
)
{
info
=
IEEE80211_SKB_CB
(
skb
);
/* handle hw-only algorithm */
if
(
!
info
->
control
.
hw_key
)
return
TX_DROP
;
}
ieee80211_tx_set_protected
(
tx
);
return
TX_CONTINUE
;
}
net/mac80211/wpa.h
View file @
4144cb2a
...
...
@@ -32,5 +32,7 @@ ieee80211_tx_result
ieee80211_crypto_aes_cmac_encrypt
(
struct
ieee80211_tx_data
*
tx
);
ieee80211_rx_result
ieee80211_crypto_aes_cmac_decrypt
(
struct
ieee80211_rx_data
*
rx
);
ieee80211_tx_result
ieee80211_crypto_hw_encrypt
(
struct
ieee80211_tx_data
*
tx
);
#endif
/* WPA_H */
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