Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
4f58605e
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
4f58605e
编写于
12月 08, 2010
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
上级
b8eb3a10
d89197c7
变更
24
隐藏空白更改
内联
并排
Showing
24 changed file
with
135 addition
and
97 deletion
+135
-97
drivers/bluetooth/ath3k.c
drivers/bluetooth/ath3k.c
+4
-0
drivers/bluetooth/btusb.c
drivers/bluetooth/btusb.c
+9
-3
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+38
-35
drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
+2
-7
drivers/net/wireless/ath/ath9k/ath9k.h
drivers/net/wireless/ath/ath9k/ath9k.h
+3
-1
drivers/net/wireless/ath/ath9k/eeprom.c
drivers/net/wireless/ath/ath9k/eeprom.c
+3
-3
drivers/net/wireless/ath/ath9k/eeprom.h
drivers/net/wireless/ath/ath9k/eeprom.h
+14
-13
drivers/net/wireless/ath/ath9k/eeprom_def.c
drivers/net/wireless/ath/ath9k/eeprom_def.c
+6
-5
drivers/net/wireless/ath/ath9k/hw.c
drivers/net/wireless/ath/ath9k/hw.c
+2
-1
drivers/net/wireless/ath/ath9k/init.c
drivers/net/wireless/ath/ath9k/init.c
+4
-5
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/main.c
+12
-4
drivers/net/wireless/ath/ath9k/reg.h
drivers/net/wireless/ath/ath9k/reg.h
+4
-2
drivers/net/wireless/ath/carl9170/fw.c
drivers/net/wireless/ath/carl9170/fw.c
+2
-1
drivers/net/wireless/ath/carl9170/main.c
drivers/net/wireless/ath/carl9170/main.c
+2
-1
drivers/net/wireless/ath/carl9170/tx.c
drivers/net/wireless/ath/carl9170/tx.c
+1
-1
drivers/net/wireless/libertas/if_sdio.c
drivers/net/wireless/libertas/if_sdio.c
+0
-1
drivers/net/wireless/libertas/if_spi.c
drivers/net/wireless/libertas/if_spi.c
+0
-1
drivers/net/wireless/libertas/main.c
drivers/net/wireless/libertas/main.c
+0
-2
drivers/net/wireless/orinoco/main.c
drivers/net/wireless/orinoco/main.c
+5
-7
drivers/net/wireless/orinoco/scan.c
drivers/net/wireless/orinoco/scan.c
+8
-0
drivers/net/wireless/orinoco/scan.h
drivers/net/wireless/orinoco/scan.h
+1
-0
net/bluetooth/sco.c
net/bluetooth/sco.c
+3
-3
net/mac80211/rx.c
net/mac80211/rx.c
+6
-0
net/mac80211/tx.c
net/mac80211/tx.c
+6
-1
未找到文件。
drivers/bluetooth/ath3k.c
浏览文件 @
4f58605e
...
...
@@ -35,6 +35,10 @@
static
struct
usb_device_id
ath3k_table
[]
=
{
/* Atheros AR3011 */
{
USB_DEVICE
(
0x0CF3
,
0x3000
)
},
/* Atheros AR3011 with sflash firmware*/
{
USB_DEVICE
(
0x0CF3
,
0x3002
)
},
{
}
/* Terminating entry */
};
...
...
drivers/bluetooth/btusb.c
浏览文件 @
4f58605e
...
...
@@ -99,6 +99,9 @@ static struct usb_device_id blacklist_table[] = {
/* Broadcom BCM2033 without firmware */
{
USB_DEVICE
(
0x0a5c
,
0x2033
),
.
driver_info
=
BTUSB_IGNORE
},
/* Atheros 3011 with sflash firmware */
{
USB_DEVICE
(
0x0cf3
,
0x3002
),
.
driver_info
=
BTUSB_IGNORE
},
/* Broadcom BCM2035 */
{
USB_DEVICE
(
0x0a5c
,
0x2035
),
.
driver_info
=
BTUSB_WRONG_SCO_MTU
},
{
USB_DEVICE
(
0x0a5c
,
0x200a
),
.
driver_info
=
BTUSB_WRONG_SCO_MTU
},
...
...
@@ -239,7 +242,8 @@ static void btusb_intr_complete(struct urb *urb)
err
=
usb_submit_urb
(
urb
,
GFP_ATOMIC
);
if
(
err
<
0
)
{
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
if
(
err
!=
-
EPERM
)
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
}
...
...
@@ -323,7 +327,8 @@ static void btusb_bulk_complete(struct urb *urb)
err
=
usb_submit_urb
(
urb
,
GFP_ATOMIC
);
if
(
err
<
0
)
{
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
if
(
err
!=
-
EPERM
)
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
}
...
...
@@ -412,7 +417,8 @@ static void btusb_isoc_complete(struct urb *urb)
err
=
usb_submit_urb
(
urb
,
GFP_ATOMIC
);
if
(
err
<
0
)
{
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
if
(
err
!=
-
EPERM
)
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
}
...
...
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
浏览文件 @
4f58605e
...
...
@@ -55,6 +55,8 @@
#define SUB_NUM_CTL_MODES_AT_5G_40 2
/* excluding HT40, EXT-OFDM */
#define SUB_NUM_CTL_MODES_AT_2G_40 3
/* excluding HT40, EXT-OFDM, EXT-CCK */
#define CTL(_tpower, _flag) ((_tpower) | ((_flag) << 6))
static
const
struct
ar9300_eeprom
ar9300_default
=
{
.
eepromVersion
=
2
,
.
templateVersion
=
2
,
...
...
@@ -290,20 +292,21 @@ static const struct ar9300_eeprom ar9300_default = {
}
},
.
ctlPowerData_2G
=
{
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
{
60
,
1
},
{
60
,
0
},
{
60
,
0
},
{
60
,
1
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
),
CTL
(
60
,
1
)
}
},
{
{
{
60
,
1
},
{
60
,
0
},
{
0
,
0
},
{
0
,
0
}
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
0
,
0
),
CTL
(
0
,
0
)
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
}
},
},
.
modalHeader5G
=
{
/* 4 idle,t1,t2,b (4 bits per setting) */
...
...
@@ -568,56 +571,56 @@ static const struct ar9300_eeprom ar9300_default = {
.
ctlPowerData_5G
=
{
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
,
}
},
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
,
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
1
}
,
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
1
)
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
,
{
60
,
1
},
{
60
,
0
},
{
60
,
0
},
{
60
,
0
}
,
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
,
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
,
}
},
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
,
{
60
,
0
},
{
60
,
0
},
{
60
,
0
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
,
CTL
(
60
,
0
),
CTL
(
60
,
0
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
,
}
},
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
{
60
,
1
},
{
60
,
0
},
{
60
,
0
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
,
}
},
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
}
},
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
0
},
{
60
,
1
}
,
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
1
)
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
,
}
},
{
{
{
60
,
1
},
{
60
,
0
},
{
60
,
1
},
{
60
,
1
}
,
{
60
,
1
},
{
60
,
1
},
{
60
,
0
},
{
60
,
1
}
,
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
1
)
,
}
},
}
...
...
@@ -1827,9 +1830,9 @@ static u16 ar9003_hw_get_direct_edge_power(struct ar9300_eeprom *eep,
struct
cal_ctl_data_5g
*
ctl_5g
=
eep
->
ctlPowerData_5G
;
if
(
is2GHz
)
return
ctl_2g
[
idx
].
ctlEdges
[
edge
].
tPower
;
return
CTL_EDGE_TPOWER
(
ctl_2g
[
idx
].
ctlEdges
[
edge
])
;
else
return
ctl_5g
[
idx
].
ctlEdges
[
edge
].
tPower
;
return
CTL_EDGE_TPOWER
(
ctl_5g
[
idx
].
ctlEdges
[
edge
])
;
}
static
u16
ar9003_hw_get_indirect_edge_power
(
struct
ar9300_eeprom
*
eep
,
...
...
@@ -1847,12 +1850,12 @@ static u16 ar9003_hw_get_indirect_edge_power(struct ar9300_eeprom *eep,
if
(
is2GHz
)
{
if
(
ath9k_hw_fbin2freq
(
ctl_freqbin
[
edge
-
1
],
1
)
<
freq
&&
ctl_2g
[
idx
].
ctlEdges
[
edge
-
1
].
flag
)
return
ctl_2g
[
idx
].
ctlEdges
[
edge
-
1
].
tPower
;
CTL_EDGE_FLAGS
(
ctl_2g
[
idx
].
ctlEdges
[
edge
-
1
])
)
return
CTL_EDGE_TPOWER
(
ctl_2g
[
idx
].
ctlEdges
[
edge
-
1
])
;
}
else
{
if
(
ath9k_hw_fbin2freq
(
ctl_freqbin
[
edge
-
1
],
0
)
<
freq
&&
ctl_5g
[
idx
].
ctlEdges
[
edge
-
1
].
flag
)
return
ctl_5g
[
idx
].
ctlEdges
[
edge
-
1
].
tPower
;
CTL_EDGE_FLAGS
(
ctl_5g
[
idx
].
ctlEdges
[
edge
-
1
])
)
return
CTL_EDGE_TPOWER
(
ctl_5g
[
idx
].
ctlEdges
[
edge
-
1
])
;
}
return
AR9300_MAX_RATE_POWER
;
...
...
drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
浏览文件 @
4f58605e
...
...
@@ -261,17 +261,12 @@ struct cal_tgt_pow_ht {
u8
tPow2x
[
14
];
}
__packed
;
struct
cal_ctl_edge_pwr
{
u8
tPower
:
6
,
flag:
2
;
}
__packed
;
struct
cal_ctl_data_2g
{
struct
cal_ctl_edge_pwr
ctlEdges
[
AR9300_NUM_BAND_EDGES_2G
];
u8
ctlEdges
[
AR9300_NUM_BAND_EDGES_2G
];
}
__packed
;
struct
cal_ctl_data_5g
{
struct
cal_ctl_edge_pwr
ctlEdges
[
AR9300_NUM_BAND_EDGES_5G
];
u8
ctlEdges
[
AR9300_NUM_BAND_EDGES_5G
];
}
__packed
;
struct
ar9300_eeprom
{
...
...
drivers/net/wireless/ath/ath9k/ath9k.h
浏览文件 @
4f58605e
...
...
@@ -21,6 +21,7 @@
#include <linux/device.h>
#include <linux/leds.h>
#include <linux/completion.h>
#include <linux/pm_qos_params.h>
#include "debug.h"
#include "common.h"
...
...
@@ -646,6 +647,8 @@ struct ath_softc {
struct
ath_descdma
txsdma
;
struct
ath_ant_comb
ant_comb
;
struct
pm_qos_request_list
pm_qos_req
;
};
struct
ath_wiphy
{
...
...
@@ -675,7 +678,6 @@ static inline void ath_read_cachesize(struct ath_common *common, int *csz)
}
extern
struct
ieee80211_ops
ath9k_ops
;
extern
struct
pm_qos_request_list
ath9k_pm_qos_req
;
extern
int
modparam_nohwcrypt
;
extern
int
led_blink
;
...
...
drivers/net/wireless/ath/ath9k/eeprom.c
浏览文件 @
4f58605e
...
...
@@ -240,16 +240,16 @@ u16 ath9k_hw_get_max_edge_power(u16 freq, struct cal_ctl_edges *pRdEdgesPower,
for
(
i
=
0
;
(
i
<
num_band_edges
)
&&
(
pRdEdgesPower
[
i
].
bChannel
!=
AR5416_BCHAN_UNUSED
);
i
++
)
{
if
(
freq
==
ath9k_hw_fbin2freq
(
pRdEdgesPower
[
i
].
bChannel
,
is2GHz
))
{
twiceMaxEdgePower
=
pRdEdgesPower
[
i
].
tPower
;
twiceMaxEdgePower
=
CTL_EDGE_TPOWER
(
pRdEdgesPower
[
i
].
ctl
)
;
break
;
}
else
if
((
i
>
0
)
&&
(
freq
<
ath9k_hw_fbin2freq
(
pRdEdgesPower
[
i
].
bChannel
,
is2GHz
)))
{
if
(
ath9k_hw_fbin2freq
(
pRdEdgesPower
[
i
-
1
].
bChannel
,
is2GHz
)
<
freq
&&
pRdEdgesPower
[
i
-
1
].
flag
)
{
CTL_EDGE_FLAGS
(
pRdEdgesPower
[
i
-
1
].
ctl
)
)
{
twiceMaxEdgePower
=
pRdEdgesPower
[
i
-
1
].
tPower
;
CTL_EDGE_TPOWER
(
pRdEdgesPower
[
i
-
1
].
ctl
)
;
}
break
;
}
...
...
drivers/net/wireless/ath/ath9k/eeprom.h
浏览文件 @
4f58605e
...
...
@@ -233,6 +233,18 @@
#define AR9287_CHECKSUM_LOCATION (AR9287_EEP_START_LOC + 1)
#define CTL_EDGE_TPOWER(_ctl) ((_ctl) & 0x3f)
#define CTL_EDGE_FLAGS(_ctl) (((_ctl) >> 6) & 0x03)
#define LNA_CTL_BUF_MODE BIT(0)
#define LNA_CTL_ISEL_LO BIT(1)
#define LNA_CTL_ISEL_HI BIT(2)
#define LNA_CTL_BUF_IN BIT(3)
#define LNA_CTL_FEM_BAND BIT(4)
#define LNA_CTL_LOCAL_BIAS BIT(5)
#define LNA_CTL_FORCE_XPA BIT(6)
#define LNA_CTL_USE_ANT1 BIT(7)
enum
eeprom_param
{
EEP_NFTHRESH_5
,
EEP_NFTHRESH_2
,
...
...
@@ -378,10 +390,7 @@ struct modal_eep_header {
u8
xatten2Margin
[
AR5416_MAX_CHAINS
];
u8
ob_ch1
;
u8
db_ch1
;
u8
useAnt1
:
1
,
force_xpaon:
1
,
local_bias:
1
,
femBandSelectUsed:
1
,
xlnabufin
:
1
,
xlnaisel
:
2
,
xlnabufmode
:
1
;
u8
lna_ctl
;
u8
miscBits
;
u16
xpaBiasLvlFreq
[
3
];
u8
futureModal
[
6
];
...
...
@@ -535,18 +544,10 @@ struct cal_target_power_ht {
u8
tPow2x
[
8
];
}
__packed
;
#ifdef __BIG_ENDIAN_BITFIELD
struct
cal_ctl_edges
{
u8
bChannel
;
u8
flag
:
2
,
tPower
:
6
;
}
__packed
;
#else
struct
cal_ctl_edges
{
u8
bChannel
;
u8
tPower
:
6
,
flag
:
2
;
u8
ctl
;
}
__packed
;
#endif
struct
cal_data_op_loop_ar9287
{
u8
pwrPdg
[
2
][
5
];
...
...
drivers/net/wireless/ath/ath9k/eeprom_def.c
浏览文件 @
4f58605e
...
...
@@ -451,9 +451,10 @@ static void ath9k_hw_def_set_board_values(struct ath_hw *ah,
ath9k_hw_analog_shift_rmw
(
ah
,
AR_AN_TOP2
,
AR_AN_TOP2_LOCALBIAS
,
AR_AN_TOP2_LOCALBIAS_S
,
pModal
->
local_bias
);
!!
(
pModal
->
lna_ctl
&
LNA_CTL_LOCAL_BIAS
));
REG_RMW_FIELD
(
ah
,
AR_PHY_XPA_CFG
,
AR_PHY_FORCE_XPA_CFG
,
pModal
->
force_xpaon
);
!!
(
pModal
->
lna_ctl
&
LNA_CTL_FORCE_XPA
)
);
}
REG_RMW_FIELD
(
ah
,
AR_PHY_SETTLING
,
AR_PHY_SETTLING_SWITCH
,
...
...
@@ -1428,9 +1429,9 @@ static u8 ath9k_hw_def_get_num_ant_config(struct ath_hw *ah,
num_ant_config
=
1
;
if
(
pBase
->
version
>=
0x0E0D
)
if
(
pModal
->
useAnt1
)
num_ant_config
+=
1
;
if
(
pBase
->
version
>=
0x0E0D
&&
(
pModal
->
lna_ctl
&
LNA_CTL_USE_ANT1
)
)
num_ant_config
+=
1
;
return
num_ant_config
;
}
...
...
drivers/net/wireless/ath/ath9k/hw.c
浏览文件 @
4f58605e
...
...
@@ -2044,7 +2044,8 @@ u32 ath9k_hw_gpio_get(struct ath_hw *ah, u32 gpio)
val
=
REG_READ
(
ah
,
AR7010_GPIO_IN
);
return
(
MS
(
val
,
AR7010_GPIO_IN_VAL
)
&
AR_GPIO_BIT
(
gpio
))
==
0
;
}
else
if
(
AR_SREV_9300_20_OR_LATER
(
ah
))
return
MS_REG_READ
(
AR9300
,
gpio
)
!=
0
;
return
(
MS
(
REG_READ
(
ah
,
AR_GPIO_IN
),
AR9300_GPIO_IN_VAL
)
&
AR_GPIO_BIT
(
gpio
))
!=
0
;
else
if
(
AR_SREV_9271
(
ah
))
return
MS_REG_READ
(
AR9271
,
gpio
)
!=
0
;
else
if
(
AR_SREV_9287_11_OR_LATER
(
ah
))
...
...
drivers/net/wireless/ath/ath9k/init.c
浏览文件 @
4f58605e
...
...
@@ -15,7 +15,6 @@
*/
#include <linux/slab.h>
#include <linux/pm_qos_params.h>
#include "ath9k.h"
...
...
@@ -180,8 +179,6 @@ static const struct ath_ops ath9k_common_ops = {
.
write
=
ath9k_iowrite32
,
};
struct
pm_qos_request_list
ath9k_pm_qos_req
;
/**************************/
/* Initialization */
/**************************/
...
...
@@ -664,6 +661,8 @@ void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
hw
->
flags
|=
IEEE80211_HW_MFP_CAPABLE
;
hw
->
wiphy
->
interface_modes
=
BIT
(
NL80211_IFTYPE_P2P_GO
)
|
BIT
(
NL80211_IFTYPE_P2P_CLIENT
)
|
BIT
(
NL80211_IFTYPE_AP
)
|
BIT
(
NL80211_IFTYPE_WDS
)
|
BIT
(
NL80211_IFTYPE_STATION
)
|
...
...
@@ -759,7 +758,7 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
ath_init_leds
(
sc
);
ath_start_rfkill_poll
(
sc
);
pm_qos_add_request
(
&
ath9k_
pm_qos_req
,
PM_QOS_CPU_DMA_LATENCY
,
pm_qos_add_request
(
&
sc
->
pm_qos_req
,
PM_QOS_CPU_DMA_LATENCY
,
PM_QOS_DEFAULT_VALUE
);
return
0
;
...
...
@@ -830,7 +829,7 @@ void ath9k_deinit_device(struct ath_softc *sc)
}
ieee80211_unregister_hw
(
hw
);
pm_qos_remove_request
(
&
ath9k_
pm_qos_req
);
pm_qos_remove_request
(
&
sc
->
pm_qos_req
);
ath_rx_cleanup
(
sc
);
ath_tx_cleanup
(
sc
);
ath9k_deinit_softc
(
sc
);
...
...
drivers/net/wireless/ath/ath9k/main.c
浏览文件 @
4f58605e
...
...
@@ -15,7 +15,6 @@
*/
#include <linux/nl80211.h>
#include <linux/pm_qos_params.h>
#include "ath9k.h"
#include "btcoex.h"
...
...
@@ -1244,7 +1243,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
ath9k_btcoex_timer_resume
(
sc
);
}
pm_qos_update_request
(
&
ath9k_
pm_qos_req
,
55
);
pm_qos_update_request
(
&
sc
->
pm_qos_req
,
55
);
mutex_unlock:
mutex_unlock
(
&
sc
->
mutex
);
...
...
@@ -1423,7 +1422,7 @@ static void ath9k_stop(struct ieee80211_hw *hw)
sc
->
sc_flags
|=
SC_OP_INVALID
;
pm_qos_update_request
(
&
ath9k_
pm_qos_req
,
PM_QOS_DEFAULT_VALUE
);
pm_qos_update_request
(
&
sc
->
pm_qos_req
,
PM_QOS_DEFAULT_VALUE
);
mutex_unlock
(
&
sc
->
mutex
);
...
...
@@ -1520,6 +1519,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
struct
ath_softc
*
sc
=
aphy
->
sc
;
struct
ath_common
*
common
=
ath9k_hw_common
(
sc
->
sc_ah
);
struct
ath_vif
*
avp
=
(
void
*
)
vif
->
drv_priv
;
bool
bs_valid
=
false
;
int
i
;
ath_print
(
common
,
ATH_DBG_CONFIG
,
"Detach Interface
\n
"
);
...
...
@@ -1548,7 +1548,15 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
"slot
\n
"
,
__func__
);
sc
->
beacon
.
bslot
[
i
]
=
NULL
;
sc
->
beacon
.
bslot_aphy
[
i
]
=
NULL
;
}
}
else
if
(
sc
->
beacon
.
bslot
[
i
])
bs_valid
=
true
;
}
if
(
!
bs_valid
&&
(
sc
->
sc_ah
->
imask
&
ATH9K_INT_SWBA
))
{
/* Disable SWBA interrupt */
sc
->
sc_ah
->
imask
&=
~
ATH9K_INT_SWBA
;
ath9k_ps_wakeup
(
sc
);
ath9k_hw_set_interrupts
(
sc
->
sc_ah
,
sc
->
sc_ah
->
imask
);
ath9k_ps_restore
(
sc
);
}
sc
->
nvifs
--
;
...
...
drivers/net/wireless/ath/ath9k/reg.h
浏览文件 @
4f58605e
...
...
@@ -984,11 +984,13 @@ enum {
#define AR9287_GPIO_IN_VAL_S 11
#define AR9271_GPIO_IN_VAL 0xFFFF0000
#define AR9271_GPIO_IN_VAL_S 16
#define AR9300_GPIO_IN_VAL 0x0001FFFF
#define AR9300_GPIO_IN_VAL_S 0
#define AR7010_GPIO_IN_VAL 0x0000FFFF
#define AR7010_GPIO_IN_VAL_S 0
#define AR_GPIO_IN 0x404c
#define AR9300_GPIO_IN_VAL 0x0001FFFF
#define AR9300_GPIO_IN_VAL_S 0
#define AR_GPIO_OE_OUT (AR_SREV_9300_20_OR_LATER(ah) ? 0x4050 : 0x404c)
#define AR_GPIO_OE_OUT_DRV 0x3
#define AR_GPIO_OE_OUT_DRV_NO 0x0
...
...
drivers/net/wireless/ath/carl9170/fw.c
浏览文件 @
4f58605e
...
...
@@ -291,7 +291,8 @@ static int carl9170_fw(struct ar9170 *ar, const __u8 *data, size_t len)
if
(
SUPP
(
CARL9170FW_WLANTX_CAB
))
{
ar
->
hw
->
wiphy
->
interface_modes
|=
BIT
(
NL80211_IFTYPE_AP
);
BIT
(
NL80211_IFTYPE_AP
)
|
BIT
(
NL80211_IFTYPE_P2P_GO
);
}
}
...
...
drivers/net/wireless/ath/carl9170/main.c
浏览文件 @
4f58605e
...
...
@@ -1631,7 +1631,8 @@ void *carl9170_alloc(size_t priv_size)
* supports these modes. The code which will add the
* additional interface_modes is in fw.c.
*/
hw
->
wiphy
->
interface_modes
=
BIT
(
NL80211_IFTYPE_STATION
);
hw
->
wiphy
->
interface_modes
=
BIT
(
NL80211_IFTYPE_STATION
)
|
BIT
(
NL80211_IFTYPE_P2P_CLIENT
);
hw
->
flags
|=
IEEE80211_HW_RX_INCLUDES_FCS
|
IEEE80211_HW_REPORTS_TX_ACK_STATUS
|
...
...
drivers/net/wireless/ath/carl9170/tx.c
浏览文件 @
4f58605e
...
...
@@ -810,7 +810,7 @@ static int carl9170_tx_prepare(struct ar9170 *ar, struct sk_buff *skb)
mac_tmp
=
cpu_to_le16
(
AR9170_TX_MAC_HW_DURATION
|
AR9170_TX_MAC_BACKOFF
);
mac_tmp
|=
cpu_to_le16
((
hw_queue
<<
AR9170_TX_MAC_QOS_S
)
&
&
mac_tmp
|=
cpu_to_le16
((
hw_queue
<<
AR9170_TX_MAC_QOS_S
)
&
AR9170_TX_MAC_QOS
);
no_ack
=
!!
(
info
->
flags
&
IEEE80211_TX_CTL_NO_ACK
);
...
...
drivers/net/wireless/libertas/if_sdio.c
浏览文件 @
4f58605e
...
...
@@ -1170,7 +1170,6 @@ static void if_sdio_remove(struct sdio_func *func)
lbs_deb_sdio
(
"call remove card
\n
"
);
lbs_stop_card
(
card
->
priv
);
lbs_remove_card
(
card
->
priv
);
card
->
priv
->
surpriseremoved
=
1
;
flush_workqueue
(
card
->
workqueue
);
destroy_workqueue
(
card
->
workqueue
);
...
...
drivers/net/wireless/libertas/if_spi.c
浏览文件 @
4f58605e
...
...
@@ -1055,7 +1055,6 @@ static int __devexit libertas_spi_remove(struct spi_device *spi)
lbs_stop_card
(
priv
);
lbs_remove_card
(
priv
);
/* will call free_netdev */
priv
->
surpriseremoved
=
1
;
free_irq
(
spi
->
irq
,
card
);
if_spi_terminate_spi_thread
(
card
);
if
(
card
->
pdata
->
teardown
)
...
...
drivers/net/wireless/libertas/main.c
浏览文件 @
4f58605e
...
...
@@ -915,8 +915,6 @@ void lbs_remove_card(struct lbs_private *priv)
lbs_free_adapter
(
priv
);
lbs_cfg_free
(
priv
);
priv
->
dev
=
NULL
;
free_netdev
(
dev
);
lbs_deb_leave
(
LBS_DEB_MAIN
);
...
...
drivers/net/wireless/orinoco/main.c
浏览文件 @
4f58605e
...
...
@@ -1392,10 +1392,9 @@ static void orinoco_process_scan_results(struct work_struct *work)
orinoco_add_hostscan_results
(
priv
,
buf
,
len
);
kfree
(
buf
);
}
else
if
(
priv
->
scan_request
)
{
}
else
{
/* Either abort or complete the scan */
cfg80211_scan_done
(
priv
->
scan_request
,
(
len
<
0
));
priv
->
scan_request
=
NULL
;
orinoco_scan_done
(
priv
,
(
len
<
0
));
}
spin_lock_irqsave
(
&
priv
->
scan_lock
,
flags
);
...
...
@@ -1684,6 +1683,8 @@ static int __orinoco_down(struct orinoco_private *priv)
hermes_write_regn
(
hw
,
EVACK
,
0xffff
);
}
orinoco_scan_done
(
priv
,
true
);
/* firmware will have to reassociate */
netif_carrier_off
(
dev
);
priv
->
last_linkstatus
=
0xffff
;
...
...
@@ -1762,10 +1763,7 @@ void orinoco_reset(struct work_struct *work)
orinoco_unlock
(
priv
,
&
flags
);
/* Scanning support: Notify scan cancellation */
if
(
priv
->
scan_request
)
{
cfg80211_scan_done
(
priv
->
scan_request
,
1
);
priv
->
scan_request
=
NULL
;
}
orinoco_scan_done
(
priv
,
true
);
if
(
priv
->
hard_reset
)
{
err
=
(
*
priv
->
hard_reset
)(
priv
);
...
...
drivers/net/wireless/orinoco/scan.c
浏览文件 @
4f58605e
...
...
@@ -229,3 +229,11 @@ void orinoco_add_hostscan_results(struct orinoco_private *priv,
priv
->
scan_request
=
NULL
;
}
}
void
orinoco_scan_done
(
struct
orinoco_private
*
priv
,
bool
abort
)
{
if
(
priv
->
scan_request
)
{
cfg80211_scan_done
(
priv
->
scan_request
,
abort
);
priv
->
scan_request
=
NULL
;
}
}
drivers/net/wireless/orinoco/scan.h
浏览文件 @
4f58605e
...
...
@@ -16,5 +16,6 @@ void orinoco_add_extscan_result(struct orinoco_private *priv,
void
orinoco_add_hostscan_results
(
struct
orinoco_private
*
dev
,
unsigned
char
*
buf
,
size_t
len
);
void
orinoco_scan_done
(
struct
orinoco_private
*
priv
,
bool
abort
);
#endif
/* _ORINOCO_SCAN_H_ */
net/bluetooth/sco.c
浏览文件 @
4f58605e
...
...
@@ -882,7 +882,7 @@ static int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
int
lm
=
0
;
if
(
type
!=
SCO_LINK
&&
type
!=
ESCO_LINK
)
return
0
;
return
-
EINVAL
;
BT_DBG
(
"hdev %s, bdaddr %s"
,
hdev
->
name
,
batostr
(
bdaddr
));
...
...
@@ -908,7 +908,7 @@ static int sco_connect_cfm(struct hci_conn *hcon, __u8 status)
BT_DBG
(
"hcon %p bdaddr %s status %d"
,
hcon
,
batostr
(
&
hcon
->
dst
),
status
);
if
(
hcon
->
type
!=
SCO_LINK
&&
hcon
->
type
!=
ESCO_LINK
)
return
0
;
return
-
EINVAL
;
if
(
!
status
)
{
struct
sco_conn
*
conn
;
...
...
@@ -927,7 +927,7 @@ static int sco_disconn_cfm(struct hci_conn *hcon, __u8 reason)
BT_DBG
(
"hcon %p reason %d"
,
hcon
,
reason
);
if
(
hcon
->
type
!=
SCO_LINK
&&
hcon
->
type
!=
ESCO_LINK
)
return
0
;
return
-
EINVAL
;
sco_conn_del
(
hcon
,
bt_err
(
reason
));
...
...
net/mac80211/rx.c
浏览文件 @
4f58605e
...
...
@@ -2247,6 +2247,10 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
break
;
case
cpu_to_le16
(
IEEE80211_STYPE_DEAUTH
):
case
cpu_to_le16
(
IEEE80211_STYPE_DISASSOC
):
if
(
is_multicast_ether_addr
(
mgmt
->
da
)
&&
!
is_broadcast_ether_addr
(
mgmt
->
da
))
return
RX_DROP_MONITOR
;
/* process only for station */
if
(
sdata
->
vif
.
type
!=
NL80211_IFTYPE_STATION
)
return
RX_DROP_MONITOR
;
...
...
@@ -2741,6 +2745,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
if
(
ieee80211_prepare_and_rx_handle
(
&
rx
,
skb
,
true
))
return
;
goto
out
;
}
}
...
...
@@ -2780,6 +2785,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
return
;
}
out:
dev_kfree_skb
(
skb
);
}
...
...
net/mac80211/tx.c
浏览文件 @
4f58605e
...
...
@@ -1587,7 +1587,12 @@ static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
list
)
{
if
(
!
ieee80211_sdata_running
(
tmp_sdata
))
continue
;
if
(
tmp_sdata
->
vif
.
type
!=
NL80211_IFTYPE_AP
)
if
(
tmp_sdata
->
vif
.
type
==
NL80211_IFTYPE_MONITOR
||
tmp_sdata
->
vif
.
type
==
NL80211_IFTYPE_AP_VLAN
||
tmp_sdata
->
vif
.
type
==
NL80211_IFTYPE_WDS
)
continue
;
if
(
compare_ether_addr
(
tmp_sdata
->
vif
.
addr
,
hdr
->
addr2
)
==
0
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录