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
c0465559
Commit
c0465559
authored
Nov 05, 2013
by
John W. Linville
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-john' of
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next
parents
dce1ebab
c92f06a1
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
43 additions
and
29 deletions
+43
-29
drivers/net/wireless/iwlwifi/dvm/ucode.c
drivers/net/wireless/iwlwifi/dvm/ucode.c
+4
-5
drivers/net/wireless/iwlwifi/iwl-fw.h
drivers/net/wireless/iwlwifi/iwl-fw.h
+2
-1
drivers/net/wireless/iwlwifi/iwl-io.c
drivers/net/wireless/iwlwifi/iwl-io.c
+0
-1
drivers/net/wireless/iwlwifi/iwl-trans.h
drivers/net/wireless/iwlwifi/iwl-trans.h
+1
-1
drivers/net/wireless/iwlwifi/mvm/bt-coex.c
drivers/net/wireless/iwlwifi/mvm/bt-coex.c
+6
-2
drivers/net/wireless/iwlwifi/mvm/debugfs.c
drivers/net/wireless/iwlwifi/mvm/debugfs.c
+1
-0
drivers/net/wireless/iwlwifi/mvm/fw.c
drivers/net/wireless/iwlwifi/mvm/fw.c
+3
-5
drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c
drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c
+7
-1
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
+9
-5
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
+1
-1
drivers/net/wireless/iwlwifi/mvm/rx.c
drivers/net/wireless/iwlwifi/mvm/rx.c
+5
-1
drivers/net/wireless/iwlwifi/pcie/tx.c
drivers/net/wireless/iwlwifi/pcie/tx.c
+4
-5
No files found.
drivers/net/wireless/iwlwifi/dvm/ucode.c
View file @
c0465559
...
...
@@ -330,15 +330,14 @@ int iwl_load_ucode_wait_alive(struct iwl_priv *priv,
enum
iwl_ucode_type
old_type
;
static
const
u8
alive_cmd
[]
=
{
REPLY_ALIVE
};
old_type
=
priv
->
cur_ucode
;
priv
->
cur_ucode
=
ucode_type
;
fw
=
iwl_get_ucode_image
(
priv
,
ucode_type
);
if
(
WARN_ON
(
!
fw
))
return
-
EINVAL
;
old_type
=
priv
->
cur_ucode
;
priv
->
cur_ucode
=
ucode_type
;
priv
->
ucode_loaded
=
false
;
if
(
!
fw
)
return
-
EINVAL
;
iwl_init_notification_wait
(
&
priv
->
notif_wait
,
&
alive_wait
,
alive_cmd
,
ARRAY_SIZE
(
alive_cmd
),
iwl_alive_fn
,
&
alive_data
);
...
...
drivers/net/wireless/iwlwifi/iwl-fw.h
View file @
c0465559
...
...
@@ -100,7 +100,7 @@ enum iwl_ucode_tlv_flag {
IWL_UCODE_TLV_FLAGS_P2P
=
BIT
(
3
),
IWL_UCODE_TLV_FLAGS_DW_BC_TABLE
=
BIT
(
4
),
IWL_UCODE_TLV_FLAGS_NEWBT_COEX
=
BIT
(
5
),
IWL_UCODE_TLV_FLAGS_
UAPSD
=
BIT
(
6
),
IWL_UCODE_TLV_FLAGS_
PM_CMD_SUPPORT
=
BIT
(
6
),
IWL_UCODE_TLV_FLAGS_SHORT_BL
=
BIT
(
7
),
IWL_UCODE_TLV_FLAGS_RX_ENERGY_API
=
BIT
(
8
),
IWL_UCODE_TLV_FLAGS_TIME_EVENT_API_V2
=
BIT
(
9
),
...
...
@@ -113,6 +113,7 @@ enum iwl_ucode_tlv_flag {
IWL_UCODE_TLV_FLAGS_SCHED_SCAN
=
BIT
(
17
),
IWL_UCODE_TLV_FLAGS_STA_KEY_CMD
=
BIT
(
19
),
IWL_UCODE_TLV_FLAGS_DEVICE_PS_CMD
=
BIT
(
20
),
IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT
=
BIT
(
24
),
};
/* The default calibrate table size if not specified by firmware file */
...
...
drivers/net/wireless/iwlwifi/iwl-io.c
View file @
c0465559
...
...
@@ -34,7 +34,6 @@
#include "iwl-csr.h"
#include "iwl-debug.h"
#include "iwl-fh.h"
#include "iwl-csr.h"
#define IWL_POLL_INTERVAL 10
/* microseconds */
...
...
drivers/net/wireless/iwlwifi/iwl-trans.h
View file @
c0465559
...
...
@@ -344,7 +344,7 @@ struct iwl_trans_config {
u8
cmd_queue
;
u8
cmd_fifo
;
const
u8
*
no_reclaim_cmds
;
int
n_no_reclaim_cmds
;
unsigned
int
n_no_reclaim_cmds
;
bool
rx_buf_size_8k
;
bool
bc_table_dword
;
...
...
drivers/net/wireless/iwlwifi/mvm/bt-coex.c
View file @
c0465559
...
...
@@ -505,12 +505,16 @@ static int iwl_mvm_bt_coex_reduced_txp(struct iwl_mvm *mvm, u8 sta_id,
struct
iwl_mvm_sta
*
mvmsta
;
int
ret
;
/* This can happen if the station has been removed right now */
if
(
sta_id
==
IWL_MVM_STATION_COUNT
)
return
0
;
sta
=
rcu_dereference_protected
(
mvm
->
fw_id_to_mac_id
[
sta_id
],
lockdep_is_held
(
&
mvm
->
mutex
));
/* This can happen if the station has been removed right now */
if
(
IS_ERR_OR_NULL
(
sta
))
return
0
;
mvmsta
=
(
void
*
)
sta
->
drv_priv
;
/* nothing to do */
...
...
@@ -751,7 +755,7 @@ static void iwl_mvm_bt_coex_notif_handle(struct iwl_mvm *mvm)
cmd
.
bt_secondary_ci
=
iwl_ci_mask
[
chan
->
def
.
chan
->
hw_value
][
ci_bw_idx
];
cmd
.
secondary_ch_phy_id
=
*
((
u16
*
)
data
.
prim
ary
->
drv_priv
);
cmd
.
secondary_ch_phy_id
=
*
((
u16
*
)
data
.
second
ary
->
drv_priv
);
}
rcu_read_unlock
();
...
...
drivers/net/wireless/iwlwifi/mvm/debugfs.c
View file @
c0465559
...
...
@@ -342,6 +342,7 @@ static void iwl_dbgfs_update_pm(struct iwl_mvm *mvm,
case
MVM_DEBUGFS_PM_DISABLE_POWER_OFF
:
IWL_DEBUG_POWER
(
mvm
,
"disable_power_off=%d
\n
"
,
val
);
dbgfs_pm
->
disable_power_off
=
val
;
break
;
case
MVM_DEBUGFS_PM_LPRX_ENA
:
IWL_DEBUG_POWER
(
mvm
,
"lprx %s
\n
"
,
val
?
"enabled"
:
"disabled"
);
dbgfs_pm
->
lprx_ena
=
val
;
...
...
drivers/net/wireless/iwlwifi/mvm/fw.c
View file @
c0465559
...
...
@@ -151,13 +151,11 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm,
enum
iwl_ucode_type
old_type
=
mvm
->
cur_ucode
;
static
const
u8
alive_cmd
[]
=
{
MVM_ALIVE
};
mvm
->
cur_ucode
=
ucode_type
;
fw
=
iwl_get_ucode_image
(
mvm
,
ucode_type
);
mvm
->
ucode_loaded
=
false
;
if
(
!
fw
)
if
(
WARN_ON
(
!
fw
))
return
-
EINVAL
;
mvm
->
cur_ucode
=
ucode_type
;
mvm
->
ucode_loaded
=
false
;
iwl_init_notification_wait
(
&
mvm
->
notif_wait
,
&
alive_wait
,
alive_cmd
,
ARRAY_SIZE
(
alive_cmd
),
...
...
drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c
View file @
c0465559
...
...
@@ -719,7 +719,9 @@ static int iwl_mvm_mac_ctxt_cmd_listener(struct iwl_mvm *mvm,
cmd
.
filter_flags
=
cpu_to_le32
(
MAC_FILTER_IN_PROMISC
|
MAC_FILTER_IN_CONTROL_AND_MGMT
|
MAC_FILTER_IN_BEACON
|
MAC_FILTER_IN_PROBE_REQUEST
);
MAC_FILTER_IN_PROBE_REQUEST
|
MAC_FILTER_IN_CRC32
);
mvm
->
hw
->
flags
|=
IEEE80211_HW_RX_INCLUDES_FCS
;
return
iwl_mvm_mac_ctxt_send_cmd
(
mvm
,
&
cmd
);
}
...
...
@@ -1122,6 +1124,10 @@ int iwl_mvm_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
}
mvmvif
->
uploaded
=
false
;
if
(
vif
->
type
==
NL80211_IFTYPE_MONITOR
)
mvm
->
hw
->
flags
&=
~
IEEE80211_HW_RX_INCLUDES_FCS
;
return
0
;
}
...
...
drivers/net/wireless/iwlwifi/mvm/mac80211.c
View file @
c0465559
...
...
@@ -164,8 +164,7 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
IEEE80211_HW_TIMING_BEACON_ONLY
|
IEEE80211_HW_CONNECTION_MONITOR
|
IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS
|
IEEE80211_HW_SUPPORTS_STATIC_SMPS
|
IEEE80211_HW_SUPPORTS_UAPSD
;
IEEE80211_HW_SUPPORTS_STATIC_SMPS
;
hw
->
queues
=
mvm
->
first_agg_queue
;
hw
->
offchannel_tx_hw_queue
=
IWL_MVM_OFFCHANNEL_QUEUE
;
...
...
@@ -180,6 +179,12 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
!
iwlwifi_mod_params
.
sw_crypto
)
hw
->
flags
|=
IEEE80211_HW_MFP_CAPABLE
;
if
(
mvm
->
fw
->
ucode_capa
.
flags
&
IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT
)
{
hw
->
flags
|=
IEEE80211_HW_SUPPORTS_UAPSD
;
hw
->
uapsd_queues
=
IWL_UAPSD_AC_INFO
;
hw
->
uapsd_max_sp_len
=
IWL_UAPSD_MAX_SP
;
}
hw
->
sta_data_size
=
sizeof
(
struct
iwl_mvm_sta
);
hw
->
vif_data_size
=
sizeof
(
struct
iwl_mvm_vif
);
hw
->
chanctx_data_size
=
sizeof
(
u16
);
...
...
@@ -204,8 +209,6 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
hw
->
wiphy
->
max_remain_on_channel_duration
=
10000
;
hw
->
max_listen_interval
=
IWL_CONN_MAX_LISTEN_INTERVAL
;
hw
->
uapsd_queues
=
IWL_UAPSD_AC_INFO
;
hw
->
uapsd_max_sp_len
=
IWL_UAPSD_MAX_SP
;
/* Extract MAC address */
memcpy
(
mvm
->
addresses
[
0
].
addr
,
mvm
->
nvm_data
->
hw_addr
,
ETH_ALEN
);
...
...
@@ -861,7 +864,8 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
/* reset rssi values */
mvmvif
->
bf_data
.
ave_beacon_signal
=
0
;
if
(
!
(
mvm
->
fw
->
ucode_capa
.
flags
&
IWL_UCODE_TLV_FLAGS_UAPSD
))
{
if
(
!
(
mvm
->
fw
->
ucode_capa
.
flags
&
IWL_UCODE_TLV_FLAGS_PM_CMD_SUPPORT
))
{
/* Workaround for FW bug, otherwise FW disables device
* power save upon disassociation
*/
...
...
drivers/net/wireless/iwlwifi/mvm/mvm.h
View file @
c0465559
...
...
@@ -73,7 +73,6 @@
#include "iwl-trans.h"
#include "iwl-notif-wait.h"
#include "iwl-eeprom-parse.h"
#include "iwl-trans.h"
#include "sta.h"
#include "fw-api.h"
#include "constants.h"
...
...
drivers/net/wireless/iwlwifi/mvm/ops.c
View file @
c0465559
...
...
@@ -459,7 +459,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
if
(
err
)
goto
out_unregister
;
if
(
mvm
->
fw
->
ucode_capa
.
flags
&
IWL_UCODE_TLV_FLAGS_
UAPSD
)
if
(
mvm
->
fw
->
ucode_capa
.
flags
&
IWL_UCODE_TLV_FLAGS_
PM_CMD_SUPPORT
)
mvm
->
pm_ops
=
&
pm_mac_ops
;
else
mvm
->
pm_ops
=
&
pm_legacy_ops
;
...
...
drivers/net/wireless/iwlwifi/mvm/rx.c
View file @
c0465559
...
...
@@ -300,10 +300,14 @@ int iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb,
return
0
;
}
/*
* Keep packets with CRC errors (and with overrun) for monitor mode
* (otherwise the firmware discards them) but mark them as bad.
*/
if
(
!
(
rx_pkt_status
&
RX_MPDU_RES_STATUS_CRC_OK
)
||
!
(
rx_pkt_status
&
RX_MPDU_RES_STATUS_OVERRUN_OK
))
{
IWL_DEBUG_RX
(
mvm
,
"Bad CRC or FIFO: 0x%08X.
\n
"
,
rx_pkt_status
);
r
eturn
0
;
r
x_status
.
flag
|=
RX_FLAG_FAILED_FCS_CRC
;
}
/* This will be used in several places later */
...
...
drivers/net/wireless/iwlwifi/pcie/tx.c
View file @
c0465559
...
...
@@ -1499,12 +1499,11 @@ static int iwl_pcie_send_hcmd_sync(struct iwl_trans *trans,
IWL_DEBUG_INFO
(
trans
,
"Attempting to send sync command %s
\n
"
,
get_cmd_string
(
trans_pcie
,
cmd
->
id
));
if
(
WARN
_ON
(
test_and_set_bit
(
STATUS_HCMD_ACTIVE
,
&
trans_pcie
->
status
)))
{
IWL_ERR
(
trans
,
"Command %s: a command is already active!
\n
"
,
get_cmd_string
(
trans_pcie
,
cmd
->
id
));
if
(
WARN
(
test_and_set_bit
(
STATUS_HCMD_ACTIVE
,
&
trans_pcie
->
status
),
"Command %s: a command is already active!
\n
"
,
get_cmd_string
(
trans_pcie
,
cmd
->
id
)))
return
-
EIO
;
}
IWL_DEBUG_INFO
(
trans
,
"Setting HCMD_ACTIVE for command %s
\n
"
,
get_cmd_string
(
trans_pcie
,
cmd
->
id
));
...
...
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