Gabor Juhos [Tue, 8 Jun 2010 20:18:34 +0000 (20:18 +0000)]
ip17xx: Maintain state->remove_tag incrementally
So far, state->remove_tag was sometimes updated incrementally, sometimes
left to correct_vlan_state() to recalculate. Since I want to avoid use of
correct_vlan_state() for IP175D, this patch fixes the only two remaining
places which leave state->remove_tag inconsistent with state->add_tag
and it drops the recalculation.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21717
Gabor Juhos [Tue, 8 Jun 2010 20:18:30 +0000 (20:18 +0000)]
ip17xx: Initialize VLAN state upon reset
Let VLAN state variables be initialized not only when the enable VLAN bit
is toggled, but also upon reset.
At this point, this should be a no-op, since the driver reads the current
hardware state before doing any modifications anyway, but I plan to keep
some state locally in the subsequent patches.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21716
Gabor Juhos [Tue, 8 Jun 2010 20:18:25 +0000 (20:18 +0000)]
ip17xx: Introduce vlan array
Replace vlan_ports array in struct ip175c_state by an array of structures.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21715
Gabor Juhos [Tue, 8 Jun 2010 20:18:20 +0000 (20:18 +0000)]
ip17xx: Introduce indirection of low-level operations
This patch introduces seperation between low-level and high-level parts
of the driver. The low-level functions are now called via pointers stored
in struct ip175c_regs.
The only functional changes are:
o correct_vlan_state() is now called as a part of every update_state().
o The order of setting of MODE_REG and resetting switch ports
has changed. (These are independent actions, so it should not matter.)
o ip175c_set_tagged() sets the tags via update_state() instead of writing
directly to the registers.
o The same for ip175c_set_pvid().
The only gaps in this abstraction are operations on ports (get_port_speed
and friends), which access PHY registers directly.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21714
Gabor Juhos [Tue, 8 Jun 2010 20:18:15 +0000 (20:18 +0000)]
ip17xx: Fix use of MODE_VAL
The value written to MODE_REG in ip175c_reset() should be obviously MODE_VAL,
not RESET_VAL. Actually, this change is a NOP, because in the only case where
the MODE_REG is used, the two values are identical, but it makes the code
more readable.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21713
Gabor Juhos [Tue, 8 Jun 2010 20:18:10 +0000 (20:18 +0000)]
ip17xx: Fix indentation in get_state() and update_state()
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21712
Gabor Juhos [Tue, 8 Jun 2010 20:18:05 +0000 (20:18 +0000)]
ip17xx: Fixed error handling in ip175c_set_val()
Upon error, ip175c_set_val() returned 0 instead of -EINVAL.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21711
Gabor Juhos [Tue, 8 Jun 2010 20:18:00 +0000 (20:18 +0000)]
ip17xx: Cosmetic cleanups
Trying to unify capitalization and formatting of comments. Writing of periods
at the end of comments is however still inconsistent.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21710
Gabor Juhos [Tue, 8 Jun 2010 20:17:55 +0000 (20:17 +0000)]
ip17xx: Consolidate operations with PHY registers
Call mdiobus_{read,write} instead of duplicating their code.
Introduce ip_phy_write_masked(), which changes a part of a register. Will
be used later in this patch series. Please note that it does not hold any
lock between reading and writing, so it is up to the caller to serialize.
Also add DUMP_MII_IO, which enables logging of all MII accesses.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21709
Gabor Juhos [Tue, 8 Jun 2010 20:17:03 +0000 (20:17 +0000)]
swconfig: Fix a bug in use of SWITCH_PORT_FLAG_TAGGED
SWITCH_PORT_FLAG_TAGGED is a bit index, not a bit mask.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21708
Alexandros C. Couloumbis [Tue, 8 Jun 2010 16:58:06 +0000 (16:58 +0000)]
brcm47xx: add kernel 2.6.35 preliminary support
SVN-Revision: 21707
Alexandros C. Couloumbis [Tue, 8 Jun 2010 16:44:42 +0000 (16:44 +0000)]
generic-2.6: fix mini_fo 2.6.35 kernel issue
SVN-Revision: 21706
Alexandros C. Couloumbis [Tue, 8 Jun 2010 16:19:34 +0000 (16:19 +0000)]
fix a typo on commit r21704
SVN-Revision: 21705
Alexandros C. Couloumbis [Tue, 8 Jun 2010 16:13:37 +0000 (16:13 +0000)]
generic-2.6: generic: add missing config symbols for 2.6.35
SVN-Revision: 21704
Alexandros C. Couloumbis [Tue, 8 Jun 2010 15:01:35 +0000 (15:01 +0000)]
atheros: add kernel 2.6.35 preliminary support
SVN-Revision: 21703
Florian Fainelli [Mon, 7 Jun 2010 11:26:32 +0000 (11:26 +0000)]
move broadcom-shdc from trunk to packages/utils
SVN-Revision: 21702
Jo-Philipp Wich [Mon, 7 Jun 2010 10:47:20 +0000 (10:47 +0000)]
kernel: ensure that IMQ is autoloaded after ip_queue, fixes disappearing traffic when using qos rules
SVN-Revision: 21700
Gabor Juhos [Mon, 7 Jun 2010 09:18:18 +0000 (09:18 +0000)]
generic: add missing config symbol for 2.6.34
SVN-Revision: 21699
Gabor Juhos [Mon, 7 Jun 2010 09:18:13 +0000 (09:18 +0000)]
ar71xx: fix 2.6.34 build errors
SVN-Revision: 21698
Gabor Juhos [Mon, 7 Jun 2010 09:17:34 +0000 (09:17 +0000)]
ar71xx: add missing 2.6.34 config symbol
SVN-Revision: 21697
Alexandros C. Couloumbis [Mon, 7 Jun 2010 05:56:49 +0000 (05:56 +0000)]
generic-2.6: add kernel 2.6.35 preliminary support (patches)
SVN-Revision: 21696
Alexandros C. Couloumbis [Mon, 7 Jun 2010 05:54:29 +0000 (05:54 +0000)]
generic-2.6: add kernel 2.6.35 preliminary support
SVN-Revision: 21695
Alexandros C. Couloumbis [Sun, 6 Jun 2010 21:16:31 +0000 (21:16 +0000)]
refresh kernel patches
SVN-Revision: 21694
Alexandros C. Couloumbis [Sun, 6 Jun 2010 19:34:41 +0000 (19:34 +0000)]
add 2.6.35 support
SVN-Revision: 21693
Florian Fainelli [Sun, 6 Jun 2010 19:17:01 +0000 (19:17 +0000)]
generate NA and non-NA images for Titan platforms
SVN-Revision: 21692
Florian Fainelli [Sun, 6 Jun 2010 19:16:55 +0000 (19:16 +0000)]
add Titan MTD partitionning support (#6632)
SVN-Revision: 21691
Florian Fainelli [Sun, 6 Jun 2010 19:16:49 +0000 (19:16 +0000)]
titan board also have CYWL as a product id
SVN-Revision: 21690
Florian Fainelli [Sun, 6 Jun 2010 19:16:43 +0000 (19:16 +0000)]
add mktitanimg to create Titan (AR7-based) images (#6632)
SVN-Revision: 21689
Florian Fainelli [Sun, 6 Jun 2010 19:02:30 +0000 (19:02 +0000)]
do not override kmod-usb-storage-extras Kconfig symbols (#7285)
SVN-Revision: 21688
Florian Fainelli [Sun, 6 Jun 2010 19:02:22 +0000 (19:02 +0000)]
update openssl to 0.9.8o (#7428)
SVN-Revision: 21687
Gabor Juhos [Sun, 6 Jun 2010 17:41:39 +0000 (17:41 +0000)]
ar71xx: build firmware images if Minimal profile is selected
SVN-Revision: 21684
Gabor Juhos [Sun, 6 Jun 2010 17:41:34 +0000 (17:41 +0000)]
ar71xx: rename Minimal profile
SVN-Revision: 21683
Hauke Mehrtens [Sun, 6 Jun 2010 10:51:52 +0000 (10:51 +0000)]
orion: Update Orion in trunk to kernel 2.6.34.
Was flashed on WRT350Nv2, booted and is running for several days.
Closes #7405
Thank you maddes for your patch.
SVN-Revision: 21682
Gabor Juhos [Sat, 5 Jun 2010 18:26:45 +0000 (18:26 +0000)]
generic: update mips multimachine patch
SVN-Revision: 21681
Gabor Juhos [Sat, 5 Jun 2010 18:26:40 +0000 (18:26 +0000)]
adm5120: convert to use the new mips multimachine stuff
SVN-Revision: 21680
Felix Fietkau [Sat, 5 Jun 2010 11:55:49 +0000 (11:55 +0000)]
ar71xx: clarify the nand subtarget a bit
SVN-Revision: 21679
Gabor Juhos [Fri, 4 Jun 2010 19:09:52 +0000 (19:09 +0000)]
generic: merge mips multi machine update to generic patches for 2.6.34
SVN-Revision: 21675
Gabor Juhos [Fri, 4 Jun 2010 19:09:49 +0000 (19:09 +0000)]
generic: merge mips multi machine update to generic patches for 2.6.33
SVN-Revision: 21674
Gabor Juhos [Fri, 4 Jun 2010 19:09:46 +0000 (19:09 +0000)]
generic: merge mips multi machine update to generic patches for 2.6.32
SVN-Revision: 21673
Gabor Juhos [Fri, 4 Jun 2010 19:09:43 +0000 (19:09 +0000)]
adm5120: don't use linux/autoconf.h
SVN-Revision: 21672
Gabor Juhos [Fri, 4 Jun 2010 19:09:39 +0000 (19:09 +0000)]
adm5120: fix build error on 2.6.34
SVN-Revision: 21671
Claudio Mignanti [Thu, 3 Jun 2010 09:52:34 +0000 (09:52 +0000)]
Force usb features, fix depends
SVN-Revision: 21664
Felix Fietkau [Thu, 3 Jun 2010 00:44:49 +0000 (00:44 +0000)]
libelf: get rid of CRLF encoding in the makefile (thx, danimo)
SVN-Revision: 21663
Jo-Philipp Wich [Wed, 2 Jun 2010 20:21:41 +0000 (20:21 +0000)]
base-files: introduce option "broadcast" for proto=dhcp interface to enable the broadcast flag in DHCP requests, required by certain providers
SVN-Revision: 21661
Florian Fainelli [Wed, 2 Jun 2010 19:47:41 +0000 (19:47 +0000)]
fix eglibc INET_ANL option selection
SVN-Revision: 21660
Jo-Philipp Wich [Wed, 2 Jun 2010 17:18:38 +0000 (17:18 +0000)]
base-files: remove IPv6 LL addr from interfaces before adding them to a bridge
SVN-Revision: 21659
Felix Fietkau [Wed, 2 Jun 2010 01:12:16 +0000 (01:12 +0000)]
mac80211: reduce the size of the debugfs code
SVN-Revision: 21657
Jo-Philipp Wich [Wed, 2 Jun 2010 00:59:35 +0000 (00:59 +0000)]
firewall: - support alias ifnames different from parent ifname - properly handle multiple subnets per alias (v4+v6)
SVN-Revision: 21656
Jo-Philipp Wich [Wed, 2 Jun 2010 00:22:13 +0000 (00:22 +0000)]
base-files: - add aliases to device by default (not ifname) - introduce option "layer" to select the target ifname to attach the alias to: - 3 use tun device (tun over bridge over device) fallback to bridge or device - 2 use bridge (bridge over device) fallback to device - 1 use device
SVN-Revision: 21655
Felix Fietkau [Tue, 1 Jun 2010 23:11:43 +0000 (23:11 +0000)]
mac80211: remove the pid rate control algorithm to save a few kbytes
SVN-Revision: 21654
Jo-Philipp Wich [Tue, 1 Jun 2010 21:58:48 +0000 (21:58 +0000)]
firewall: Initial alias interface support. This allows to define zones covering alias interfaces and associated entries like rules and forwardings.
SVN-Revision: 21653
Jo-Philipp Wich [Tue, 1 Jun 2010 21:43:52 +0000 (21:43 +0000)]
base-file: move alias setup to route hotplug, this fixes alias sections for non-static interfaces like ppp, dhcp, 6in4 etc.
SVN-Revision: 21652
Felix Fietkau [Tue, 1 Jun 2010 19:30:32 +0000 (19:30 +0000)]
ath9k: one more queue stop/start fix
SVN-Revision: 21651
Felix Fietkau [Tue, 1 Jun 2010 17:38:01 +0000 (17:38 +0000)]
ath9k: fix queue stopping/starting logic, should slightly reduce RAM usage under load and make throughput more smooth
SVN-Revision: 21650
Felix Fietkau [Tue, 1 Jun 2010 14:41:37 +0000 (14:41 +0000)]
orion: fix lan and wan mac address for wrt530n v2 (patch by maddes from #7113)
SVN-Revision: 21647
Alexandros C. Couloumbis [Tue, 1 Jun 2010 08:49:57 +0000 (08:49 +0000)]
ar71xx: fix rootfs mount issue (closes #7319)
SVN-Revision: 21645
John Crispin [Mon, 31 May 2010 11:57:32 +0000 (11:57 +0000)]
Fix ramips build when CONFIG_RALINK_DEV_GPIO_BUTTONS is not set.
Signed-off-by: Helmut Schaa
SVN-Revision: 21643
Jo-Philipp Wich [Mon, 31 May 2010 01:34:47 +0000 (01:34 +0000)]
firewall: change the order of IPv4/IPv6 address detection, fixes mixed notation v6 improperly detected as v4 address
SVN-Revision: 21642
Jo-Philipp Wich [Mon, 31 May 2010 01:22:36 +0000 (01:22 +0000)]
base-files: don't skip subsequent hotplug rules when doing makedev for tun or tap interfaces - this fixes support for uci managed OpenVPN interfaces and other externally created tuntap devices
SVN-Revision: 21641
Jo-Philipp Wich [Sun, 30 May 2010 23:49:47 +0000 (23:49 +0000)]
firewall: fix support for netranges in redirect and rule sections
SVN-Revision: 21640
Jo-Philipp Wich [Sun, 30 May 2010 18:23:43 +0000 (18:23 +0000)]
base-files: - use add_dns() and remove_dns() for when changing resolv.conf.auto for static or dhcp interfaces - force 0644 permissions when creating resolv.conf.auto, fixes dnsmasq permissions denied problem with pppd interfaces - revert dns servers in /sbin/ifdown - bump package revision
SVN-Revision: 21638
Daniel Dickinson [Sun, 30 May 2010 03:21:22 +0000 (03:21 +0000)]
brcm-2.4: preinit: Renamed failsafe echo scriplet to reflect that it is brcm-specific
SVN-Revision: 21637
Daniel Dickinson [Sun, 30 May 2010 03:21:11 +0000 (03:21 +0000)]
brcm-2.4: preinit: Removed duplicate failsafe switch config file
SVN-Revision: 21636
Daniel Dickinson [Sun, 30 May 2010 03:21:00 +0000 (03:21 +0000)]
ramips: Added preinit scriptlet to set vars based on cpuinfo during preinit_main. This fixes a bug in which the vars were not set due to /proc not being mounted when ramips.sh was sourced
SVN-Revision: 21635
Daniel Dickinson [Sun, 30 May 2010 03:20:49 +0000 (03:20 +0000)]
ar71xx: Added preinit scriptlet to set vars based on cpuinfo during preinit_main. This fixes a bug in which the vars were not set due to /proc not being mounted when ar71xx.sh was sourced
SVN-Revision: 21634
Daniel Dickinson [Sun, 30 May 2010 03:20:38 +0000 (03:20 +0000)]
adm5120: Added preinit script to set vars based on cpuinfo during preinit main; This fixes a bug in which the per-board vars were not set due to cpuinfo not being mounted when the adm5120.sh was run
SVN-Revision: 21633
Daniel Dickinson [Sun, 30 May 2010 03:20:27 +0000 (03:20 +0000)]
adm5120: Fixed name of preinit_iface scriptlet
SVN-Revision: 21632
Daniel Dickinson [Sun, 30 May 2010 02:04:56 +0000 (02:04 +0000)]
brcm63xx: Fixed 96348GW (Tecom Gx00) LED definitions to match reality (vs reference design)
SVN-Revision: 21631
Daniel Dickinson [Sun, 30 May 2010 01:44:37 +0000 (01:44 +0000)]
brcm63xx: Tecom GW6x00 profile: Added hotplug button events and gpio-leds kmods
SVN-Revision: 21630
Daniel Dickinson [Sun, 30 May 2010 01:33:20 +0000 (01:33 +0000)]
brcm63xx: Fixed vlan packet leakage in preinit for known devices with a switch on eth1 (currently only 96348GW - Tecom 6x00)
SVN-Revision: 21629
Daniel Dickinson [Sun, 30 May 2010 01:33:09 +0000 (01:33 +0000)]
brcm63xx: Added preinit reset button module loading for devices known to support it and for which /lib/brcm63xx.sh has the definitions (currently only 96348GW - Tecom 6x00)
SVN-Revision: 21628
Daniel Dickinson [Sun, 30 May 2010 01:32:58 +0000 (01:32 +0000)]
brcm63xx: Added LED code for preinit (/etc/diag.sh) for 96348GW (Tecom 6x00)
SVN-Revision: 21627
Daniel Dickinson [Sun, 30 May 2010 01:32:47 +0000 (01:32 +0000)]
brcm63xx: Added preinit board-type detection (currently only 96348GW - Tecom 6x00)
SVN-Revision: 21626
Hauke Mehrtens [Sat, 29 May 2010 14:32:58 +0000 (14:32 +0000)]
kernel: add missing config symbols.
Thank you Maddes for your patch
This closes #7375.
SVN-Revision: 21623
Hauke Mehrtens [Sat, 29 May 2010 14:31:56 +0000 (14:31 +0000)]
kernel: add lzma support for arm cpu.
This patch appears to be lost beetween 2.6.32 and 2.6.33.
Thank you Maddes for the patch.
This helps making orion work with kernel 2.6.34.
closes #7377.
SVN-Revision: 21622
Felix Fietkau [Sat, 29 May 2010 13:11:48 +0000 (13:11 +0000)]
docs: fix a counting fail
SVN-Revision: 21621
Lars-Peter Clausen [Sat, 29 May 2010 00:12:09 +0000 (00:12 +0000)]
udc: Fix recursive spinlocks
Driver had recursive spinlock locking: 1. jz4740_queue() acquires lock 2. done()
is called in chain:
jz4740_queue()->jz4740_ep0_kick()->jz4740_ep0_in()->write_fifo_ep0()->done() and
it tries to acquire same lock. 3. Deadlock.
Signed-off-by:
Yauhen Kharuzhy <jekhor@gmail.com>
SVN-Revision: 21619
Lars-Peter Clausen [Sat, 29 May 2010 00:09:51 +0000 (00:09 +0000)]
ASoC: Fix and cleaup dma config
SVN-Revision: 21618
Lars-Peter Clausen [Sat, 29 May 2010 00:09:11 +0000 (00:09 +0000)]
core fixes * Mask timer irq on startup * Fix dma width constants * Do not try to ack intc irqs
SVN-Revision: 21617
Jo-Philipp Wich [Sat, 29 May 2010 00:08:07 +0000 (00:08 +0000)]
Rename .trx2 image to openwrt-wrt54g3gv2-vf-squashfs-sysupgrade.bin and openwrt-wrt54g3gv2-vf-squashfs.bin to openwrt-wrt54g3gv2-vf-squashfs-factory.bin
SVN-Revision: 21616
Lars-Peter Clausen [Sat, 29 May 2010 00:06:59 +0000 (00:06 +0000)]
jzcodec: Enable support for S8 format
SVN-Revision: 21615
Lars-Peter Clausen [Sat, 29 May 2010 00:06:19 +0000 (00:06 +0000)]
fb: Fix pseudo palette for non 32bit color depth.
SVN-Revision: 21614
Lars-Peter Clausen [Sat, 29 May 2010 00:05:13 +0000 (00:05 +0000)]
rtc: Put rtc Kconfig entry into the correct section
SVN-Revision: 21613
Jo-Philipp Wich [Fri, 28 May 2010 22:03:30 +0000 (22:03 +0000)]
6in4: - support to automatically determine the local endpoint address from the current IPv4 default gateway - support updating the tunnel endpoint for he.net
SVN-Revision: 21612
Nicolas Thill [Fri, 28 May 2010 20:37:56 +0000 (20:37 +0000)]
toolchain/eglibc: add preliminary support for eglibc-2.12
SVN-Revision: 21611
Nicolas Thill [Fri, 28 May 2010 19:48:25 +0000 (19:48 +0000)]
toolchain/eglibc: update to latest revision for 2.9, 2.10 & 2.11
SVN-Revision: 21610
Felix Fietkau [Fri, 28 May 2010 19:48:21 +0000 (19:48 +0000)]
x86: build fully functional images on Mac OS X, now that grub is fixed
SVN-Revision: 21609
Felix Fietkau [Fri, 28 May 2010 19:48:05 +0000 (19:48 +0000)]
grub: compile fixes for Mac OS X (based on patches by Jukka Ylitalo)
SVN-Revision: 21608
Gabor Juhos [Fri, 28 May 2010 19:45:28 +0000 (19:45 +0000)]
ramips: merge slab patch
SVN-Revision: 21607
Gabor Juhos [Fri, 28 May 2010 19:45:24 +0000 (19:45 +0000)]
ramips: use COMMAND_LINE_SIZE directly
SVN-Revision: 21606
Gabor Juhos [Fri, 28 May 2010 19:45:21 +0000 (19:45 +0000)]
ramips: add missing 2.6.34 config files
SVN-Revision: 21605
Gabor Juhos [Fri, 28 May 2010 19:45:16 +0000 (19:45 +0000)]
ramips: refresh 2.6.34 patches
SVN-Revision: 21604
Gabor Juhos [Fri, 28 May 2010 19:45:10 +0000 (19:45 +0000)]
ramips: sync 2.6.32 config
SVN-Revision: 21603
Nicolas Thill [Fri, 28 May 2010 15:33:44 +0000 (15:33 +0000)]
toolchain/eglibc: allow building eglibc-2.11 with gcc-4.5.x
SVN-Revision: 21601
Nicolas Thill [Fri, 28 May 2010 13:50:47 +0000 (13:50 +0000)]
toolchain/gcc: add support for gcc-4.4.4
SVN-Revision: 21600
Nicolas Thill [Fri, 28 May 2010 12:00:22 +0000 (12:00 +0000)]
toolchain/gcc: add support for gcc-4.3.5
SVN-Revision: 21599
Jo-Philipp Wich [Fri, 28 May 2010 10:52:02 +0000 (10:52 +0000)]
base-files: revert r21595
SVN-Revision: 21597
Jo-Philipp Wich [Fri, 28 May 2010 00:59:19 +0000 (00:59 +0000)]
base-files: bring bridge port iface down before changing the mac (#7111)
SVN-Revision: 21595
Jo-Philipp Wich [Fri, 28 May 2010 00:35:54 +0000 (00:35 +0000)]
base-files: 3g connection interfaces are now called "3g-*" - adjust 10-net hotplug handler to match them
SVN-Revision: 21591
Jo-Philipp Wich [Fri, 28 May 2010 00:30:09 +0000 (00:30 +0000)]
pptp: support interface sections without ifname by implementing scan_pptp()
SVN-Revision: 21590