diff options
Diffstat (limited to 'package/kernel/acx-mac80211/patches')
5 files changed, 215 insertions, 0 deletions
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 */ |