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
e61444d9
Commit
e61444d9
authored
Dec 08, 2009
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-next-2.6
parents
a252e749
6a213afd
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
228 additions
and
201 deletions
+228
-201
drivers/net/wireless/ath/ath5k/led.c
drivers/net/wireless/ath/ath5k/led.c
+2
-0
drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/xmit.c
+1
-1
drivers/net/wireless/iwlwifi/iwl-tx.c
drivers/net/wireless/iwlwifi/iwl-tx.c
+1
-1
drivers/net/wireless/mwl8k.c
drivers/net/wireless/mwl8k.c
+163
-164
drivers/net/wireless/orinoco/hermes_dld.c
drivers/net/wireless/orinoco/hermes_dld.c
+1
-1
drivers/net/wireless/rtl818x/rtl8187.h
drivers/net/wireless/rtl818x/rtl8187.h
+5
-0
drivers/net/wireless/rtl818x/rtl8187_dev.c
drivers/net/wireless/rtl818x/rtl8187_dev.c
+10
-2
drivers/net/wireless/rtl818x/rtl8187_rfkill.c
drivers/net/wireless/rtl818x/rtl8187_rfkill.c
+2
-2
drivers/net/wireless/wl12xx/wl1251_main.c
drivers/net/wireless/wl12xx/wl1251_main.c
+15
-21
net/mac80211/ieee80211_i.h
net/mac80211/ieee80211_i.h
+1
-0
net/mac80211/mlme.c
net/mac80211/mlme.c
+8
-2
net/mac80211/scan.c
net/mac80211/scan.c
+16
-4
net/mac80211/util.c
net/mac80211/util.c
+1
-1
net/rfkill/core.c
net/rfkill/core.c
+2
-2
No files found.
drivers/net/wireless/ath/ath5k/led.c
View file @
e61444d9
...
@@ -79,6 +79,8 @@ static const struct pci_device_id ath5k_led_devices[] = {
...
@@ -79,6 +79,8 @@ static const struct pci_device_id ath5k_led_devices[] = {
{
ATH_SDEVICE
(
PCI_VENDOR_ID_HP
,
0x0137b
),
ATH_LED
(
3
,
1
)
},
{
ATH_SDEVICE
(
PCI_VENDOR_ID_HP
,
0x0137b
),
ATH_LED
(
3
,
1
)
},
/* IBM-specific AR5212 (all others) */
/* IBM-specific AR5212 (all others) */
{
PCI_VDEVICE
(
ATHEROS
,
PCI_DEVICE_ID_ATHEROS_AR5212_IBM
),
ATH_LED
(
0
,
0
)
},
{
PCI_VDEVICE
(
ATHEROS
,
PCI_DEVICE_ID_ATHEROS_AR5212_IBM
),
ATH_LED
(
0
,
0
)
},
/* Dell Vostro A860 (shahar@shahar-or.co.il) */
{
ATH_SDEVICE
(
PCI_VENDOR_ID_QMI
,
0x0112
),
ATH_LED
(
3
,
0
)
},
{
}
{
}
};
};
...
...
drivers/net/wireless/ath/ath9k/xmit.c
View file @
e61444d9
...
@@ -2078,7 +2078,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
...
@@ -2078,7 +2078,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
&
txq
->
axq_q
,
lastbf
->
list
.
prev
);
&
txq
->
axq_q
,
lastbf
->
list
.
prev
);
txq
->
axq_depth
--
;
txq
->
axq_depth
--
;
txok
=
(
ds
->
ds_txstat
.
ts_status
==
0
);
txok
=
!
(
ds
->
ds_txstat
.
ts_status
&
ATH9K_TXERR_FILT
);
txq
->
axq_tx_inprogress
=
false
;
txq
->
axq_tx_inprogress
=
false
;
spin_unlock_bh
(
&
txq
->
axq_lock
);
spin_unlock_bh
(
&
txq
->
axq_lock
);
...
...
drivers/net/wireless/iwlwifi/iwl-tx.c
View file @
e61444d9
...
@@ -1353,7 +1353,7 @@ int iwl_tx_agg_stop(struct iwl_priv *priv , const u8 *ra, u16 tid)
...
@@ -1353,7 +1353,7 @@ int iwl_tx_agg_stop(struct iwl_priv *priv , const u8 *ra, u16 tid)
if
(
priv
->
stations
[
sta_id
].
tid
[
tid
].
agg
.
state
==
if
(
priv
->
stations
[
sta_id
].
tid
[
tid
].
agg
.
state
==
IWL_EMPTYING_HW_QUEUE_ADDBA
)
{
IWL_EMPTYING_HW_QUEUE_ADDBA
)
{
IWL_DEBUG_HT
(
priv
,
"AGG stop before setup done
\n
"
);
IWL_DEBUG_HT
(
priv
,
"AGG stop before setup done
\n
"
);
ieee80211_stop_tx_ba_cb_irqsafe
(
priv
->
hw
,
ra
,
tid
);
ieee80211_stop_tx_ba_cb_irqsafe
(
priv
->
vif
,
ra
,
tid
);
priv
->
stations
[
sta_id
].
tid
[
tid
].
agg
.
state
=
IWL_AGG_OFF
;
priv
->
stations
[
sta_id
].
tid
[
tid
].
agg
.
state
=
IWL_AGG_OFF
;
return
0
;
return
0
;
}
}
...
...
drivers/net/wireless/mwl8k.c
View file @
e61444d9
This diff is collapsed.
Click to expand it.
drivers/net/wireless/orinoco/hermes_dld.c
View file @
e61444d9
...
@@ -427,7 +427,7 @@ int hermesi_program_init(hermes_t *hw, u32 offset)
...
@@ -427,7 +427,7 @@ int hermesi_program_init(hermes_t *hw, u32 offset)
if
(
err
)
if
(
err
)
return
err
;
return
err
;
pr_debug
(
KERN_DEBUG
PFX
"Enabling volatile, EP 0x%08x
\n
"
,
offset
);
pr_debug
(
PFX
"Enabling volatile, EP 0x%08x
\n
"
,
offset
);
err
=
hermes_doicmd_wait
(
hw
,
err
=
hermes_doicmd_wait
(
hw
,
HERMES_PROGRAM_ENABLE_VOLATILE
,
HERMES_PROGRAM_ENABLE_VOLATILE
,
offset
&
0xFFFFu
,
offset
&
0xFFFFu
,
...
...
drivers/net/wireless/rtl818x/rtl8187.h
View file @
e61444d9
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
#define RTL8187_EEPROM_TXPWR_CHAN_1 0x16
/* 3 channels */
#define RTL8187_EEPROM_TXPWR_CHAN_1 0x16
/* 3 channels */
#define RTL8187_EEPROM_TXPWR_CHAN_6 0x1B
/* 2 channels */
#define RTL8187_EEPROM_TXPWR_CHAN_6 0x1B
/* 2 channels */
#define RTL8187_EEPROM_TXPWR_CHAN_4 0x3D
/* 2 channels */
#define RTL8187_EEPROM_TXPWR_CHAN_4 0x3D
/* 2 channels */
#define RTL8187_EEPROM_SELECT_GPIO 0x3B
#define RTL8187_REQT_READ 0xC0
#define RTL8187_REQT_READ 0xC0
#define RTL8187_REQT_WRITE 0x40
#define RTL8187_REQT_WRITE 0x40
...
@@ -31,6 +32,9 @@
...
@@ -31,6 +32,9 @@
#define RTL8187_MAX_RX 0x9C4
#define RTL8187_MAX_RX 0x9C4
#define RFKILL_MASK_8187_89_97 0x2
#define RFKILL_MASK_8198 0x4
struct
rtl8187_rx_info
{
struct
rtl8187_rx_info
{
struct
urb
*
urb
;
struct
urb
*
urb
;
struct
ieee80211_hw
*
dev
;
struct
ieee80211_hw
*
dev
;
...
@@ -122,6 +126,7 @@ struct rtl8187_priv {
...
@@ -122,6 +126,7 @@ struct rtl8187_priv {
u8
noise
;
u8
noise
;
u8
slot_time
;
u8
slot_time
;
u8
aifsn
[
4
];
u8
aifsn
[
4
];
u8
rfkill_mask
;
struct
{
struct
{
__le64
buf
;
__le64
buf
;
struct
sk_buff_head
queue
;
struct
sk_buff_head
queue
;
...
...
drivers/net/wireless/rtl818x/rtl8187_dev.c
View file @
e61444d9
...
@@ -1322,6 +1322,7 @@ static int __devinit rtl8187_probe(struct usb_interface *intf,
...
@@ -1322,6 +1322,7 @@ static int __devinit rtl8187_probe(struct usb_interface *intf,
struct
ieee80211_channel
*
channel
;
struct
ieee80211_channel
*
channel
;
const
char
*
chip_name
;
const
char
*
chip_name
;
u16
txpwr
,
reg
;
u16
txpwr
,
reg
;
u16
product_id
=
le16_to_cpu
(
udev
->
descriptor
.
idProduct
);
int
err
,
i
;
int
err
,
i
;
dev
=
ieee80211_alloc_hw
(
sizeof
(
*
priv
),
&
rtl8187_ops
);
dev
=
ieee80211_alloc_hw
(
sizeof
(
*
priv
),
&
rtl8187_ops
);
...
@@ -1481,6 +1482,13 @@ static int __devinit rtl8187_probe(struct usb_interface *intf,
...
@@ -1481,6 +1482,13 @@ static int __devinit rtl8187_probe(struct usb_interface *intf,
(
*
channel
++
).
hw_value
=
txpwr
&
0xFF
;
(
*
channel
++
).
hw_value
=
txpwr
&
0xFF
;
(
*
channel
++
).
hw_value
=
txpwr
>>
8
;
(
*
channel
++
).
hw_value
=
txpwr
>>
8
;
}
}
/* Handle the differing rfkill GPIO bit in different models */
priv
->
rfkill_mask
=
RFKILL_MASK_8187_89_97
;
if
(
product_id
==
0x8197
||
product_id
==
0x8198
)
{
eeprom_93cx6_read
(
&
eeprom
,
RTL8187_EEPROM_SELECT_GPIO
,
&
reg
);
if
(
reg
&
0xFF00
)
priv
->
rfkill_mask
=
RFKILL_MASK_8198
;
}
/*
/*
* XXX: Once this driver supports anything that requires
* XXX: Once this driver supports anything that requires
...
@@ -1509,9 +1517,9 @@ static int __devinit rtl8187_probe(struct usb_interface *intf,
...
@@ -1509,9 +1517,9 @@ static int __devinit rtl8187_probe(struct usb_interface *intf,
mutex_init
(
&
priv
->
conf_mutex
);
mutex_init
(
&
priv
->
conf_mutex
);
skb_queue_head_init
(
&
priv
->
b_tx_status
.
queue
);
skb_queue_head_init
(
&
priv
->
b_tx_status
.
queue
);
printk
(
KERN_INFO
"%s: hwaddr %pM, %s V%d + %s
\n
"
,
printk
(
KERN_INFO
"%s: hwaddr %pM, %s V%d + %s
, rfkill mask %d
\n
"
,
wiphy_name
(
dev
->
wiphy
),
dev
->
wiphy
->
perm_addr
,
wiphy_name
(
dev
->
wiphy
),
dev
->
wiphy
->
perm_addr
,
chip_name
,
priv
->
asic_rev
,
priv
->
rf
->
name
);
chip_name
,
priv
->
asic_rev
,
priv
->
rf
->
name
,
priv
->
rfkill_mask
);
#ifdef CONFIG_RTL8187_LEDS
#ifdef CONFIG_RTL8187_LEDS
eeprom_93cx6_read
(
&
eeprom
,
0x3F
,
&
reg
);
eeprom_93cx6_read
(
&
eeprom
,
0x3F
,
&
reg
);
...
...
drivers/net/wireless/rtl818x/rtl8187_rfkill.c
View file @
e61444d9
...
@@ -25,10 +25,10 @@ static bool rtl8187_is_radio_enabled(struct rtl8187_priv *priv)
...
@@ -25,10 +25,10 @@ static bool rtl8187_is_radio_enabled(struct rtl8187_priv *priv)
u8
gpio
;
u8
gpio
;
gpio
=
rtl818x_ioread8
(
priv
,
&
priv
->
map
->
GPIO0
);
gpio
=
rtl818x_ioread8
(
priv
,
&
priv
->
map
->
GPIO0
);
rtl818x_iowrite8
(
priv
,
&
priv
->
map
->
GPIO0
,
gpio
&
~
0x02
);
rtl818x_iowrite8
(
priv
,
&
priv
->
map
->
GPIO0
,
gpio
&
~
priv
->
rfkill_mask
);
gpio
=
rtl818x_ioread8
(
priv
,
&
priv
->
map
->
GPIO1
);
gpio
=
rtl818x_ioread8
(
priv
,
&
priv
->
map
->
GPIO1
);
return
gpio
&
0x02
;
return
gpio
&
priv
->
rfkill_mask
;
}
}
void
rtl8187_rfkill_init
(
struct
ieee80211_hw
*
hw
)
void
rtl8187_rfkill_init
(
struct
ieee80211_hw
*
hw
)
...
...
drivers/net/wireless/wl12xx/wl1251_main.c
View file @
e61444d9
...
@@ -629,10 +629,6 @@ static int wl1251_op_config(struct ieee80211_hw *hw, u32 changed)
...
@@ -629,10 +629,6 @@ static int wl1251_op_config(struct ieee80211_hw *hw, u32 changed)
goto
out_sleep
;
goto
out_sleep
;
}
}
ret
=
wl1251_build_null_data
(
wl
);
if
(
ret
<
0
)
goto
out_sleep
;
if
(
conf
->
flags
&
IEEE80211_CONF_PS
&&
!
wl
->
psm_requested
)
{
if
(
conf
->
flags
&
IEEE80211_CONF_PS
&&
!
wl
->
psm_requested
)
{
wl1251_debug
(
DEBUG_PSM
,
"psm enabled"
);
wl1251_debug
(
DEBUG_PSM
,
"psm enabled"
);
...
@@ -1110,6 +1106,21 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
...
@@ -1110,6 +1106,21 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
if
(
ret
<
0
)
if
(
ret
<
0
)
goto
out
;
goto
out
;
if
(
changed
&
BSS_CHANGED_BSSID
)
{
memcpy
(
wl
->
bssid
,
bss_conf
->
bssid
,
ETH_ALEN
);
ret
=
wl1251_build_null_data
(
wl
);
if
(
ret
<
0
)
goto
out
;
if
(
wl
->
bss_type
!=
BSS_TYPE_IBSS
)
{
ret
=
wl1251_join
(
wl
,
wl
->
bss_type
,
wl
->
channel
,
wl
->
beacon_int
,
wl
->
dtim_period
);
if
(
ret
<
0
)
goto
out_sleep
;
}
}
if
(
changed
&
BSS_CHANGED_ASSOC
)
{
if
(
changed
&
BSS_CHANGED_ASSOC
)
{
if
(
bss_conf
->
assoc
)
{
if
(
bss_conf
->
assoc
)
{
wl
->
beacon_int
=
bss_conf
->
beacon_int
;
wl
->
beacon_int
=
bss_conf
->
beacon_int
;
...
@@ -1169,23 +1180,6 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
...
@@ -1169,23 +1180,6 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
}
}
}
}
if
(
changed
&
BSS_CHANGED_BSSID
)
{
memcpy
(
wl
->
bssid
,
bss_conf
->
bssid
,
ETH_ALEN
);
ret
=
wl1251_build_null_data
(
wl
);
if
(
ret
<
0
)
goto
out
;
if
(
wl
->
bss_type
!=
BSS_TYPE_IBSS
)
{
ret
=
wl1251_join
(
wl
,
wl
->
bss_type
,
wl
->
channel
,
wl
->
beacon_int
,
wl
->
dtim_period
);
if
(
ret
<
0
)
goto
out_sleep
;
wl1251_warning
(
"Set ctsprotect failed %d"
,
ret
);
goto
out_sleep
;
}
}
if
(
changed
&
BSS_CHANGED_BEACON
)
{
if
(
changed
&
BSS_CHANGED_BEACON
)
{
beacon
=
ieee80211_beacon_get
(
hw
,
vif
);
beacon
=
ieee80211_beacon_get
(
hw
,
vif
);
ret
=
wl1251_cmd_template_set
(
wl
,
CMD_BEACON
,
beacon
->
data
,
ret
=
wl1251_cmd_template_set
(
wl
,
CMD_BEACON
,
beacon
->
data
,
...
...
net/mac80211/ieee80211_i.h
View file @
e61444d9
...
@@ -746,6 +746,7 @@ struct ieee80211_local {
...
@@ -746,6 +746,7 @@ struct ieee80211_local {
unsigned
int
wmm_acm
;
/* bit field of ACM bits (BIT(802.1D tag)) */
unsigned
int
wmm_acm
;
/* bit field of ACM bits (BIT(802.1D tag)) */
bool
pspolling
;
bool
pspolling
;
bool
scan_ps_enabled
;
/*
/*
* PS can only be enabled when we have exactly one managed
* PS can only be enabled when we have exactly one managed
* interface (and monitors) in PS, this then points there.
* interface (and monitors) in PS, this then points there.
...
...
net/mac80211/mlme.c
View file @
e61444d9
...
@@ -1083,8 +1083,6 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
...
@@ -1083,8 +1083,6 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
ieee80211_set_wmm_default
(
sdata
);
ieee80211_set_wmm_default
(
sdata
);
ieee80211_recalc_idle
(
local
);
/* channel(_type) changes are handled by ieee80211_hw_config */
/* channel(_type) changes are handled by ieee80211_hw_config */
local
->
oper_channel_type
=
NL80211_CHAN_NO_HT
;
local
->
oper_channel_type
=
NL80211_CHAN_NO_HT
;
...
@@ -1370,6 +1368,7 @@ ieee80211_rx_mgmt_deauth(struct ieee80211_sub_if_data *sdata,
...
@@ -1370,6 +1368,7 @@ ieee80211_rx_mgmt_deauth(struct ieee80211_sub_if_data *sdata,
if
(
!
wk
)
{
if
(
!
wk
)
{
ieee80211_set_disassoc
(
sdata
,
true
);
ieee80211_set_disassoc
(
sdata
,
true
);
ieee80211_recalc_idle
(
sdata
->
local
);
}
else
{
}
else
{
list_del
(
&
wk
->
list
);
list_del
(
&
wk
->
list
);
kfree
(
wk
);
kfree
(
wk
);
...
@@ -1403,6 +1402,7 @@ ieee80211_rx_mgmt_disassoc(struct ieee80211_sub_if_data *sdata,
...
@@ -1403,6 +1402,7 @@ ieee80211_rx_mgmt_disassoc(struct ieee80211_sub_if_data *sdata,
sdata
->
dev
->
name
,
mgmt
->
sa
,
reason_code
);
sdata
->
dev
->
name
,
mgmt
->
sa
,
reason_code
);
ieee80211_set_disassoc
(
sdata
,
false
);
ieee80211_set_disassoc
(
sdata
,
false
);
ieee80211_recalc_idle
(
sdata
->
local
);
return
RX_MGMT_CFG80211_DISASSOC
;
return
RX_MGMT_CFG80211_DISASSOC
;
}
}
...
@@ -2117,6 +2117,7 @@ static void ieee80211_sta_work(struct work_struct *work)
...
@@ -2117,6 +2117,7 @@ static void ieee80211_sta_work(struct work_struct *work)
" after %dms, disconnecting.
\n
"
,
" after %dms, disconnecting.
\n
"
,
bssid
,
(
1000
*
IEEE80211_PROBE_WAIT
)
/
HZ
);
bssid
,
(
1000
*
IEEE80211_PROBE_WAIT
)
/
HZ
);
ieee80211_set_disassoc
(
sdata
,
true
);
ieee80211_set_disassoc
(
sdata
,
true
);
ieee80211_recalc_idle
(
local
);
mutex_unlock
(
&
ifmgd
->
mtx
);
mutex_unlock
(
&
ifmgd
->
mtx
);
/*
/*
* must be outside lock due to cfg80211,
* must be outside lock due to cfg80211,
...
@@ -2560,6 +2561,8 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
...
@@ -2560,6 +2561,8 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
IEEE80211_STYPE_DEAUTH
,
req
->
reason_code
,
IEEE80211_STYPE_DEAUTH
,
req
->
reason_code
,
cookie
);
cookie
);
ieee80211_recalc_idle
(
sdata
->
local
);
return
0
;
return
0
;
}
}
...
@@ -2592,5 +2595,8 @@ int ieee80211_mgd_disassoc(struct ieee80211_sub_if_data *sdata,
...
@@ -2592,5 +2595,8 @@ int ieee80211_mgd_disassoc(struct ieee80211_sub_if_data *sdata,
ieee80211_send_deauth_disassoc
(
sdata
,
req
->
bss
->
bssid
,
ieee80211_send_deauth_disassoc
(
sdata
,
req
->
bss
->
bssid
,
IEEE80211_STYPE_DISASSOC
,
req
->
reason_code
,
IEEE80211_STYPE_DISASSOC
,
req
->
reason_code
,
cookie
);
cookie
);
ieee80211_recalc_idle
(
sdata
->
local
);
return
0
;
return
0
;
}
}
net/mac80211/scan.c
View file @
e61444d9
...
@@ -227,7 +227,8 @@ static bool ieee80211_prep_hw_scan(struct ieee80211_local *local)
...
@@ -227,7 +227,8 @@ static bool ieee80211_prep_hw_scan(struct ieee80211_local *local)
static
void
ieee80211_scan_ps_enable
(
struct
ieee80211_sub_if_data
*
sdata
)
static
void
ieee80211_scan_ps_enable
(
struct
ieee80211_sub_if_data
*
sdata
)
{
{
struct
ieee80211_local
*
local
=
sdata
->
local
;
struct
ieee80211_local
*
local
=
sdata
->
local
;
bool
ps
=
false
;
local
->
scan_ps_enabled
=
false
;
/* FIXME: what to do when local->pspolling is true? */
/* FIXME: what to do when local->pspolling is true? */
...
@@ -235,12 +236,13 @@ static void ieee80211_scan_ps_enable(struct ieee80211_sub_if_data *sdata)
...
@@ -235,12 +236,13 @@ static void ieee80211_scan_ps_enable(struct ieee80211_sub_if_data *sdata)
cancel_work_sync
(
&
local
->
dynamic_ps_enable_work
);
cancel_work_sync
(
&
local
->
dynamic_ps_enable_work
);
if
(
local
->
hw
.
conf
.
flags
&
IEEE80211_CONF_PS
)
{
if
(
local
->
hw
.
conf
.
flags
&
IEEE80211_CONF_PS
)
{
ps
=
true
;
local
->
scan_ps_enabled
=
true
;
local
->
hw
.
conf
.
flags
&=
~
IEEE80211_CONF_PS
;
local
->
hw
.
conf
.
flags
&=
~
IEEE80211_CONF_PS
;
ieee80211_hw_config
(
local
,
IEEE80211_CONF_CHANGE_PS
);
ieee80211_hw_config
(
local
,
IEEE80211_CONF_CHANGE_PS
);
}
}
if
(
!
ps
||
!
(
local
->
hw
.
flags
&
IEEE80211_HW_PS_NULLFUNC_STACK
))
if
(
!
(
local
->
scan_ps_enabled
)
||
!
(
local
->
hw
.
flags
&
IEEE80211_HW_PS_NULLFUNC_STACK
))
/*
/*
* If power save was enabled, no need to send a nullfunc
* If power save was enabled, no need to send a nullfunc
* frame because AP knows that we are sleeping. But if the
* frame because AP knows that we are sleeping. But if the
...
@@ -261,7 +263,7 @@ static void ieee80211_scan_ps_disable(struct ieee80211_sub_if_data *sdata)
...
@@ -261,7 +263,7 @@ static void ieee80211_scan_ps_disable(struct ieee80211_sub_if_data *sdata)
if
(
!
local
->
ps_sdata
)
if
(
!
local
->
ps_sdata
)
ieee80211_send_nullfunc
(
local
,
sdata
,
0
);
ieee80211_send_nullfunc
(
local
,
sdata
,
0
);
else
{
else
if
(
local
->
scan_ps_enabled
)
{
/*
/*
* In !IEEE80211_HW_PS_NULLFUNC_STACK case the hardware
* In !IEEE80211_HW_PS_NULLFUNC_STACK case the hardware
* will send a nullfunc frame with the powersave bit set
* will send a nullfunc frame with the powersave bit set
...
@@ -277,6 +279,16 @@ static void ieee80211_scan_ps_disable(struct ieee80211_sub_if_data *sdata)
...
@@ -277,6 +279,16 @@ static void ieee80211_scan_ps_disable(struct ieee80211_sub_if_data *sdata)
*/
*/
local
->
hw
.
conf
.
flags
|=
IEEE80211_CONF_PS
;
local
->
hw
.
conf
.
flags
|=
IEEE80211_CONF_PS
;
ieee80211_hw_config
(
local
,
IEEE80211_CONF_CHANGE_PS
);
ieee80211_hw_config
(
local
,
IEEE80211_CONF_CHANGE_PS
);
}
else
if
(
local
->
hw
.
conf
.
dynamic_ps_timeout
>
0
)
{
/*
* If IEEE80211_CONF_PS was not set and the dynamic_ps_timer
* had been running before leaving the operating channel,
* restart the timer now and send a nullfunc frame to inform
* the AP that we are awake.
*/
ieee80211_send_nullfunc
(
local
,
sdata
,
0
);
mod_timer
(
&
local
->
dynamic_ps_timer
,
jiffies
+
msecs_to_jiffies
(
local
->
hw
.
conf
.
dynamic_ps_timeout
));
}
}
}
}
...
...
net/mac80211/util.c
View file @
e61444d9
...
@@ -579,7 +579,7 @@ u32 ieee802_11_parse_elems_crc(u8 *start, size_t len,
...
@@ -579,7 +579,7 @@ u32 ieee802_11_parse_elems_crc(u8 *start, size_t len,
if
(
elen
>
left
)
if
(
elen
>
left
)
break
;
break
;
if
(
calc_crc
&&
id
<
64
&&
(
filter
&
BIT
(
id
)))
if
(
calc_crc
&&
id
<
64
&&
(
filter
&
(
1ULL
<<
id
)))
crc
=
crc32_be
(
crc
,
pos
-
2
,
elen
+
2
);
crc
=
crc32_be
(
crc
,
pos
-
2
,
elen
+
2
);
switch
(
id
)
{
switch
(
id
)
{
...
...
net/rfkill/core.c
View file @
e61444d9
...
@@ -579,6 +579,8 @@ static ssize_t rfkill_name_show(struct device *dev,
...
@@ -579,6 +579,8 @@ static ssize_t rfkill_name_show(struct device *dev,
static
const
char
*
rfkill_get_type_str
(
enum
rfkill_type
type
)
static
const
char
*
rfkill_get_type_str
(
enum
rfkill_type
type
)
{
{
BUILD_BUG_ON
(
NUM_RFKILL_TYPES
!=
RFKILL_TYPE_FM
+
1
);
switch
(
type
)
{
switch
(
type
)
{
case
RFKILL_TYPE_WLAN
:
case
RFKILL_TYPE_WLAN
:
return
"wlan"
;
return
"wlan"
;
...
@@ -597,8 +599,6 @@ static const char *rfkill_get_type_str(enum rfkill_type type)
...
@@ -597,8 +599,6 @@ static const char *rfkill_get_type_str(enum rfkill_type type)
default:
default:
BUG
();
BUG
();
}
}
BUILD_BUG_ON
(
NUM_RFKILL_TYPES
!=
RFKILL_TYPE_FM
+
1
);
}
}
static
ssize_t
rfkill_type_show
(
struct
device
*
dev
,
static
ssize_t
rfkill_type_show
(
struct
device
*
dev
,
...
...
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