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
429576b9
Commit
429576b9
authored
Apr 26, 2011
by
John W. Linville
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
parents
9835a30e
069f40fc
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
86 additions
and
72 deletions
+86
-72
drivers/net/wireless/ath/ath9k/hif_usb.c
drivers/net/wireless/ath/ath9k/hif_usb.c
+2
-2
drivers/net/wireless/ath/ath9k/hw.c
drivers/net/wireless/ath/ath9k/hw.c
+0
-9
drivers/net/wireless/ath/ath9k/mac.c
drivers/net/wireless/ath/ath9k/mac.c
+22
-3
drivers/net/wireless/ath/ath9k/mac.h
drivers/net/wireless/ath/ath9k/mac.h
+1
-1
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/main.c
+10
-2
drivers/net/wireless/ath/ath9k/recv.c
drivers/net/wireless/ath/ath9k/recv.c
+3
-3
drivers/net/wireless/iwlegacy/Kconfig
drivers/net/wireless/iwlegacy/Kconfig
+5
-4
drivers/net/wireless/iwlegacy/iwl-3945-hw.h
drivers/net/wireless/iwlegacy/iwl-3945-hw.h
+0
-2
drivers/net/wireless/iwlegacy/iwl-4965-hw.h
drivers/net/wireless/iwlegacy/iwl-4965-hw.h
+0
-3
drivers/net/wireless/iwlegacy/iwl-4965-tx.c
drivers/net/wireless/iwlegacy/iwl-4965-tx.c
+7
-3
drivers/net/wireless/iwlegacy/iwl-core.c
drivers/net/wireless/iwlegacy/iwl-core.c
+11
-6
drivers/net/wireless/iwlegacy/iwl-eeprom.c
drivers/net/wireless/iwlegacy/iwl-eeprom.c
+0
-7
drivers/net/wireless/iwlegacy/iwl3945-base.c
drivers/net/wireless/iwlegacy/iwl3945-base.c
+0
-4
drivers/net/wireless/iwlegacy/iwl4965-base.c
drivers/net/wireless/iwlegacy/iwl4965-base.c
+0
-6
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
+1
-6
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+7
-3
drivers/net/wireless/p54/txrx.c
drivers/net/wireless/p54/txrx.c
+1
-1
net/bluetooth/hci_core.c
net/bluetooth/hci_core.c
+2
-3
net/bluetooth/hci_event.c
net/bluetooth/hci_event.c
+0
-2
net/bluetooth/l2cap_core.c
net/bluetooth/l2cap_core.c
+1
-0
net/bluetooth/sco.c
net/bluetooth/sco.c
+9
-0
net/mac80211/cfg.c
net/mac80211/cfg.c
+2
-0
net/mac80211/debugfs_netdev.c
net/mac80211/debugfs_netdev.c
+2
-2
No files found.
drivers/net/wireless/ath/ath9k/hif_usb.c
View file @
429576b9
...
...
@@ -1178,7 +1178,7 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,
}
ret
=
ath9k_htc_hw_init
(
hif_dev
->
htc_handle
,
&
hif_dev
->
udev
->
dev
,
hif_dev
->
device_id
,
&
interface
->
dev
,
hif_dev
->
device_id
,
hif_dev
->
udev
->
product
,
id
->
driver_info
);
if
(
ret
)
{
ret
=
-
EINVAL
;
...
...
@@ -1296,7 +1296,7 @@ static int ath9k_hif_usb_resume(struct usb_interface *interface)
#endif
static
struct
usb_driver
ath9k_hif_usb_driver
=
{
.
name
=
"ath9k_hif_usb"
,
.
name
=
KBUILD_MODNAME
,
.
probe
=
ath9k_hif_usb_probe
,
.
disconnect
=
ath9k_hif_usb_disconnect
,
#ifdef CONFIG_PM
...
...
drivers/net/wireless/ath/ath9k/hw.c
View file @
429576b9
...
...
@@ -1320,15 +1320,6 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
ah
->
txchainmask
=
common
->
tx_chainmask
;
ah
->
rxchainmask
=
common
->
rx_chainmask
;
if
((
common
->
bus_ops
->
ath_bus_type
!=
ATH_USB
)
&&
!
ah
->
chip_fullsleep
)
{
ath9k_hw_abortpcurecv
(
ah
);
if
(
!
ath9k_hw_stopdmarecv
(
ah
))
{
ath_dbg
(
common
,
ATH_DBG_XMIT
,
"Failed to stop receive dma
\n
"
);
bChannelChange
=
false
;
}
}
if
(
!
ath9k_hw_setpower
(
ah
,
ATH9K_PM_AWAKE
))
return
-
EIO
;
...
...
drivers/net/wireless/ath/ath9k/mac.c
View file @
429576b9
...
...
@@ -710,27 +710,46 @@ void ath9k_hw_abortpcurecv(struct ath_hw *ah)
}
EXPORT_SYMBOL
(
ath9k_hw_abortpcurecv
);
bool
ath9k_hw_stopdmarecv
(
struct
ath_hw
*
ah
)
bool
ath9k_hw_stopdmarecv
(
struct
ath_hw
*
ah
,
bool
*
reset
)
{
#define AH_RX_STOP_DMA_TIMEOUT 10000
/* usec */
struct
ath_common
*
common
=
ath9k_hw_common
(
ah
);
u32
mac_status
,
last_mac_status
=
0
;
int
i
;
/* Enable access to the DMA observation bus */
REG_WRITE
(
ah
,
AR_MACMISC
,
((
AR_MACMISC_DMA_OBS_LINE_8
<<
AR_MACMISC_DMA_OBS_S
)
|
(
AR_MACMISC_MISC_OBS_BUS_1
<<
AR_MACMISC_MISC_OBS_BUS_MSB_S
)));
REG_WRITE
(
ah
,
AR_CR
,
AR_CR_RXD
);
/* Wait for rx enable bit to go low */
for
(
i
=
AH_RX_STOP_DMA_TIMEOUT
/
AH_TIME_QUANTUM
;
i
!=
0
;
i
--
)
{
if
((
REG_READ
(
ah
,
AR_CR
)
&
AR_CR_RXE
)
==
0
)
break
;
if
(
!
AR_SREV_9300_20_OR_LATER
(
ah
))
{
mac_status
=
REG_READ
(
ah
,
AR_DMADBG_7
)
&
0x7f0
;
if
(
mac_status
==
0x1c0
&&
mac_status
==
last_mac_status
)
{
*
reset
=
true
;
break
;
}
last_mac_status
=
mac_status
;
}
udelay
(
AH_TIME_QUANTUM
);
}
if
(
i
==
0
)
{
ath_err
(
common
,
"DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x
\n
"
,
"DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x
DMADBG_7=0x%08x
\n
"
,
AH_RX_STOP_DMA_TIMEOUT
/
1000
,
REG_READ
(
ah
,
AR_CR
),
REG_READ
(
ah
,
AR_DIAG_SW
));
REG_READ
(
ah
,
AR_DIAG_SW
),
REG_READ
(
ah
,
AR_DMADBG_7
));
return
false
;
}
else
{
return
true
;
...
...
drivers/net/wireless/ath/ath9k/mac.h
View file @
429576b9
...
...
@@ -694,7 +694,7 @@ bool ath9k_hw_setrxabort(struct ath_hw *ah, bool set);
void
ath9k_hw_putrxbuf
(
struct
ath_hw
*
ah
,
u32
rxdp
);
void
ath9k_hw_startpcureceive
(
struct
ath_hw
*
ah
,
bool
is_scanning
);
void
ath9k_hw_abortpcurecv
(
struct
ath_hw
*
ah
);
bool
ath9k_hw_stopdmarecv
(
struct
ath_hw
*
ah
);
bool
ath9k_hw_stopdmarecv
(
struct
ath_hw
*
ah
,
bool
*
reset
);
int
ath9k_hw_beaconq_setup
(
struct
ath_hw
*
ah
);
/* Interrupt Handling */
...
...
drivers/net/wireless/ath/ath9k/main.c
View file @
429576b9
...
...
@@ -1371,7 +1371,6 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw,
ath9k_calculate_iter_data
(
hw
,
vif
,
&
iter_data
);
ath9k_ps_wakeup
(
sc
);
/* Set BSSID mask. */
memcpy
(
common
->
bssidmask
,
iter_data
.
mask
,
ETH_ALEN
);
ath_hw_setbssidmask
(
common
);
...
...
@@ -1406,7 +1405,6 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw,
}
ath9k_hw_set_interrupts
(
ah
,
ah
->
imask
);
ath9k_ps_restore
(
sc
);
/* Set up ANI */
if
((
iter_data
.
naps
+
iter_data
.
nadhocs
)
>
0
)
{
...
...
@@ -1451,6 +1449,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
struct
ath_common
*
common
=
ath9k_hw_common
(
ah
);
int
ret
=
0
;
ath9k_ps_wakeup
(
sc
);
mutex_lock
(
&
sc
->
mutex
);
switch
(
vif
->
type
)
{
...
...
@@ -1494,6 +1493,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
ath9k_do_vif_add_setup
(
hw
,
vif
);
out:
mutex_unlock
(
&
sc
->
mutex
);
ath9k_ps_restore
(
sc
);
return
ret
;
}
...
...
@@ -1508,6 +1508,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
ath_dbg
(
common
,
ATH_DBG_CONFIG
,
"Change Interface
\n
"
);
mutex_lock
(
&
sc
->
mutex
);
ath9k_ps_wakeup
(
sc
);
/* See if new interface type is valid. */
if
((
new_type
==
NL80211_IFTYPE_ADHOC
)
&&
...
...
@@ -1537,6 +1538,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
ath9k_do_vif_add_setup
(
hw
,
vif
);
out:
ath9k_ps_restore
(
sc
);
mutex_unlock
(
&
sc
->
mutex
);
return
ret
;
}
...
...
@@ -1549,6 +1551,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
ath_dbg
(
common
,
ATH_DBG_CONFIG
,
"Detach Interface
\n
"
);
ath9k_ps_wakeup
(
sc
);
mutex_lock
(
&
sc
->
mutex
);
sc
->
nvifs
--
;
...
...
@@ -1560,6 +1563,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
ath9k_calculate_summary_state
(
hw
,
NULL
);
mutex_unlock
(
&
sc
->
mutex
);
ath9k_ps_restore
(
sc
);
}
static
void
ath9k_enable_ps
(
struct
ath_softc
*
sc
)
...
...
@@ -1840,6 +1844,7 @@ static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue,
txq
=
sc
->
tx
.
txq_map
[
queue
];
ath9k_ps_wakeup
(
sc
);
mutex_lock
(
&
sc
->
mutex
);
memset
(
&
qi
,
0
,
sizeof
(
struct
ath9k_tx_queue_info
));
...
...
@@ -1863,6 +1868,7 @@ static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue,
ath_beaconq_config
(
sc
);
mutex_unlock
(
&
sc
->
mutex
);
ath9k_ps_restore
(
sc
);
return
ret
;
}
...
...
@@ -2021,6 +2027,7 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
int
slottime
;
int
error
;
ath9k_ps_wakeup
(
sc
);
mutex_lock
(
&
sc
->
mutex
);
if
(
changed
&
BSS_CHANGED_BSSID
)
{
...
...
@@ -2106,6 +2113,7 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
}
mutex_unlock
(
&
sc
->
mutex
);
ath9k_ps_restore
(
sc
);
}
static
u64
ath9k_get_tsf
(
struct
ieee80211_hw
*
hw
)
...
...
drivers/net/wireless/ath/ath9k/recv.c
View file @
429576b9
...
...
@@ -483,12 +483,12 @@ int ath_startrecv(struct ath_softc *sc)
bool
ath_stoprecv
(
struct
ath_softc
*
sc
)
{
struct
ath_hw
*
ah
=
sc
->
sc_ah
;
bool
stopped
;
bool
stopped
,
reset
=
false
;
spin_lock_bh
(
&
sc
->
rx
.
rxbuflock
);
ath9k_hw_abortpcurecv
(
ah
);
ath9k_hw_setrxfilter
(
ah
,
0
);
stopped
=
ath9k_hw_stopdmarecv
(
ah
);
stopped
=
ath9k_hw_stopdmarecv
(
ah
,
&
reset
);
if
(
sc
->
sc_ah
->
caps
.
hw_caps
&
ATH9K_HW_CAP_EDMA
)
ath_edma_stop_recv
(
sc
);
...
...
@@ -503,7 +503,7 @@ bool ath_stoprecv(struct ath_softc *sc)
"confusing the DMA engine when we start RX up
\n
"
);
ATH_DBG_WARN_ON_ONCE
(
!
stopped
);
}
return
stopped
;
return
stopped
&&
!
reset
;
}
void
ath_flushrecv
(
struct
ath_softc
*
sc
)
...
...
drivers/net/wireless/iwlegacy/Kconfig
View file @
429576b9
config IWLWIFI_LEGACY
tristate "Intel Wireless Wifi legacy devices"
depends on PCI && MAC80211
tristate
select FW_LOADER
select NEW_LEDS
select LEDS_CLASS
...
...
@@ -65,7 +64,8 @@ endmenu
config IWL4965
tristate "Intel Wireless WiFi 4965AGN (iwl4965)"
depends on IWLWIFI_LEGACY
depends on PCI && MAC80211
select IWLWIFI_LEGACY
---help---
This option enables support for
...
...
@@ -92,7 +92,8 @@ config IWL4965
config IWL3945
tristate "Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)"
depends on IWLWIFI_LEGACY
depends on PCI && MAC80211
select IWLWIFI_LEGACY
---help---
Select to build the driver supporting the:
...
...
drivers/net/wireless/iwlegacy/iwl-3945-hw.h
View file @
429576b9
...
...
@@ -74,8 +74,6 @@
/* RSSI to dBm */
#define IWL39_RSSI_OFFSET 95
#define IWL_DEFAULT_TX_POWER 0x0F
/*
* EEPROM related constants, enums, and structures.
*/
...
...
drivers/net/wireless/iwlegacy/iwl-4965-hw.h
View file @
429576b9
...
...
@@ -804,9 +804,6 @@ struct iwl4965_scd_bc_tbl {
#define IWL4965_DEFAULT_TX_RETRY 15
/* Limit range of txpower output target to be between these values */
#define IWL4965_TX_POWER_TARGET_POWER_MIN (0)
/* 0 dBm: 1 milliwatt */
/* EEPROM */
#define IWL4965_FIRST_AMPDU_QUEUE 10
...
...
drivers/net/wireless/iwlegacy/iwl-4965-tx.c
View file @
429576b9
...
...
@@ -1127,12 +1127,16 @@ int iwl4965_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index)
q
->
read_ptr
=
iwl_legacy_queue_inc_wrap
(
q
->
read_ptr
,
q
->
n_bd
))
{
tx_info
=
&
txq
->
txb
[
txq
->
q
.
read_ptr
];
iwl4965_tx_status
(
priv
,
tx_info
,
txq_id
>=
IWL4965_FIRST_AMPDU_QUEUE
);
if
(
WARN_ON_ONCE
(
tx_info
->
skb
==
NULL
))
continue
;
hdr
=
(
struct
ieee80211_hdr
*
)
tx_info
->
skb
->
data
;
if
(
hdr
&&
ieee80211_is_data_qos
(
hdr
->
frame_control
))
if
(
ieee80211_is_data_qos
(
hdr
->
frame_control
))
nfreed
++
;
iwl4965_tx_status
(
priv
,
tx_info
,
txq_id
>=
IWL4965_FIRST_AMPDU_QUEUE
);
tx_info
->
skb
=
NULL
;
priv
->
cfg
->
ops
->
lib
->
txq_free_tfd
(
priv
,
txq
);
...
...
drivers/net/wireless/iwlegacy/iwl-core.c
View file @
429576b9
...
...
@@ -160,6 +160,7 @@ int iwl_legacy_init_geos(struct iwl_priv *priv)
struct
ieee80211_channel
*
geo_ch
;
struct
ieee80211_rate
*
rates
;
int
i
=
0
;
s8
max_tx_power
=
0
;
if
(
priv
->
bands
[
IEEE80211_BAND_2GHZ
].
n_bitrates
||
priv
->
bands
[
IEEE80211_BAND_5GHZ
].
n_bitrates
)
{
...
...
@@ -235,8 +236,8 @@ int iwl_legacy_init_geos(struct iwl_priv *priv)
geo_ch
->
flags
|=
ch
->
ht40_extension_channel
;
if
(
ch
->
max_power_avg
>
priv
->
tx_power_device_lmt
)
priv
->
tx_power_device_lmt
=
ch
->
max_power_avg
;
if
(
ch
->
max_power_avg
>
max_tx_power
)
max_tx_power
=
ch
->
max_power_avg
;
}
else
{
geo_ch
->
flags
|=
IEEE80211_CHAN_DISABLED
;
}
...
...
@@ -249,6 +250,10 @@ int iwl_legacy_init_geos(struct iwl_priv *priv)
geo_ch
->
flags
);
}
priv
->
tx_power_device_lmt
=
max_tx_power
;
priv
->
tx_power_user_lmt
=
max_tx_power
;
priv
->
tx_power_next
=
max_tx_power
;
if
((
priv
->
bands
[
IEEE80211_BAND_5GHZ
].
n_channels
==
0
)
&&
priv
->
cfg
->
sku
&
IWL_SKU_A
)
{
IWL_INFO
(
priv
,
"Incorrectly detected BG card as ABG. "
...
...
@@ -1124,11 +1129,11 @@ int iwl_legacy_set_tx_power(struct iwl_priv *priv, s8 tx_power, bool force)
if
(
!
priv
->
cfg
->
ops
->
lib
->
send_tx_power
)
return
-
EOPNOTSUPP
;
if
(
tx_power
<
IWL4965_TX_POWER_TARGET_POWER_MIN
)
{
/* 0 dBm mean 1 milliwatt */
if
(
tx_power
<
0
)
{
IWL_WARN
(
priv
,
"Requested user TXPOWER %d below lower limit %d.
\n
"
,
tx_power
,
IWL4965_TX_POWER_TARGET_POWER_MIN
);
"Requested user TXPOWER %d below 1 mW.
\n
"
,
tx_power
);
return
-
EINVAL
;
}
...
...
drivers/net/wireless/iwlegacy/iwl-eeprom.c
View file @
429576b9
...
...
@@ -471,13 +471,6 @@ int iwl_legacy_init_channel_map(struct iwl_priv *priv)
flags
&
EEPROM_CHANNEL_RADAR
))
?
""
:
"not "
);
/* Set the tx_power_user_lmt to the highest power
* supported by any channel */
if
(
eeprom_ch_info
[
ch
].
max_power_avg
>
priv
->
tx_power_user_lmt
)
priv
->
tx_power_user_lmt
=
eeprom_ch_info
[
ch
].
max_power_avg
;
ch_info
++
;
}
}
...
...
drivers/net/wireless/iwlegacy/iwl3945-base.c
View file @
429576b9
...
...
@@ -3825,10 +3825,6 @@ static int iwl3945_init_drv(struct iwl_priv *priv)
priv
->
force_reset
[
IWL_FW_RESET
].
reset_duration
=
IWL_DELAY_NEXT_FORCE_FW_RELOAD
;
priv
->
tx_power_user_lmt
=
IWL_DEFAULT_TX_POWER
;
priv
->
tx_power_next
=
IWL_DEFAULT_TX_POWER
;
if
(
eeprom
->
version
<
EEPROM_3945_EEPROM_VERSION
)
{
IWL_WARN
(
priv
,
"Unsupported EEPROM version: 0x%04X
\n
"
,
eeprom
->
version
);
...
...
drivers/net/wireless/iwlegacy/iwl4965-base.c
View file @
429576b9
...
...
@@ -3140,12 +3140,6 @@ static int iwl4965_init_drv(struct iwl_priv *priv)
iwl_legacy_init_scan_params
(
priv
);
/* Set the tx_power_user_lmt to the lowest power level
* this value will get overwritten by channel max power avg
* from eeprom */
priv
->
tx_power_user_lmt
=
IWL4965_TX_POWER_TARGET_POWER_MIN
;
priv
->
tx_power_next
=
IWL4965_TX_POWER_TARGET_POWER_MIN
;
ret
=
iwl_legacy_init_channel_map
(
priv
);
if
(
ret
)
{
IWL_ERR
(
priv
,
"initializing regulatory failed: %d
\n
"
,
ret
);
...
...
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
View file @
429576b9
...
...
@@ -333,7 +333,6 @@ int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed)
struct
ieee80211_channel
*
channel
=
conf
->
channel
;
const
struct
iwl_channel_info
*
ch_info
;
int
ret
=
0
;
bool
ht_changed
[
NUM_IWL_RXON_CTX
]
=
{};
IWL_DEBUG_MAC80211
(
priv
,
"changed %#x"
,
changed
);
...
...
@@ -381,10 +380,8 @@ int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed)
for_each_context
(
priv
,
ctx
)
{
/* Configure HT40 channels */
if
(
ctx
->
ht
.
enabled
!=
conf_is_ht
(
conf
))
{
if
(
ctx
->
ht
.
enabled
!=
conf_is_ht
(
conf
))
ctx
->
ht
.
enabled
=
conf_is_ht
(
conf
);
ht_changed
[
ctx
->
ctxid
]
=
true
;
}
if
(
ctx
->
ht
.
enabled
)
{
if
(
conf_is_ht40_minus
(
conf
))
{
...
...
@@ -453,8 +450,6 @@ int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed)
if
(
!
memcmp
(
&
ctx
->
staging
,
&
ctx
->
active
,
sizeof
(
ctx
->
staging
)))
continue
;
iwlagn_commit_rxon
(
priv
,
ctx
);
if
(
ht_changed
[
ctx
->
ctxid
])
iwlagn_update_qos
(
priv
,
ctx
);
}
out:
mutex_unlock
(
&
priv
->
mutex
);
...
...
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
View file @
429576b9
...
...
@@ -1236,12 +1236,16 @@ int iwlagn_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index)
q
->
read_ptr
=
iwl_queue_inc_wrap
(
q
->
read_ptr
,
q
->
n_bd
))
{
tx_info
=
&
txq
->
txb
[
txq
->
q
.
read_ptr
];
iwlagn_tx_status
(
priv
,
tx_info
,
txq_id
>=
IWLAGN_FIRST_AMPDU_QUEUE
);
if
(
WARN_ON_ONCE
(
tx_info
->
skb
==
NULL
))
continue
;
hdr
=
(
struct
ieee80211_hdr
*
)
tx_info
->
skb
->
data
;
if
(
hdr
&&
ieee80211_is_data_qos
(
hdr
->
frame_control
))
if
(
ieee80211_is_data_qos
(
hdr
->
frame_control
))
nfreed
++
;
iwlagn_tx_status
(
priv
,
tx_info
,
txq_id
>=
IWLAGN_FIRST_AMPDU_QUEUE
);
tx_info
->
skb
=
NULL
;
if
(
priv
->
cfg
->
ops
->
lib
->
txq_inval_byte_cnt_tbl
)
...
...
drivers/net/wireless/p54/txrx.c
View file @
429576b9
...
...
@@ -703,7 +703,7 @@ void p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb)
struct
p54_tx_info
*
p54info
;
struct
p54_hdr
*
hdr
;
struct
p54_tx_data
*
txhdr
;
unsigned
int
padding
,
len
,
extra_len
;
unsigned
int
padding
,
len
,
extra_len
=
0
;
int
i
,
j
,
ridx
;
u16
hdr_flags
=
0
,
aid
=
0
;
u8
rate
,
queue
=
0
,
crypt_offset
=
0
;
...
...
net/bluetooth/hci_core.c
View file @
429576b9
...
...
@@ -586,10 +586,8 @@ static int hci_dev_do_close(struct hci_dev *hdev)
hci_req_cancel
(
hdev
,
ENODEV
);
hci_req_lock
(
hdev
);
/* Stop timer, it might be running */
del_timer_sync
(
&
hdev
->
cmd_timer
);
if
(
!
test_and_clear_bit
(
HCI_UP
,
&
hdev
->
flags
))
{
del_timer_sync
(
&
hdev
->
cmd_timer
);
hci_req_unlock
(
hdev
);
return
0
;
}
...
...
@@ -628,6 +626,7 @@ static int hci_dev_do_close(struct hci_dev *hdev)
/* Drop last sent command */
if
(
hdev
->
sent_cmd
)
{
del_timer_sync
(
&
hdev
->
cmd_timer
);
kfree_skb
(
hdev
->
sent_cmd
);
hdev
->
sent_cmd
=
NULL
;
}
...
...
net/bluetooth/hci_event.c
View file @
429576b9
...
...
@@ -2419,8 +2419,6 @@ static inline void hci_io_capa_reply_evt(struct hci_dev *hdev, struct sk_buff *s
if
(
!
conn
)
goto
unlock
;
hci_conn_hold
(
conn
);
conn
->
remote_cap
=
ev
->
capability
;
conn
->
remote_oob
=
ev
->
oob_data
;
conn
->
remote_auth
=
ev
->
authentication
;
...
...
net/bluetooth/l2cap_core.c
View file @
429576b9
...
...
@@ -1079,6 +1079,7 @@ static void l2cap_retransmit_one_frame(struct l2cap_chan *chan, u8 tx_seq)
tx_skb
=
skb_clone
(
skb
,
GFP_ATOMIC
);
bt_cb
(
skb
)
->
retries
++
;
control
=
get_unaligned_le16
(
tx_skb
->
data
+
L2CAP_HDR_SIZE
);
control
&=
L2CAP_CTRL_SAR
;
if
(
chan
->
conn_state
&
L2CAP_CONN_SEND_FBIT
)
{
control
|=
L2CAP_CTRL_FINAL
;
...
...
net/bluetooth/sco.c
View file @
429576b9
...
...
@@ -369,6 +369,15 @@ static void __sco_sock_close(struct sock *sk)
case
BT_CONNECTED
:
case
BT_CONFIG
:
if
(
sco_pi
(
sk
)
->
conn
)
{
sk
->
sk_state
=
BT_DISCONN
;
sco_sock_set_timer
(
sk
,
SCO_DISCONN_TIMEOUT
);
hci_conn_put
(
sco_pi
(
sk
)
->
conn
->
hcon
);
sco_pi
(
sk
)
->
conn
=
NULL
;
}
else
sco_chan_del
(
sk
,
ECONNRESET
);
break
;
case
BT_CONNECT
:
case
BT_DISCONN
:
sco_chan_del
(
sk
,
ECONNRESET
);
...
...
net/mac80211/cfg.c
View file @
429576b9
...
...
@@ -1526,6 +1526,8 @@ int __ieee80211_request_smps(struct ieee80211_sub_if_data *sdata,
enum
ieee80211_smps_mode
old_req
;
int
err
;
lockdep_assert_held
(
&
sdata
->
u
.
mgd
.
mtx
);
old_req
=
sdata
->
u
.
mgd
.
req_smps
;
sdata
->
u
.
mgd
.
req_smps
=
smps_mode
;
...
...
net/mac80211/debugfs_netdev.c
View file @
429576b9
...
...
@@ -177,9 +177,9 @@ static int ieee80211_set_smps(struct ieee80211_sub_if_data *sdata,
if
(
sdata
->
vif
.
type
!=
NL80211_IFTYPE_STATION
)
return
-
EOPNOTSUPP
;
mutex_lock
(
&
local
->
iflist_
mtx
);
mutex_lock
(
&
sdata
->
u
.
mgd
.
mtx
);
err
=
__ieee80211_request_smps
(
sdata
,
smps_mode
);
mutex_unlock
(
&
local
->
iflist_
mtx
);
mutex_unlock
(
&
sdata
->
u
.
mgd
.
mtx
);
return
err
;
}
...
...
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