aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mwlwifi
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mwlwifi')
-rw-r--r--package/kernel/mwlwifi/Makefile62
-rw-r--r--package/kernel/mwlwifi/patches/100-drop_old_api.patch36
-rw-r--r--package/kernel/mwlwifi/patches/110-ampdu_api.patch11
3 files changed, 109 insertions, 0 deletions
diff --git a/package/kernel/mwlwifi/Makefile b/package/kernel/mwlwifi/Makefile
new file mode 100644
index 0000000..bec2732
--- /dev/null
+++ b/package/kernel/mwlwifi/Makefile
@@ -0,0 +1,62 @@
+#
+# Copyright (C) 2014-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=mwlwifi
+PKG_VERSION:=10.3.0.12-20151029
+PKG_RELEASE=1
+
+PKG_LICENSE:=ISC
+PKG_LICENSE_FILES:=
+
+PKG_SOURCE_URL:=https://github.com/kaloz/mwlwifi
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=30e6b06de659f1d5e46d1dd3bf590caf3529bb65
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
+
+PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/mwlwifi
+ SUBMENU:=Wireless Drivers
+ TITLE:=Marvell 88W8864 wireless driver
+ DEPENDS:=+kmod-mac80211 +@DRIVER_11N_SUPPORT @PCI_SUPPORT @TARGET_mvebu
+ FILES:=$(PKG_BUILD_DIR)/mwlwifi.ko
+ AUTOLOAD:=$(call AutoLoad,50,mac80211 mwlwifi)
+endef
+
+NOSTDINC_FLAGS = \
+ -I$(PKG_BUILD_DIR) \
+ -I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \
+ -I$(STAGING_DIR)/usr/include/mac80211-backport \
+ -I$(STAGING_DIR)/usr/include/mac80211/uapi \
+ -I$(STAGING_DIR)/usr/include/mac80211 \
+ -include backport/backport.h
+
+define Build/Compile
+ +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \
+ ARCH="$(LINUX_KARCH)" \
+ CROSS_COMPILE="$(TARGET_CROSS)" \
+ SUBDIRS="$(PKG_BUILD_DIR)" \
+ NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
+ modules
+endef
+
+define KernelPackage/mwlwifi/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DIR) $(1)/lib/firmware/mwlwifi
+ $(CP) $(PKG_BUILD_DIR)/bin/firmware/88W8864.bin $(1)/lib/firmware/mwlwifi/
+ $(CP) $(PKG_BUILD_DIR)/bin/firmware/88W8897.bin $(1)/lib/firmware/mwlwifi/
+ $(CP) $(PKG_BUILD_DIR)/bin/firmware/Marvell_license.txt $(1)/lib/firmware/mwlwifi/
+endef
+
+$(eval $(call KernelPackage,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 0000000..1ab1615
--- /dev/null
+++ b/package/kernel/mwlwifi/patches/100-drop_old_api.patch
@@ -0,0 +1,36 @@
+--- a/main.c
++++ b/main.c
+@@ -414,11 +414,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;
+
+@@ -520,21 +516,13 @@ 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
+
+ hw->vif_data_size = sizeof(struct mwl_vif);
+ hw->sta_data_size = sizeof(struct mwl_sta);
diff --git a/package/kernel/mwlwifi/patches/110-ampdu_api.patch b/package/kernel/mwlwifi/patches/110-ampdu_api.patch
new file mode 100644
index 0000000..5e52b09
--- /dev/null
+++ b/package/kernel/mwlwifi/patches/110-ampdu_api.patch
@@ -0,0 +1,11 @@
+--- a/mac80211.c
++++ b/mac80211.c
+@@ -574,7 +574,7 @@ static int mwl_mac80211_ampdu_action(str
+ struct ieee80211_vif *vif,
+ enum ieee80211_ampdu_mlme_action action,
+ struct ieee80211_sta *sta,
+- u16 tid, u16 *ssn, u8 buf_size)
++ u16 tid, u16 *ssn, u8 buf_size, bool amsdu)
+ {
+ int rc = 0;
+ struct mwl_priv *priv = hw->priv;