diff options
| author | John W. Linville <linville@tuxdriver.com> | 2006-08-02 14:29:40 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2006-08-02 14:29:40 -0400 |
| commit | 4456403f5ed589aeecc4271bc09f4ade6eae8adc (patch) | |
| tree | ce5f9d3416b1e47cdb0d40bd4226f6dcd121d20d | |
| parent | 02b311bce9fc87987a123adc3e6a2d0a2caa70e2 (diff) | |
| parent | fde627b54ce7bef094157074f3adb9b6e1a96d4c (diff) | |
Merge branch 'upstream-fixes' into upstream
| -rw-r--r-- | drivers/net/wireless/zd1211rw/zd_chip.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/zd1211rw/zd_chip.h | 10 | ||||
| -rw-r--r-- | drivers/net/wireless/zd1211rw/zd_mac.c | 16 | ||||
| -rw-r--r-- | drivers/net/wireless/zd1211rw/zd_usb.c | 7 |
4 files changed, 19 insertions, 18 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_chip.c b/drivers/net/wireless/zd1211rw/zd_chip.c index efc9c4bd826f..da9d06bdb818 100644 --- a/drivers/net/wireless/zd1211rw/zd_chip.c +++ b/drivers/net/wireless/zd1211rw/zd_chip.c | |||
| @@ -797,7 +797,7 @@ static int zd1211_hw_init_hmac(struct zd_chip *chip) | |||
| 797 | { CR_ADDA_MBIAS_WARMTIME, 0x30000808 }, | 797 | { CR_ADDA_MBIAS_WARMTIME, 0x30000808 }, |
| 798 | { CR_ZD1211_RETRY_MAX, 0x2 }, | 798 | { CR_ZD1211_RETRY_MAX, 0x2 }, |
| 799 | { CR_SNIFFER_ON, 0 }, | 799 | { CR_SNIFFER_ON, 0 }, |
| 800 | { CR_RX_FILTER, AP_RX_FILTER }, | 800 | { CR_RX_FILTER, STA_RX_FILTER }, |
| 801 | { CR_GROUP_HASH_P1, 0x00 }, | 801 | { CR_GROUP_HASH_P1, 0x00 }, |
| 802 | { CR_GROUP_HASH_P2, 0x80000000 }, | 802 | { CR_GROUP_HASH_P2, 0x80000000 }, |
| 803 | { CR_REG1, 0xa4 }, | 803 | { CR_REG1, 0xa4 }, |
| @@ -844,7 +844,7 @@ static int zd1211b_hw_init_hmac(struct zd_chip *chip) | |||
| 844 | { CR_ZD1211B_AIFS_CTL2, 0x008C003C }, | 844 | { CR_ZD1211B_AIFS_CTL2, 0x008C003C }, |
| 845 | { CR_ZD1211B_TXOP, 0x01800824 }, | 845 | { CR_ZD1211B_TXOP, 0x01800824 }, |
| 846 | { CR_SNIFFER_ON, 0 }, | 846 | { CR_SNIFFER_ON, 0 }, |
| 847 | { CR_RX_FILTER, AP_RX_FILTER }, | 847 | { CR_RX_FILTER, STA_RX_FILTER }, |
| 848 | { CR_GROUP_HASH_P1, 0x00 }, | 848 | { CR_GROUP_HASH_P1, 0x00 }, |
| 849 | { CR_GROUP_HASH_P2, 0x80000000 }, | 849 | { CR_GROUP_HASH_P2, 0x80000000 }, |
| 850 | { CR_REG1, 0xa4 }, | 850 | { CR_REG1, 0xa4 }, |
diff --git a/drivers/net/wireless/zd1211rw/zd_chip.h b/drivers/net/wireless/zd1211rw/zd_chip.h index 805121093ab5..069d2b467339 100644 --- a/drivers/net/wireless/zd1211rw/zd_chip.h +++ b/drivers/net/wireless/zd1211rw/zd_chip.h | |||
| @@ -461,10 +461,15 @@ | |||
| 461 | 461 | ||
| 462 | #define CR_RX_FILTER CTL_REG(0x068c) | 462 | #define CR_RX_FILTER CTL_REG(0x068c) |
| 463 | #define RX_FILTER_ASSOC_RESPONSE 0x0002 | 463 | #define RX_FILTER_ASSOC_RESPONSE 0x0002 |
| 464 | #define RX_FILTER_REASSOC_RESPONSE 0x0008 | ||
| 464 | #define RX_FILTER_PROBE_RESPONSE 0x0020 | 465 | #define RX_FILTER_PROBE_RESPONSE 0x0020 |
| 465 | #define RX_FILTER_BEACON 0x0100 | 466 | #define RX_FILTER_BEACON 0x0100 |
| 467 | #define RX_FILTER_DISASSOC 0x0400 | ||
| 466 | #define RX_FILTER_AUTH 0x0800 | 468 | #define RX_FILTER_AUTH 0x0800 |
| 467 | /* Sniff modus sets filter to 0xfffff */ | 469 | #define AP_RX_FILTER 0x0400feff |
| 470 | #define STA_RX_FILTER 0x0000ffff | ||
| 471 | |||
| 472 | /* Monitor mode sets filter to 0xfffff */ | ||
| 468 | 473 | ||
| 469 | #define CR_ACK_TIMEOUT_EXT CTL_REG(0x0690) | 474 | #define CR_ACK_TIMEOUT_EXT CTL_REG(0x0690) |
| 470 | #define CR_BCN_FIFO_SEMAPHORE CTL_REG(0x0694) | 475 | #define CR_BCN_FIFO_SEMAPHORE CTL_REG(0x0694) |
| @@ -546,9 +551,6 @@ | |||
| 546 | #define CR_ZD1211B_TXOP CTL_REG(0x0b20) | 551 | #define CR_ZD1211B_TXOP CTL_REG(0x0b20) |
| 547 | #define CR_ZD1211B_RETRY_MAX CTL_REG(0x0b28) | 552 | #define CR_ZD1211B_RETRY_MAX CTL_REG(0x0b28) |
| 548 | 553 | ||
| 549 | #define AP_RX_FILTER 0x0400feff | ||
| 550 | #define STA_RX_FILTER 0x0000ffff | ||
| 551 | |||
| 552 | #define CWIN_SIZE 0x007f043f | 554 | #define CWIN_SIZE 0x007f043f |
| 553 | 555 | ||
| 554 | 556 | ||
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c index 3bdc54d128d0..d6f3e02a0b54 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c | |||
| @@ -108,7 +108,9 @@ int zd_mac_init_hw(struct zd_mac *mac, u8 device_type) | |||
| 108 | if (r) | 108 | if (r) |
| 109 | goto disable_int; | 109 | goto disable_int; |
| 110 | 110 | ||
| 111 | r = zd_set_encryption_type(chip, NO_WEP); | 111 | /* We must inform the device that we are doing encryption/decryption in |
| 112 | * software at the moment. */ | ||
| 113 | r = zd_set_encryption_type(chip, ENC_SNIFFER); | ||
| 112 | if (r) | 114 | if (r) |
| 113 | goto disable_int; | 115 | goto disable_int; |
| 114 | 116 | ||
| @@ -136,10 +138,8 @@ static int reset_mode(struct zd_mac *mac) | |||
| 136 | { | 138 | { |
| 137 | struct ieee80211_device *ieee = zd_mac_to_ieee80211(mac); | 139 | struct ieee80211_device *ieee = zd_mac_to_ieee80211(mac); |
| 138 | struct zd_ioreq32 ioreqs[3] = { | 140 | struct zd_ioreq32 ioreqs[3] = { |
| 139 | { CR_RX_FILTER, RX_FILTER_BEACON|RX_FILTER_PROBE_RESPONSE| | 141 | { CR_RX_FILTER, STA_RX_FILTER }, |
| 140 | RX_FILTER_AUTH|RX_FILTER_ASSOC_RESPONSE }, | ||
| 141 | { CR_SNIFFER_ON, 0U }, | 142 | { CR_SNIFFER_ON, 0U }, |
| 142 | { CR_ENCRYPTION_TYPE, NO_WEP }, | ||
| 143 | }; | 143 | }; |
| 144 | 144 | ||
| 145 | if (ieee->iw_mode == IW_MODE_MONITOR) { | 145 | 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) | |||
| 713 | struct zd_rt_hdr { | 713 | struct zd_rt_hdr { |
| 714 | struct ieee80211_radiotap_header rt_hdr; | 714 | struct ieee80211_radiotap_header rt_hdr; |
| 715 | u8 rt_flags; | 715 | u8 rt_flags; |
| 716 | u8 rt_rate; | ||
| 716 | u16 rt_channel; | 717 | u16 rt_channel; |
| 717 | u16 rt_chbitmask; | 718 | u16 rt_chbitmask; |
| 718 | u16 rt_rate; | 719 | } __attribute__((packed)); |
| 719 | }; | ||
| 720 | 720 | ||
| 721 | static void fill_rt_header(void *buffer, struct zd_mac *mac, | 721 | static void fill_rt_header(void *buffer, struct zd_mac *mac, |
| 722 | const struct ieee80211_rx_stats *stats, | 722 | const struct ieee80211_rx_stats *stats, |
| @@ -735,14 +735,14 @@ static void fill_rt_header(void *buffer, struct zd_mac *mac, | |||
| 735 | if (status->decryption_type & (ZD_RX_WEP64|ZD_RX_WEP128|ZD_RX_WEP256)) | 735 | if (status->decryption_type & (ZD_RX_WEP64|ZD_RX_WEP128|ZD_RX_WEP256)) |
| 736 | hdr->rt_flags |= IEEE80211_RADIOTAP_F_WEP; | 736 | hdr->rt_flags |= IEEE80211_RADIOTAP_F_WEP; |
| 737 | 737 | ||
| 738 | hdr->rt_rate = stats->rate / 5; | ||
| 739 | |||
| 738 | /* FIXME: 802.11a */ | 740 | /* FIXME: 802.11a */ |
| 739 | hdr->rt_channel = cpu_to_le16(ieee80211chan2mhz( | 741 | hdr->rt_channel = cpu_to_le16(ieee80211chan2mhz( |
| 740 | _zd_chip_get_channel(&mac->chip))); | 742 | _zd_chip_get_channel(&mac->chip))); |
| 741 | hdr->rt_chbitmask = cpu_to_le16(IEEE80211_CHAN_2GHZ | | 743 | hdr->rt_chbitmask = cpu_to_le16(IEEE80211_CHAN_2GHZ | |
| 742 | ((status->frame_status & ZD_RX_FRAME_MODULATION_MASK) == | 744 | ((status->frame_status & ZD_RX_FRAME_MODULATION_MASK) == |
| 743 | ZD_RX_OFDM ? IEEE80211_CHAN_OFDM : IEEE80211_CHAN_CCK)); | 745 | ZD_RX_OFDM ? IEEE80211_CHAN_OFDM : IEEE80211_CHAN_CCK)); |
| 744 | |||
| 745 | hdr->rt_rate = stats->rate / 5; | ||
| 746 | } | 746 | } |
| 747 | 747 | ||
| 748 | /* Returns 1 if the data packet is for us and 0 otherwise. */ | 748 | /* Returns 1 if the data packet is for us and 0 otherwise. */ |
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c index c68b9f8995c9..96551da769fc 100644 --- a/drivers/net/wireless/zd1211rw/zd_usb.c +++ b/drivers/net/wireless/zd1211rw/zd_usb.c | |||
| @@ -325,7 +325,6 @@ static void disable_read_regs_int(struct zd_usb *usb) | |||
| 325 | { | 325 | { |
| 326 | struct zd_usb_interrupt *intr = &usb->intr; | 326 | struct zd_usb_interrupt *intr = &usb->intr; |
| 327 | 327 | ||
| 328 | ZD_ASSERT(in_interrupt()); | ||
| 329 | spin_lock(&intr->lock); | 328 | spin_lock(&intr->lock); |
| 330 | intr->read_regs_enabled = 0; | 329 | intr->read_regs_enabled = 0; |
| 331 | spin_unlock(&intr->lock); | 330 | spin_unlock(&intr->lock); |
| @@ -547,11 +546,11 @@ static void handle_rx_packet(struct zd_usb *usb, const u8 *buffer, | |||
| 547 | * be padded. Unaligned access might also happen if the length_info | 546 | * be padded. Unaligned access might also happen if the length_info |
| 548 | * structure is not present. | 547 | * structure is not present. |
| 549 | */ | 548 | */ |
| 550 | if (get_unaligned(&length_info->tag) == RX_LENGTH_INFO_TAG) { | 549 | if (get_unaligned(&length_info->tag) == cpu_to_le16(RX_LENGTH_INFO_TAG)) |
| 550 | { | ||
| 551 | unsigned int l, k, n; | 551 | unsigned int l, k, n; |
| 552 | for (i = 0, l = 0;; i++) { | 552 | for (i = 0, l = 0;; i++) { |
| 553 | k = le16_to_cpu(get_unaligned( | 553 | k = le16_to_cpu(get_unaligned(&length_info->length[i])); |
| 554 | &length_info->length[i])); | ||
| 555 | n = l+k; | 554 | n = l+k; |
| 556 | if (n > length) | 555 | if (n > length) |
| 557 | return; | 556 | return; |
