mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 22:51:42 +00:00
Merge branch 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 into upstream-fixes
This commit is contained in:
commit
2b14c30b46
@ -797,7 +797,7 @@ static int zd1211_hw_init_hmac(struct zd_chip *chip)
|
||||
{ CR_ADDA_MBIAS_WARMTIME, 0x30000808 },
|
||||
{ CR_ZD1211_RETRY_MAX, 0x2 },
|
||||
{ CR_SNIFFER_ON, 0 },
|
||||
{ CR_RX_FILTER, AP_RX_FILTER },
|
||||
{ CR_RX_FILTER, STA_RX_FILTER },
|
||||
{ CR_GROUP_HASH_P1, 0x00 },
|
||||
{ CR_GROUP_HASH_P2, 0x80000000 },
|
||||
{ CR_REG1, 0xa4 },
|
||||
@ -844,7 +844,7 @@ static int zd1211b_hw_init_hmac(struct zd_chip *chip)
|
||||
{ CR_ZD1211B_AIFS_CTL2, 0x008C003C },
|
||||
{ CR_ZD1211B_TXOP, 0x01800824 },
|
||||
{ CR_SNIFFER_ON, 0 },
|
||||
{ CR_RX_FILTER, AP_RX_FILTER },
|
||||
{ CR_RX_FILTER, STA_RX_FILTER },
|
||||
{ CR_GROUP_HASH_P1, 0x00 },
|
||||
{ CR_GROUP_HASH_P2, 0x80000000 },
|
||||
{ CR_REG1, 0xa4 },
|
||||
|
@ -461,10 +461,15 @@
|
||||
|
||||
#define CR_RX_FILTER CTL_REG(0x068c)
|
||||
#define RX_FILTER_ASSOC_RESPONSE 0x0002
|
||||
#define RX_FILTER_REASSOC_RESPONSE 0x0008
|
||||
#define RX_FILTER_PROBE_RESPONSE 0x0020
|
||||
#define RX_FILTER_BEACON 0x0100
|
||||
#define RX_FILTER_DISASSOC 0x0400
|
||||
#define RX_FILTER_AUTH 0x0800
|
||||
/* Sniff modus sets filter to 0xfffff */
|
||||
#define AP_RX_FILTER 0x0400feff
|
||||
#define STA_RX_FILTER 0x0000ffff
|
||||
|
||||
/* Monitor mode sets filter to 0xfffff */
|
||||
|
||||
#define CR_ACK_TIMEOUT_EXT CTL_REG(0x0690)
|
||||
#define CR_BCN_FIFO_SEMAPHORE CTL_REG(0x0694)
|
||||
@ -546,9 +551,6 @@
|
||||
#define CR_ZD1211B_TXOP CTL_REG(0x0b20)
|
||||
#define CR_ZD1211B_RETRY_MAX CTL_REG(0x0b28)
|
||||
|
||||
#define AP_RX_FILTER 0x0400feff
|
||||
#define STA_RX_FILTER 0x0000ffff
|
||||
|
||||
#define CWIN_SIZE 0x007f043f
|
||||
|
||||
|
||||
|
@ -108,7 +108,9 @@ int zd_mac_init_hw(struct zd_mac *mac, u8 device_type)
|
||||
if (r)
|
||||
goto disable_int;
|
||||
|
||||
r = zd_set_encryption_type(chip, NO_WEP);
|
||||
/* We must inform the device that we are doing encryption/decryption in
|
||||
* software at the moment. */
|
||||
r = zd_set_encryption_type(chip, ENC_SNIFFER);
|
||||
if (r)
|
||||
goto disable_int;
|
||||
|
||||
@ -136,10 +138,8 @@ static int reset_mode(struct zd_mac *mac)
|
||||
{
|
||||
struct ieee80211_device *ieee = zd_mac_to_ieee80211(mac);
|
||||
struct zd_ioreq32 ioreqs[3] = {
|
||||
{ CR_RX_FILTER, RX_FILTER_BEACON|RX_FILTER_PROBE_RESPONSE|
|
||||
RX_FILTER_AUTH|RX_FILTER_ASSOC_RESPONSE },
|
||||
{ CR_RX_FILTER, STA_RX_FILTER },
|
||||
{ CR_SNIFFER_ON, 0U },
|
||||
{ CR_ENCRYPTION_TYPE, NO_WEP },
|
||||
};
|
||||
|
||||
if (ieee->iw_mode == IW_MODE_MONITOR) {
|
||||
@ -713,10 +713,10 @@ static int zd_mac_tx(struct zd_mac *mac, struct ieee80211_txb *txb, int pri)
|
||||
struct zd_rt_hdr {
|
||||
struct ieee80211_radiotap_header rt_hdr;
|
||||
u8 rt_flags;
|
||||
u8 rt_rate;
|
||||
u16 rt_channel;
|
||||
u16 rt_chbitmask;
|
||||
u16 rt_rate;
|
||||
};
|
||||
} __attribute__((packed));
|
||||
|
||||
static void fill_rt_header(void *buffer, struct zd_mac *mac,
|
||||
const struct ieee80211_rx_stats *stats,
|
||||
@ -735,14 +735,14 @@ static void fill_rt_header(void *buffer, struct zd_mac *mac,
|
||||
if (status->decryption_type & (ZD_RX_WEP64|ZD_RX_WEP128|ZD_RX_WEP256))
|
||||
hdr->rt_flags |= IEEE80211_RADIOTAP_F_WEP;
|
||||
|
||||
hdr->rt_rate = stats->rate / 5;
|
||||
|
||||
/* FIXME: 802.11a */
|
||||
hdr->rt_channel = cpu_to_le16(ieee80211chan2mhz(
|
||||
_zd_chip_get_channel(&mac->chip)));
|
||||
hdr->rt_chbitmask = cpu_to_le16(IEEE80211_CHAN_2GHZ |
|
||||
((status->frame_status & ZD_RX_FRAME_MODULATION_MASK) ==
|
||||
ZD_RX_OFDM ? IEEE80211_CHAN_OFDM : IEEE80211_CHAN_CCK));
|
||||
|
||||
hdr->rt_rate = stats->rate / 5;
|
||||
}
|
||||
|
||||
/* Returns 1 if the data packet is for us and 0 otherwise. */
|
||||
|
@ -323,7 +323,6 @@ static void disable_read_regs_int(struct zd_usb *usb)
|
||||
{
|
||||
struct zd_usb_interrupt *intr = &usb->intr;
|
||||
|
||||
ZD_ASSERT(in_interrupt());
|
||||
spin_lock(&intr->lock);
|
||||
intr->read_regs_enabled = 0;
|
||||
spin_unlock(&intr->lock);
|
||||
@ -545,11 +544,11 @@ static void handle_rx_packet(struct zd_usb *usb, const u8 *buffer,
|
||||
* be padded. Unaligned access might also happen if the length_info
|
||||
* structure is not present.
|
||||
*/
|
||||
if (get_unaligned(&length_info->tag) == RX_LENGTH_INFO_TAG) {
|
||||
if (get_unaligned(&length_info->tag) == cpu_to_le16(RX_LENGTH_INFO_TAG))
|
||||
{
|
||||
unsigned int l, k, n;
|
||||
for (i = 0, l = 0;; i++) {
|
||||
k = le16_to_cpu(get_unaligned(
|
||||
&length_info->length[i]));
|
||||
k = le16_to_cpu(get_unaligned(&length_info->length[i]));
|
||||
n = l+k;
|
||||
if (n > length)
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user