From cea46cd3a4ff4388e500b6b3325c875bfb626a8f Mon Sep 17 00:00:00 2001 From: juhosg Date: Sun, 14 Feb 2010 12:50:09 +0000 Subject: [PATCH 01/10] kernel: yet another missing config symbol for 2.6.32 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19629 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/generic-2.6/config-2.6.32 | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/generic-2.6/config-2.6.32 b/target/linux/generic-2.6/config-2.6.32 index 19f706115..edd1394e4 100644 --- a/target/linux/generic-2.6/config-2.6.32 +++ b/target/linux/generic-2.6/config-2.6.32 @@ -495,6 +495,7 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # CONFIG_DMA_ENGINE is not set # CONFIG_DMASCC is not set # CONFIG_DMATEST is not set +# CONFIG_DM_LOG_USERSPACE is not set # CONFIG_DNET is not set # CONFIG_DNOTIFY is not set # CONFIG_DRAGONRISE_FF is not set From 833439850e2c3d4dbcf94eecd578ba03343b202b Mon Sep 17 00:00:00 2001 From: jow Date: Sun, 14 Feb 2010 16:40:33 +0000 Subject: [PATCH 02/10] [x86] add missing symbols to default config git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19631 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/x86/config-default | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/linux/x86/config-default b/target/linux/x86/config-default index e05e9f798..884483995 100644 --- a/target/linux/x86/config-default +++ b/target/linux/x86/config-default @@ -177,6 +177,8 @@ # CONFIG_POWER_SUPPLY_DEBUG is not set # CONFIG_PROCESSOR_SELECT is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_RCU_TRACE is not set # CONFIG_RELOCATABLE is not set # CONFIG_RWSEM_GENERIC_SPINLOCK is not set # CONFIG_SBC7240_WDT is not set @@ -230,6 +232,7 @@ # CONFIG_X86_CMPXCHG64 is not set # CONFIG_X86_CPUFREQ_NFORCE2 is not set # CONFIG_X86_CPUID is not set +# CONFIG_X86_CPU_DEBUG is not set # CONFIG_X86_DEBUGCTLMSR is not set # CONFIG_X86_DS is not set # CONFIG_X86_ELAN is not set @@ -242,6 +245,7 @@ # CONFIG_X86_MCE_INJECT is not set # CONFIG_X86_MRST is not set # CONFIG_X86_MSR is not set +# CONFIG_X86_OLD_MCE is not set # CONFIG_X86_P4_CLOCKMOD is not set # CONFIG_X86_PAE is not set # CONFIG_X86_POWERNOW_K6 is not set @@ -450,6 +454,7 @@ CONFIG_PNPACPI=y CONFIG_PNP_DEBUG_MESSAGES=y CONFIG_POWER_SUPPLY=y CONFIG_PROC_PAGE_MONITOR=y +CONFIG_RCU_FANOUT=32 CONFIG_RD_BZIP2=y CONFIG_RD_GZIP=y CONFIG_RTC=y From 14632568daae05e52df5d9b18b18bcd30010fb59 Mon Sep 17 00:00:00 2001 From: kaloz Date: Mon, 15 Feb 2010 09:36:03 +0000 Subject: [PATCH 03/10] ubicom32 isn't supported with binutils 2.18 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19632 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- toolchain/binutils/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/toolchain/binutils/Config.in b/toolchain/binutils/Config.in index 65bc9c980..c9a1eb638 100644 --- a/toolchain/binutils/Config.in +++ b/toolchain/binutils/Config.in @@ -8,6 +8,7 @@ choice Select the version of binutils you wish to use. config BINUTILS_VERSION_2_18 + depends !ubicom32 bool "binutils 2.18" config BINUTILS_VERSION_2_19_1 From 51eeb15390f92a2afe5286acee9348717359bce6 Mon Sep 17 00:00:00 2001 From: kaloz Date: Mon, 15 Feb 2010 11:34:25 +0000 Subject: [PATCH 04/10] fixup the hunks in patch git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19635 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../2.19.1/600-ubicom32_binutils_20090818.patch | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/toolchain/binutils/patches/2.19.1/600-ubicom32_binutils_20090818.patch b/toolchain/binutils/patches/2.19.1/600-ubicom32_binutils_20090818.patch index f95c05dca..f2a70ca86 100644 --- a/toolchain/binutils/patches/2.19.1/600-ubicom32_binutils_20090818.patch +++ b/toolchain/binutils/patches/2.19.1/600-ubicom32_binutils_20090818.patch @@ -5580,22 +5580,22 @@ case EM_XTENSA: return "Tensilica Xtensa Processor"; --- a/config.sub +++ b/config.sub -@@ -283,6 +283,7 @@ case $basic_machine in +@@ -285,6 +285,7 @@ case $basic_machine in | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ | v850 | v850e \ - | ubicom32 \ | we32k \ -@@ -367,6 +368,7 @@ case $basic_machine in + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ +@@ -370,6 +371,7 @@ case $basic_machine in | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ + | ubicom32-* \ | v850-* | v850e-* | vax-* \ - | ubicom32-* \ | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ --- a/configure +++ b/configure @@ -2666,6 +2666,12 @@ case "${target}" in From 29616c3532b380bdba78a5c256eabdce19ed2f82 Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 15 Feb 2010 17:28:52 +0000 Subject: [PATCH 05/10] ath9k: adjust ack timeout workaround patch based on upstream submission git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19638 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/520-ath9k_ack_timeout_workaround.patch | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/package/mac80211/patches/520-ath9k_ack_timeout_workaround.patch b/package/mac80211/patches/520-ath9k_ack_timeout_workaround.patch index 398bec8eb..f489f0ff4 100644 --- a/package/mac80211/patches/520-ath9k_ack_timeout_workaround.patch +++ b/package/mac80211/patches/520-ath9k_ack_timeout_workaround.patch @@ -1,13 +1,19 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1233,6 +1233,11 @@ void ath9k_hw_init_global_settings(struc +@@ -1233,6 +1233,17 @@ void ath9k_hw_init_global_settings(struc /* As defined by IEEE 802.11-2007 17.3.8.6 */ slottime = ah->slottime + 3 * ah->coverage_class; acktimeout = slottime + sifstime; + -+ /* Workaround for a hw issue */ ++ /* ++ * Workaround for early ACK timeouts, add an offset to match the ++ * initval's 64us ack timeout value. ++ * This was initially only meant to work around an issue with delayed ++ * BA frames in some implementations, but it has been found to fix ACK ++ * timeout issues in other cases as well. ++ */ + if (conf->channel && conf->channel->band == IEEE80211_BAND_2GHZ) -+ acktimeout = max(64, acktimeout); ++ acktimeout += 64 - sifstime - ah->slottime; + ath9k_hw_setslottime(ah, slottime); ath9k_hw_set_ack_timeout(ah, acktimeout); From 958c69f1aa8d85dd3d98b934367dfb7b3127391e Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 15 Feb 2010 17:28:56 +0000 Subject: [PATCH 06/10] swconfig: clean up command line parsing The command line parser was unsystematic and it silently ignored many illegal combinations of options. Try to clean that up. Signed-off-by: Martin Mares git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19639 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/swconfig/src/cli.c | 80 +++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 45 deletions(-) diff --git a/package/swconfig/src/cli.c b/package/swconfig/src/cli.c index 23a8e95f9..64d67b2e2 100644 --- a/package/swconfig/src/cli.c +++ b/package/swconfig/src/cli.c @@ -34,9 +34,11 @@ #include "swlib.h" enum { - GET, - SET, - LOAD + CMD_NONE, + CMD_GET, + CMD_SET, + CMD_LOAD, + CMD_HELP, }; static void @@ -124,13 +126,12 @@ int main(int argc, char **argv) struct switch_port *ports; - int cmd = 0; + int cmd = CMD_NONE; char *cdev = NULL; int cport = -1; int cvlan = -1; char *ckey = NULL; char *cvalue = NULL; - int chelp = 0; if(argc < 4) print_usage(); @@ -142,44 +143,36 @@ int main(int argc, char **argv) for(i = 3; i < argc; i++) { - int p; - if (!strcmp(argv[i], "help")) { - chelp = 1; - continue; - } - if( i + 1 >= argc) + char *arg = argv[i]; + if (cmd != CMD_NONE) { print_usage(); - p = atoi(argv[i + 1]); - if (!strcmp(argv[i], "port")) { - cport = p; - } else if (!strcmp(argv[i], "vlan")) { - cvlan = p; - } else if (!strcmp(argv[i], "set")) { - if(argc <= i + 1) - print_usage(); - cmd = SET; - ckey = argv[i + 1]; - if (argc > i + 2) - cvalue = argv[i + 2]; - else - cvalue = NULL; - i++; - } else if (!strcmp(argv[i], "get")) { - cmd = GET; - ckey = argv[i + 1]; - } else if (!strcmp(argv[i], "load")) { + } else if (!strcmp(arg, "port") && i+1 < argc) { + cport = atoi(argv[++i]); + } else if (!strcmp(arg, "vlan") && i+1 < argc) { + cvlan = atoi(argv[++i]); + } else if (!strcmp(arg, "help")) { + cmd = CMD_HELP; + } else if (!strcmp(arg, "set") && i+1 < argc) { + cmd = CMD_SET; + ckey = argv[++i]; + if (i+1 < argc) + cvalue = argv[++i]; + } else if (!strcmp(arg, "get") && i+1 < argc) { + cmd = CMD_GET; + ckey = argv[++i]; + } else if (!strcmp(arg, "load") && i+1 < argc) { if ((cport >= 0) || (cvlan >= 0)) print_usage(); - - ckey = argv[i + 1]; - cmd = LOAD; + cmd = CMD_LOAD; + ckey = argv[++i]; } else { print_usage(); } - i++; } - if(cport > -1 && cvlan > -1) + if (cmd == CMD_NONE) + print_usage(); + if (cport > -1 && cvlan > -1) print_usage(); dev = swlib_connect(cdev); @@ -192,13 +185,7 @@ int main(int argc, char **argv) memset(ports, 0, sizeof(struct switch_port) * dev->ports); swlib_scan(dev); - if(chelp) - { - list_attributes(dev); - goto out; - } - - if (cmd != LOAD) { + if (cmd == CMD_GET || cmd == CMD_SET) { if(cport > -1) a = swlib_lookup_attr(dev, SWLIB_ATTR_GROUP_PORT, ckey); else if(cvlan > -1) @@ -215,7 +202,7 @@ int main(int argc, char **argv) switch(cmd) { - case SET: + case CMD_SET: if ((a->type != SWITCH_TYPE_NOVAL) && (cvalue == NULL)) print_usage(); @@ -230,7 +217,7 @@ int main(int argc, char **argv) goto out; } break; - case GET: + case CMD_GET: if(cvlan > -1) val.port_vlan = cvlan; if(cport > -1) @@ -259,9 +246,12 @@ int main(int argc, char **argv) break; } break; - case LOAD: + case CMD_LOAD: swconfig_load_uci(dev, ckey); break; + case CMD_HELP: + list_attributes(dev); + break; } out: From 62634962e96a75b9b25e5f676316151efb843bba Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 15 Feb 2010 17:29:00 +0000 Subject: [PATCH 07/10] swconfig: add show command Add a "show" command, which displays all attributes of the selected port, VLAN, or of the whole switch. Signed-off-by: Martin Mares git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19640 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/swconfig/src/cli.c | 89 +++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 1 deletion(-) diff --git a/package/swconfig/src/cli.c b/package/swconfig/src/cli.c index 64d67b2e2..d8d8e512b 100644 --- a/package/swconfig/src/cli.c +++ b/package/swconfig/src/cli.c @@ -39,6 +39,7 @@ enum { CMD_SET, CMD_LOAD, CMD_HELP, + CMD_SHOW, }; static void @@ -81,10 +82,80 @@ list_attributes(struct switch_dev *dev) print_attrs(dev->port_ops); } +static void +print_attr_val(const struct switch_attr *attr, const struct switch_val *val) +{ + int i; + + switch (attr->type) { + case SWITCH_TYPE_INT: + printf("%d", val->value.i); + break; + case SWITCH_TYPE_STRING: + printf("%s", val->value.s); + break; + case SWITCH_TYPE_PORTS: + for(i = 0; i < val->len; i++) { + printf("%d%s ", + val->value.ports[i].id, + (val->value.ports[i].flags & + SWLIB_PORT_FLAG_TAGGED) ? "t" : ""); + } + break; + default: + printf("?unknown-type?"); + } +} + +static void +show_attrs(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val) +{ + while (attr) { + if (attr->type != SWITCH_TYPE_NOVAL) { + printf("\t%s: ", attr->name); + if (swlib_get_attr(dev, attr, val) < 0) + printf("???"); + else + print_attr_val(attr, val); + putchar('\n'); + } + attr = attr->next; + } +} + +static void +show_global(struct switch_dev *dev) +{ + struct switch_val val; + + printf("Global attributes:\n"); + show_attrs(dev, dev->ops, &val); +} + +static void +show_port(struct switch_dev *dev, int port) +{ + struct switch_val val; + + printf("Port %d:\n", port); + val.port_vlan = port; + show_attrs(dev, dev->port_ops, &val); +} + +static void +show_vlan(struct switch_dev *dev, int vlan) +{ + struct switch_val val; + + printf("VLAN %d:\n", vlan); + val.port_vlan = vlan; + show_attrs(dev, dev->vlan_ops, &val); +} + static void print_usage(void) { - printf("swconfig dev [port |vlan ] (help|set |get |load )\n"); + printf("swconfig dev [port |vlan ] (help|set |get |load |show)\n"); exit(1); } @@ -165,6 +236,8 @@ int main(int argc, char **argv) print_usage(); cmd = CMD_LOAD; ckey = argv[++i]; + } else if (!strcmp(arg, "show")) { + cmd = CMD_SHOW; } else { print_usage(); } @@ -252,6 +325,20 @@ int main(int argc, char **argv) case CMD_HELP: list_attributes(dev); break; + case CMD_SHOW: + if (cport >= 0 || cvlan >= 0) { + if (cport >= 0) + show_port(dev, cport); + else + show_vlan(dev, cvlan); + } else { + show_global(dev); + for (i=0; i < dev->ports; i++) + show_port(dev, i); + for (i=0; i < dev->vlans; i++) + show_vlan(dev, i); + } + break; } out: From 8fdfe51f296c8854915b2fbd08f06de62bffe5b6 Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 15 Feb 2010 17:29:04 +0000 Subject: [PATCH 08/10] swconfig: use print_attr_val() in CMD_GET Use the print_attr_val() function introduced by the previous patch to simplify the get command. Signed-off-by: Martin Mares git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19641 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/swconfig/src/cli.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/package/swconfig/src/cli.c b/package/swconfig/src/cli.c index d8d8e512b..d99eda91d 100644 --- a/package/swconfig/src/cli.c +++ b/package/swconfig/src/cli.c @@ -301,23 +301,8 @@ int main(int argc, char **argv) retval = -1; goto out; } - switch(a->type) { - case SWITCH_TYPE_INT: - printf("%d\n", val.value.i); - break; - case SWITCH_TYPE_STRING: - printf("%s\n", val.value.s); - break; - case SWITCH_TYPE_PORTS: - for(i = 0; i < val.len; i++) { - printf("%d%s ", - val.value.ports[i].id, - (val.value.ports[i].flags & - SWLIB_PORT_FLAG_TAGGED) ? "t" : ""); - } - printf("\n"); - break; - } + print_attr_val(a, &val); + putchar('\n'); break; case CMD_LOAD: swconfig_load_uci(dev, ckey); From 74d7ae6816f9add829e977e5b6eaf9c26a1df5da Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 15 Feb 2010 17:29:07 +0000 Subject: [PATCH 09/10] swconfig: add copyright for Martin Mares Signed-off-by: Martin Mares git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19642 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/swconfig/src/cli.c | 1 + 1 file changed, 1 insertion(+) diff --git a/package/swconfig/src/cli.c b/package/swconfig/src/cli.c index d99eda91d..7e77bd2c6 100644 --- a/package/swconfig/src/cli.c +++ b/package/swconfig/src/cli.c @@ -2,6 +2,7 @@ * swconfig.c: Switch configuration utility * * Copyright (C) 2008 Felix Fietkau + * Copyright (C) 2010 Martin Mares * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License From cd02ed524bc4071056dbe2e2817e7a6586bcb979 Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 15 Feb 2010 20:03:18 +0000 Subject: [PATCH 10/10] Add audio feature flag. There are targets which neither have usb host nor pci support but do have audio capabilities. Those targets should expliclitly specifiy that they support audio through the new feature flag. The audio feature flag is also implicitly selected by the usb and pci feature flags. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19643 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/kernel/modules/sound.mk | 2 +- scripts/metadata.pl | 1 + target/Config.in | 5 +++++ target/linux/uml/Makefile | 2 +- target/linux/xburst/Makefile | 4 ++-- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/package/kernel/modules/sound.mk b/package/kernel/modules/sound.mk index 9350dbf34..53f65e5ad 100644 --- a/package/kernel/modules/sound.mk +++ b/package/kernel/modules/sound.mk @@ -10,7 +10,7 @@ SOUND_MENU:=Sound Support define KernelPackage/sound-core SUBMENU:=$(SOUND_MENU) TITLE:=Sound support - DEPENDS:=@PCI_SUPPORT||USB_SUPPORT||TARGET_uml + DEPENDS:=@AUDIO_SUPPORT KCONFIG:= \ CONFIG_SOUND \ CONFIG_SND \ diff --git a/scripts/metadata.pl b/scripts/metadata.pl index 9260a1b24..c963964ba 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -152,6 +152,7 @@ sub target_config_features(@) { while ($_ = shift @_) { /broken/ and $ret .= "\tdepends BROKEN\n"; + /audio/ and $ret .= "\tselect AUDIO_SUPPORT\n"; /display/ and $ret .= "\tselect DISPLAY_SUPPORT\n"; /gpio/ and $ret .= "\tselect GPIO_SUPPORT\n"; /pci/ and $ret .= "\tselect PCI_SUPPORT\n"; diff --git a/target/Config.in b/target/Config.in index f5aa04305..f881245c6 100644 --- a/target/Config.in +++ b/target/Config.in @@ -11,6 +11,9 @@ config LINUX_2_6 config HAS_FPU bool +config AUDIO_SUPPORT + bool + config DISPLAY_SUPPORT bool @@ -18,6 +21,7 @@ config GPIO_SUPPORT bool config PCI_SUPPORT + select AUDIO_SUPPORT bool config PCIE_SUPPORT @@ -27,6 +31,7 @@ config PCMCIA_SUPPORT bool config USB_SUPPORT + select AUDIO_SUPPORT bool config BIG_ENDIAN diff --git a/target/linux/uml/Makefile b/target/linux/uml/Makefile index 5f3181fce..f2d9ce452 100644 --- a/target/linux/uml/Makefile +++ b/target/linux/uml/Makefile @@ -20,7 +20,7 @@ ARCH:=$(shell uname -m | sed \ ) BOARD:=uml BOARDNAME:=User Mode Linux -FEATURES:=ext2 +FEATURES:=ext2 audio LINUX_CONFIG:=$(CURDIR)/config/$(ARCH) LINUX_VERSION:=2.6.30.10 diff --git a/target/linux/xburst/Makefile b/target/linux/xburst/Makefile index 7707c7604..7fdb93ce1 100644 --- a/target/linux/xburst/Makefile +++ b/target/linux/xburst/Makefile @@ -9,9 +9,9 @@ include $(TOPDIR)/rules.mk ARCH:=mipsel BOARD:=xburst BOARDNAME:=XBurst JZ47x0 -FEATURES:=jffs2 tgz ubifs +FEATURES:=jffs2 tgz ubifs audio -LINUX_VERSION:=2.6.32.8 +LINUX_VERSION:=2.6.32.7 DEVICE_TYPE=other