aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mwlwifi
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2016-02-29 17:19:04 +0000
committerFelix Fietkau <nbd@openwrt.org>2016-02-29 17:19:04 +0000
commitf3a1db04f0ebba577598f1577d3c8c756c8bf757 (patch)
treeeecfe6c9154a9e0717573daba16d1c58bd674d2e /package/kernel/mwlwifi
parent5db86ba649298bef0066cac8e4d0e17834f6b7b0 (diff)
downloadupstream-f3a1db04f0ebba577598f1577d3c8c756c8bf757.tar.gz
upstream-f3a1db04f0ebba577598f1577d3c8c756c8bf757.tar.bz2
upstream-f3a1db04f0ebba577598f1577d3c8c756c8bf757.zip
mac80211: backport from trunk r48782 + required kernel patches and mt76, mwlwifi
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@48822 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel/mwlwifi')
-rw-r--r--package/kernel/mwlwifi/patches/100-drop_old_api.patch92
-rw-r--r--package/kernel/mwlwifi/patches/110-api_sync.patch19
2 files changed, 111 insertions, 0 deletions
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 = &params->ssn;
++ u8 buf_size = params->buf_size;
+ int rc = 0;
+ struct mwl_priv *priv = hw->priv;
+ struct mwl_ampdu_stream *stream;