From 84b3cfd9552bb10bf659523912d7aac9f2a215b7 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 21 Feb 2009 20:38:07 +0000 Subject: upgrade to latest compat-wireless and rt2800 version git-svn-id: svn://svn.openwrt.org/openwrt/trunk@14605 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- ...upport-get_tkip_seq-fix-TX-streams-rt2800.patch | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 package/mac80211/patches/319-rt2x00-support-get_tkip_seq-fix-TX-streams-rt2800.patch (limited to 'package/mac80211/patches/319-rt2x00-support-get_tkip_seq-fix-TX-streams-rt2800.patch') diff --git a/package/mac80211/patches/319-rt2x00-support-get_tkip_seq-fix-TX-streams-rt2800.patch b/package/mac80211/patches/319-rt2x00-support-get_tkip_seq-fix-TX-streams-rt2800.patch new file mode 100644 index 0000000000..fa2e493cf6 --- /dev/null +++ b/package/mac80211/patches/319-rt2x00-support-get_tkip_seq-fix-TX-streams-rt2800.patch @@ -0,0 +1,86 @@ +From 6b12c7bb631dd47cff8b0bad6d47c4b2439c6a59 Mon Sep 17 00:00:00 2001 +From: Ivo van Doorn +Date: Sat, 14 Feb 2009 19:55:36 +0100 +Subject: [PATCH] rt2x00: support get_tkip_seq, fix TX streams (rt2800pci) + +Signed-off-by: Ivo van Doorn +--- + drivers/net/wireless/rt2x00/rt2800pci.c | 23 ++++++++++++++++++++++- + drivers/net/wireless/rt2x00/rt2800pci.h | 6 ------ + 2 files changed, 22 insertions(+), 7 deletions(-) + +diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c +index 86ed55c..6e98c3d 100644 +--- a/drivers/net/wireless/rt2x00/rt2800pci.c ++++ b/drivers/net/wireless/rt2x00/rt2800pci.c +@@ -1374,6 +1374,8 @@ static int rt2800pci_init_registers(struct rt2x00_dev *rt2x00dev) + + rt2x00pci_register_read(rt2x00dev, TX_RTS_CFG, ®); + rt2x00_set_field32(®, TX_RTS_CFG_AUTO_RTS_RETRY_LIMIT, 32); ++ rt2x00_set_field32(®, TX_RTS_CFG_RTS_THRES, ++ IEEE80211_MAX_RTS_THRESHOLD); + rt2x00_set_field32(®, TX_RTS_CFG_RTS_FBK_EN, 0); + rt2x00pci_register_write(rt2x00dev, TX_RTS_CFG, reg); + +@@ -2470,7 +2472,10 @@ static int rt2800pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) + spec->ht.ampdu_factor = 3; + spec->ht.ampdu_density = 4; + spec->ht.mcs.tx_params = +- IEEE80211_HT_MCS_TX_DEFINED; ++ IEEE80211_HT_MCS_TX_DEFINED | ++ IEEE80211_HT_MCS_TX_RX_DIFF | ++ ((rt2x00_get_field16(eeprom, EEPROM_ANTENNA_TXPATH) - 1) << ++ IEEE80211_HT_MCS_TX_MAX_STREAMS_SHIFT); + + switch (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_RXPATH)) { + case 3: +@@ -2552,6 +2557,21 @@ static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev) + /* + * IEEE80211 stack callback functions. + */ ++static void rt2800pci_get_tkip_seq(struct ieee80211_hw *hw, u8 hw_key_idx, ++ u32 *iv32, u16 *iv16) ++{ ++ struct rt2x00_dev *rt2x00dev = hw->priv; ++ struct mac_iveiv_entry iveiv_entry; ++ u32 offset; ++ ++ offset = MAC_IVEIV_ENTRY(hw_key_idx); ++ rt2x00pci_register_multiread(rt2x00dev, offset, ++ &iveiv_entry, sizeof(iveiv_entry)); ++ ++ memcpy(&iveiv_entry.iv[0], iv16, sizeof(iv16)); ++ memcpy(&iveiv_entry.iv[4], iv32, sizeof(iv32)); ++} ++ + static int rt2800pci_set_rts_threshold(struct ieee80211_hw *hw, u32 value) + { + struct rt2x00_dev *rt2x00dev = hw->priv; +@@ -2681,6 +2701,7 @@ static const struct ieee80211_ops rt2800pci_mac80211_ops = { + .configure_filter = rt2x00mac_configure_filter, + .set_key = rt2x00mac_set_key, + .get_stats = rt2x00mac_get_stats, ++ .get_tkip_seq = rt2800pci_get_tkip_seq, + .set_rts_threshold = rt2800pci_set_rts_threshold, + .bss_info_changed = rt2x00mac_bss_info_changed, + .conf_tx = rt2800pci_conf_tx, +diff --git a/drivers/net/wireless/rt2x00/rt2800pci.h b/drivers/net/wireless/rt2x00/rt2800pci.h +index f8bc958..ea2a431 100644 +--- a/drivers/net/wireless/rt2x00/rt2800pci.h ++++ b/drivers/net/wireless/rt2x00/rt2800pci.h +@@ -1327,12 +1327,6 @@ struct mac_iveiv_entry { + } __attribute__ ((packed)); + + /* +- * MAC_IVEIV: +- */ +-#define MAC_IVEIV_EIV FIELD32(0x20000000) +-#define MAC_IVEIV_KEYIDX FIELD32(0xc0000000) +- +-/* + * MAC_WCID_ATTRIBUTE: + */ + #define MAC_WCID_ATTRIBUTE_KEYTAB FIELD32(0x00000001) +-- +1.6.0 + -- cgit v1.2.3