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
78fd9c44
Commit
78fd9c44
authored
Oct 26, 2010
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
parents
b9958a95
822395b5
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
221 additions
and
108 deletions
+221
-108
drivers/net/wireless/ath/ath5k/base.c
drivers/net/wireless/ath/ath5k/base.c
+1
-0
drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
+135
-56
drivers/net/wireless/ath/ath9k/ar9003_paprd.c
drivers/net/wireless/ath/ath9k/ar9003_paprd.c
+9
-5
drivers/net/wireless/ath/ath9k/beacon.c
drivers/net/wireless/ath/ath9k/beacon.c
+1
-1
drivers/net/wireless/ath/ath9k/init.c
drivers/net/wireless/ath/ath9k/init.c
+1
-0
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/main.c
+5
-2
drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/xmit.c
+7
-1
drivers/net/wireless/ath/carl9170/cmd.h
drivers/net/wireless/ath/carl9170/cmd.h
+28
-23
drivers/net/wireless/ath/carl9170/main.c
drivers/net/wireless/ath/carl9170/main.c
+1
-1
drivers/net/wireless/ath/carl9170/usb.c
drivers/net/wireless/ath/carl9170/usb.c
+19
-6
drivers/net/wireless/b43/phy_n.c
drivers/net/wireless/b43/phy_n.c
+1
-1
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+2
-1
drivers/net/wireless/wl1251/Makefile
drivers/net/wireless/wl1251/Makefile
+5
-3
net/mac80211/ibss.c
net/mac80211/ibss.c
+1
-0
net/mac80211/main.c
net/mac80211/main.c
+1
-7
net/mac80211/rate.c
net/mac80211/rate.c
+3
-0
net/wireless/reg.c
net/wireless/reg.c
+1
-1
No files found.
drivers/net/wireless/ath/ath5k/base.c
View file @
78fd9c44
...
@@ -3580,6 +3580,7 @@ ath5k_pci_probe(struct pci_dev *pdev,
...
@@ -3580,6 +3580,7 @@ ath5k_pci_probe(struct pci_dev *pdev,
common
->
ah
=
sc
->
ah
;
common
->
ah
=
sc
->
ah
;
common
->
hw
=
hw
;
common
->
hw
=
hw
;
common
->
cachelsz
=
csz
<<
2
;
/* convert to bytes */
common
->
cachelsz
=
csz
<<
2
;
/* convert to bytes */
spin_lock_init
(
&
common
->
cc_lock
);
/* Initialize device */
/* Initialize device */
ret
=
ath5k_hw_attach
(
sc
);
ret
=
ath5k_hw_attach
(
sc
);
...
...
drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
View file @
78fd9c44
This diff is collapsed.
Click to expand it.
drivers/net/wireless/ath/ath9k/ar9003_paprd.c
View file @
78fd9c44
...
@@ -347,6 +347,10 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain)
...
@@ -347,6 +347,10 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain)
(((
Y
[
6
]
-
Y
[
3
])
*
1
<<
scale_factor
)
+
(((
Y
[
6
]
-
Y
[
3
])
*
1
<<
scale_factor
)
+
(
x_est
[
6
]
-
x_est
[
3
]))
/
(
x_est
[
6
]
-
x_est
[
3
]);
(
x_est
[
6
]
-
x_est
[
3
]))
/
(
x_est
[
6
]
-
x_est
[
3
]);
/* prevent division by zero */
if
(
G_fxp
==
0
)
return
false
;
Y_intercept
=
Y_intercept
=
(
G_fxp
*
(
x_est
[
0
]
-
x_est
[
3
])
+
(
G_fxp
*
(
x_est
[
0
]
-
x_est
[
3
])
+
(
1
<<
scale_factor
))
/
(
1
<<
scale_factor
)
+
Y
[
3
];
(
1
<<
scale_factor
))
/
(
1
<<
scale_factor
)
+
Y
[
3
];
...
@@ -356,14 +360,12 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain)
...
@@ -356,14 +360,12 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain)
for
(
i
=
0
;
i
<=
3
;
i
++
)
{
for
(
i
=
0
;
i
<=
3
;
i
++
)
{
y_est
[
i
]
=
i
*
32
;
y_est
[
i
]
=
i
*
32
;
/* prevent division by zero */
if
(
G_fxp
==
0
)
return
false
;
x_est
[
i
]
=
((
y_est
[
i
]
*
1
<<
scale_factor
)
+
G_fxp
)
/
G_fxp
;
x_est
[
i
]
=
((
y_est
[
i
]
*
1
<<
scale_factor
)
+
G_fxp
)
/
G_fxp
;
}
}
if
(
y_est
[
max_index
]
==
0
)
return
false
;
x_est_fxp1_nonlin
=
x_est_fxp1_nonlin
=
x_est
[
max_index
]
-
((
1
<<
scale_factor
)
*
y_est
[
max_index
]
+
x_est
[
max_index
]
-
((
1
<<
scale_factor
)
*
y_est
[
max_index
]
+
G_fxp
)
/
G_fxp
;
G_fxp
)
/
G_fxp
;
...
@@ -457,6 +459,8 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain)
...
@@ -457,6 +459,8 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain)
Q_scale_B
=
find_proper_scale
(
find_expn
(
abs
(
scale_B
)),
10
);
Q_scale_B
=
find_proper_scale
(
find_expn
(
abs
(
scale_B
)),
10
);
scale_B
=
scale_B
/
(
1
<<
Q_scale_B
);
scale_B
=
scale_B
/
(
1
<<
Q_scale_B
);
if
(
scale_B
==
0
)
return
false
;
Q_beta
=
find_proper_scale
(
find_expn
(
abs
(
beta_raw
)),
10
);
Q_beta
=
find_proper_scale
(
find_expn
(
abs
(
beta_raw
)),
10
);
Q_alpha
=
find_proper_scale
(
find_expn
(
abs
(
alpha_raw
)),
10
);
Q_alpha
=
find_proper_scale
(
find_expn
(
abs
(
alpha_raw
)),
10
);
beta_raw
=
beta_raw
/
(
1
<<
Q_beta
);
beta_raw
=
beta_raw
/
(
1
<<
Q_beta
);
...
...
drivers/net/wireless/ath/ath9k/beacon.c
View file @
78fd9c44
...
@@ -370,7 +370,7 @@ void ath_beacon_tasklet(unsigned long data)
...
@@ -370,7 +370,7 @@ void ath_beacon_tasklet(unsigned long data)
ath_print
(
common
,
ATH_DBG_BSTUCK
,
ath_print
(
common
,
ATH_DBG_BSTUCK
,
"beacon is officially stuck
\n
"
);
"beacon is officially stuck
\n
"
);
sc
->
sc_flags
|=
SC_OP_TSF_RESET
;
sc
->
sc_flags
|=
SC_OP_TSF_RESET
;
ath_reset
(
sc
,
fals
e
);
ath_reset
(
sc
,
tru
e
);
}
}
return
;
return
;
...
...
drivers/net/wireless/ath/ath9k/init.c
View file @
78fd9c44
...
@@ -577,6 +577,7 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, u16 subsysid,
...
@@ -577,6 +577,7 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, u16 subsysid,
common
->
hw
=
sc
->
hw
;
common
->
hw
=
sc
->
hw
;
common
->
priv
=
sc
;
common
->
priv
=
sc
;
common
->
debug_mask
=
ath9k_debug
;
common
->
debug_mask
=
ath9k_debug
;
spin_lock_init
(
&
common
->
cc_lock
);
spin_lock_init
(
&
sc
->
wiphy_lock
);
spin_lock_init
(
&
sc
->
wiphy_lock
);
spin_lock_init
(
&
sc
->
sc_resetlock
);
spin_lock_init
(
&
sc
->
sc_resetlock
);
...
...
drivers/net/wireless/ath/ath9k/main.c
View file @
78fd9c44
...
@@ -182,6 +182,9 @@ static void ath_update_survey_stats(struct ath_softc *sc)
...
@@ -182,6 +182,9 @@ static void ath_update_survey_stats(struct ath_softc *sc)
struct
ath_cycle_counters
*
cc
=
&
common
->
cc_survey
;
struct
ath_cycle_counters
*
cc
=
&
common
->
cc_survey
;
unsigned
int
div
=
common
->
clockrate
*
1000
;
unsigned
int
div
=
common
->
clockrate
*
1000
;
if
(
!
ah
->
curchan
)
return
;
if
(
ah
->
power_mode
==
ATH9K_PM_AWAKE
)
if
(
ah
->
power_mode
==
ATH9K_PM_AWAKE
)
ath_hw_cycle_counters_update
(
common
);
ath_hw_cycle_counters_update
(
common
);
...
@@ -577,7 +580,7 @@ void ath_hw_check(struct work_struct *work)
...
@@ -577,7 +580,7 @@ void ath_hw_check(struct work_struct *work)
msleep
(
1
);
msleep
(
1
);
}
}
ath_reset
(
sc
,
fals
e
);
ath_reset
(
sc
,
tru
e
);
out:
out:
ath9k_ps_restore
(
sc
);
ath9k_ps_restore
(
sc
);
...
@@ -595,7 +598,7 @@ void ath9k_tasklet(unsigned long data)
...
@@ -595,7 +598,7 @@ void ath9k_tasklet(unsigned long data)
ath9k_ps_wakeup
(
sc
);
ath9k_ps_wakeup
(
sc
);
if
(
status
&
ATH9K_INT_FATAL
)
{
if
(
status
&
ATH9K_INT_FATAL
)
{
ath_reset
(
sc
,
fals
e
);
ath_reset
(
sc
,
tru
e
);
ath9k_ps_restore
(
sc
);
ath9k_ps_restore
(
sc
);
return
;
return
;
}
}
...
...
drivers/net/wireless/ath/ath9k/xmit.c
View file @
78fd9c44
...
@@ -673,6 +673,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc,
...
@@ -673,6 +673,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc,
u16
aggr_limit
=
0
,
al
=
0
,
bpad
=
0
,
u16
aggr_limit
=
0
,
al
=
0
,
bpad
=
0
,
al_delta
,
h_baw
=
tid
->
baw_size
/
2
;
al_delta
,
h_baw
=
tid
->
baw_size
/
2
;
enum
ATH_AGGR_STATUS
status
=
ATH_AGGR_DONE
;
enum
ATH_AGGR_STATUS
status
=
ATH_AGGR_DONE
;
struct
ieee80211_tx_info
*
tx_info
;
bf_first
=
list_first_entry
(
&
tid
->
buf_q
,
struct
ath_buf
,
list
);
bf_first
=
list_first_entry
(
&
tid
->
buf_q
,
struct
ath_buf
,
list
);
...
@@ -699,6 +700,11 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc,
...
@@ -699,6 +700,11 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc,
break
;
break
;
}
}
tx_info
=
IEEE80211_SKB_CB
(
bf
->
bf_mpdu
);
if
(
nframes
&&
((
tx_info
->
flags
&
IEEE80211_TX_CTL_RATE_CTRL_PROBE
)
||
!
(
tx_info
->
control
.
rates
[
0
].
flags
&
IEEE80211_TX_RC_MCS
)))
break
;
/* do not exceed subframe limit */
/* do not exceed subframe limit */
if
(
nframes
>=
min
((
int
)
h_baw
,
ATH_AMPDU_SUBFRAME_DEFAULT
))
{
if
(
nframes
>=
min
((
int
)
h_baw
,
ATH_AMPDU_SUBFRAME_DEFAULT
))
{
status
=
ATH_AGGR_LIMITED
;
status
=
ATH_AGGR_LIMITED
;
...
@@ -2157,7 +2163,7 @@ static void ath_tx_complete_poll_work(struct work_struct *work)
...
@@ -2157,7 +2163,7 @@ static void ath_tx_complete_poll_work(struct work_struct *work)
ath_print
(
ath9k_hw_common
(
sc
->
sc_ah
),
ATH_DBG_RESET
,
ath_print
(
ath9k_hw_common
(
sc
->
sc_ah
),
ATH_DBG_RESET
,
"tx hung, resetting the chip
\n
"
);
"tx hung, resetting the chip
\n
"
);
ath9k_ps_wakeup
(
sc
);
ath9k_ps_wakeup
(
sc
);
ath_reset
(
sc
,
fals
e
);
ath_reset
(
sc
,
tru
e
);
ath9k_ps_restore
(
sc
);
ath9k_ps_restore
(
sc
);
}
}
...
...
drivers/net/wireless/ath/carl9170/cmd.h
View file @
78fd9c44
...
@@ -116,8 +116,9 @@ __regwrite_out : \
...
@@ -116,8 +116,9 @@ __regwrite_out : \
} while (0);
} while (0);
#define carl9170_async_
get_buf()
\
#define carl9170_async_
regwrite_get_buf()
\
do { \
do { \
__nreg = 0; \
__cmd = carl9170_cmd_buf(__carl, CARL9170_CMD_WREG_ASYNC, \
__cmd = carl9170_cmd_buf(__carl, CARL9170_CMD_WREG_ASYNC, \
CARL9170_MAX_CMD_PAYLOAD_LEN); \
CARL9170_MAX_CMD_PAYLOAD_LEN); \
if (__cmd == NULL) { \
if (__cmd == NULL) { \
...
@@ -128,38 +129,42 @@ do { \
...
@@ -128,38 +129,42 @@ do { \
#define carl9170_async_regwrite_begin(carl) \
#define carl9170_async_regwrite_begin(carl) \
do { \
do { \
int __nreg = 0, __err = 0; \
struct ar9170 *__carl = carl; \
struct ar9170 *__carl = carl; \
struct carl9170_cmd *__cmd; \
struct carl9170_cmd *__cmd; \
carl9170_async_get_buf(); \
unsigned int __nreg; \
int __err = 0; \
carl9170_async_regwrite_get_buf(); \
#define carl9170_async_regwrite_flush() \
do { \
if (__cmd == NULL || __nreg == 0) \
break; \
\
if (IS_ACCEPTING_CMD(__carl) && __nreg) { \
__cmd->hdr.len = 8 * __nreg; \
__err = __carl9170_exec_cmd(__carl, __cmd, true); \
__cmd = NULL; \
break; \
} \
goto __async_regwrite_out; \
} while (0)
#define carl9170_async_regwrite(r, v) do { \
#define carl9170_async_regwrite(r, v) do { \
if (__cmd == NULL) \
carl9170_async_regwrite_get_buf(); \
__cmd->wreg.regs[__nreg].addr = cpu_to_le32(r); \
__cmd->wreg.regs[__nreg].addr = cpu_to_le32(r); \
__cmd->wreg.regs[__nreg].val = cpu_to_le32(v); \
__cmd->wreg.regs[__nreg].val = cpu_to_le32(v); \
__nreg++; \
__nreg++; \
if ((__nreg >= PAYLOAD_MAX/2)) { \
if ((__nreg >= PAYLOAD_MAX / 2)) \
if (IS_ACCEPTING_CMD(__carl)) { \
carl9170_async_regwrite_flush(); \
__cmd->hdr.len = 8 * __nreg; \
__err = __carl9170_exec_cmd(__carl, __cmd, true);\
__cmd = NULL; \
carl9170_async_get_buf(); \
} else { \
goto __async_regwrite_out; \
} \
__nreg = 0; \
if (__err) \
goto __async_regwrite_out; \
} \
} while (0)
} while (0)
#define carl9170_async_regwrite_finish() \
#define carl9170_async_regwrite_finish()
do {
\
__async_regwrite_out : \
__async_regwrite_out : \
if (__err == 0 && __nreg) { \
if (__cmd != NULL && __err == 0) \
__cmd->hdr.len = 8 * __nreg; \
carl9170_async_regwrite_flush(); \
if (IS_ACCEPTING_CMD(__carl)) \
kfree(__cmd); \
__err = __carl9170_exec_cmd(__carl, __cmd, true);\
} while (0) \
__nreg = 0; \
}
#define carl9170_async_regwrite_result() \
#define carl9170_async_regwrite_result() \
__err; \
__err; \
...
...
drivers/net/wireless/ath/carl9170/main.c
View file @
78fd9c44
...
@@ -639,8 +639,8 @@ static int carl9170_op_add_interface(struct ieee80211_hw *hw,
...
@@ -639,8 +639,8 @@ static int carl9170_op_add_interface(struct ieee80211_hw *hw,
if
(
err
)
if
(
err
)
goto
unlock
;
goto
unlock
;
}
else
{
}
else
{
err
=
carl9170_mod_virtual_mac
(
ar
,
vif_id
,
vif
->
addr
);
rcu_read_unlock
();
rcu_read_unlock
();
err
=
carl9170_mod_virtual_mac
(
ar
,
vif_id
,
vif
->
addr
);
if
(
err
)
if
(
err
)
goto
unlock
;
goto
unlock
;
...
...
drivers/net/wireless/ath/carl9170/usb.c
View file @
78fd9c44
...
@@ -591,16 +591,23 @@ int __carl9170_exec_cmd(struct ar9170 *ar, struct carl9170_cmd *cmd,
...
@@ -591,16 +591,23 @@ int __carl9170_exec_cmd(struct ar9170 *ar, struct carl9170_cmd *cmd,
const
bool
free_buf
)
const
bool
free_buf
)
{
{
struct
urb
*
urb
;
struct
urb
*
urb
;
int
err
=
0
;
if
(
!
IS_INITIALIZED
(
ar
))
if
(
!
IS_INITIALIZED
(
ar
))
{
return
-
EPERM
;
err
=
-
EPERM
;
goto
err_free
;
}
if
(
WARN_ON
(
cmd
->
hdr
.
len
>
CARL9170_MAX_CMD_LEN
-
4
))
if
(
WARN_ON
(
cmd
->
hdr
.
len
>
CARL9170_MAX_CMD_LEN
-
4
))
{
return
-
EINVAL
;
err
=
-
EINVAL
;
goto
err_free
;
}
urb
=
usb_alloc_urb
(
0
,
GFP_ATOMIC
);
urb
=
usb_alloc_urb
(
0
,
GFP_ATOMIC
);
if
(
!
urb
)
if
(
!
urb
)
{
return
-
ENOMEM
;
err
=
-
ENOMEM
;
goto
err_free
;
}
usb_fill_int_urb
(
urb
,
ar
->
udev
,
usb_sndintpipe
(
ar
->
udev
,
usb_fill_int_urb
(
urb
,
ar
->
udev
,
usb_sndintpipe
(
ar
->
udev
,
AR9170_USB_EP_CMD
),
cmd
,
cmd
->
hdr
.
len
+
4
,
AR9170_USB_EP_CMD
),
cmd
,
cmd
->
hdr
.
len
+
4
,
...
@@ -613,6 +620,12 @@ int __carl9170_exec_cmd(struct ar9170 *ar, struct carl9170_cmd *cmd,
...
@@ -613,6 +620,12 @@ int __carl9170_exec_cmd(struct ar9170 *ar, struct carl9170_cmd *cmd,
usb_free_urb
(
urb
);
usb_free_urb
(
urb
);
return
carl9170_usb_submit_cmd_urb
(
ar
);
return
carl9170_usb_submit_cmd_urb
(
ar
);
err_free:
if
(
free_buf
)
kfree
(
cmd
);
return
err
;
}
}
int
carl9170_exec_cmd
(
struct
ar9170
*
ar
,
const
enum
carl9170_cmd_oids
cmd
,
int
carl9170_exec_cmd
(
struct
ar9170
*
ar
,
const
enum
carl9170_cmd_oids
cmd
,
...
...
drivers/net/wireless/b43/phy_n.c
View file @
78fd9c44
...
@@ -2964,7 +2964,7 @@ static int b43_nphy_rev2_cal_rx_iq(struct b43_wldev *dev,
...
@@ -2964,7 +2964,7 @@ static int b43_nphy_rev2_cal_rx_iq(struct b43_wldev *dev,
(
2
-
i
));
(
2
-
i
));
}
}
for
(
j
=
0
;
i
<
4
;
j
++
)
{
for
(
j
=
0
;
j
<
4
;
j
++
)
{
if
(
j
<
3
)
{
if
(
j
<
3
)
{
cur_lna
=
lna
[
j
];
cur_lna
=
lna
[
j
];
cur_hpf1
=
hpf1
[
j
];
cur_hpf1
=
hpf1
[
j
];
...
...
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
View file @
78fd9c44
...
@@ -1227,7 +1227,8 @@ static int iwlagn_tx_status_reply_compressed_ba(struct iwl_priv *priv,
...
@@ -1227,7 +1227,8 @@ static int iwlagn_tx_status_reply_compressed_ba(struct iwl_priv *priv,
struct
ieee80211_tx_info
*
info
;
struct
ieee80211_tx_info
*
info
;
if
(
unlikely
(
!
agg
->
wait_for_ba
))
{
if
(
unlikely
(
!
agg
->
wait_for_ba
))
{
IWL_ERR
(
priv
,
"Received BA when not expected
\n
"
);
if
(
unlikely
(
ba_resp
->
bitmap
))
IWL_ERR
(
priv
,
"Received BA when not expected
\n
"
);
return
-
EINVAL
;
return
-
EINVAL
;
}
}
...
...
drivers/net/wireless/wl1251/Makefile
View file @
78fd9c44
wl1251-objs
=
main.o event.o tx.o rx.o ps.o cmd.o
\
wl1251-objs
=
main.o event.o tx.o rx.o ps.o cmd.o
\
acx.o boot.o init.o debugfs.o io.o
acx.o boot.o init.o debugfs.o io.o
wl1251_spi-objs
+=
spi.o
wl1251_sdio-objs
+=
sdio.o
obj-$(CONFIG_WL1251)
+=
wl1251.o
obj-$(CONFIG_WL1251)
+=
wl1251.o
obj-$(CONFIG_WL1251_SPI)
+=
spi.o
obj-$(CONFIG_WL1251_SPI)
+=
wl1251_
spi.o
obj-$(CONFIG_WL1251_SDIO)
+=
sdio.o
obj-$(CONFIG_WL1251_SDIO)
+=
wl1251_
sdio.o
net/mac80211/ibss.c
View file @
78fd9c44
...
@@ -456,6 +456,7 @@ struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
...
@@ -456,6 +456,7 @@ struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
if
(
!
sta
)
if
(
!
sta
)
return
NULL
;
return
NULL
;
sta
->
last_rx
=
jiffies
;
set_sta_flags
(
sta
,
WLAN_STA_AUTHORIZED
);
set_sta_flags
(
sta
,
WLAN_STA_AUTHORIZED
);
/* make sure mandatory rates are always added */
/* make sure mandatory rates are always added */
...
...
net/mac80211/main.c
View file @
78fd9c44
...
@@ -748,7 +748,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
...
@@ -748,7 +748,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
hw
->
queues
=
IEEE80211_MAX_QUEUES
;
hw
->
queues
=
IEEE80211_MAX_QUEUES
;
local
->
workqueue
=
local
->
workqueue
=
create_singlethread_workqueue
(
wiphy_name
(
local
->
hw
.
wiphy
)
);
alloc_ordered_workqueue
(
wiphy_name
(
local
->
hw
.
wiphy
),
0
);
if
(
!
local
->
workqueue
)
{
if
(
!
local
->
workqueue
)
{
result
=
-
ENOMEM
;
result
=
-
ENOMEM
;
goto
fail_workqueue
;
goto
fail_workqueue
;
...
@@ -962,12 +962,6 @@ static void __exit ieee80211_exit(void)
...
@@ -962,12 +962,6 @@ static void __exit ieee80211_exit(void)
rc80211_minstrel_ht_exit
();
rc80211_minstrel_ht_exit
();
rc80211_minstrel_exit
();
rc80211_minstrel_exit
();
/*
* For key todo, it'll be empty by now but the work
* might still be scheduled.
*/
flush_scheduled_work
();
if
(
mesh_allocated
)
if
(
mesh_allocated
)
ieee80211s_stop
();
ieee80211s_stop
();
...
...
net/mac80211/rate.c
View file @
78fd9c44
...
@@ -329,6 +329,9 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata,
...
@@ -329,6 +329,9 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata,
* if needed.
* if needed.
*/
*/
for
(
i
=
0
;
i
<
IEEE80211_TX_MAX_RATES
;
i
++
)
{
for
(
i
=
0
;
i
<
IEEE80211_TX_MAX_RATES
;
i
++
)
{
/* Skip invalid rates */
if
(
info
->
control
.
rates
[
i
].
idx
<
0
)
break
;
/* Rate masking supports only legacy rates for now */
/* Rate masking supports only legacy rates for now */
if
(
info
->
control
.
rates
[
i
].
flags
&
IEEE80211_TX_RC_MCS
)
if
(
info
->
control
.
rates
[
i
].
flags
&
IEEE80211_TX_RC_MCS
)
continue
;
continue
;
...
...
net/wireless/reg.c
View file @
78fd9c44
...
@@ -1167,7 +1167,7 @@ static int ignore_request(struct wiphy *wiphy,
...
@@ -1167,7 +1167,7 @@ static int ignore_request(struct wiphy *wiphy,
return
0
;
return
0
;
return
-
EALREADY
;
return
-
EALREADY
;
}
}
return
REG_INTERSECT
;
return
0
;
case
NL80211_REGDOM_SET_BY_DRIVER
:
case
NL80211_REGDOM_SET_BY_DRIVER
:
if
(
last_request
->
initiator
==
NL80211_REGDOM_SET_BY_CORE
)
{
if
(
last_request
->
initiator
==
NL80211_REGDOM_SET_BY_CORE
)
{
if
(
regdom_changes
(
pending_request
->
alpha2
))
if
(
regdom_changes
(
pending_request
->
alpha2
))
...
...
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