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
ac1c8d5e
Commit
ac1c8d5e
authored
Apr 29, 2015
by
Emmanuel Grumbach
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'iwlwifi-fixes/master' into iwlwifi-next
parents
6c373ca8
e7afe89f
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
135 additions
and
116 deletions
+135
-116
drivers/net/wireless/iwlwifi/iwl-fw-file.h
drivers/net/wireless/iwlwifi/iwl-fw-file.h
+2
-0
drivers/net/wireless/iwlwifi/iwl-trans.h
drivers/net/wireless/iwlwifi/iwl-trans.h
+27
-14
drivers/net/wireless/iwlwifi/mvm/d3.c
drivers/net/wireless/iwlwifi/mvm/d3.c
+1
-1
drivers/net/wireless/iwlwifi/mvm/fw-api-power.h
drivers/net/wireless/iwlwifi/mvm/fw-api-power.h
+34
-0
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
+2
-42
drivers/net/wireless/iwlwifi/mvm/fw-api.h
drivers/net/wireless/iwlwifi/mvm/fw-api.h
+0
-13
drivers/net/wireless/iwlwifi/mvm/fw.c
drivers/net/wireless/iwlwifi/mvm/fw.c
+21
-33
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
+23
-3
drivers/net/wireless/iwlwifi/mvm/mvm.h
drivers/net/wireless/iwlwifi/mvm/mvm.h
+0
-1
drivers/net/wireless/iwlwifi/mvm/ops.c
drivers/net/wireless/iwlwifi/mvm/ops.c
+10
-0
drivers/net/wireless/iwlwifi/mvm/rx.c
drivers/net/wireless/iwlwifi/mvm/rx.c
+5
-0
drivers/net/wireless/iwlwifi/mvm/scan.c
drivers/net/wireless/iwlwifi/mvm/scan.c
+1
-1
drivers/net/wireless/iwlwifi/pcie/trans.c
drivers/net/wireless/iwlwifi/pcie/trans.c
+9
-8
No files found.
drivers/net/wireless/iwlwifi/iwl-fw-file.h
View file @
ac1c8d5e
...
...
@@ -244,6 +244,7 @@ enum iwl_ucode_tlv_flag {
* longer than the passive one, which is essential for fragmented scan.
* @IWL_UCODE_TLV_API_WIFI_MCC_UPDATE: ucode supports MCC updates with source.
* IWL_UCODE_TLV_API_HDC_PHASE_0: ucode supports finer configuration of LTR
* @IWL_UCODE_TLV_API_TX_POWER_DEV: new API for tx power.
* @IWL_UCODE_TLV_API_BASIC_DWELL: use only basic dwell time in scan command,
* regardless of the band or the number of the probes. FW will calculate
* the actual dwell time.
...
...
@@ -260,6 +261,7 @@ enum iwl_ucode_tlv_api {
IWL_UCODE_TLV_API_FRAGMENTED_SCAN
=
BIT
(
8
),
IWL_UCODE_TLV_API_WIFI_MCC_UPDATE
=
BIT
(
9
),
IWL_UCODE_TLV_API_HDC_PHASE_0
=
BIT
(
10
),
IWL_UCODE_TLV_API_TX_POWER_DEV
=
BIT
(
11
),
IWL_UCODE_TLV_API_BASIC_DWELL
=
BIT
(
13
),
IWL_UCODE_TLV_API_SCD_CFG
=
BIT
(
15
),
IWL_UCODE_TLV_API_SINGLE_SCAN_EBS
=
BIT
(
16
),
...
...
drivers/net/wireless/iwlwifi/iwl-trans.h
View file @
ac1c8d5e
...
...
@@ -6,7 +6,7 @@
* GPL LICENSE SUMMARY
*
* Copyright(c) 2007 - 2014 Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 201
4
Intel Mobile Communications GmbH
* Copyright(c) 2013 - 201
5
Intel Mobile Communications GmbH
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License as
...
...
@@ -32,7 +32,7 @@
* BSD LICENSE
*
* Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 201
4
Intel Mobile Communications GmbH
* Copyright(c) 2013 - 201
5
Intel Mobile Communications GmbH
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
@@ -421,8 +421,9 @@ struct iwl_trans_txq_scd_cfg {
*
* All the handlers MUST be implemented
*
* @start_hw: starts the HW- from that point on, the HW can send interrupts
* May sleep
* @start_hw: starts the HW. If low_power is true, the NIC needs to be taken
* out of a low power state. From that point on, the HW can send
* interrupts. May sleep.
* @op_mode_leave: Turn off the HW RF kill indication if on
* May sleep
* @start_fw: allocates and inits all the resources for the transport
...
...
@@ -432,10 +433,11 @@ struct iwl_trans_txq_scd_cfg {
* the SCD base address in SRAM, then provide it here, or 0 otherwise.
* May sleep
* @stop_device: stops the whole device (embedded CPU put to reset) and stops
* the HW. From that point on, the HW will be in low power but will still
* issue interrupt if the HW RF kill is triggered. This callback must do
* the right thing and not crash even if start_hw() was called but not
* start_fw(). May sleep
* the HW. If low_power is true, the NIC will be put in low power state.
* From that point on, the HW will be stopped but will still issue an
* interrupt if the HW RF kill switch is triggered.
* This callback must do the right thing and not crash even if %start_hw()
* was called but not &start_fw(). May sleep.
* @d3_suspend: put the device into the correct mode for WoWLAN during
* suspend. This is optional, if not implemented WoWLAN will not be
* supported. This callback may sleep.
...
...
@@ -491,14 +493,14 @@ struct iwl_trans_txq_scd_cfg {
*/
struct
iwl_trans_ops
{
int
(
*
start_hw
)(
struct
iwl_trans
*
iwl_trans
);
int
(
*
start_hw
)(
struct
iwl_trans
*
iwl_trans
,
bool
low_power
);
void
(
*
op_mode_leave
)(
struct
iwl_trans
*
iwl_trans
);
int
(
*
start_fw
)(
struct
iwl_trans
*
trans
,
const
struct
fw_img
*
fw
,
bool
run_in_rfkill
);
int
(
*
update_sf
)(
struct
iwl_trans
*
trans
,
struct
iwl_sf_region
*
st_fwrd_space
);
void
(
*
fw_alive
)(
struct
iwl_trans
*
trans
,
u32
scd_addr
);
void
(
*
stop_device
)(
struct
iwl_trans
*
trans
);
void
(
*
stop_device
)(
struct
iwl_trans
*
trans
,
bool
low_power
);
void
(
*
d3_suspend
)(
struct
iwl_trans
*
trans
,
bool
test
);
int
(
*
d3_resume
)(
struct
iwl_trans
*
trans
,
enum
iwl_d3_status
*
status
,
...
...
@@ -652,11 +654,16 @@ static inline void iwl_trans_configure(struct iwl_trans *trans,
trans
->
ops
->
configure
(
trans
,
trans_cfg
);
}
static
inline
int
iwl_trans_start_hw
(
struct
iwl_trans
*
trans
)
static
inline
int
_iwl_trans_start_hw
(
struct
iwl_trans
*
trans
,
bool
low_power
)
{
might_sleep
();
return
trans
->
ops
->
start_hw
(
trans
);
return
trans
->
ops
->
start_hw
(
trans
,
low_power
);
}
static
inline
int
iwl_trans_start_hw
(
struct
iwl_trans
*
trans
)
{
return
trans
->
ops
->
start_hw
(
trans
,
true
);
}
static
inline
void
iwl_trans_op_mode_leave
(
struct
iwl_trans
*
trans
)
...
...
@@ -703,15 +710,21 @@ static inline int iwl_trans_update_sf(struct iwl_trans *trans,
return
0
;
}
static
inline
void
iwl_trans_stop_device
(
struct
iwl_trans
*
trans
)
static
inline
void
_iwl_trans_stop_device
(
struct
iwl_trans
*
trans
,
bool
low_power
)
{
might_sleep
();
trans
->
ops
->
stop_device
(
trans
);
trans
->
ops
->
stop_device
(
trans
,
low_power
);
trans
->
state
=
IWL_TRANS_NO_FW
;
}
static
inline
void
iwl_trans_stop_device
(
struct
iwl_trans
*
trans
)
{
_iwl_trans_stop_device
(
trans
,
true
);
}
static
inline
void
iwl_trans_d3_suspend
(
struct
iwl_trans
*
trans
,
bool
test
)
{
might_sleep
();
...
...
drivers/net/wireless/iwlwifi/mvm/d3.c
View file @
ac1c8d5e
...
...
@@ -1726,7 +1726,7 @@ iwl_mvm_netdetect_query_results(struct iwl_mvm *mvm,
results
->
matched_profiles
=
le32_to_cpu
(
query
->
matched_profiles
);
memcpy
(
results
->
matches
,
query
->
matches
,
sizeof
(
results
->
matches
));
#ifdef C
PTCF
G_IWLWIFI_DEBUGFS
#ifdef C
ONFI
G_IWLWIFI_DEBUGFS
mvm
->
last_netdetect_scans
=
le32_to_cpu
(
query
->
n_scans_done
);
#endif
...
...
drivers/net/wireless/iwlwifi/mvm/fw-api-power.h
View file @
ac1c8d5e
...
...
@@ -297,6 +297,40 @@ struct iwl_uapsd_misbehaving_ap_notif {
u8
reserved
[
3
];
}
__packed
;
/**
* struct iwl_reduce_tx_power_cmd - TX power reduction command
* REDUCE_TX_POWER_CMD = 0x9f
* @flags: (reserved for future implementation)
* @mac_context_id: id of the mac ctx for which we are reducing TX power.
* @pwr_restriction: TX power restriction in dBms.
*/
struct
iwl_reduce_tx_power_cmd
{
u8
flags
;
u8
mac_context_id
;
__le16
pwr_restriction
;
}
__packed
;
/* TX_REDUCED_POWER_API_S_VER_1 */
/**
* struct iwl_dev_tx_power_cmd - TX power reduction command
* REDUCE_TX_POWER_CMD = 0x9f
* @set_mode: 0 - MAC tx power, 1 - device tx power
* @mac_context_id: id of the mac ctx for which we are reducing TX power.
* @pwr_restriction: TX power restriction in 1/8 dBms.
* @dev_24: device TX power restriction in 1/8 dBms
* @dev_52_low: device TX power restriction upper band - low
* @dev_52_high: device TX power restriction upper band - high
*/
struct
iwl_dev_tx_power_cmd
{
__le32
set_mode
;
__le32
mac_context_id
;
__le16
pwr_restriction
;
__le16
dev_24
;
__le16
dev_52_low
;
__le16
dev_52_high
;
}
__packed
;
/* TX_REDUCED_POWER_API_S_VER_2 */
#define IWL_DEV_MAX_TX_POWER 0x7FFF
/**
* struct iwl_beacon_filter_cmd
* REPLY_BEACON_FILTERING_CMD = 0xd2 (command)
...
...
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
View file @
ac1c8d5e
...
...
@@ -122,46 +122,6 @@ enum iwl_scan_complete_status {
SCAN_COMP_STATUS_ERR_ALLOC_TE
=
0x0C
,
};
/**
* struct iwl_scan_results_notif - scan results for one channel
* ( SCAN_RESULTS_NOTIFICATION = 0x83 )
* @channel: which channel the results are from
* @band: 0 for 5.2 GHz, 1 for 2.4 GHz
* @probe_status: SCAN_PROBE_STATUS_*, indicates success of probe request
* @num_probe_not_sent: # of request that weren't sent due to not enough time
* @duration: duration spent in channel, in usecs
* @statistics: statistics gathered for this channel
*/
struct
iwl_scan_results_notif
{
u8
channel
;
u8
band
;
u8
probe_status
;
u8
num_probe_not_sent
;
__le32
duration
;
__le32
statistics
[
SCAN_RESULTS_STATISTICS
];
}
__packed
;
/* SCAN_RESULT_NTF_API_S_VER_2 */
/**
* struct iwl_scan_complete_notif - notifies end of scanning (all channels)
* ( SCAN_COMPLETE_NOTIFICATION = 0x84 )
* @scanned_channels: number of channels scanned (and number of valid results)
* @status: one of SCAN_COMP_STATUS_*
* @bt_status: BT on/off status
* @last_channel: last channel that was scanned
* @tsf_low: TSF timer (lower half) in usecs
* @tsf_high: TSF timer (higher half) in usecs
* @results: array of scan results, only "scanned_channels" of them are valid
*/
struct
iwl_scan_complete_notif
{
u8
scanned_channels
;
u8
status
;
u8
bt_status
;
u8
last_channel
;
__le32
tsf_low
;
__le32
tsf_high
;
struct
iwl_scan_results_notif
results
[];
}
__packed
;
/* SCAN_COMPLETE_NTF_API_S_VER_2 */
/* scan offload */
#define IWL_SCAN_MAX_BLACKLIST_LEN 64
#define IWL_SCAN_SHORT_BLACKLIST_LEN 16
...
...
@@ -554,7 +514,7 @@ struct iwl_scan_req_unified_lmac {
}
__packed
;
/**
* struct iwl_
lmac_
scan_results_notif - scan results for one channel -
* struct iwl_scan_results_notif - scan results for one channel -
* SCAN_RESULT_NTF_API_S_VER_3
* @channel: which channel the results are from
* @band: 0 for 5.2 GHz, 1 for 2.4 GHz
...
...
@@ -562,7 +522,7 @@ struct iwl_scan_req_unified_lmac {
* @num_probe_not_sent: # of request that weren't sent due to not enough time
* @duration: duration spent in channel, in usecs
*/
struct
iwl_
lmac_
scan_results_notif
{
struct
iwl_scan_results_notif
{
u8
channel
;
u8
band
;
u8
probe_status
;
...
...
drivers/net/wireless/iwlwifi/mvm/fw-api.h
View file @
ac1c8d5e
...
...
@@ -281,19 +281,6 @@ struct iwl_tx_ant_cfg_cmd {
__le32
valid
;
}
__packed
;
/**
* struct iwl_reduce_tx_power_cmd - TX power reduction command
* REDUCE_TX_POWER_CMD = 0x9f
* @flags: (reserved for future implementation)
* @mac_context_id: id of the mac ctx for which we are reducing TX power.
* @pwr_restriction: TX power restriction in dBms.
*/
struct
iwl_reduce_tx_power_cmd
{
u8
flags
;
u8
mac_context_id
;
__le16
pwr_restriction
;
}
__packed
;
/* TX_REDUCED_POWER_API_S_VER_1 */
/*
* Calibration control struct.
* Sent as part of the phy configuration command.
...
...
drivers/net/wireless/iwlwifi/mvm/fw.c
View file @
ac1c8d5e
...
...
@@ -6,7 +6,7 @@
* GPL LICENSE SUMMARY
*
* Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 201
4
Intel Mobile Communications GmbH
* Copyright(c) 2013 - 201
5
Intel Mobile Communications GmbH
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License as
...
...
@@ -32,7 +32,7 @@
* BSD LICENSE
*
* Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 201
4
Intel Mobile Communications GmbH
* Copyright(c) 2013 - 201
5
Intel Mobile Communications GmbH
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
@@ -322,7 +322,7 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm)
lockdep_assert_held
(
&
mvm
->
mutex
);
if
(
WARN_ON_ONCE
(
mvm
->
init_ucode_complete
||
mvm
->
calibrating
))
if
(
WARN_ON_ONCE
(
mvm
->
calibrating
))
return
0
;
iwl_init_notification_wait
(
&
mvm
->
notif_wait
,
...
...
@@ -396,8 +396,6 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm)
*/
ret
=
iwl_wait_notification
(
&
mvm
->
notif_wait
,
&
calib_wait
,
MVM_UCODE_CALIB_TIMEOUT
);
if
(
!
ret
)
mvm
->
init_ucode_complete
=
true
;
if
(
ret
&&
iwl_mvm_is_radio_killed
(
mvm
))
{
IWL_DEBUG_RF_KILL
(
mvm
,
"RFKILL while calibrating.
\n
"
);
...
...
@@ -494,15 +492,6 @@ int iwl_mvm_fw_dbg_collect_desc(struct iwl_mvm *mvm,
mvm
->
fw_dump_desc
=
desc
;
/* stop recording */
if
(
mvm
->
cfg
->
device_family
==
IWL_DEVICE_FAMILY_7000
)
{
iwl_set_bits_prph
(
mvm
->
trans
,
MON_BUFF_SAMPLE_CTL
,
0x100
);
}
else
{
iwl_write_prph
(
mvm
->
trans
,
DBGC_IN_SAMPLE
,
0
);
/* wait before we collect the data till the DBGC stop */
udelay
(
100
);
}
queue_delayed_work
(
system_wq
,
&
mvm
->
fw_dump_wk
,
delay
);
return
0
;
...
...
@@ -658,25 +647,24 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
* module loading, load init ucode now
* (for example, if we were in RFKILL)
*/
if
(
!
mvm
->
init_ucode_complete
)
{
ret
=
iwl_run_init_mvm_ucode
(
mvm
,
false
);
if
(
ret
&&
!
iwlmvm_mod_params
.
init_dbg
)
{
IWL_ERR
(
mvm
,
"Failed to run INIT ucode: %d
\n
"
,
ret
);
/* this can't happen */
if
(
WARN_ON
(
ret
>
0
))
ret
=
-
ERFKILL
;
goto
error
;
}
if
(
!
iwlmvm_mod_params
.
init_dbg
)
{
/*
* should stop and start HW since that INIT
* image just loaded
*/
iwl_trans_stop_device
(
mvm
->
trans
);
ret
=
iwl_trans_start_hw
(
mvm
->
trans
);
if
(
ret
)
return
ret
;
}
ret
=
iwl_run_init_mvm_ucode
(
mvm
,
false
);
if
(
ret
&&
!
iwlmvm_mod_params
.
init_dbg
)
{
IWL_ERR
(
mvm
,
"Failed to run INIT ucode: %d
\n
"
,
ret
);
/* this can't happen */
if
(
WARN_ON
(
ret
>
0
))
ret
=
-
ERFKILL
;
goto
error
;
}
if
(
!
iwlmvm_mod_params
.
init_dbg
)
{
/*
* Stop and start the transport without entering low power
* mode. This will save the state of other components on the
* device that are triggered by the INIT firwmare (MFUART).
*/
_iwl_trans_stop_device
(
mvm
->
trans
,
false
);
_iwl_trans_start_hw
(
mvm
->
trans
,
false
);
if
(
ret
)
return
ret
;
}
if
(
iwlmvm_mod_params
.
init_dbg
)
...
...
drivers/net/wireless/iwlwifi/mvm/mac80211.c
View file @
ac1c8d5e
...
...
@@ -1322,7 +1322,7 @@ static void iwl_mvm_restart_complete(struct iwl_mvm *mvm)
clear_bit
(
IWL_MVM_STATUS_IN_HW_RESTART
,
&
mvm
->
status
);
iwl_mvm_d0i3_enable_tx
(
mvm
,
NULL
);
ret
=
iwl_mvm_update_quotas
(
mvm
,
fals
e
,
NULL
);
ret
=
iwl_mvm_update_quotas
(
mvm
,
tru
e
,
NULL
);
if
(
ret
)
IWL_ERR
(
mvm
,
"Failed to update quotas after restart (%d)
\n
"
,
ret
);
...
...
@@ -1471,8 +1471,8 @@ static struct iwl_mvm_phy_ctxt *iwl_mvm_get_free_phy_ctxt(struct iwl_mvm *mvm)
return
NULL
;
}
static
int
iwl_mvm_set_tx_power
(
struct
iwl_mvm
*
mvm
,
struct
ieee80211_vif
*
vif
,
s8
tx_power
)
static
int
iwl_mvm_set_tx_power
_old
(
struct
iwl_mvm
*
mvm
,
struct
ieee80211_vif
*
vif
,
s8
tx_power
)
{
/* FW is in charge of regulatory enforcement */
struct
iwl_reduce_tx_power_cmd
reduce_txpwr_cmd
=
{
...
...
@@ -1485,6 +1485,26 @@ static int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
&
reduce_txpwr_cmd
);
}
static
int
iwl_mvm_set_tx_power
(
struct
iwl_mvm
*
mvm
,
struct
ieee80211_vif
*
vif
,
s16
tx_power
)
{
struct
iwl_dev_tx_power_cmd
cmd
=
{
.
set_mode
=
0
,
.
mac_context_id
=
cpu_to_le32
(
iwl_mvm_vif_from_mac80211
(
vif
)
->
id
),
.
pwr_restriction
=
cpu_to_le16
(
8
*
tx_power
),
};
if
(
!
(
mvm
->
fw
->
ucode_capa
.
api
[
0
]
&
IWL_UCODE_TLV_API_TX_POWER_DEV
))
return
iwl_mvm_set_tx_power_old
(
mvm
,
vif
,
tx_power
);
if
(
tx_power
==
IWL_DEFAULT_MAX_TX_POWER
)
cmd
.
pwr_restriction
=
cpu_to_le16
(
IWL_DEV_MAX_TX_POWER
);
return
iwl_mvm_send_cmd_pdu
(
mvm
,
REDUCE_TX_POWER_CMD
,
0
,
sizeof
(
cmd
),
&
cmd
);
}
static
int
iwl_mvm_mac_add_interface
(
struct
ieee80211_hw
*
hw
,
struct
ieee80211_vif
*
vif
)
{
...
...
drivers/net/wireless/iwlwifi/mvm/mvm.h
View file @
ac1c8d5e
...
...
@@ -603,7 +603,6 @@ struct iwl_mvm {
enum
iwl_ucode_type
cur_ucode
;
bool
ucode_loaded
;
bool
init_ucode_complete
;
bool
calibrating
;
u32
error_event_table
;
u32
log_event_table
;
...
...
drivers/net/wireless/iwlwifi/mvm/ops.c
View file @
ac1c8d5e
...
...
@@ -865,6 +865,16 @@ static void iwl_mvm_fw_error_dump_wk(struct work_struct *work)
return
;
mutex_lock
(
&
mvm
->
mutex
);
/* stop recording */
if
(
mvm
->
cfg
->
device_family
==
IWL_DEVICE_FAMILY_7000
)
{
iwl_set_bits_prph
(
mvm
->
trans
,
MON_BUFF_SAMPLE_CTL
,
0x100
);
}
else
{
iwl_write_prph
(
mvm
->
trans
,
DBGC_IN_SAMPLE
,
0
);
/* wait before we collect the data till the DBGC stop */
udelay
(
100
);
}
iwl_mvm_fw_error_dump
(
mvm
);
/* start recording again if the firmware is not crashed */
...
...
drivers/net/wireless/iwlwifi/mvm/rx.c
View file @
ac1c8d5e
...
...
@@ -478,6 +478,11 @@ static void iwl_mvm_stat_iterator(void *_data, u8 *mac,
if
(
vif
->
type
!=
NL80211_IFTYPE_STATION
)
return
;
if
(
sig
==
0
)
{
IWL_DEBUG_RX
(
mvm
,
"RSSI is 0 - skip signal based decision
\n
"
);
return
;
}
mvmvif
->
bf_data
.
ave_beacon_signal
=
sig
;
/* BT Coex */
...
...
drivers/net/wireless/iwlwifi/mvm/scan.c
View file @
ac1c8d5e
...
...
@@ -319,7 +319,7 @@ int iwl_mvm_rx_scan_offload_iter_complete_notif(struct iwl_mvm *mvm,
struct
iwl_device_cmd
*
cmd
)
{
struct
iwl_rx_packet
*
pkt
=
rxb_addr
(
rxb
);
struct
iwl_scan_complete_notif
*
notif
=
(
void
*
)
pkt
->
data
;
struct
iwl_
lmac_
scan_complete_notif
*
notif
=
(
void
*
)
pkt
->
data
;
IWL_DEBUG_SCAN
(
mvm
,
"Scan offload iteration complete: status=0x%x scanned channels=%d
\n
"
,
...
...
drivers/net/wireless/iwlwifi/pcie/trans.c
View file @
ac1c8d5e
...
...
@@ -5,8 +5,8 @@
*
* GPL LICENSE SUMMARY
*
* Copyright(c) 2007 - 201
4
Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 201
4
Intel Mobile Communications GmbH
* Copyright(c) 2007 - 201
5
Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 201
5
Intel Mobile Communications GmbH
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License as
...
...
@@ -31,8 +31,8 @@
*
* BSD LICENSE
*
* Copyright(c) 2005 - 201
4
Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 201
4
Intel Mobile Communications GmbH
* Copyright(c) 2005 - 201
5
Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 201
5
Intel Mobile Communications GmbH
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
@@ -104,7 +104,7 @@ static void iwl_pcie_free_fw_monitor(struct iwl_trans *trans)
static
void
iwl_pcie_alloc_fw_monitor
(
struct
iwl_trans
*
trans
)
{
struct
iwl_trans_pcie
*
trans_pcie
=
IWL_TRANS_GET_PCIE_TRANS
(
trans
);
struct
page
*
page
;
struct
page
*
page
=
NULL
;
dma_addr_t
phys
;
u32
size
;
u8
power
;
...
...
@@ -131,6 +131,7 @@ static void iwl_pcie_alloc_fw_monitor(struct iwl_trans *trans)
DMA_FROM_DEVICE
);
if
(
dma_mapping_error
(
trans
->
dev
,
phys
))
{
__free_pages
(
page
,
order
);
page
=
NULL
;
continue
;
}
IWL_INFO
(
trans
,
...
...
@@ -1020,7 +1021,7 @@ static void iwl_trans_pcie_fw_alive(struct iwl_trans *trans, u32 scd_addr)
iwl_pcie_tx_start
(
trans
,
scd_addr
);
}
static
void
iwl_trans_pcie_stop_device
(
struct
iwl_trans
*
trans
)
static
void
iwl_trans_pcie_stop_device
(
struct
iwl_trans
*
trans
,
bool
low_power
)
{
struct
iwl_trans_pcie
*
trans_pcie
=
IWL_TRANS_GET_PCIE_TRANS
(
trans
);
bool
hw_rfkill
,
was_hw_rfkill
;
...
...
@@ -1115,7 +1116,7 @@ static void iwl_trans_pcie_stop_device(struct iwl_trans *trans)
void
iwl_trans_pcie_rf_kill
(
struct
iwl_trans
*
trans
,
bool
state
)
{
if
(
iwl_op_mode_hw_rf_kill
(
trans
->
op_mode
,
state
))
iwl_trans_pcie_stop_device
(
trans
);
iwl_trans_pcie_stop_device
(
trans
,
true
);
}
static
void
iwl_trans_pcie_d3_suspend
(
struct
iwl_trans
*
trans
,
bool
test
)
...
...
@@ -1200,7 +1201,7 @@ static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans,
return
0
;
}
static
int
iwl_trans_pcie_start_hw
(
struct
iwl_trans
*
trans
)
static
int
iwl_trans_pcie_start_hw
(
struct
iwl_trans
*
trans
,
bool
low_power
)
{
bool
hw_rfkill
;
int
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