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
65574866
Commit
65574866
authored
Jun 14, 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
b70727e8
adaf6918
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
58 additions
and
90 deletions
+58
-90
drivers/net/wireless/iwlwifi/Makefile
drivers/net/wireless/iwlwifi/Makefile
+4
-2
drivers/net/wireless/iwlwifi/dvm/main.c
drivers/net/wireless/iwlwifi/dvm/main.c
+0
-7
drivers/net/wireless/iwlwifi/iwl-config.h
drivers/net/wireless/iwlwifi/iwl-config.h
+4
-0
drivers/net/wireless/iwlwifi/iwl-debug.h
drivers/net/wireless/iwlwifi/iwl-debug.h
+4
-0
drivers/net/wireless/iwlwifi/iwl-modparams.h
drivers/net/wireless/iwlwifi/iwl-modparams.h
+2
-0
drivers/net/wireless/iwlwifi/iwl-phy-db.c
drivers/net/wireless/iwlwifi/iwl-phy-db.c
+3
-33
drivers/net/wireless/iwlwifi/mvm/d3.c
drivers/net/wireless/iwlwifi/mvm/d3.c
+7
-8
drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h
drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h
+5
-4
drivers/net/wireless/iwlwifi/mvm/tx.c
drivers/net/wireless/iwlwifi/mvm/tx.c
+2
-3
drivers/net/wireless/iwlwifi/pcie/drv.c
drivers/net/wireless/iwlwifi/pcie/drv.c
+4
-0
drivers/net/wireless/iwlwifi/pcie/internal.h
drivers/net/wireless/iwlwifi/pcie/internal.h
+2
-0
drivers/net/wireless/iwlwifi/pcie/rx.c
drivers/net/wireless/iwlwifi/pcie/rx.c
+16
-28
drivers/net/wireless/iwlwifi/pcie/tx.c
drivers/net/wireless/iwlwifi/pcie/tx.c
+5
-5
No files found.
drivers/net/wireless/iwlwifi/Makefile
View file @
65574866
...
@@ -7,14 +7,16 @@ iwlwifi-objs += iwl-notif-wait.o
...
@@ -7,14 +7,16 @@ iwlwifi-objs += iwl-notif-wait.o
iwlwifi-objs
+=
iwl-eeprom-read.o iwl-eeprom-parse.o
iwlwifi-objs
+=
iwl-eeprom-read.o iwl-eeprom-parse.o
iwlwifi-objs
+=
iwl-phy-db.o iwl-nvm-parse.o
iwlwifi-objs
+=
iwl-phy-db.o iwl-nvm-parse.o
iwlwifi-objs
+=
pcie/drv.o pcie/rx.o pcie/tx.o pcie/trans.o
iwlwifi-objs
+=
pcie/drv.o pcie/rx.o pcie/tx.o pcie/trans.o
iwlwifi-objs
+=
iwl-1000.o iwl-2000.o iwl-5000.o iwl-6000.o iwl-7000.o
iwlwifi-$(CONFIG_IWLDVM)
+=
iwl-1000.o iwl-2000.o iwl-5000.o iwl-6000.o
iwlwifi-$(CONFIG_IWLMVM)
+=
iwl-7000.o
iwlwifi-objs
+=
$
(
iwlwifi-m
)
iwlwifi-$(CONFIG_IWLWIFI_DEVICE_TRACING)
+=
iwl-devtrace.o
iwlwifi-$(CONFIG_IWLWIFI_DEVICE_TRACING)
+=
iwl-devtrace.o
iwlwifi-$(CONFIG_IWLWIFI_DEVICE_TESTMODE)
+=
iwl-test.o
iwlwifi-$(CONFIG_IWLWIFI_DEVICE_TESTMODE)
+=
iwl-test.o
ccflags-y
+=
-D__CHECK_ENDIAN__
-I
$(src)
ccflags-y
+=
-D__CHECK_ENDIAN__
-I
$(src)
obj-$(CONFIG_IWLDVM)
+=
dvm/
obj-$(CONFIG_IWLDVM)
+=
dvm/
obj-$(CONFIG_IWLMVM)
+=
mvm/
obj-$(CONFIG_IWLMVM)
+=
mvm/
...
...
drivers/net/wireless/iwlwifi/dvm/main.c
View file @
65574866
...
@@ -1859,14 +1859,9 @@ int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log,
...
@@ -1859,14 +1859,9 @@ int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log,
return
pos
;
return
pos
;
}
}
#ifdef CONFIG_IWLWIFI_DEBUG
if
(
!
(
iwl_have_debug_level
(
IWL_DL_FW_ERRORS
))
&&
!
full_log
)
if
(
!
(
iwl_have_debug_level
(
IWL_DL_FW_ERRORS
))
&&
!
full_log
)
size
=
(
size
>
DEFAULT_DUMP_EVENT_LOG_ENTRIES
)
size
=
(
size
>
DEFAULT_DUMP_EVENT_LOG_ENTRIES
)
?
DEFAULT_DUMP_EVENT_LOG_ENTRIES
:
size
;
?
DEFAULT_DUMP_EVENT_LOG_ENTRIES
:
size
;
#else
size
=
(
size
>
DEFAULT_DUMP_EVENT_LOG_ENTRIES
)
?
DEFAULT_DUMP_EVENT_LOG_ENTRIES
:
size
;
#endif
IWL_ERR
(
priv
,
"Start IWL Event Log Dump: display last %u entries
\n
"
,
IWL_ERR
(
priv
,
"Start IWL Event Log Dump: display last %u entries
\n
"
,
size
);
size
);
...
@@ -1910,10 +1905,8 @@ static void iwlagn_fw_error(struct iwl_priv *priv, bool ondemand)
...
@@ -1910,10 +1905,8 @@ static void iwlagn_fw_error(struct iwl_priv *priv, bool ondemand)
unsigned
int
reload_msec
;
unsigned
int
reload_msec
;
unsigned
long
reload_jiffies
;
unsigned
long
reload_jiffies
;
#ifdef CONFIG_IWLWIFI_DEBUG
if
(
iwl_have_debug_level
(
IWL_DL_FW_ERRORS
))
if
(
iwl_have_debug_level
(
IWL_DL_FW_ERRORS
))
iwl_print_rx_config_cmd
(
priv
,
IWL_RXON_CTX_BSS
);
iwl_print_rx_config_cmd
(
priv
,
IWL_RXON_CTX_BSS
);
#endif
/* uCode is no longer loaded. */
/* uCode is no longer loaded. */
priv
->
ucode_loaded
=
false
;
priv
->
ucode_loaded
=
false
;
...
...
drivers/net/wireless/iwlwifi/iwl-config.h
View file @
65574866
...
@@ -237,6 +237,7 @@ struct iwl_cfg {
...
@@ -237,6 +237,7 @@ struct iwl_cfg {
/*
/*
* This list declares the config structures for all devices.
* This list declares the config structures for all devices.
*/
*/
#if IS_ENABLED(CONFIG_IWLDVM)
extern
const
struct
iwl_cfg
iwl5300_agn_cfg
;
extern
const
struct
iwl_cfg
iwl5300_agn_cfg
;
extern
const
struct
iwl_cfg
iwl5100_agn_cfg
;
extern
const
struct
iwl_cfg
iwl5100_agn_cfg
;
extern
const
struct
iwl_cfg
iwl5350_agn_cfg
;
extern
const
struct
iwl_cfg
iwl5350_agn_cfg
;
...
@@ -278,11 +279,14 @@ extern const struct iwl_cfg iwl6035_2agn_cfg;
...
@@ -278,11 +279,14 @@ extern const struct iwl_cfg iwl6035_2agn_cfg;
extern
const
struct
iwl_cfg
iwl105_bgn_cfg
;
extern
const
struct
iwl_cfg
iwl105_bgn_cfg
;
extern
const
struct
iwl_cfg
iwl105_bgn_d_cfg
;
extern
const
struct
iwl_cfg
iwl105_bgn_d_cfg
;
extern
const
struct
iwl_cfg
iwl135_bgn_cfg
;
extern
const
struct
iwl_cfg
iwl135_bgn_cfg
;
#endif
/* CONFIG_IWLDVM */
#if IS_ENABLED(CONFIG_IWLMVM)
extern
const
struct
iwl_cfg
iwl7260_2ac_cfg
;
extern
const
struct
iwl_cfg
iwl7260_2ac_cfg
;
extern
const
struct
iwl_cfg
iwl7260_2n_cfg
;
extern
const
struct
iwl_cfg
iwl7260_2n_cfg
;
extern
const
struct
iwl_cfg
iwl7260_n_cfg
;
extern
const
struct
iwl_cfg
iwl7260_n_cfg
;
extern
const
struct
iwl_cfg
iwl3160_2ac_cfg
;
extern
const
struct
iwl_cfg
iwl3160_2ac_cfg
;
extern
const
struct
iwl_cfg
iwl3160_2n_cfg
;
extern
const
struct
iwl_cfg
iwl3160_2n_cfg
;
extern
const
struct
iwl_cfg
iwl3160_n_cfg
;
extern
const
struct
iwl_cfg
iwl3160_n_cfg
;
#endif
/* CONFIG_IWLMVM */
#endif
/* __IWL_CONFIG_H__ */
#endif
/* __IWL_CONFIG_H__ */
drivers/net/wireless/iwlwifi/iwl-debug.h
View file @
65574866
...
@@ -34,7 +34,11 @@
...
@@ -34,7 +34,11 @@
static
inline
bool
iwl_have_debug_level
(
u32
level
)
static
inline
bool
iwl_have_debug_level
(
u32
level
)
{
{
#ifdef CONFIG_IWLWIFI_DEBUG
return
iwlwifi_mod_params
.
debug_level
&
level
;
return
iwlwifi_mod_params
.
debug_level
&
level
;
#else
return
false
;
#endif
}
}
void
__iwl_err
(
struct
device
*
dev
,
bool
rfkill_prefix
,
bool
only_trace
,
void
__iwl_err
(
struct
device
*
dev
,
bool
rfkill_prefix
,
bool
only_trace
,
...
...
drivers/net/wireless/iwlwifi/iwl-modparams.h
View file @
65574866
...
@@ -115,7 +115,9 @@ struct iwl_mod_params {
...
@@ -115,7 +115,9 @@ struct iwl_mod_params {
int
led_mode
;
int
led_mode
;
bool
power_save
;
bool
power_save
;
int
power_level
;
int
power_level
;
#ifdef CONFIG_IWLWIFI_DEBUG
u32
debug_level
;
u32
debug_level
;
#endif
int
ant_coupling
;
int
ant_coupling
;
bool
bt_ch_announce
;
bool
bt_ch_announce
;
bool
auto_agg
;
bool
auto_agg
;
...
...
drivers/net/wireless/iwlwifi/iwl-phy-db.c
View file @
65574866
...
@@ -92,20 +92,16 @@ struct iwl_phy_db_entry {
...
@@ -92,20 +92,16 @@ struct iwl_phy_db_entry {
struct
iwl_phy_db
{
struct
iwl_phy_db
{
struct
iwl_phy_db_entry
cfg
;
struct
iwl_phy_db_entry
cfg
;
struct
iwl_phy_db_entry
calib_nch
;
struct
iwl_phy_db_entry
calib_nch
;
struct
iwl_phy_db_entry
calib_ch
;
struct
iwl_phy_db_entry
calib_ch_group_papd
[
IWL_NUM_PAPD_CH_GROUPS
];
struct
iwl_phy_db_entry
calib_ch_group_papd
[
IWL_NUM_PAPD_CH_GROUPS
];
struct
iwl_phy_db_entry
calib_ch_group_txp
[
IWL_NUM_TXP_CH_GROUPS
];
struct
iwl_phy_db_entry
calib_ch_group_txp
[
IWL_NUM_TXP_CH_GROUPS
];
u32
channel_num
;
u32
channel_size
;
struct
iwl_trans
*
trans
;
struct
iwl_trans
*
trans
;
};
};
enum
iwl_phy_db_section_type
{
enum
iwl_phy_db_section_type
{
IWL_PHY_DB_CFG
=
1
,
IWL_PHY_DB_CFG
=
1
,
IWL_PHY_DB_CALIB_NCH
,
IWL_PHY_DB_CALIB_NCH
,
IWL_PHY_DB_
CALIB_CH
,
IWL_PHY_DB_
UNUSED
,
IWL_PHY_DB_CALIB_CHG_PAPD
,
IWL_PHY_DB_CALIB_CHG_PAPD
,
IWL_PHY_DB_CALIB_CHG_TXP
,
IWL_PHY_DB_CALIB_CHG_TXP
,
IWL_PHY_DB_MAX
IWL_PHY_DB_MAX
...
@@ -169,8 +165,6 @@ iwl_phy_db_get_section(struct iwl_phy_db *phy_db,
...
@@ -169,8 +165,6 @@ iwl_phy_db_get_section(struct iwl_phy_db *phy_db,
return
&
phy_db
->
cfg
;
return
&
phy_db
->
cfg
;
case
IWL_PHY_DB_CALIB_NCH
:
case
IWL_PHY_DB_CALIB_NCH
:
return
&
phy_db
->
calib_nch
;
return
&
phy_db
->
calib_nch
;
case
IWL_PHY_DB_CALIB_CH
:
return
&
phy_db
->
calib_ch
;
case
IWL_PHY_DB_CALIB_CHG_PAPD
:
case
IWL_PHY_DB_CALIB_CHG_PAPD
:
if
(
chg_id
>=
IWL_NUM_PAPD_CH_GROUPS
)
if
(
chg_id
>=
IWL_NUM_PAPD_CH_GROUPS
)
return
NULL
;
return
NULL
;
...
@@ -208,7 +202,6 @@ void iwl_phy_db_free(struct iwl_phy_db *phy_db)
...
@@ -208,7 +202,6 @@ void iwl_phy_db_free(struct iwl_phy_db *phy_db)
iwl_phy_db_free_section
(
phy_db
,
IWL_PHY_DB_CFG
,
0
);
iwl_phy_db_free_section
(
phy_db
,
IWL_PHY_DB_CFG
,
0
);
iwl_phy_db_free_section
(
phy_db
,
IWL_PHY_DB_CALIB_NCH
,
0
);
iwl_phy_db_free_section
(
phy_db
,
IWL_PHY_DB_CALIB_NCH
,
0
);
iwl_phy_db_free_section
(
phy_db
,
IWL_PHY_DB_CALIB_CH
,
0
);
for
(
i
=
0
;
i
<
IWL_NUM_PAPD_CH_GROUPS
;
i
++
)
for
(
i
=
0
;
i
<
IWL_NUM_PAPD_CH_GROUPS
;
i
++
)
iwl_phy_db_free_section
(
phy_db
,
IWL_PHY_DB_CALIB_CHG_PAPD
,
i
);
iwl_phy_db_free_section
(
phy_db
,
IWL_PHY_DB_CALIB_CHG_PAPD
,
i
);
for
(
i
=
0
;
i
<
IWL_NUM_TXP_CH_GROUPS
;
i
++
)
for
(
i
=
0
;
i
<
IWL_NUM_TXP_CH_GROUPS
;
i
++
)
...
@@ -248,13 +241,6 @@ int iwl_phy_db_set_section(struct iwl_phy_db *phy_db, struct iwl_rx_packet *pkt,
...
@@ -248,13 +241,6 @@ int iwl_phy_db_set_section(struct iwl_phy_db *phy_db, struct iwl_rx_packet *pkt,
entry
->
size
=
size
;
entry
->
size
=
size
;
if
(
type
==
IWL_PHY_DB_CALIB_CH
)
{
phy_db
->
channel_num
=
le32_to_cpup
((
__le32
*
)
phy_db_notif
->
data
);
phy_db
->
channel_size
=
(
size
-
CHANNEL_NUM_SIZE
)
/
phy_db
->
channel_num
;
}
IWL_DEBUG_INFO
(
phy_db
->
trans
,
IWL_DEBUG_INFO
(
phy_db
->
trans
,
"%s(%d): [PHYDB]SET: Type %d , Size: %d
\n
"
,
"%s(%d): [PHYDB]SET: Type %d , Size: %d
\n
"
,
__func__
,
__LINE__
,
type
,
size
);
__func__
,
__LINE__
,
type
,
size
);
...
@@ -328,10 +314,7 @@ int iwl_phy_db_get_section_data(struct iwl_phy_db *phy_db,
...
@@ -328,10 +314,7 @@ int iwl_phy_db_get_section_data(struct iwl_phy_db *phy_db,
u32
type
,
u8
**
data
,
u16
*
size
,
u16
ch_id
)
u32
type
,
u8
**
data
,
u16
*
size
,
u16
ch_id
)
{
{
struct
iwl_phy_db_entry
*
entry
;
struct
iwl_phy_db_entry
*
entry
;
u32
channel_num
;
u32
channel_size
;
u16
ch_group_id
=
0
;
u16
ch_group_id
=
0
;
u16
index
;
if
(
!
phy_db
)
if
(
!
phy_db
)
return
-
EINVAL
;
return
-
EINVAL
;
...
@@ -346,21 +329,8 @@ int iwl_phy_db_get_section_data(struct iwl_phy_db *phy_db,
...
@@ -346,21 +329,8 @@ int iwl_phy_db_get_section_data(struct iwl_phy_db *phy_db,
if
(
!
entry
)
if
(
!
entry
)
return
-
EINVAL
;
return
-
EINVAL
;
if
(
type
==
IWL_PHY_DB_CALIB_CH
)
{
*
data
=
entry
->
data
;
index
=
ch_id_to_ch_index
(
ch_id
);
*
size
=
entry
->
size
;
channel_num
=
phy_db
->
channel_num
;
channel_size
=
phy_db
->
channel_size
;
if
(
index
>=
channel_num
)
{
IWL_ERR
(
phy_db
->
trans
,
"Wrong channel number %d
\n
"
,
ch_id
);
return
-
EINVAL
;
}
*
data
=
entry
->
data
+
CHANNEL_NUM_SIZE
+
index
*
channel_size
;
*
size
=
channel_size
;
}
else
{
*
data
=
entry
->
data
;
*
size
=
entry
->
size
;
}
IWL_DEBUG_INFO
(
phy_db
->
trans
,
IWL_DEBUG_INFO
(
phy_db
->
trans
,
"%s(%d): [PHYDB] GET: Type %d , Size: %d
\n
"
,
"%s(%d): [PHYDB] GET: Type %d , Size: %d
\n
"
,
...
...
drivers/net/wireless/iwlwifi/mvm/d3.c
View file @
65574866
...
@@ -420,8 +420,7 @@ static __le16 pseudo_hdr_check(int len, __be32 saddr, __be32 daddr)
...
@@ -420,8 +420,7 @@ static __le16 pseudo_hdr_check(int len, __be32 saddr, __be32 daddr)
return
cpu_to_le16
(
be16_to_cpu
((
__force
__be16
)
check
));
return
cpu_to_le16
(
be16_to_cpu
((
__force
__be16
)
check
));
}
}
static
void
iwl_mvm_build_tcp_packet
(
struct
iwl_mvm
*
mvm
,
static
void
iwl_mvm_build_tcp_packet
(
struct
ieee80211_vif
*
vif
,
struct
ieee80211_vif
*
vif
,
struct
cfg80211_wowlan_tcp
*
tcp
,
struct
cfg80211_wowlan_tcp
*
tcp
,
void
*
_pkt
,
u8
*
mask
,
void
*
_pkt
,
u8
*
mask
,
__le16
*
pseudo_hdr_csum
,
__le16
*
pseudo_hdr_csum
,
...
@@ -567,21 +566,21 @@ static int iwl_mvm_send_remote_wake_cfg(struct iwl_mvm *mvm,
...
@@ -567,21 +566,21 @@ static int iwl_mvm_send_remote_wake_cfg(struct iwl_mvm *mvm,
/* SYN (TX) */
/* SYN (TX) */
iwl_mvm_build_tcp_packet
(
iwl_mvm_build_tcp_packet
(
mvm
,
vif
,
tcp
,
cfg
->
syn_tx
.
data
,
NULL
,
vif
,
tcp
,
cfg
->
syn_tx
.
data
,
NULL
,
&
cfg
->
syn_tx
.
info
.
tcp_pseudo_header_checksum
,
&
cfg
->
syn_tx
.
info
.
tcp_pseudo_header_checksum
,
MVM_TCP_TX_SYN
);
MVM_TCP_TX_SYN
);
cfg
->
syn_tx
.
info
.
tcp_payload_length
=
0
;
cfg
->
syn_tx
.
info
.
tcp_payload_length
=
0
;
/* SYN/ACK (RX) */
/* SYN/ACK (RX) */
iwl_mvm_build_tcp_packet
(
iwl_mvm_build_tcp_packet
(
mvm
,
vif
,
tcp
,
cfg
->
synack_rx
.
data
,
cfg
->
synack_rx
.
rx_mask
,
vif
,
tcp
,
cfg
->
synack_rx
.
data
,
cfg
->
synack_rx
.
rx_mask
,
&
cfg
->
synack_rx
.
info
.
tcp_pseudo_header_checksum
,
&
cfg
->
synack_rx
.
info
.
tcp_pseudo_header_checksum
,
MVM_TCP_RX_SYNACK
);
MVM_TCP_RX_SYNACK
);
cfg
->
synack_rx
.
info
.
tcp_payload_length
=
0
;
cfg
->
synack_rx
.
info
.
tcp_payload_length
=
0
;
/* KEEPALIVE/ACK (TX) */
/* KEEPALIVE/ACK (TX) */
iwl_mvm_build_tcp_packet
(
iwl_mvm_build_tcp_packet
(
mvm
,
vif
,
tcp
,
cfg
->
keepalive_tx
.
data
,
NULL
,
vif
,
tcp
,
cfg
->
keepalive_tx
.
data
,
NULL
,
&
cfg
->
keepalive_tx
.
info
.
tcp_pseudo_header_checksum
,
&
cfg
->
keepalive_tx
.
info
.
tcp_pseudo_header_checksum
,
MVM_TCP_TX_DATA
);
MVM_TCP_TX_DATA
);
cfg
->
keepalive_tx
.
info
.
tcp_payload_length
=
cfg
->
keepalive_tx
.
info
.
tcp_payload_length
=
...
@@ -605,7 +604,7 @@ static int iwl_mvm_send_remote_wake_cfg(struct iwl_mvm *mvm,
...
@@ -605,7 +604,7 @@ static int iwl_mvm_send_remote_wake_cfg(struct iwl_mvm *mvm,
/* ACK (RX) */
/* ACK (RX) */
iwl_mvm_build_tcp_packet
(
iwl_mvm_build_tcp_packet
(
mvm
,
vif
,
tcp
,
cfg
->
keepalive_ack_rx
.
data
,
vif
,
tcp
,
cfg
->
keepalive_ack_rx
.
data
,
cfg
->
keepalive_ack_rx
.
rx_mask
,
cfg
->
keepalive_ack_rx
.
rx_mask
,
&
cfg
->
keepalive_ack_rx
.
info
.
tcp_pseudo_header_checksum
,
&
cfg
->
keepalive_ack_rx
.
info
.
tcp_pseudo_header_checksum
,
MVM_TCP_RX_ACK
);
MVM_TCP_RX_ACK
);
...
@@ -613,7 +612,7 @@ static int iwl_mvm_send_remote_wake_cfg(struct iwl_mvm *mvm,
...
@@ -613,7 +612,7 @@ static int iwl_mvm_send_remote_wake_cfg(struct iwl_mvm *mvm,
/* WAKEUP (RX) */
/* WAKEUP (RX) */
iwl_mvm_build_tcp_packet
(
iwl_mvm_build_tcp_packet
(
mvm
,
vif
,
tcp
,
cfg
->
wake_rx
.
data
,
cfg
->
wake_rx
.
rx_mask
,
vif
,
tcp
,
cfg
->
wake_rx
.
data
,
cfg
->
wake_rx
.
rx_mask
,
&
cfg
->
wake_rx
.
info
.
tcp_pseudo_header_checksum
,
&
cfg
->
wake_rx
.
info
.
tcp_pseudo_header_checksum
,
MVM_TCP_RX_WAKE
);
MVM_TCP_RX_WAKE
);
cfg
->
wake_rx
.
info
.
tcp_payload_length
=
cfg
->
wake_rx
.
info
.
tcp_payload_length
=
...
@@ -621,7 +620,7 @@ static int iwl_mvm_send_remote_wake_cfg(struct iwl_mvm *mvm,
...
@@ -621,7 +620,7 @@ static int iwl_mvm_send_remote_wake_cfg(struct iwl_mvm *mvm,
/* FIN */
/* FIN */
iwl_mvm_build_tcp_packet
(
iwl_mvm_build_tcp_packet
(
mvm
,
vif
,
tcp
,
cfg
->
fin_tx
.
data
,
NULL
,
vif
,
tcp
,
cfg
->
fin_tx
.
data
,
NULL
,
&
cfg
->
fin_tx
.
info
.
tcp_pseudo_header_checksum
,
&
cfg
->
fin_tx
.
info
.
tcp_pseudo_header_checksum
,
MVM_TCP_TX_FIN
);
MVM_TCP_TX_FIN
);
cfg
->
fin_tx
.
info
.
tcp_payload_length
=
0
;
cfg
->
fin_tx
.
info
.
tcp_payload_length
=
0
;
...
...
drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h
View file @
65574866
...
@@ -228,10 +228,11 @@ struct iwl_tx_cmd {
...
@@ -228,10 +228,11 @@ struct iwl_tx_cmd {
__le16
len
;
__le16
len
;
__le16
next_frame_len
;
__le16
next_frame_len
;
__le32
tx_flags
;
__le32
tx_flags
;
/* DRAM_SCRATCH_API_U_VER_1 */
struct
{
u8
try_cnt
;
u8
try_cnt
;
u8
btkill_cnt
;
u8
btkill_cnt
;
__le16
reserved
;
__le16
reserved
;
}
scratch
;
/* DRAM_SCRATCH_API_U_VER_1 */
__le32
rate_n_flags
;
__le32
rate_n_flags
;
u8
sta_id
;
u8
sta_id
;
u8
sec_ctl
;
u8
sec_ctl
;
...
...
drivers/net/wireless/iwlwifi/mvm/tx.c
View file @
65574866
...
@@ -407,7 +407,6 @@ int iwl_mvm_tx_skb(struct iwl_mvm *mvm, struct sk_buff *skb,
...
@@ -407,7 +407,6 @@ int iwl_mvm_tx_skb(struct iwl_mvm *mvm, struct sk_buff *skb,
IWL_DEBUG_TX
(
mvm
,
"TX to [%d|%d] Q:%d - seq: 0x%x
\n
"
,
mvmsta
->
sta_id
,
IWL_DEBUG_TX
(
mvm
,
"TX to [%d|%d] Q:%d - seq: 0x%x
\n
"
,
mvmsta
->
sta_id
,
tid
,
txq_id
,
seq_number
);
tid
,
txq_id
,
seq_number
);
/* NOTE: aggregation will need changes here (for txq id) */
if
(
iwl_trans_tx
(
mvm
->
trans
,
skb
,
dev_cmd
,
txq_id
))
if
(
iwl_trans_tx
(
mvm
->
trans
,
skb
,
dev_cmd
,
txq_id
))
goto
drop_unlock_sta
;
goto
drop_unlock_sta
;
...
@@ -609,8 +608,8 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
...
@@ -609,8 +608,8 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
!
(
info
->
flags
&
IEEE80211_TX_STAT_ACK
))
!
(
info
->
flags
&
IEEE80211_TX_STAT_ACK
))
info
->
flags
|=
IEEE80211_TX_STAT_AMPDU_NO_BACK
;
info
->
flags
|=
IEEE80211_TX_STAT_AMPDU_NO_BACK
;
/* W/A FW bug: seq_ctl is wrong when the
queue is flushed
*/
/* W/A FW bug: seq_ctl is wrong when the
status isn't success
*/
if
(
status
==
TX_STATUS_FAIL_FIFO_FLUSHED
)
{
if
(
status
!=
TX_STATUS_SUCCESS
)
{
struct
ieee80211_hdr
*
hdr
=
(
void
*
)
skb
->
data
;
struct
ieee80211_hdr
*
hdr
=
(
void
*
)
skb
->
data
;
seq_ctl
=
le16_to_cpu
(
hdr
->
seq_ctrl
);
seq_ctl
=
le16_to_cpu
(
hdr
->
seq_ctrl
);
}
}
...
...
drivers/net/wireless/iwlwifi/pcie/drv.c
View file @
65574866
...
@@ -78,6 +78,7 @@
...
@@ -78,6 +78,7 @@
/* Hardware specific file defines the PCI IDs table for that hardware module */
/* Hardware specific file defines the PCI IDs table for that hardware module */
static
DEFINE_PCI_DEVICE_TABLE
(
iwl_hw_card_ids
)
=
{
static
DEFINE_PCI_DEVICE_TABLE
(
iwl_hw_card_ids
)
=
{
#if IS_ENABLED(CONFIG_IWLDVM)
{
IWL_PCI_DEVICE
(
0x4232
,
0x1201
,
iwl5100_agn_cfg
)},
/* Mini Card */
{
IWL_PCI_DEVICE
(
0x4232
,
0x1201
,
iwl5100_agn_cfg
)},
/* Mini Card */
{
IWL_PCI_DEVICE
(
0x4232
,
0x1301
,
iwl5100_agn_cfg
)},
/* Half Mini Card */
{
IWL_PCI_DEVICE
(
0x4232
,
0x1301
,
iwl5100_agn_cfg
)},
/* Half Mini Card */
{
IWL_PCI_DEVICE
(
0x4232
,
0x1204
,
iwl5100_agn_cfg
)},
/* Mini Card */
{
IWL_PCI_DEVICE
(
0x4232
,
0x1204
,
iwl5100_agn_cfg
)},
/* Mini Card */
...
@@ -253,7 +254,9 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
...
@@ -253,7 +254,9 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
{
IWL_PCI_DEVICE
(
0x0892
,
0x0062
,
iwl135_bgn_cfg
)},
{
IWL_PCI_DEVICE
(
0x0892
,
0x0062
,
iwl135_bgn_cfg
)},
{
IWL_PCI_DEVICE
(
0x0893
,
0x0262
,
iwl135_bgn_cfg
)},
{
IWL_PCI_DEVICE
(
0x0893
,
0x0262
,
iwl135_bgn_cfg
)},
{
IWL_PCI_DEVICE
(
0x0892
,
0x0462
,
iwl135_bgn_cfg
)},
{
IWL_PCI_DEVICE
(
0x0892
,
0x0462
,
iwl135_bgn_cfg
)},
#endif
/* CONFIG_IWLDVM */
#if IS_ENABLED(CONFIG_IWLMVM)
/* 7000 Series */
/* 7000 Series */
{
IWL_PCI_DEVICE
(
0x08B1
,
0x4070
,
iwl7260_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x08B1
,
0x4070
,
iwl7260_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x08B1
,
0x4170
,
iwl7260_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x08B1
,
0x4170
,
iwl7260_2ac_cfg
)},
...
@@ -304,6 +307,7 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
...
@@ -304,6 +307,7 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
{
IWL_PCI_DEVICE
(
0x08B3
,
0x8062
,
iwl3160_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x08B3
,
0x8062
,
iwl3160_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x08B4
,
0x8270
,
iwl3160_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x08B4
,
0x8270
,
iwl3160_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x08B3
,
0x8470
,
iwl3160_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x08B3
,
0x8470
,
iwl3160_2ac_cfg
)},
#endif
/* CONFIG_IWLMVM */
{
0
}
{
0
}
}
;
}
;
...
...
drivers/net/wireless/iwlwifi/pcie/internal.h
View file @
65574866
...
@@ -217,6 +217,7 @@ struct iwl_pcie_txq_scratch_buf {
...
@@ -217,6 +217,7 @@ struct iwl_pcie_txq_scratch_buf {
* @trans_pcie: pointer back to transport (for timer)
* @trans_pcie: pointer back to transport (for timer)
* @need_update: indicates need to update read/write index
* @need_update: indicates need to update read/write index
* @active: stores if queue is active
* @active: stores if queue is active
* @ampdu: true if this queue is an ampdu queue for an specific RA/TID
*
*
* A Tx queue consists of circular buffer of BDs (a.k.a. TFDs, transmit frame
* A Tx queue consists of circular buffer of BDs (a.k.a. TFDs, transmit frame
* descriptors) and required locking structures.
* descriptors) and required locking structures.
...
@@ -232,6 +233,7 @@ struct iwl_txq {
...
@@ -232,6 +233,7 @@ struct iwl_txq {
struct
iwl_trans_pcie
*
trans_pcie
;
struct
iwl_trans_pcie
*
trans_pcie
;
u8
need_update
;
u8
need_update
;
u8
active
;
u8
active
;
bool
ampdu
;
};
};
static
inline
dma_addr_t
static
inline
dma_addr_t
...
...
drivers/net/wireless/iwlwifi/pcie/rx.c
View file @
65574866
...
@@ -802,9 +802,6 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
...
@@ -802,9 +802,6 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
u32
handled
=
0
;
u32
handled
=
0
;
unsigned
long
flags
;
unsigned
long
flags
;
u32
i
;
u32
i
;
#ifdef CONFIG_IWLWIFI_DEBUG
u32
inta_mask
;
#endif
lock_map_acquire
(
&
trans
->
sync_cmd_lockdep_map
);
lock_map_acquire
(
&
trans
->
sync_cmd_lockdep_map
);
...
@@ -826,14 +823,9 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
...
@@ -826,14 +823,9 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
inta
=
trans_pcie
->
inta
;
inta
=
trans_pcie
->
inta
;
#ifdef CONFIG_IWLWIFI_DEBUG
if
(
iwl_have_debug_level
(
IWL_DL_ISR
))
if
(
iwl_have_debug_level
(
IWL_DL_ISR
))
{
/* just for debug */
inta_mask
=
iwl_read32
(
trans
,
CSR_INT_MASK
);
IWL_DEBUG_ISR
(
trans
,
"inta 0x%08x, enabled 0x%08x
\n
"
,
IWL_DEBUG_ISR
(
trans
,
"inta 0x%08x, enabled 0x%08x
\n
"
,
inta
,
inta_mask
);
inta
,
iwl_read32
(
trans
,
CSR_INT_MASK
));
}
#endif
/* saved interrupt in inta variable now we can reset trans_pcie->inta */
/* saved interrupt in inta variable now we can reset trans_pcie->inta */
trans_pcie
->
inta
=
0
;
trans_pcie
->
inta
=
0
;
...
@@ -855,12 +847,11 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
...
@@ -855,12 +847,11 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
goto
out
;
goto
out
;
}
}
#ifdef CONFIG_IWLWIFI_DEBUG
if
(
iwl_have_debug_level
(
IWL_DL_ISR
))
{
if
(
iwl_have_debug_level
(
IWL_DL_ISR
))
{
/* NIC fires this, but we don't use it, redundant with WAKEUP */
/* NIC fires this, but we don't use it, redundant with WAKEUP */
if
(
inta
&
CSR_INT_BIT_SCD
)
{
if
(
inta
&
CSR_INT_BIT_SCD
)
{
IWL_DEBUG_ISR
(
trans
,
"Scheduler finished to transmit "
IWL_DEBUG_ISR
(
trans
,
"the frame/frames.
\n
"
);
"
Scheduler finished to transmit
the frame/frames.
\n
"
);
isr_stats
->
sch
++
;
isr_stats
->
sch
++
;
}
}
...
@@ -870,7 +861,7 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
...
@@ -870,7 +861,7 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
isr_stats
->
alive
++
;
isr_stats
->
alive
++
;
}
}
}
}
#endif
/* Safely ignore these bits for debug checks below */
/* Safely ignore these bits for debug checks below */
inta
&=
~
(
CSR_INT_BIT_SCD
|
CSR_INT_BIT_ALIVE
);
inta
&=
~
(
CSR_INT_BIT_SCD
|
CSR_INT_BIT_ALIVE
);
...
@@ -1118,9 +1109,6 @@ static irqreturn_t iwl_pcie_isr(int irq, void *data)
...
@@ -1118,9 +1109,6 @@ static irqreturn_t iwl_pcie_isr(int irq, void *data)
struct
iwl_trans
*
trans
=
data
;
struct
iwl_trans
*
trans
=
data
;
struct
iwl_trans_pcie
*
trans_pcie
=
IWL_TRANS_GET_PCIE_TRANS
(
trans
);
struct
iwl_trans_pcie
*
trans_pcie
=
IWL_TRANS_GET_PCIE_TRANS
(
trans
);
u32
inta
,
inta_mask
;
u32
inta
,
inta_mask
;
#ifdef CONFIG_IWLWIFI_DEBUG
u32
inta_fh
;
#endif
lockdep_assert_held
(
&
trans_pcie
->
irq_lock
);
lockdep_assert_held
(
&
trans_pcie
->
irq_lock
);
...
@@ -1159,13 +1147,11 @@ static irqreturn_t iwl_pcie_isr(int irq, void *data)
...
@@ -1159,13 +1147,11 @@ static irqreturn_t iwl_pcie_isr(int irq, void *data)
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
#ifdef CONFIG_IWLWIFI_DEBUG
if
(
iwl_have_debug_level
(
IWL_DL_ISR
))
if
(
iwl_have_debug_level
(
IWL_DL_ISR
))
{
IWL_DEBUG_ISR
(
trans
,
inta_fh
=
iwl_read32
(
trans
,
CSR_FH_INT_STATUS
);
"ISR inta 0x%08x, enabled 0x%08x, fh 0x%08x
\n
"
,
IWL_DEBUG_ISR
(
trans
,
"ISR inta 0x%08x, enabled 0x%08x, "
inta
,
inta_mask
,
"fh 0x%08x
\n
"
,
inta
,
inta_mask
,
inta_fh
);
iwl_read32
(
trans
,
CSR_FH_INT_STATUS
));
}
#endif
trans_pcie
->
inta
|=
inta
;
trans_pcie
->
inta
|=
inta
;
/* the thread will service interrupts and re-enable them */
/* the thread will service interrupts and re-enable them */
...
@@ -1198,7 +1184,7 @@ irqreturn_t iwl_pcie_isr_ict(int irq, void *data)
...
@@ -1198,7 +1184,7 @@ irqreturn_t iwl_pcie_isr_ict(int irq, void *data)
{
{
struct
iwl_trans
*
trans
=
data
;
struct
iwl_trans
*
trans
=
data
;
struct
iwl_trans_pcie
*
trans_pcie
;
struct
iwl_trans_pcie
*
trans_pcie
;
u32
inta
,
inta_mask
;
u32
inta
;
u32
val
=
0
;
u32
val
=
0
;
u32
read
;
u32
read
;
unsigned
long
flags
;
unsigned
long
flags
;
...
@@ -1226,7 +1212,6 @@ irqreturn_t iwl_pcie_isr_ict(int irq, void *data)
...
@@ -1226,7 +1212,6 @@ irqreturn_t iwl_pcie_isr_ict(int irq, void *data)
* If we have something to service, the tasklet will re-enable ints.
* If we have something to service, the tasklet will re-enable ints.
* If we *don't* have something, we'll re-enable before leaving here.
* If we *don't* have something, we'll re-enable before leaving here.
*/
*/
inta_mask
=
iwl_read32
(
trans
,
CSR_INT_MASK
);
iwl_write32
(
trans
,
CSR_INT_MASK
,
0x00000000
);
iwl_write32
(
trans
,
CSR_INT_MASK
,
0x00000000
);
/* Ignore interrupt if there's nothing in NIC to service.
/* Ignore interrupt if there's nothing in NIC to service.
...
@@ -1271,8 +1256,11 @@ irqreturn_t iwl_pcie_isr_ict(int irq, void *data)
...
@@ -1271,8 +1256,11 @@ irqreturn_t iwl_pcie_isr_ict(int irq, void *data)
val
|=
0x8000
;
val
|=
0x8000
;
inta
=
(
0xff
&
val
)
|
((
0xff00
&
val
)
<<
16
);
inta
=
(
0xff
&
val
)
|
((
0xff00
&
val
)
<<
16
);
IWL_DEBUG_ISR
(
trans
,
"ISR inta 0x%08x, enabled 0x%08x ict 0x%08x
\n
"
,
IWL_DEBUG_ISR
(
trans
,
"ISR inta 0x%08x, enabled(sw) 0x%08x ict 0x%08x
\n
"
,
inta
,
inta_mask
,
val
);
inta
,
trans_pcie
->
inta_mask
,
val
);
if
(
iwl_have_debug_level
(
IWL_DL_ISR
))
IWL_DEBUG_ISR
(
trans
,
"enabled(hw) 0x%08x
\n
"
,
iwl_read32
(
trans
,
CSR_INT_MASK
));
inta
&=
trans_pcie
->
inta_mask
;
inta
&=
trans_pcie
->
inta_mask
;
trans_pcie
->
inta
|=
inta
;
trans_pcie
->
inta
|=
inta
;
...
...
drivers/net/wireless/iwlwifi/pcie/tx.c
View file @
65574866
...
@@ -1073,6 +1073,7 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, int fifo,
...
@@ -1073,6 +1073,7 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, int fifo,
/* enable aggregations for the queue */
/* enable aggregations for the queue */
iwl_set_bits_prph
(
trans
,
SCD_AGGR_SEL
,
BIT
(
txq_id
));
iwl_set_bits_prph
(
trans
,
SCD_AGGR_SEL
,
BIT
(
txq_id
));
trans_pcie
->
txq
[
txq_id
].
ampdu
=
true
;
}
else
{
}
else
{
/*
/*
* disable aggregations for the queue, this will also make the
* disable aggregations for the queue, this will also make the
...
@@ -1129,6 +1130,7 @@ void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id)
...
@@ -1129,6 +1130,7 @@ void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id)
ARRAY_SIZE
(
zero_val
));
ARRAY_SIZE
(
zero_val
));
iwl_pcie_txq_unmap
(
trans
,
txq_id
);
iwl_pcie_txq_unmap
(
trans
,
txq_id
);
trans_pcie
->
txq
[
txq_id
].
ampdu
=
false
;
IWL_DEBUG_TX_QUEUES
(
trans
,
"Deactivate queue %d
\n
"
,
txq_id
);
IWL_DEBUG_TX_QUEUES
(
trans
,
"Deactivate queue %d
\n
"
,
txq_id
);
}
}
...
@@ -1599,7 +1601,7 @@ int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
...
@@ -1599,7 +1601,7 @@ int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
u8
wait_write_ptr
=
0
;
u8
wait_write_ptr
=
0
;
__le16
fc
=
hdr
->
frame_control
;
__le16
fc
=
hdr
->
frame_control
;
u8
hdr_len
=
ieee80211_hdrlen
(
fc
);
u8
hdr_len
=
ieee80211_hdrlen
(
fc
);
u16
__maybe_unused
wifi_seq
;
u16
wifi_seq
;
txq
=
&
trans_pcie
->
txq
[
txq_id
];
txq
=
&
trans_pcie
->
txq
[
txq_id
];
q
=
&
txq
->
q
;
q
=
&
txq
->
q
;
...
@@ -1616,13 +1618,11 @@ int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
...
@@ -1616,13 +1618,11 @@ int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
* the BA.
* the BA.
* Check here that the packets are in the right place on the ring.
* Check here that the packets are in the right place on the ring.
*/
*/
#ifdef CONFIG_IWLWIFI_DEBUG
wifi_seq
=
IEEE80211_SEQ_TO_SN
(
le16_to_cpu
(
hdr
->
seq_ctrl
));
wifi_seq
=
IEEE80211_SEQ_TO_SN
(
le16_to_cpu
(
hdr
->
seq_ctrl
));
WARN_ONCE
(
(
iwl_read_prph
(
trans
,
SCD_AGGR_SEL
)
&
BIT
(
txq_id
))
&&
WARN_ONCE
(
trans_pcie
->
txq
[
txq_id
].
ampdu
&&
(
(
wifi_seq
&
0xff
)
!=
q
->
write_ptr
)
,
(
wifi_seq
&
0xff
)
!=
q
->
write_ptr
,
"Q: %d WiFi Seq %d tfdNum %d"
,
"Q: %d WiFi Seq %d tfdNum %d"
,
txq_id
,
wifi_seq
,
q
->
write_ptr
);
txq_id
,
wifi_seq
,
q
->
write_ptr
);
#endif
/* Set up driver data for this TFD */
/* Set up driver data for this TFD */
txq
->
entries
[
q
->
write_ptr
].
skb
=
skb
;
txq
->
entries
[
q
->
write_ptr
].
skb
=
skb
;
...
...
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