diff options
Diffstat (limited to 'package/kernel/acx-mac80211')
6 files changed, 473 insertions, 0 deletions
diff --git a/package/kernel/acx-mac80211/Makefile b/package/kernel/acx-mac80211/Makefile new file mode 100644 index 0000000000..3e4984d59d --- /dev/null +++ b/package/kernel/acx-mac80211/Makefile @@ -0,0 +1,258 @@ +# +# Copyright (C) 2007-2012 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=acx-mac80211 +PKG_REV:=v2012-09-23-WIP +PKG_VERSION:=20121004 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=git://acx100.git.sourceforge.net/gitroot/acx100/acx-mac80211 +PKG_SOURCE_PROTO:=git +PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) +PKG_SOURCE_VERSION:=$(PKG_REV) +PKG_MIRROR_MD5SUM:=8d6bc84239059fd938ff4d989579f622 +PKG_BUILD_DEPENDS:=mac80211 + +PKG_CONFIG_DEPENDS:= \ + CONFIG_PACKAGE_MAC80211_DEBUGFS \ + CONFIG_PACKAGE_MAC80211_MESH \ + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/acx-mac80211 + SUBMENU:=Wireless Drivers + TITLE:=ACX1xx mac80211 driver + DEPENDS:=@(PCI_SUPPORT||TARGET_ar7) @mipsel +kmod-mac80211 + FILES:=$(PKG_BUILD_DIR)/acx-mac80211.ko + AUTOLOAD:=$(call AutoLoad,50,acx-mac80211) + MAINTAINER:=Florian Fainelli <florian@openwrt.org> + MENU:=1 +endef + +define KernelPackage/acx-mac80211/config + menu "Configuration" + depends on PACKAGE_kmod-acx-mac80211 + + config ACX_ID_0D + bool "ACX1xx Radio ID 0D firmware" + help + Download and install firmware for: + ACX1xx cards with Radio ID 0D into /lib/firmware. + + config ACX_ID_11 + bool "ACX1xx Radio ID 11 firmware" + help + Download and install firmware for: + ACX1xx cards with Radio ID 11 into /lib/firmware. + + config ACX_ID_15 + bool "ACX1xx Radio ID 15 firmware" + help + Download and install firmware for: + ACX1xx cards with Radio ID 15 into /lib/firmware. + + config ACX_ID_16 + bool "ACX1xx Radio ID 16 firmware" + default y + help + Download and install firmware for: + ACX1xx cards with Radio ID 16 into /lib/firmware. + + choice + prompt "ACX111 firmware version" + depends on ACX_ID_16 + default ACX_DEFAULT if !TARGET_adm5120 + default ACX_1_2_1_34 if TARGET_adm5120 + help + This option allows you to select the version of the acx firmware. + + config ACX_DEFAULT + bool "Default" + help + Default firmware for ACX111 devices. + + If unsure, select this. + + config ACX_1_2_1_34 + bool "1.2.1_34" + help + 1.2.1_34 firmware for ACX111 devices. Works with Zyxel P-334WT. + + If unsure, select the "default" firmware. + + endchoice + + config ACX_ID_17 + bool "ACX1xx Radio ID 17 firmware" + help + Download and install firmware for: + ACX1xx cards with Radio ID 17 into /lib/firmware. + + config ACX_ID_19 + bool "ACX1xx Radio ID 19 firmware" + default y + help + Download and install firmware for: + ACX1xx cards with Radio ID 19 into /lib/firmware. + + config ACX_ID_1B + bool "ACX1xx Radio ID 1B firmware" + help + Download and install firmware for: + ACX1xx cards with Radio ID 1b into /lib/firmware. + + endmenu +endef + +define KernelPackage/acx-mac80211/description + Driver for acx111 cards (mac80211 version) +endef + +define Download/tiacx100 + FILE:=tiacx100 + URL:=http://acx100.erley.org/fw/acx100_1.9.8.b/ + MD5SUM:=24a54fd30f7658fcbffc825b0dd7aa5b +endef + +define Download/tiacx100r0d + FILE:=tiacx100r0D + URL:=http://acx100.erley.org/fw/acx100_1.9.8.b/ + MD5SUM:=1c7413e7b0be4ef7d1e424a132e17fab +endef + +define Download/tiacx100r11 + FILE:=tiacx100r11 + URL:=http://acx100.erley.org/fw/acx100_1.9.8.b/ + MD5SUM:=a150750ad33c512edc4afee5270b37cb +endef + +define Download/tiacx100r15 + FILE:=tiacx100r15 + URL:=http://acx100.erley.org/fw/acx100_1.9.8.b/ + MD5SUM:=c99d01d4fcf0d6cc00441aff60690be4 +endef + +define Download/tiacx111c16 + FILE:=tiacx111c16 + URL:=http://acx100.erley.org/fw/acx111_2.3.1.31/ + MD5SUM:=7026826460376f6b174f9225bd7781b9 +endef + +define Download/tiacx111c16_1 + FILE:=tiacx111c16_1.2.1_34 + URL:=http://sites.google.com/site/atorkhov/files/ + MD5SUM:=fcd07de4b25e1d2aaf3b78b27c5b7ee9 +endef + +define Download/tiacx111c17 + FILE:=tiacx111c17 + URL:=http://acx100.erley.org/fw/acx111_2.3.1.31/ + MD5SUM:=95552544ca6d2b4e8c6aeb80b8ae7fdf +endef + +define Download/tiacx111c19 + FILE:=tiacx111c19 + URL:=http://acx100.erley.org/fw/acx111_2.3.1.31/ + MD5SUM:=a1fa9681e297b4e36e257090fc12265a +endef + +define Download/tiacx111usbc1b + FILE:=tiacx111usbc1B + URL:=http://acx100.erley.org/fw/acx111_2.4.0.70-USB/ + MD5SUM:=c4edecd912b2417779d0b65e3a7dc86d +endef + +PKG_EXTRA_KCONFIG:= \ + CONFIG_ACX_MAC80211=m \ + CONFIG_ACX_MAC80211_PCI=m \ + +PKG_EXTRA_CFLAGS:= \ + $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(PKG_EXTRA_KCONFIG)))) \ + $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(PKG_EXTRA_KCONFIG)))) \ + $(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS) \ + $(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS), -DCONFIG_CFG80211_DEBUGFS -DCONFIG_MAC80211_DEBUGFS) \ + $(if $(CONFIG_PACKAGE_MAC80211_MESH), -DCONFIG_MAC80211_MESH) \ + -DBACKPORTED_KERNEL_NAME=\\\"$(PKG_SOURCE)\\\" \ + -DBACKPORTED_KERNEL_VERSION=\\\"$(PKG_SOURCE_VERSION)\\\" \ + -DBACKPORTS_VERSION=\\\"unknown\\\" \ + +define Build/Compile + $(MAKE) -C "$(LINUX_DIR)" \ + ARCH="$(LINUX_KARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + $(PKG_EXTRA_KCONFIG) \ + EXTRA_CFLAGS="$(PKG_EXTRA_CFLAGS) -DCONFIG_ACX_MAC80211_VERSION=\"KERNEL_VERSION(3,10,0)\"" \ + LINUXINCLUDE="-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 \ + -I$(LINUX_DIR)/include -I$(LINUX_DIR)/include/$(LINUX_UAPI_DIR) \ + -I$(LINUX_DIR)/include/generated/uapi/ -Iarch/$(LINUX_KARCH)/include \ + -Iarch/$(LINUX_KARCH)/include/$(LINUX_UAPI_DIR) \ + -include generated/autoconf.h \ + -include backport/backport.h " \ + V="$(V)" \ + modules +endef + +define Build/Configure +endef + +define KernelPackage/acx-mac80211/install + $(INSTALL_DIR) $(1)/lib/firmware + +ifneq ($(CONFIG_ACX_ID_0D)$(CONFIG_ACX_ID_11)$(CONFIG_ACX_ID_15),) + $(INSTALL_DATA) $(DL_DIR)/tiacx100 $(1)/lib/firmware/ +endif + +ifneq ($(CONFIG_ACX_ID_0D),) + $(INSTALL_DATA) $(DL_DIR)/tiacx100r0D $(1)/lib/firmware/ +endif + +ifneq ($(CONFIG_ACX_ID_11),) + $(INSTALL_DATA) $(DL_DIR)/tiacx100r11 $(1)/lib/firmware/ +endif + +ifneq ($(CONFIG_ACX_ID_15),) + $(INSTALL_DATA) $(DL_DIR)/tiacx100r15 $(1)/lib/firmware/ +endif + +ifneq ($(CONFIG_ACX_DEFAULT),) + $(INSTALL_DATA) $(DL_DIR)/tiacx111c16 $(1)/lib/firmware/ +endif + +ifneq ($(CONFIG_ACX_1_2_1_34),) + $(INSTALL_DATA) $(DL_DIR)/tiacx111c16_1.2.1_34 $(1)/lib/firmware/tiacx111c16 +endif + +ifneq ($(CONFIG_ACX_ID_17),) + $(INSTALL_DATA) $(DL_DIR)/tiacx111c17 $(1)/lib/firmware/ +endif + +ifneq ($(CONFIG_ACX_ID_19),) + $(INSTALL_DATA) $(DL_DIR)/tiacx111c19 $(1)/lib/firmware/ +endif + +ifneq ($(CONFIG_ACX_ID_1B),) + $(INSTALL_DATA) $(DL_DIR)/tiacx111usbc1B $(1)/lib/firmware/ +endif + +endef + +$(eval $(call KernelPackage,acx-mac80211)) +$(eval $(call Download,tiacx100)) +$(eval $(call Download,tiacx100r0d)) +$(eval $(call Download,tiacx100r11)) +$(eval $(call Download,tiacx100r15)) +$(eval $(call Download,tiacx111c16)) +$(eval $(call Download,tiacx111c16_1)) +$(eval $(call Download,tiacx111c17)) +$(eval $(call Download,tiacx111c19)) +$(eval $(call Download,tiacx111usbc1b)) diff --git a/package/kernel/acx-mac80211/patches/001-make-compatible-with-recent-mac80211.patch b/package/kernel/acx-mac80211/patches/001-make-compatible-with-recent-mac80211.patch new file mode 100644 index 0000000000..707ba8bb4b --- /dev/null +++ b/package/kernel/acx-mac80211/patches/001-make-compatible-with-recent-mac80211.patch @@ -0,0 +1,30 @@ +--- a/main.h ++++ b/main.h +@@ -44,8 +44,11 @@ int acx_e_op_get_tx_stats(struct ieee802 + + #if CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(2, 6, 39) + int acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb); +-#else ++#elif CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(3, 7, 0) + void acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb); ++#else ++void acx_op_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control, ++ struct sk_buff *skb); + #endif + + +--- a/main.c ++++ b/main.c +@@ -1024,7 +1024,12 @@ int acx_e_op_get_tx_stats(struct ieee802 + * acx_compat, and hiding this #if/else. OTOH, inclusion doesnt care + * about old kernels + */ ++#if CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(3, 7, 0) + OP_TX_RET_TYPE acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) ++#else ++void acx_op_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control, ++ struct sk_buff *skb) ++#endif + { + acx_device_t *adev = ieee2adev(hw); + diff --git a/package/kernel/acx-mac80211/patches/002-remove-usage-of__dev.patch b/package/kernel/acx-mac80211/patches/002-remove-usage-of__dev.patch new file mode 100644 index 0000000000..f16d3b68b1 --- /dev/null +++ b/package/kernel/acx-mac80211/patches/002-remove-usage-of__dev.patch @@ -0,0 +1,85 @@ +--- a/mem.c ++++ b/mem.c +@@ -2002,7 +2002,7 @@ int acx100mem_ioctl_set_phy_amp_bias(str + * configuration + * id - ptr to the device id entry that matched this device + */ +-static int __devinit acxmem_probe(struct platform_device *pdev) ++static int acxmem_probe(struct platform_device *pdev) + { + acx_device_t *adev = NULL; + const char *chip_name; +@@ -2268,7 +2268,7 @@ done: + * pdev - ptr to PCI device structure containing info about pci + * configuration + */ +-static int __devexit acxmem_remove(struct platform_device *pdev) ++static int acxmem_remove(struct platform_device *pdev) + { + struct ieee80211_hw *hw = (struct ieee80211_hw *) + platform_get_drvdata(pdev); +@@ -2470,7 +2470,7 @@ static struct platform_driver acxmem_dri + .name = "acx-mem", + }, + .probe = acxmem_probe, +- .remove = __devexit_p(acxmem_remove), ++ .remove = acxmem_remove, + + #ifdef CONFIG_PM + .suspend = acxmem_e_suspend, +--- a/pci.c ++++ b/pci.c +@@ -982,7 +982,7 @@ int acx100pci_ioctl_set_phy_amp_bias(str + * id - ptr to the device id entry that matched this device + */ + #ifdef CONFIG_PCI +-static int __devinit acxpci_probe(struct pci_dev *pdev, ++static int acxpci_probe(struct pci_dev *pdev, + const struct pci_device_id *id) + { + acx111_ie_configoption_t co; +@@ -1346,7 +1346,7 @@ done: + * + * pdev - ptr to PCI device structure containing info about pci configuration + */ +-static void __devexit acxpci_remove(struct pci_dev *pdev) ++static void acxpci_remove(struct pci_dev *pdev) + { + struct ieee80211_hw *hw + = (struct ieee80211_hw *) pci_get_drvdata(pdev); +@@ -1537,7 +1537,7 @@ static int acxpci_e_resume(struct pci_de + */ + + #if 0 // use later ? +-static struct acxpci_device_info acxpci_info_tbl[] __devinitdata = { ++static struct acxpci_device_info acxpci_info_tbl[] = { + [0] = { + .part_name = "acx111", + .helper_image = "tiacx1111r16", // probly wrong !! +@@ -1564,7 +1564,7 @@ static struct pci_driver acxpci_driver = + .name = "acx_pci", + .id_table = acxpci_id_tbl, + .probe = acxpci_probe, +- .remove = __devexit_p(acxpci_remove), ++ .remove = acxpci_remove, + #ifdef CONFIG_PM + .suspend = acxpci_e_suspend, + .resume = acxpci_e_resume +@@ -1662,7 +1662,7 @@ static struct vlynq_device_id acx_vlynq_ + }; + + +-static __devinit int vlynq_probe(struct vlynq_device *vdev, ++static int vlynq_probe(struct vlynq_device *vdev, + struct vlynq_device_id *id) + { + int result = -EIO, i; +@@ -1971,7 +1971,7 @@ static struct vlynq_driver vlynq_acx = { + .name = "acx_vlynq", + .id_table = acx_vlynq_id, + .probe = vlynq_probe, +- .remove = __devexit_p(vlynq_remove), ++ .remove = vlynq_remove, + }; + #endif /* CONFIG_VLYNQ */ + diff --git a/package/kernel/acx-mac80211/patches/003-add-changes-for-3-10.patch b/package/kernel/acx-mac80211/patches/003-add-changes-for-3-10.patch new file mode 100644 index 0000000000..18d4f9e394 --- /dev/null +++ b/package/kernel/acx-mac80211/patches/003-add-changes-for-3-10.patch @@ -0,0 +1,27 @@ +--- a/main.c ++++ b/main.c +@@ -681,6 +681,7 @@ int acx_op_config(struct ieee80211_hw *h + if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { + changed_not_done &= ~IEEE80211_CONF_CHANGE_CHANNEL; + ++#if CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(3, 10, 0) + logf1(L_DEBUG, "IEEE80211_CONF_CHANGE_CHANNEL, " + "channel->hw_value=%i\n", conf->channel->hw_value); + +@@ -689,6 +690,16 @@ int acx_op_config(struct ieee80211_hw *h + + acx_selectchannel(adev, conf->channel->hw_value, + conf->channel->center_freq); ++#else ++ logf1(L_DEBUG, "IEEE80211_CONF_CHANGE_CHANNEL, " ++ "channel->hw_value=%i\n", conf->chandef.chan->hw_value); ++ ++ if (conf->chandef.chan->hw_value == adev->channel) ++ goto change_channel_done; ++ ++ acx_selectchannel(adev, conf->chandef.chan->hw_value, ++ conf->chandef.chan->center_freq); ++#endif + } + change_channel_done: + if (changed_not_done) diff --git a/package/kernel/acx-mac80211/patches/100-hw-queue-check-fix.patch b/package/kernel/acx-mac80211/patches/100-hw-queue-check-fix.patch new file mode 100644 index 0000000000..73366f3423 --- /dev/null +++ b/package/kernel/acx-mac80211/patches/100-hw-queue-check-fix.patch @@ -0,0 +1,42 @@ +--- a/mem.c ++++ b/mem.c +@@ -2036,7 +2036,7 @@ static int acxmem_probe(struct platform_ + */ + ieee->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) + | BIT(NL80211_IFTYPE_ADHOC); +- ieee->queues = 1; ++ ieee->queues = 4; + /* OW TODO Check if RTS/CTS threshold can be included here */ + + /* TODO: although in the original driver the maximum value was +--- a/pci.c ++++ b/pci.c +@@ -1022,7 +1022,7 @@ static int acxpci_probe(struct pci_dev * + BIT(NL80211_IFTYPE_STATION) | + BIT(NL80211_IFTYPE_ADHOC) | + BIT(NL80211_IFTYPE_AP); +- ieee->queues = 1; ++ ieee->queues = 4; + /* OW TODO Check if RTS/CTS threshold can be included here */ + + /* TODO: although in the original driver the maximum value was +@@ -1691,7 +1691,7 @@ static int vlynq_probe(struct vlynq_devi + BIT(NL80211_IFTYPE_STATION) | + BIT(NL80211_IFTYPE_ADHOC) | + BIT(NL80211_IFTYPE_AP); +- ieee->queues = 1; ++ ieee->queues = 4; + + /* We base signal quality on winlevel approach of previous driver + * TODO OW 20100615 This should into a common init code +--- a/usb.c ++++ b/usb.c +@@ -1624,7 +1624,7 @@ acxusb_probe(struct usb_interface *intf, + */ + ieee->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) + | BIT(NL80211_IFTYPE_ADHOC); +- ieee->queues = 1; ++ ieee->queues = 4; + // OW TODO Check if RTS/CTS threshold can be included here + + // We base signal quality on winlevel approach of previous driver diff --git a/package/kernel/acx-mac80211/patches/200-initial-macaddr.patch b/package/kernel/acx-mac80211/patches/200-initial-macaddr.patch new file mode 100644 index 0000000000..cc82fecbb3 --- /dev/null +++ b/package/kernel/acx-mac80211/patches/200-initial-macaddr.patch @@ -0,0 +1,31 @@ +--- a/cardsetting.c ++++ b/cardsetting.c +@@ -710,12 +710,27 @@ static int acx1xx_get_station_id(acx_dev + u8 stationID[4 + acx_ie_descs[ACX1xx_IE_DOT11_STATION_ID].len]; + const u8 *paddr; + int i, res; ++ const char *prom_addr; ++ char *prom_getenv(const char *name); + + + + res = acx_interrogate(adev, &stationID, ACX1xx_IE_DOT11_STATION_ID); + paddr = &stationID[4]; +- for (i = 0; i < ETH_ALEN; i++) { ++ prom_addr = NULL; ++#ifdef CONFIG_VLYNQ ++ prom_addr = prom_getenv("macwlan"); ++ if (prom_addr == NULL) ++ prom_addr = prom_getenv("mac_ap"); ++#endif ++ if (prom_addr) ++ sscanf(prom_addr, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", adev->dev_addr, ++ adev->dev_addr + 1, ++ adev->dev_addr + 2, ++ adev->dev_addr + 3, ++ adev->dev_addr + 4, ++ adev->dev_addr + 5); ++ else for (i = 0; i < ETH_ALEN; i++) { + /* we copy the MAC address (reversed in the card) to + * the netdevice's MAC address, and on ifup it will be + * copied into iwadev->dev_addr */ |