From f3a1db04f0ebba577598f1577d3c8c756c8bf757 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 29 Feb 2016 17:19:04 +0000 Subject: mac80211: backport from trunk r48782 + required kernel patches and mt76, mwlwifi Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@48822 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../kernel/mwlwifi/patches/100-drop_old_api.patch | 92 ++++++++++++++++++++++ package/kernel/mwlwifi/patches/110-api_sync.patch | 19 +++++ 2 files changed, 111 insertions(+) create mode 100644 package/kernel/mwlwifi/patches/100-drop_old_api.patch create mode 100644 package/kernel/mwlwifi/patches/110-api_sync.patch (limited to 'package/kernel/mwlwifi') diff --git a/package/kernel/mwlwifi/patches/100-drop_old_api.patch b/package/kernel/mwlwifi/patches/100-drop_old_api.patch new file mode 100644 index 0000000000..d2e149e9a2 --- /dev/null +++ b/package/kernel/mwlwifi/patches/100-drop_old_api.patch @@ -0,0 +1,92 @@ +--- a/main.c ++++ b/main.c +@@ -418,11 +418,7 @@ static void mwl_set_ht_caps(struct mwl_p + band->ht_cap.cap |= IEEE80211_HT_CAP_SGI_20; + band->ht_cap.cap |= IEEE80211_HT_CAP_SGI_40; + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) +- hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION; +-#else + ieee80211_hw_set(hw, AMPDU_AGGREGATION); +-#endif + band->ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K; + band->ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_4; + +@@ -524,29 +520,16 @@ static int mwl_wl_init(struct mwl_priv * + hw->queues = SYSADPT_TX_WMM_QUEUES; + + /* Set rssi values to dBm */ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) +- hw->flags |= IEEE80211_HW_SIGNAL_DBM | IEEE80211_HW_HAS_RATE_CONTROL; +-#else + ieee80211_hw_set(hw, SIGNAL_DBM); + ieee80211_hw_set(hw, HAS_RATE_CONTROL); +-#endif + + /* Ask mac80211 not to trigger PS mode + * based on PM bit of incoming frames. + */ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) +- hw->flags |= IEEE80211_HW_AP_LINK_PS; +-#else + ieee80211_hw_set(hw, AP_LINK_PS); +-#endif + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) +- hw->flags |= IEEE80211_HW_SUPPORTS_PER_STA_GTK | +- IEEE80211_HW_MFP_CAPABLE; +-#else + ieee80211_hw_set(hw, SUPPORTS_PER_STA_GTK); + ieee80211_hw_set(hw, MFP_CAPABLE); +-#endif + + hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; + +--- a/dev.h ++++ b/dev.h +@@ -484,10 +484,6 @@ static inline struct mwl_sta *mwl_dev_ge + return (struct mwl_sta *)&sta->drv_priv; + } + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) +-#define ether_addr_copy(dst, src) memcpy(dst, src, ETH_ALEN) +-#endif +- + /* Defined in mac80211.c. */ + extern const struct ieee80211_ops mwl_mac80211_ops; + +--- a/mac80211.c ++++ b/mac80211.c +@@ -572,19 +572,11 @@ static int mwl_mac80211_get_survey(struc + return 0; + } + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0) +-static int mwl_mac80211_ampdu_action(struct ieee80211_hw *hw, +- struct ieee80211_vif *vif, +- enum ieee80211_ampdu_mlme_action action, +- struct ieee80211_sta *sta, +- u16 tid, u16 *ssn, u8 buf_size) +-#else + static int mwl_mac80211_ampdu_action(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + enum ieee80211_ampdu_mlme_action action, + struct ieee80211_sta *sta, + u16 tid, u16 *ssn, u8 buf_size, bool amsdu) +-#endif + { + int rc = 0; + struct mwl_priv *priv = hw->priv; +--- a/rx.c ++++ b/rx.c +@@ -232,10 +232,8 @@ static inline void mwl_rx_prepare_status + status->flag |= RX_FLAG_VHT; + if (bw == RX_RATE_INFO_HT40) + status->flag |= RX_FLAG_40MHZ; +-#if LINUX_VERSION_CODE > KERNEL_VERSION(3, 18, 0) + if (bw == RX_RATE_INFO_HT80) + status->vht_flag |= RX_VHT_FLAG_80MHZ; +-#endif + if (gi == RX_RATE_INFO_SHORT_INTERVAL) + status->flag |= RX_FLAG_SHORT_GI; + status->vht_nss = (nss + 1); diff --git a/package/kernel/mwlwifi/patches/110-api_sync.patch b/package/kernel/mwlwifi/patches/110-api_sync.patch new file mode 100644 index 0000000000..ed3e06a1c1 --- /dev/null +++ b/package/kernel/mwlwifi/patches/110-api_sync.patch @@ -0,0 +1,19 @@ +--- a/mac80211.c ++++ b/mac80211.c +@@ -597,10 +597,13 @@ static int mwl_mac80211_get_survey(struc + + static int mwl_mac80211_ampdu_action(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, +- enum ieee80211_ampdu_mlme_action action, +- struct ieee80211_sta *sta, +- u16 tid, u16 *ssn, u8 buf_size, bool amsdu) ++ struct ieee80211_ampdu_params *params) + { ++ enum ieee80211_ampdu_mlme_action action = params->action; ++ struct ieee80211_sta *sta = params->sta; ++ u16 tid = params->tid; ++ u16 *ssn = ¶ms->ssn; ++ u8 buf_size = params->buf_size; + int rc = 0; + struct mwl_priv *priv = hw->priv; + struct mwl_ampdu_stream *stream; -- cgit v1.2.3