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
20214926
Commit
20214926
authored
Apr 25, 2012
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-davem' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
parents
f891ea16
39583628
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
109 additions
and
45 deletions
+109
-45
drivers/net/wireless/ath/ath9k/ar5008_phy.c
drivers/net/wireless/ath/ath9k/ar5008_phy.c
+1
-1
drivers/net/wireless/ath/ath9k/ar9003_paprd.c
drivers/net/wireless/ath/ath9k/ar9003_paprd.c
+1
-1
drivers/net/wireless/ath/ath9k/ar9003_phy.c
drivers/net/wireless/ath/ath9k/ar9003_phy.c
+1
-1
drivers/net/wireless/ath/ath9k/eeprom_9287.c
drivers/net/wireless/ath/ath9k/eeprom_9287.c
+2
-0
drivers/net/wireless/ath/ath9k/hw.c
drivers/net/wireless/ath/ath9k/hw.c
+5
-4
drivers/net/wireless/ath/ath9k/hw.h
drivers/net/wireless/ath/ath9k/hw.h
+2
-1
drivers/net/wireless/brcm80211/brcmsmac/main.c
drivers/net/wireless/brcm80211/brcmsmac/main.c
+1
-2
drivers/net/wireless/ipw2x00/ipw2200.c
drivers/net/wireless/ipw2x00/ipw2200.c
+12
-1
drivers/net/wireless/iwlwifi/iwl-1000.c
drivers/net/wireless/iwlwifi/iwl-1000.c
+4
-4
drivers/net/wireless/iwlwifi/iwl-2000.c
drivers/net/wireless/iwlwifi/iwl-2000.c
+8
-8
drivers/net/wireless/iwlwifi/iwl-5000.c
drivers/net/wireless/iwlwifi/iwl-5000.c
+9
-2
drivers/net/wireless/iwlwifi/iwl-6000.c
drivers/net/wireless/iwlwifi/iwl-6000.c
+6
-4
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-agn.c
+0
-3
drivers/net/wireless/iwlwifi/iwl-fh.h
drivers/net/wireless/iwlwifi/iwl-fh.h
+19
-5
drivers/net/wireless/iwlwifi/iwl-mac80211.c
drivers/net/wireless/iwlwifi/iwl-mac80211.c
+9
-1
drivers/net/wireless/iwlwifi/iwl-prph.h
drivers/net/wireless/iwlwifi/iwl-prph.h
+24
-3
drivers/net/wireless/rtlwifi/pci.c
drivers/net/wireless/rtlwifi/pci.c
+1
-0
net/mac80211/ieee80211_i.h
net/mac80211/ieee80211_i.h
+1
-1
net/mac80211/iface.c
net/mac80211/iface.c
+2
-2
net/mac80211/mlme.c
net/mac80211/mlme.c
+1
-1
No files found.
drivers/net/wireless/ath/ath9k/ar5008_phy.c
View file @
20214926
...
...
@@ -869,7 +869,7 @@ static int ar5008_hw_process_ini(struct ath_hw *ah,
ar5008_hw_set_channel_regs
(
ah
,
chan
);
ar5008_hw_init_chain_masks
(
ah
);
ath9k_olc_init
(
ah
);
ath9k_hw_apply_txpower
(
ah
,
chan
);
ath9k_hw_apply_txpower
(
ah
,
chan
,
false
);
/* Write analog registers */
if
(
!
ath9k_hw_set_rf_regs
(
ah
,
chan
,
freqIndex
))
{
...
...
drivers/net/wireless/ath/ath9k/ar9003_paprd.c
View file @
20214926
...
...
@@ -54,7 +54,7 @@ void ar9003_paprd_enable(struct ath_hw *ah, bool val)
if
(
val
)
{
ah
->
paprd_table_write_done
=
true
;
ath9k_hw_apply_txpower
(
ah
,
chan
);
ath9k_hw_apply_txpower
(
ah
,
chan
,
false
);
}
REG_RMW_FIELD
(
ah
,
AR_PHY_PAPRD_CTRL0_B0
,
...
...
drivers/net/wireless/ath/ath9k/ar9003_phy.c
View file @
20214926
...
...
@@ -694,7 +694,7 @@ static int ar9003_hw_process_ini(struct ath_hw *ah,
ar9003_hw_override_ini
(
ah
);
ar9003_hw_set_channel_regs
(
ah
,
chan
);
ar9003_hw_set_chain_masks
(
ah
,
ah
->
rxchainmask
,
ah
->
txchainmask
);
ath9k_hw_apply_txpower
(
ah
,
chan
);
ath9k_hw_apply_txpower
(
ah
,
chan
,
false
);
if
(
AR_SREV_9462
(
ah
))
{
if
(
REG_READ_FIELD
(
ah
,
AR_PHY_TX_IQCAL_CONTROL_0
,
...
...
drivers/net/wireless/ath/ath9k/eeprom_9287.c
View file @
20214926
...
...
@@ -824,6 +824,8 @@ static void ath9k_hw_ar9287_set_txpower(struct ath_hw *ah,
regulatory
->
max_power_level
=
ratesArray
[
i
];
}
ath9k_hw_update_regulatory_maxpower
(
ah
);
if
(
test
)
return
;
...
...
drivers/net/wireless/ath/ath9k/hw.c
View file @
20214926
...
...
@@ -1454,7 +1454,7 @@ static bool ath9k_hw_channel_change(struct ath_hw *ah,
return
false
;
}
ath9k_hw_set_clockrate
(
ah
);
ath9k_hw_apply_txpower
(
ah
,
chan
);
ath9k_hw_apply_txpower
(
ah
,
chan
,
false
);
ath9k_hw_rfbus_done
(
ah
);
if
(
IS_CHAN_OFDM
(
chan
)
||
IS_CHAN_HT
(
chan
))
...
...
@@ -2652,7 +2652,8 @@ static int get_antenna_gain(struct ath_hw *ah, struct ath9k_channel *chan)
return
ah
->
eep_ops
->
get_eeprom
(
ah
,
gain_param
);
}
void
ath9k_hw_apply_txpower
(
struct
ath_hw
*
ah
,
struct
ath9k_channel
*
chan
)
void
ath9k_hw_apply_txpower
(
struct
ath_hw
*
ah
,
struct
ath9k_channel
*
chan
,
bool
test
)
{
struct
ath_regulatory
*
reg
=
ath9k_hw_regulatory
(
ah
);
struct
ieee80211_channel
*
channel
;
...
...
@@ -2673,7 +2674,7 @@ void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan)
ah
->
eep_ops
->
set_txpower
(
ah
,
chan
,
ath9k_regd_get_ctl
(
reg
,
chan
),
ant_reduction
,
new_pwr
,
false
);
ant_reduction
,
new_pwr
,
test
);
}
void
ath9k_hw_set_txpowerlimit
(
struct
ath_hw
*
ah
,
u32
limit
,
bool
test
)
...
...
@@ -2686,7 +2687,7 @@ void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test)
if
(
test
)
channel
->
max_power
=
MAX_RATE_POWER
/
2
;
ath9k_hw_apply_txpower
(
ah
,
chan
);
ath9k_hw_apply_txpower
(
ah
,
chan
,
test
);
if
(
test
)
channel
->
max_power
=
DIV_ROUND_UP
(
reg
->
max_power_level
,
2
);
...
...
drivers/net/wireless/ath/ath9k/hw.h
View file @
20214926
...
...
@@ -985,7 +985,8 @@ void ath9k_hw_name(struct ath_hw *ah, char *hw_name, size_t len);
/* PHY */
void
ath9k_hw_get_delta_slope_vals
(
struct
ath_hw
*
ah
,
u32
coef_scaled
,
u32
*
coef_mantissa
,
u32
*
coef_exponent
);
void
ath9k_hw_apply_txpower
(
struct
ath_hw
*
ah
,
struct
ath9k_channel
*
chan
);
void
ath9k_hw_apply_txpower
(
struct
ath_hw
*
ah
,
struct
ath9k_channel
*
chan
,
bool
test
);
/*
* Code Specific to AR5008, AR9001 or AR9002,
...
...
drivers/net/wireless/brcm80211/brcmsmac/main.c
View file @
20214926
...
...
@@ -847,8 +847,7 @@ brcms_c_dotxstatus(struct brcms_c_info *wlc, struct tx_status *txs)
*/
if
(
!
(
txs
->
status
&
TX_STATUS_AMPDU
)
&&
(
txs
->
status
&
TX_STATUS_INTERMEDIATE
))
{
wiphy_err
(
wlc
->
wiphy
,
"%s: INTERMEDIATE but not AMPDU
\n
"
,
__func__
);
BCMMSG
(
wlc
->
wiphy
,
"INTERMEDIATE but not AMPDU
\n
"
);
return
false
;
}
...
...
drivers/net/wireless/ipw2x00/ipw2200.c
View file @
20214926
...
...
@@ -2191,6 +2191,7 @@ static int __ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd)
{
int
rc
=
0
;
unsigned
long
flags
;
unsigned
long
now
,
end
;
spin_lock_irqsave
(
&
priv
->
lock
,
flags
);
if
(
priv
->
status
&
STATUS_HCMD_ACTIVE
)
{
...
...
@@ -2232,10 +2233,20 @@ static int __ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd)
}
spin_unlock_irqrestore
(
&
priv
->
lock
,
flags
);
now
=
jiffies
;
end
=
now
+
HOST_COMPLETE_TIMEOUT
;
again:
rc
=
wait_event_interruptible_timeout
(
priv
->
wait_command_queue
,
!
(
priv
->
status
&
STATUS_HCMD_ACTIVE
),
HOST_COMPLETE_TIMEOUT
);
end
-
now
);
if
(
rc
<
0
)
{
now
=
jiffies
;
if
(
time_before
(
now
,
end
))
goto
again
;
rc
=
0
;
}
if
(
rc
==
0
)
{
spin_lock_irqsave
(
&
priv
->
lock
,
flags
);
if
(
priv
->
status
&
STATUS_HCMD_ACTIVE
)
{
...
...
drivers/net/wireless/iwlwifi/iwl-1000.c
View file @
20214926
...
...
@@ -46,8 +46,8 @@
#include "iwl-prph.h"
/* Highest firmware API version supported */
#define IWL1000_UCODE_API_MAX
6
#define IWL100_UCODE_API_MAX
6
#define IWL1000_UCODE_API_MAX
5
#define IWL100_UCODE_API_MAX
5
/* Oldest version we won't warn about */
#define IWL1000_UCODE_API_OK 5
...
...
@@ -226,5 +226,5 @@ const struct iwl_cfg iwl100_bg_cfg = {
IWL_DEVICE_100
,
};
MODULE_FIRMWARE
(
IWL1000_MODULE_FIRMWARE
(
IWL1000_UCODE_API_
MAX
));
MODULE_FIRMWARE
(
IWL100_MODULE_FIRMWARE
(
IWL100_UCODE_API_
MAX
));
MODULE_FIRMWARE
(
IWL1000_MODULE_FIRMWARE
(
IWL1000_UCODE_API_
OK
));
MODULE_FIRMWARE
(
IWL100_MODULE_FIRMWARE
(
IWL100_UCODE_API_
OK
));
drivers/net/wireless/iwlwifi/iwl-2000.c
View file @
20214926
...
...
@@ -51,10 +51,10 @@
#define IWL135_UCODE_API_MAX 6
/* Oldest version we won't warn about */
#define IWL2030_UCODE_API_OK
5
#define IWL2000_UCODE_API_OK
5
#define IWL105_UCODE_API_OK
5
#define IWL135_UCODE_API_OK
5
#define IWL2030_UCODE_API_OK
6
#define IWL2000_UCODE_API_OK
6
#define IWL105_UCODE_API_OK
6
#define IWL135_UCODE_API_OK
6
/* Lowest firmware API version supported */
#define IWL2030_UCODE_API_MIN 5
...
...
@@ -328,7 +328,7 @@ const struct iwl_cfg iwl135_bgn_cfg = {
.
ht_params
=
&
iwl2000_ht_params
,
};
MODULE_FIRMWARE
(
IWL2000_MODULE_FIRMWARE
(
IWL2000_UCODE_API_
MAX
));
MODULE_FIRMWARE
(
IWL2030_MODULE_FIRMWARE
(
IWL2030_UCODE_API_
MAX
));
MODULE_FIRMWARE
(
IWL105_MODULE_FIRMWARE
(
IWL105_UCODE_API_
MAX
));
MODULE_FIRMWARE
(
IWL135_MODULE_FIRMWARE
(
IWL135_UCODE_API_
MAX
));
MODULE_FIRMWARE
(
IWL2000_MODULE_FIRMWARE
(
IWL2000_UCODE_API_
OK
));
MODULE_FIRMWARE
(
IWL2030_MODULE_FIRMWARE
(
IWL2030_UCODE_API_
OK
));
MODULE_FIRMWARE
(
IWL105_MODULE_FIRMWARE
(
IWL105_UCODE_API_
OK
));
MODULE_FIRMWARE
(
IWL135_MODULE_FIRMWARE
(
IWL135_UCODE_API_
OK
));
drivers/net/wireless/iwlwifi/iwl-5000.c
View file @
20214926
...
...
@@ -51,6 +51,10 @@
#define IWL5000_UCODE_API_MAX 5
#define IWL5150_UCODE_API_MAX 2
/* Oldest version we won't warn about */
#define IWL5000_UCODE_API_OK 5
#define IWL5150_UCODE_API_OK 2
/* Lowest firmware API version supported */
#define IWL5000_UCODE_API_MIN 1
#define IWL5150_UCODE_API_MIN 1
...
...
@@ -326,6 +330,7 @@ static const struct iwl_ht_params iwl5000_ht_params = {
#define IWL_DEVICE_5000 \
.fw_name_pre = IWL5000_FW_PRE, \
.ucode_api_max = IWL5000_UCODE_API_MAX, \
.ucode_api_ok = IWL5000_UCODE_API_OK, \
.ucode_api_min = IWL5000_UCODE_API_MIN, \
.max_inst_size = IWLAGN_RTC_INST_SIZE, \
.max_data_size = IWLAGN_RTC_DATA_SIZE, \
...
...
@@ -371,6 +376,7 @@ const struct iwl_cfg iwl5350_agn_cfg = {
.
name
=
"Intel(R) WiMAX/WiFi Link 5350 AGN"
,
.
fw_name_pre
=
IWL5000_FW_PRE
,
.
ucode_api_max
=
IWL5000_UCODE_API_MAX
,
.
ucode_api_ok
=
IWL5000_UCODE_API_OK
,
.
ucode_api_min
=
IWL5000_UCODE_API_MIN
,
.
max_inst_size
=
IWLAGN_RTC_INST_SIZE
,
.
max_data_size
=
IWLAGN_RTC_DATA_SIZE
,
...
...
@@ -386,6 +392,7 @@ const struct iwl_cfg iwl5350_agn_cfg = {
#define IWL_DEVICE_5150 \
.fw_name_pre = IWL5150_FW_PRE, \
.ucode_api_max = IWL5150_UCODE_API_MAX, \
.ucode_api_ok = IWL5150_UCODE_API_OK, \
.ucode_api_min = IWL5150_UCODE_API_MIN, \
.max_inst_size = IWLAGN_RTC_INST_SIZE, \
.max_data_size = IWLAGN_RTC_DATA_SIZE, \
...
...
@@ -409,5 +416,5 @@ const struct iwl_cfg iwl5150_abg_cfg = {
IWL_DEVICE_5150
,
};
MODULE_FIRMWARE
(
IWL5000_MODULE_FIRMWARE
(
IWL5000_UCODE_API_
MAX
));
MODULE_FIRMWARE
(
IWL5150_MODULE_FIRMWARE
(
IWL5150_UCODE_API_
MAX
));
MODULE_FIRMWARE
(
IWL5000_MODULE_FIRMWARE
(
IWL5000_UCODE_API_
OK
));
MODULE_FIRMWARE
(
IWL5150_MODULE_FIRMWARE
(
IWL5150_UCODE_API_
OK
));
drivers/net/wireless/iwlwifi/iwl-6000.c
View file @
20214926
...
...
@@ -53,6 +53,8 @@
/* Oldest version we won't warn about */
#define IWL6000_UCODE_API_OK 4
#define IWL6000G2_UCODE_API_OK 5
#define IWL6050_UCODE_API_OK 5
#define IWL6000G2B_UCODE_API_OK 6
/* Lowest firmware API version supported */
#define IWL6000_UCODE_API_MIN 4
...
...
@@ -334,7 +336,7 @@ static const struct iwl_bt_params iwl6000_bt_params = {
#define IWL_DEVICE_6005 \
.fw_name_pre = IWL6005_FW_PRE, \
.ucode_api_max = IWL6000G2_UCODE_API_MAX, \
.ucode_api_ok = IWL6000G2
_UCODE_API_OK,
\
.ucode_api_ok = IWL6000G2
B_UCODE_API_OK,
\
.ucode_api_min = IWL6000G2_UCODE_API_MIN, \
.max_inst_size = IWL60_RTC_INST_SIZE, \
.max_data_size = IWL60_RTC_DATA_SIZE, \
...
...
@@ -557,6 +559,6 @@ const struct iwl_cfg iwl6000_3agn_cfg = {
};
MODULE_FIRMWARE
(
IWL6000_MODULE_FIRMWARE
(
IWL6000_UCODE_API_OK
));
MODULE_FIRMWARE
(
IWL6050_MODULE_FIRMWARE
(
IWL6050_UCODE_API_
MAX
));
MODULE_FIRMWARE
(
IWL6005_MODULE_FIRMWARE
(
IWL6000G2_UCODE_API_
MAX
));
MODULE_FIRMWARE
(
IWL6030_MODULE_FIRMWARE
(
IWL6000G2
_UCODE_API_MAX
));
MODULE_FIRMWARE
(
IWL6050_MODULE_FIRMWARE
(
IWL6050_UCODE_API_
OK
));
MODULE_FIRMWARE
(
IWL6005_MODULE_FIRMWARE
(
IWL6000G2_UCODE_API_
OK
));
MODULE_FIRMWARE
(
IWL6030_MODULE_FIRMWARE
(
IWL6000G2
B_UCODE_API_OK
));
drivers/net/wireless/iwlwifi/iwl-agn.c
View file @
20214926
...
...
@@ -863,7 +863,6 @@ static void iwl_bg_run_time_calib_work(struct work_struct *work)
void
iwlagn_prepare_restart
(
struct
iwl_priv
*
priv
)
{
struct
iwl_rxon_context
*
ctx
;
bool
bt_full_concurrent
;
u8
bt_ci_compliance
;
u8
bt_load
;
...
...
@@ -872,8 +871,6 @@ void iwlagn_prepare_restart(struct iwl_priv *priv)
lockdep_assert_held
(
&
priv
->
mutex
);
for_each_context
(
priv
,
ctx
)
ctx
->
vif
=
NULL
;
priv
->
is_open
=
0
;
/*
...
...
drivers/net/wireless/iwlwifi/iwl-fh.h
View file @
20214926
...
...
@@ -104,15 +104,29 @@
* (see struct iwl_tfd_frame). These 16 pointer registers are offset by 0x04
* bytes from one another. Each TFD circular buffer in DRAM must be 256-byte
* aligned (address bits 0-7 must be 0).
* Later devices have 20 (5000 series) or 30 (higher) queues, but the registers
* for them are in different places.
*
* Bit fields in each pointer register:
* 27-0: TFD CB physical base address [35:8], must be 256-byte aligned
*/
#define FH_MEM_CBBC_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0x9D0)
#define FH_MEM_CBBC_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xA10)
/* Find TFD CB base pointer for given queue (range 0-15). */
#define FH_MEM_CBBC_QUEUE(x) (FH_MEM_CBBC_LOWER_BOUND + (x) * 0x4)
#define FH_MEM_CBBC_0_15_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0x9D0)
#define FH_MEM_CBBC_0_15_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xA10)
#define FH_MEM_CBBC_16_19_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0xBF0)
#define FH_MEM_CBBC_16_19_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xC00)
#define FH_MEM_CBBC_20_31_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0xB20)
#define FH_MEM_CBBC_20_31_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xB80)
/* Find TFD CB base pointer for given queue */
static
inline
unsigned
int
FH_MEM_CBBC_QUEUE
(
unsigned
int
chnl
)
{
if
(
chnl
<
16
)
return
FH_MEM_CBBC_0_15_LOWER_BOUND
+
4
*
chnl
;
if
(
chnl
<
20
)
return
FH_MEM_CBBC_16_19_LOWER_BOUND
+
4
*
(
chnl
-
16
);
WARN_ON_ONCE
(
chnl
>=
32
);
return
FH_MEM_CBBC_20_31_LOWER_BOUND
+
4
*
(
chnl
-
20
);
}
/**
...
...
drivers/net/wireless/iwlwifi/iwl-mac80211.c
View file @
20214926
...
...
@@ -1244,6 +1244,7 @@ static int iwlagn_mac_add_interface(struct ieee80211_hw *hw,
struct
iwl_rxon_context
*
tmp
,
*
ctx
=
NULL
;
int
err
;
enum
nl80211_iftype
viftype
=
ieee80211_vif_type_p2p
(
vif
);
bool
reset
=
false
;
IWL_DEBUG_MAC80211
(
priv
,
"enter: type %d, addr %pM
\n
"
,
viftype
,
vif
->
addr
);
...
...
@@ -1265,6 +1266,13 @@ static int iwlagn_mac_add_interface(struct ieee80211_hw *hw,
tmp
->
interface_modes
|
tmp
->
exclusive_interface_modes
;
if
(
tmp
->
vif
)
{
/* On reset we need to add the same interface again */
if
(
tmp
->
vif
==
vif
)
{
reset
=
true
;
ctx
=
tmp
;
break
;
}
/* check if this busy context is exclusive */
if
(
tmp
->
exclusive_interface_modes
&
BIT
(
tmp
->
vif
->
type
))
{
...
...
@@ -1291,7 +1299,7 @@ static int iwlagn_mac_add_interface(struct ieee80211_hw *hw,
ctx
->
vif
=
vif
;
err
=
iwl_setup_interface
(
priv
,
ctx
);
if
(
!
err
)
if
(
!
err
||
reset
)
goto
out
;
ctx
->
vif
=
NULL
;
...
...
drivers/net/wireless/iwlwifi/iwl-prph.h
View file @
20214926
...
...
@@ -223,12 +223,33 @@
#define SCD_AIT (SCD_BASE + 0x0c)
#define SCD_TXFACT (SCD_BASE + 0x10)
#define SCD_ACTIVE (SCD_BASE + 0x14)
#define SCD_QUEUE_WRPTR(x) (SCD_BASE + 0x18 + (x) * 4)
#define SCD_QUEUE_RDPTR(x) (SCD_BASE + 0x68 + (x) * 4)
#define SCD_QUEUECHAIN_SEL (SCD_BASE + 0xe8)
#define SCD_AGGR_SEL (SCD_BASE + 0x248)
#define SCD_INTERRUPT_MASK (SCD_BASE + 0x108)
#define SCD_QUEUE_STATUS_BITS(x) (SCD_BASE + 0x10c + (x) * 4)
static
inline
unsigned
int
SCD_QUEUE_WRPTR
(
unsigned
int
chnl
)
{
if
(
chnl
<
20
)
return
SCD_BASE
+
0x18
+
chnl
*
4
;
WARN_ON_ONCE
(
chnl
>=
32
);
return
SCD_BASE
+
0x284
+
(
chnl
-
20
)
*
4
;
}
static
inline
unsigned
int
SCD_QUEUE_RDPTR
(
unsigned
int
chnl
)
{
if
(
chnl
<
20
)
return
SCD_BASE
+
0x68
+
chnl
*
4
;
WARN_ON_ONCE
(
chnl
>=
32
);
return
SCD_BASE
+
0x2B4
+
(
chnl
-
20
)
*
4
;
}
static
inline
unsigned
int
SCD_QUEUE_STATUS_BITS
(
unsigned
int
chnl
)
{
if
(
chnl
<
20
)
return
SCD_BASE
+
0x10c
+
chnl
*
4
;
WARN_ON_ONCE
(
chnl
>=
32
);
return
SCD_BASE
+
0x384
+
(
chnl
-
20
)
*
4
;
}
/*********************** END TX SCHEDULER *************************************/
...
...
drivers/net/wireless/rtlwifi/pci.c
View file @
20214926
...
...
@@ -1941,6 +1941,7 @@ void rtl_pci_disconnect(struct pci_dev *pdev)
rtl_deinit_deferred_work
(
hw
);
rtlpriv
->
intf_ops
->
adapter_stop
(
hw
);
}
rtlpriv
->
cfg
->
ops
->
disable_interrupt
(
hw
);
/*deinit rfkill */
rtl_deinit_rfkill
(
hw
);
...
...
net/mac80211/ieee80211_i.h
View file @
20214926
...
...
@@ -1210,7 +1210,7 @@ void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
struct
sk_buff
*
skb
);
void
ieee80211_sta_reset_beacon_monitor
(
struct
ieee80211_sub_if_data
*
sdata
);
void
ieee80211_sta_reset_conn_monitor
(
struct
ieee80211_sub_if_data
*
sdata
);
void
ieee80211_mgd_
teardown
(
struct
ieee80211_sub_if_data
*
sdata
);
void
ieee80211_mgd_
stop
(
struct
ieee80211_sub_if_data
*
sdata
);
/* IBSS code */
void
ieee80211_ibss_notify_scan_completed
(
struct
ieee80211_local
*
local
);
...
...
net/mac80211/iface.c
View file @
20214926
...
...
@@ -486,6 +486,8 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
/* free all potentially still buffered bcast frames */
local
->
total_ps_buffered
-=
skb_queue_len
(
&
sdata
->
u
.
ap
.
ps_bc_buf
);
skb_queue_purge
(
&
sdata
->
u
.
ap
.
ps_bc_buf
);
}
else
if
(
sdata
->
vif
.
type
==
NL80211_IFTYPE_STATION
)
{
ieee80211_mgd_stop
(
sdata
);
}
if
(
going_down
)
...
...
@@ -644,8 +646,6 @@ static void ieee80211_teardown_sdata(struct net_device *dev)
if
(
ieee80211_vif_is_mesh
(
&
sdata
->
vif
))
mesh_rmc_free
(
sdata
);
else
if
(
sdata
->
vif
.
type
==
NL80211_IFTYPE_STATION
)
ieee80211_mgd_teardown
(
sdata
);
flushed
=
sta_info_flush
(
local
,
sdata
);
WARN_ON
(
flushed
);
...
...
net/mac80211/mlme.c
View file @
20214926
...
...
@@ -3497,7 +3497,7 @@ int ieee80211_mgd_disassoc(struct ieee80211_sub_if_data *sdata,
return
0
;
}
void
ieee80211_mgd_
teardown
(
struct
ieee80211_sub_if_data
*
sdata
)
void
ieee80211_mgd_
stop
(
struct
ieee80211_sub_if_data
*
sdata
)
{
struct
ieee80211_if_managed
*
ifmgd
=
&
sdata
->
u
.
mgd
;
...
...
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