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
4f58605e
Commit
4f58605e
authored
Dec 08, 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
b8eb3a10
d89197c7
Changes
24
Show whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
135 additions
and
97 deletions
+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
No files found.
drivers/bluetooth/ath3k.c
View file @
4f58605e
...
@@ -35,6 +35,10 @@
...
@@ -35,6 +35,10 @@
static
struct
usb_device_id
ath3k_table
[]
=
{
static
struct
usb_device_id
ath3k_table
[]
=
{
/* Atheros AR3011 */
/* Atheros AR3011 */
{
USB_DEVICE
(
0x0CF3
,
0x3000
)
},
{
USB_DEVICE
(
0x0CF3
,
0x3000
)
},
/* Atheros AR3011 with sflash firmware*/
{
USB_DEVICE
(
0x0CF3
,
0x3002
)
},
{
}
/* Terminating entry */
{
}
/* Terminating entry */
};
};
...
...
drivers/bluetooth/btusb.c
View file @
4f58605e
...
@@ -99,6 +99,9 @@ static struct usb_device_id blacklist_table[] = {
...
@@ -99,6 +99,9 @@ static struct usb_device_id blacklist_table[] = {
/* Broadcom BCM2033 without firmware */
/* Broadcom BCM2033 without firmware */
{
USB_DEVICE
(
0x0a5c
,
0x2033
),
.
driver_info
=
BTUSB_IGNORE
},
{
USB_DEVICE
(
0x0a5c
,
0x2033
),
.
driver_info
=
BTUSB_IGNORE
},
/* Atheros 3011 with sflash firmware */
{
USB_DEVICE
(
0x0cf3
,
0x3002
),
.
driver_info
=
BTUSB_IGNORE
},
/* Broadcom BCM2035 */
/* Broadcom BCM2035 */
{
USB_DEVICE
(
0x0a5c
,
0x2035
),
.
driver_info
=
BTUSB_WRONG_SCO_MTU
},
{
USB_DEVICE
(
0x0a5c
,
0x2035
),
.
driver_info
=
BTUSB_WRONG_SCO_MTU
},
{
USB_DEVICE
(
0x0a5c
,
0x200a
),
.
driver_info
=
BTUSB_WRONG_SCO_MTU
},
{
USB_DEVICE
(
0x0a5c
,
0x200a
),
.
driver_info
=
BTUSB_WRONG_SCO_MTU
},
...
@@ -239,6 +242,7 @@ static void btusb_intr_complete(struct urb *urb)
...
@@ -239,6 +242,7 @@ static void btusb_intr_complete(struct urb *urb)
err
=
usb_submit_urb
(
urb
,
GFP_ATOMIC
);
err
=
usb_submit_urb
(
urb
,
GFP_ATOMIC
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
if
(
err
!=
-
EPERM
)
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
hdev
->
name
,
urb
,
-
err
);
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
usb_unanchor_urb
(
urb
);
...
@@ -323,6 +327,7 @@ static void btusb_bulk_complete(struct urb *urb)
...
@@ -323,6 +327,7 @@ static void btusb_bulk_complete(struct urb *urb)
err
=
usb_submit_urb
(
urb
,
GFP_ATOMIC
);
err
=
usb_submit_urb
(
urb
,
GFP_ATOMIC
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
if
(
err
!=
-
EPERM
)
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
hdev
->
name
,
urb
,
-
err
);
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
usb_unanchor_urb
(
urb
);
...
@@ -412,6 +417,7 @@ static void btusb_isoc_complete(struct urb *urb)
...
@@ -412,6 +417,7 @@ static void btusb_isoc_complete(struct urb *urb)
err
=
usb_submit_urb
(
urb
,
GFP_ATOMIC
);
err
=
usb_submit_urb
(
urb
,
GFP_ATOMIC
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
if
(
err
!=
-
EPERM
)
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
BT_ERR
(
"%s urb %p failed to resubmit (%d)"
,
hdev
->
name
,
urb
,
-
err
);
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
usb_unanchor_urb
(
urb
);
...
...
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
View file @
4f58605e
...
@@ -55,6 +55,8 @@
...
@@ -55,6 +55,8 @@
#define SUB_NUM_CTL_MODES_AT_5G_40 2
/* excluding HT40, EXT-OFDM */
#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 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
=
{
static
const
struct
ar9300_eeprom
ar9300_default
=
{
.
eepromVersion
=
2
,
.
eepromVersion
=
2
,
.
templateVersion
=
2
,
.
templateVersion
=
2
,
...
@@ -290,20 +292,21 @@ static const struct ar9300_eeprom ar9300_default = {
...
@@ -290,20 +292,21 @@ static const struct ar9300_eeprom ar9300_default = {
}
}
},
},
.
ctlPowerData_2G
=
{
.
ctlPowerData_2G
=
{
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
{
60
,
1
},
{
60
,
0
},
{
60
,
0
},
{
60
,
1
}
}
},
{
{
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
),
CTL
(
60
,
1
)
}
},
{
{
{
60
,
1
},
{
60
,
0
},
{
0
,
0
},
{
0
,
0
}
}
},
{
{
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
0
,
0
),
CTL
(
0
,
0
)
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
0
}
}
},
{
{
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
}
},
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
}
},
{
{
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
=
{
.
modalHeader5G
=
{
/* 4 idle,t1,t2,b (4 bits per setting) */
/* 4 idle,t1,t2,b (4 bits per setting) */
...
@@ -568,56 +571,56 @@ static const struct ar9300_eeprom ar9300_default = {
...
@@ -568,56 +571,56 @@ static const struct ar9300_eeprom ar9300_default = {
.
ctlPowerData_5G
=
{
.
ctlPowerData_5G
=
{
{
{
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
,
}
}
},
},
{
{
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
,
}
}
},
},
{
{
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
0
},
{
60
,
1
}
,
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
1
)
,
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
}
}
},
},
{
{
{
{
{
60
,
0
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
,
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
,
{
60
,
1
},
{
60
,
0
},
{
60
,
0
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
,
}
}
},
},
{
{
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
,
{
60
,
0
},
{
60
,
0
},
{
60
,
0
},
{
60
,
0
}
,
CTL
(
60
,
0
),
CTL
(
60
,
0
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
,
}
}
},
},
{
{
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
{
60
,
1
},
{
60
,
0
},
{
60
,
0
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
0
),
CTL
(
60
,
0
)
,
}
}
},
},
{
{
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
1
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
}
}
},
},
{
{
{
{
{
60
,
1
},
{
60
,
1
},
{
60
,
0
},
{
60
,
1
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
1
)
,
{
60
,
1
},
{
60
,
1
},
{
60
,
1
},
{
60
,
0
}
,
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
1
),
CTL
(
60
,
0
)
,
}
}
},
},
{
{
{
{
{
60
,
1
},
{
60
,
0
},
{
60
,
1
},
{
60
,
1
}
,
CTL
(
60
,
1
),
CTL
(
60
,
0
),
CTL
(
60
,
1
),
CTL
(
60
,
1
)
,
{
60
,
1
},
{
60
,
1
},
{
60
,
0
},
{
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,
...
@@ -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
;
struct
cal_ctl_data_5g
*
ctl_5g
=
eep
->
ctlPowerData_5G
;
if
(
is2GHz
)
if
(
is2GHz
)
return
ctl_2g
[
idx
].
ctlEdges
[
edge
].
tPower
;
return
CTL_EDGE_TPOWER
(
ctl_2g
[
idx
].
ctlEdges
[
edge
])
;
else
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
,
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,
...
@@ -1847,12 +1850,12 @@ static u16 ar9003_hw_get_indirect_edge_power(struct ar9300_eeprom *eep,
if
(
is2GHz
)
{
if
(
is2GHz
)
{
if
(
ath9k_hw_fbin2freq
(
ctl_freqbin
[
edge
-
1
],
1
)
<
freq
&&
if
(
ath9k_hw_fbin2freq
(
ctl_freqbin
[
edge
-
1
],
1
)
<
freq
&&
ctl_2g
[
idx
].
ctlEdges
[
edge
-
1
].
flag
)
CTL_EDGE_FLAGS
(
ctl_2g
[
idx
].
ctlEdges
[
edge
-
1
])
)
return
ctl_2g
[
idx
].
ctlEdges
[
edge
-
1
].
tPower
;
return
CTL_EDGE_TPOWER
(
ctl_2g
[
idx
].
ctlEdges
[
edge
-
1
])
;
}
else
{
}
else
{
if
(
ath9k_hw_fbin2freq
(
ctl_freqbin
[
edge
-
1
],
0
)
<
freq
&&
if
(
ath9k_hw_fbin2freq
(
ctl_freqbin
[
edge
-
1
],
0
)
<
freq
&&
ctl_5g
[
idx
].
ctlEdges
[
edge
-
1
].
flag
)
CTL_EDGE_FLAGS
(
ctl_5g
[
idx
].
ctlEdges
[
edge
-
1
])
)
return
ctl_5g
[
idx
].
ctlEdges
[
edge
-
1
].
tPower
;
return
CTL_EDGE_TPOWER
(
ctl_5g
[
idx
].
ctlEdges
[
edge
-
1
])
;
}
}
return
AR9300_MAX_RATE_POWER
;
return
AR9300_MAX_RATE_POWER
;
...
...
drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
View file @
4f58605e
...
@@ -261,17 +261,12 @@ struct cal_tgt_pow_ht {
...
@@ -261,17 +261,12 @@ struct cal_tgt_pow_ht {
u8
tPow2x
[
14
];
u8
tPow2x
[
14
];
}
__packed
;
}
__packed
;
struct
cal_ctl_edge_pwr
{
u8
tPower
:
6
,
flag:
2
;
}
__packed
;
struct
cal_ctl_data_2g
{
struct
cal_ctl_data_2g
{
struct
cal_ctl_edge_pwr
ctlEdges
[
AR9300_NUM_BAND_EDGES_2G
];
u8
ctlEdges
[
AR9300_NUM_BAND_EDGES_2G
];
}
__packed
;
}
__packed
;
struct
cal_ctl_data_5g
{
struct
cal_ctl_data_5g
{
struct
cal_ctl_edge_pwr
ctlEdges
[
AR9300_NUM_BAND_EDGES_5G
];
u8
ctlEdges
[
AR9300_NUM_BAND_EDGES_5G
];
}
__packed
;
}
__packed
;
struct
ar9300_eeprom
{
struct
ar9300_eeprom
{
...
...
drivers/net/wireless/ath/ath9k/ath9k.h
View file @
4f58605e
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
#include <linux/device.h>
#include <linux/device.h>
#include <linux/leds.h>
#include <linux/leds.h>
#include <linux/completion.h>
#include <linux/completion.h>
#include <linux/pm_qos_params.h>
#include "debug.h"
#include "debug.h"
#include "common.h"
#include "common.h"
...
@@ -646,6 +647,8 @@ struct ath_softc {
...
@@ -646,6 +647,8 @@ struct ath_softc {
struct
ath_descdma
txsdma
;
struct
ath_descdma
txsdma
;
struct
ath_ant_comb
ant_comb
;
struct
ath_ant_comb
ant_comb
;
struct
pm_qos_request_list
pm_qos_req
;
};
};
struct
ath_wiphy
{
struct
ath_wiphy
{
...
@@ -675,7 +678,6 @@ static inline void ath_read_cachesize(struct ath_common *common, int *csz)
...
@@ -675,7 +678,6 @@ static inline void ath_read_cachesize(struct ath_common *common, int *csz)
}
}
extern
struct
ieee80211_ops
ath9k_ops
;
extern
struct
ieee80211_ops
ath9k_ops
;
extern
struct
pm_qos_request_list
ath9k_pm_qos_req
;
extern
int
modparam_nohwcrypt
;
extern
int
modparam_nohwcrypt
;
extern
int
led_blink
;
extern
int
led_blink
;
...
...
drivers/net/wireless/ath/ath9k/eeprom.c
View file @
4f58605e
...
@@ -240,16 +240,16 @@ u16 ath9k_hw_get_max_edge_power(u16 freq, struct cal_ctl_edges *pRdEdgesPower,
...
@@ -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
)
&&
for
(
i
=
0
;
(
i
<
num_band_edges
)
&&
(
pRdEdgesPower
[
i
].
bChannel
!=
AR5416_BCHAN_UNUSED
);
i
++
)
{
(
pRdEdgesPower
[
i
].
bChannel
!=
AR5416_BCHAN_UNUSED
);
i
++
)
{
if
(
freq
==
ath9k_hw_fbin2freq
(
pRdEdgesPower
[
i
].
bChannel
,
is2GHz
))
{
if
(
freq
==
ath9k_hw_fbin2freq
(
pRdEdgesPower
[
i
].
bChannel
,
is2GHz
))
{
twiceMaxEdgePower
=
pRdEdgesPower
[
i
].
tPower
;
twiceMaxEdgePower
=
CTL_EDGE_TPOWER
(
pRdEdgesPower
[
i
].
ctl
)
;
break
;
break
;
}
else
if
((
i
>
0
)
&&
}
else
if
((
i
>
0
)
&&
(
freq
<
ath9k_hw_fbin2freq
(
pRdEdgesPower
[
i
].
bChannel
,
(
freq
<
ath9k_hw_fbin2freq
(
pRdEdgesPower
[
i
].
bChannel
,
is2GHz
)))
{
is2GHz
)))
{
if
(
ath9k_hw_fbin2freq
(
pRdEdgesPower
[
i
-
1
].
bChannel
,
if
(
ath9k_hw_fbin2freq
(
pRdEdgesPower
[
i
-
1
].
bChannel
,
is2GHz
)
<
freq
&&
is2GHz
)
<
freq
&&
pRdEdgesPower
[
i
-
1
].
flag
)
{
CTL_EDGE_FLAGS
(
pRdEdgesPower
[
i
-
1
].
ctl
)
)
{
twiceMaxEdgePower
=
twiceMaxEdgePower
=
pRdEdgesPower
[
i
-
1
].
tPower
;
CTL_EDGE_TPOWER
(
pRdEdgesPower
[
i
-
1
].
ctl
)
;
}
}
break
;
break
;
}
}
...
...
drivers/net/wireless/ath/ath9k/eeprom.h
View file @
4f58605e
...
@@ -233,6 +233,18 @@
...
@@ -233,6 +233,18 @@
#define AR9287_CHECKSUM_LOCATION (AR9287_EEP_START_LOC + 1)
#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
{
enum
eeprom_param
{
EEP_NFTHRESH_5
,
EEP_NFTHRESH_5
,
EEP_NFTHRESH_2
,
EEP_NFTHRESH_2
,
...
@@ -378,10 +390,7 @@ struct modal_eep_header {
...
@@ -378,10 +390,7 @@ struct modal_eep_header {
u8
xatten2Margin
[
AR5416_MAX_CHAINS
];
u8
xatten2Margin
[
AR5416_MAX_CHAINS
];
u8
ob_ch1
;
u8
ob_ch1
;
u8
db_ch1
;
u8
db_ch1
;
u8
useAnt1
:
1
,
u8
lna_ctl
;
force_xpaon:
1
,
local_bias:
1
,
femBandSelectUsed:
1
,
xlnabufin
:
1
,
xlnaisel
:
2
,
xlnabufmode
:
1
;
u8
miscBits
;
u8
miscBits
;
u16
xpaBiasLvlFreq
[
3
];
u16
xpaBiasLvlFreq
[
3
];
u8
futureModal
[
6
];
u8
futureModal
[
6
];
...
@@ -535,18 +544,10 @@ struct cal_target_power_ht {
...
@@ -535,18 +544,10 @@ struct cal_target_power_ht {
u8
tPow2x
[
8
];
u8
tPow2x
[
8
];
}
__packed
;
}
__packed
;
#ifdef __BIG_ENDIAN_BITFIELD
struct
cal_ctl_edges
{
u8
bChannel
;
u8
flag
:
2
,
tPower
:
6
;
}
__packed
;
#else
struct
cal_ctl_edges
{
struct
cal_ctl_edges
{
u8
bChannel
;
u8
bChannel
;
u8
tPower
:
6
,
flag
:
2
;
u8
ctl
;
}
__packed
;
}
__packed
;
#endif
struct
cal_data_op_loop_ar9287
{
struct
cal_data_op_loop_ar9287
{
u8
pwrPdg
[
2
][
5
];
u8
pwrPdg
[
2
][
5
];
...
...
drivers/net/wireless/ath/ath9k/eeprom_def.c
View file @
4f58605e
...
@@ -451,9 +451,10 @@ static void ath9k_hw_def_set_board_values(struct ath_hw *ah,
...
@@ -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
,
ath9k_hw_analog_shift_rmw
(
ah
,
AR_AN_TOP2
,
AR_AN_TOP2_LOCALBIAS
,
AR_AN_TOP2_LOCALBIAS
,
AR_AN_TOP2_LOCALBIAS_S
,
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
,
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
,
REG_RMW_FIELD
(
ah
,
AR_PHY_SETTLING
,
AR_PHY_SETTLING_SWITCH
,
...
@@ -1428,8 +1429,8 @@ static u8 ath9k_hw_def_get_num_ant_config(struct ath_hw *ah,
...
@@ -1428,8 +1429,8 @@ static u8 ath9k_hw_def_get_num_ant_config(struct ath_hw *ah,
num_ant_config
=
1
;
num_ant_config
=
1
;
if
(
pBase
->
version
>=
0x0E0D
)
if
(
pBase
->
version
>=
0x0E0D
&&
if
(
pModal
->
useAnt1
)
(
pModal
->
lna_ctl
&
LNA_CTL_USE_ANT1
)
)
num_ant_config
+=
1
;
num_ant_config
+=
1
;
return
num_ant_config
;
return
num_ant_config
;
...
...
drivers/net/wireless/ath/ath9k/hw.c
View file @
4f58605e
...
@@ -2044,7 +2044,8 @@ u32 ath9k_hw_gpio_get(struct ath_hw *ah, u32 gpio)
...
@@ -2044,7 +2044,8 @@ u32 ath9k_hw_gpio_get(struct ath_hw *ah, u32 gpio)
val
=
REG_READ
(
ah
,
AR7010_GPIO_IN
);
val
=
REG_READ
(
ah
,
AR7010_GPIO_IN
);
return
(
MS
(
val
,
AR7010_GPIO_IN_VAL
)
&
AR_GPIO_BIT
(
gpio
))
==
0
;
return
(
MS
(
val
,
AR7010_GPIO_IN_VAL
)
&
AR_GPIO_BIT
(
gpio
))
==
0
;
}
else
if
(
AR_SREV_9300_20_OR_LATER
(
ah
))
}
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
))
else
if
(
AR_SREV_9271
(
ah
))
return
MS_REG_READ
(
AR9271
,
gpio
)
!=
0
;
return
MS_REG_READ
(
AR9271
,
gpio
)
!=
0
;
else
if
(
AR_SREV_9287_11_OR_LATER
(
ah
))
else
if
(
AR_SREV_9287_11_OR_LATER
(
ah
))
...
...
drivers/net/wireless/ath/ath9k/init.c
View file @
4f58605e
...
@@ -15,7 +15,6 @@
...
@@ -15,7 +15,6 @@
*/
*/
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/pm_qos_params.h>
#include "ath9k.h"
#include "ath9k.h"
...
@@ -180,8 +179,6 @@ static const struct ath_ops ath9k_common_ops = {
...
@@ -180,8 +179,6 @@ static const struct ath_ops ath9k_common_ops = {
.
write
=
ath9k_iowrite32
,
.
write
=
ath9k_iowrite32
,
};
};
struct
pm_qos_request_list
ath9k_pm_qos_req
;
/**************************/
/**************************/
/* Initialization */
/* Initialization */
/**************************/
/**************************/
...
@@ -664,6 +661,8 @@ void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
...
@@ -664,6 +661,8 @@ void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
hw
->
flags
|=
IEEE80211_HW_MFP_CAPABLE
;
hw
->
flags
|=
IEEE80211_HW_MFP_CAPABLE
;
hw
->
wiphy
->
interface_modes
=
hw
->
wiphy
->
interface_modes
=
BIT
(
NL80211_IFTYPE_P2P_GO
)
|
BIT
(
NL80211_IFTYPE_P2P_CLIENT
)
|
BIT
(
NL80211_IFTYPE_AP
)
|
BIT
(
NL80211_IFTYPE_AP
)
|
BIT
(
NL80211_IFTYPE_WDS
)
|
BIT
(
NL80211_IFTYPE_WDS
)
|
BIT
(
NL80211_IFTYPE_STATION
)
|
BIT
(
NL80211_IFTYPE_STATION
)
|
...
@@ -759,7 +758,7 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
...
@@ -759,7 +758,7 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
ath_init_leds
(
sc
);
ath_init_leds
(
sc
);
ath_start_rfkill_poll
(
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
);
PM_QOS_DEFAULT_VALUE
);
return
0
;
return
0
;
...
@@ -830,7 +829,7 @@ void ath9k_deinit_device(struct ath_softc *sc)
...
@@ -830,7 +829,7 @@ void ath9k_deinit_device(struct ath_softc *sc)
}
}
ieee80211_unregister_hw
(
hw
);
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_rx_cleanup
(
sc
);
ath_tx_cleanup
(
sc
);
ath_tx_cleanup
(
sc
);
ath9k_deinit_softc
(
sc
);
ath9k_deinit_softc
(
sc
);
...
...
drivers/net/wireless/ath/ath9k/main.c
View file @
4f58605e
...
@@ -15,7 +15,6 @@
...
@@ -15,7 +15,6 @@
*/
*/
#include <linux/nl80211.h>
#include <linux/nl80211.h>
#include <linux/pm_qos_params.h>
#include "ath9k.h"
#include "ath9k.h"
#include "btcoex.h"
#include "btcoex.h"
...
@@ -1244,7 +1243,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
...
@@ -1244,7 +1243,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
ath9k_btcoex_timer_resume
(
sc
);
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:
mutex_unlock
(
&
sc
->
mutex
);
mutex_unlock
(
&
sc
->
mutex
);
...
@@ -1423,7 +1422,7 @@ static void ath9k_stop(struct ieee80211_hw *hw)
...
@@ -1423,7 +1422,7 @@ static void ath9k_stop(struct ieee80211_hw *hw)
sc
->
sc_flags
|=
SC_OP_INVALID
;
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
);
mutex_unlock
(
&
sc
->
mutex
);
...
@@ -1520,6 +1519,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
...
@@ -1520,6 +1519,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
struct
ath_softc
*
sc
=
aphy
->
sc
;
struct
ath_softc
*
sc
=
aphy
->
sc
;
struct
ath_common
*
common
=
ath9k_hw_common
(
sc
->
sc_ah
);
struct
ath_common
*
common
=
ath9k_hw_common
(
sc
->
sc_ah
);
struct
ath_vif
*
avp
=
(
void
*
)
vif
->
drv_priv
;
struct
ath_vif
*
avp
=
(
void
*
)
vif
->
drv_priv
;
bool
bs_valid
=
false
;
int
i
;
int
i
;
ath_print
(
common
,
ATH_DBG_CONFIG
,
"Detach Interface
\n
"
);
ath_print
(
common
,
ATH_DBG_CONFIG
,
"Detach Interface
\n
"
);
...
@@ -1548,7 +1548,15 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
...
@@ -1548,7 +1548,15 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
"slot
\n
"
,
__func__
);
"slot
\n
"
,
__func__
);
sc
->
beacon
.
bslot
[
i
]
=
NULL
;
sc
->
beacon
.
bslot
[
i
]
=
NULL
;
sc
->
beacon
.
bslot_aphy
[
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
--
;
sc
->
nvifs
--
;
...
...
drivers/net/wireless/ath/ath9k/reg.h
View file @
4f58605e
...
@@ -984,11 +984,13 @@ enum {
...
@@ -984,11 +984,13 @@ enum {
#define AR9287_GPIO_IN_VAL_S 11
#define AR9287_GPIO_IN_VAL_S 11
#define AR9271_GPIO_IN_VAL 0xFFFF0000
#define AR9271_GPIO_IN_VAL 0xFFFF0000
#define AR9271_GPIO_IN_VAL_S 16
#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 0x0000FFFF
#define AR7010_GPIO_IN_VAL_S 0
#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 (AR_SREV_9300_20_OR_LATER(ah) ? 0x4050 : 0x404c)
#define AR_GPIO_OE_OUT_DRV 0x3
#define AR_GPIO_OE_OUT_DRV 0x3
#define AR_GPIO_OE_OUT_DRV_NO 0x0
#define AR_GPIO_OE_OUT_DRV_NO 0x0
...
...
drivers/net/wireless/ath/carl9170/fw.c
View file @
4f58605e
...
@@ -291,7 +291,8 @@ static int carl9170_fw(struct ar9170 *ar, const __u8 *data, size_t len)
...
@@ -291,7 +291,8 @@ static int carl9170_fw(struct ar9170 *ar, const __u8 *data, size_t len)
if
(
SUPP
(
CARL9170FW_WLANTX_CAB
))
{
if
(
SUPP
(
CARL9170FW_WLANTX_CAB
))
{
ar
->
hw
->
wiphy
->
interface_modes
|=
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
View file @
4f58605e
...
@@ -1631,7 +1631,8 @@ void *carl9170_alloc(size_t priv_size)
...
@@ -1631,7 +1631,8 @@ void *carl9170_alloc(size_t priv_size)
* supports these modes. The code which will add the
* supports these modes. The code which will add the
* additional interface_modes is in fw.c.
* 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
|
hw
->
flags
|=
IEEE80211_HW_RX_INCLUDES_FCS
|
IEEE80211_HW_REPORTS_TX_ACK_STATUS
|
IEEE80211_HW_REPORTS_TX_ACK_STATUS
|
...
...
drivers/net/wireless/ath/carl9170/tx.c
View file @
4f58605e
...
@@ -810,7 +810,7 @@ static int carl9170_tx_prepare(struct ar9170 *ar, struct sk_buff *skb)
...
@@ -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
|
mac_tmp
=
cpu_to_le16
(
AR9170_TX_MAC_HW_DURATION
|
AR9170_TX_MAC_BACKOFF
);
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
);
AR9170_TX_MAC_QOS
);
no_ack
=
!!
(
info
->
flags
&
IEEE80211_TX_CTL_NO_ACK
);
no_ack
=
!!
(
info
->
flags
&
IEEE80211_TX_CTL_NO_ACK
);
...
...
drivers/net/wireless/libertas/if_sdio.c
View file @
4f58605e
...
@@ -1170,7 +1170,6 @@ static void if_sdio_remove(struct sdio_func *func)
...
@@ -1170,7 +1170,6 @@ static void if_sdio_remove(struct sdio_func *func)
lbs_deb_sdio
(
"call remove card
\n
"
);
lbs_deb_sdio
(
"call remove card
\n
"
);
lbs_stop_card
(
card
->
priv
);
lbs_stop_card
(
card
->
priv
);
lbs_remove_card
(
card
->
priv
);
lbs_remove_card
(
card
->
priv
);
card
->
priv
->
surpriseremoved
=
1
;
flush_workqueue
(
card
->
workqueue
);
flush_workqueue
(
card
->
workqueue
);
destroy_workqueue
(
card
->
workqueue
);
destroy_workqueue
(
card
->
workqueue
);
...
...
drivers/net/wireless/libertas/if_spi.c
View file @
4f58605e
...
@@ -1055,7 +1055,6 @@ static int __devexit libertas_spi_remove(struct spi_device *spi)
...
@@ -1055,7 +1055,6 @@ static int __devexit libertas_spi_remove(struct spi_device *spi)
lbs_stop_card
(
priv
);
lbs_stop_card
(
priv
);
lbs_remove_card
(
priv
);
/* will call free_netdev */
lbs_remove_card
(
priv
);
/* will call free_netdev */
priv
->
surpriseremoved
=
1
;
free_irq
(
spi
->
irq
,
card
);
free_irq
(
spi
->
irq
,
card
);
if_spi_terminate_spi_thread
(
card
);
if_spi_terminate_spi_thread
(
card
);
if
(
card
->
pdata
->
teardown
)
if
(
card
->
pdata
->
teardown
)
...
...
drivers/net/wireless/libertas/main.c
View file @
4f58605e
...
@@ -915,8 +915,6 @@ void lbs_remove_card(struct lbs_private *priv)
...
@@ -915,8 +915,6 @@ void lbs_remove_card(struct lbs_private *priv)
lbs_free_adapter
(
priv
);
lbs_free_adapter
(
priv
);
lbs_cfg_free
(
priv
);
lbs_cfg_free
(
priv
);
priv
->
dev
=
NULL
;
free_netdev
(
dev
);
free_netdev
(
dev
);
lbs_deb_leave
(
LBS_DEB_MAIN
);
lbs_deb_leave
(
LBS_DEB_MAIN
);
...
...
drivers/net/wireless/orinoco/main.c
View file @
4f58605e
...
@@ -1392,10 +1392,9 @@ static void orinoco_process_scan_results(struct work_struct *work)
...
@@ -1392,10 +1392,9 @@ static void orinoco_process_scan_results(struct work_struct *work)
orinoco_add_hostscan_results
(
priv
,
buf
,
len
);
orinoco_add_hostscan_results
(
priv
,
buf
,
len
);
kfree
(
buf
);
kfree
(
buf
);
}
else
if
(
priv
->
scan_request
)
{
}
else
{
/* Either abort or complete the scan */
/* Either abort or complete the scan */
cfg80211_scan_done
(
priv
->
scan_request
,
(
len
<
0
));
orinoco_scan_done
(
priv
,
(
len
<
0
));
priv
->
scan_request
=
NULL
;
}
}
spin_lock_irqsave
(
&
priv
->
scan_lock
,
flags
);
spin_lock_irqsave
(
&
priv
->
scan_lock
,
flags
);
...
@@ -1684,6 +1683,8 @@ static int __orinoco_down(struct orinoco_private *priv)
...
@@ -1684,6 +1683,8 @@ static int __orinoco_down(struct orinoco_private *priv)
hermes_write_regn
(
hw
,
EVACK
,
0xffff
);
hermes_write_regn
(
hw
,
EVACK
,
0xffff
);
}
}
orinoco_scan_done
(
priv
,
true
);
/* firmware will have to reassociate */
/* firmware will have to reassociate */
netif_carrier_off
(
dev
);
netif_carrier_off
(
dev
);
priv
->
last_linkstatus
=
0xffff
;
priv
->
last_linkstatus
=
0xffff
;
...
@@ -1762,10 +1763,7 @@ void orinoco_reset(struct work_struct *work)
...
@@ -1762,10 +1763,7 @@ void orinoco_reset(struct work_struct *work)
orinoco_unlock
(
priv
,
&
flags
);
orinoco_unlock
(
priv
,
&
flags
);
/* Scanning support: Notify scan cancellation */
/* Scanning support: Notify scan cancellation */
if
(
priv
->
scan_request
)
{
orinoco_scan_done
(
priv
,
true
);
cfg80211_scan_done
(
priv
->
scan_request
,
1
);
priv
->
scan_request
=
NULL
;
}
if
(
priv
->
hard_reset
)
{
if
(
priv
->
hard_reset
)
{
err
=
(
*
priv
->
hard_reset
)(
priv
);
err
=
(
*
priv
->
hard_reset
)(
priv
);
...
...
drivers/net/wireless/orinoco/scan.c
View file @
4f58605e
...
@@ -229,3 +229,11 @@ void orinoco_add_hostscan_results(struct orinoco_private *priv,
...
@@ -229,3 +229,11 @@ void orinoco_add_hostscan_results(struct orinoco_private *priv,
priv
->
scan_request
=
NULL
;
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
View file @
4f58605e
...
@@ -16,5 +16,6 @@ void orinoco_add_extscan_result(struct orinoco_private *priv,
...
@@ -16,5 +16,6 @@ void orinoco_add_extscan_result(struct orinoco_private *priv,
void
orinoco_add_hostscan_results
(
struct
orinoco_private
*
dev
,
void
orinoco_add_hostscan_results
(
struct
orinoco_private
*
dev
,
unsigned
char
*
buf
,
unsigned
char
*
buf
,
size_t
len
);
size_t
len
);
void
orinoco_scan_done
(
struct
orinoco_private
*
priv
,
bool
abort
);
#endif
/* _ORINOCO_SCAN_H_ */
#endif
/* _ORINOCO_SCAN_H_ */
net/bluetooth/sco.c
View file @
4f58605e
...
@@ -882,7 +882,7 @@ static int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
...
@@ -882,7 +882,7 @@ static int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
int
lm
=
0
;
int
lm
=
0
;
if
(
type
!=
SCO_LINK
&&
type
!=
ESCO_LINK
)
if
(
type
!=
SCO_LINK
&&
type
!=
ESCO_LINK
)
return
0
;
return
-
EINVAL
;
BT_DBG
(
"hdev %s, bdaddr %s"
,
hdev
->
name
,
batostr
(
bdaddr
));
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)
...
@@ -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
);
BT_DBG
(
"hcon %p bdaddr %s status %d"
,
hcon
,
batostr
(
&
hcon
->
dst
),
status
);
if
(
hcon
->
type
!=
SCO_LINK
&&
hcon
->
type
!=
ESCO_LINK
)
if
(
hcon
->
type
!=
SCO_LINK
&&
hcon
->
type
!=
ESCO_LINK
)
return
0
;
return
-
EINVAL
;
if
(
!
status
)
{
if
(
!
status
)
{
struct
sco_conn
*
conn
;
struct
sco_conn
*
conn
;
...
@@ -927,7 +927,7 @@ static int sco_disconn_cfm(struct hci_conn *hcon, __u8 reason)
...
@@ -927,7 +927,7 @@ static int sco_disconn_cfm(struct hci_conn *hcon, __u8 reason)
BT_DBG
(
"hcon %p reason %d"
,
hcon
,
reason
);
BT_DBG
(
"hcon %p reason %d"
,
hcon
,
reason
);
if
(
hcon
->
type
!=
SCO_LINK
&&
hcon
->
type
!=
ESCO_LINK
)
if
(
hcon
->
type
!=
SCO_LINK
&&
hcon
->
type
!=
ESCO_LINK
)
return
0
;
return
-
EINVAL
;
sco_conn_del
(
hcon
,
bt_err
(
reason
));
sco_conn_del
(
hcon
,
bt_err
(
reason
));
...
...
net/mac80211/rx.c
View file @
4f58605e
...
@@ -2247,6 +2247,10 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
...
@@ -2247,6 +2247,10 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
break
;
break
;
case
cpu_to_le16
(
IEEE80211_STYPE_DEAUTH
):
case
cpu_to_le16
(
IEEE80211_STYPE_DEAUTH
):
case
cpu_to_le16
(
IEEE80211_STYPE_DISASSOC
):
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 */
/* process only for station */
if
(
sdata
->
vif
.
type
!=
NL80211_IFTYPE_STATION
)
if
(
sdata
->
vif
.
type
!=
NL80211_IFTYPE_STATION
)
return
RX_DROP_MONITOR
;
return
RX_DROP_MONITOR
;
...
@@ -2741,6 +2745,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
...
@@ -2741,6 +2745,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
if
(
ieee80211_prepare_and_rx_handle
(
&
rx
,
skb
,
true
))
if
(
ieee80211_prepare_and_rx_handle
(
&
rx
,
skb
,
true
))
return
;
return
;
goto
out
;
}
}
}
}
...
@@ -2780,6 +2785,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
...
@@ -2780,6 +2785,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
return
;
return
;
}
}
out:
dev_kfree_skb
(
skb
);
dev_kfree_skb
(
skb
);
}
}
...
...
net/mac80211/tx.c
View file @
4f58605e
...
@@ -1587,7 +1587,12 @@ static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
...
@@ -1587,7 +1587,12 @@ static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
list
)
{
list
)
{
if
(
!
ieee80211_sdata_running
(
tmp_sdata
))
if
(
!
ieee80211_sdata_running
(
tmp_sdata
))
continue
;
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
;
continue
;
if
(
compare_ether_addr
(
tmp_sdata
->
vif
.
addr
,
if
(
compare_ether_addr
(
tmp_sdata
->
vif
.
addr
,
hdr
->
addr2
)
==
0
)
{
hdr
->
addr2
)
==
0
)
{
...
...
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