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
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