summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* mv643xx_eth: fix receive checksummingLennert Buytenhek2008-09-191-6/+4
| | | | | | | | | | | | | We have to explicitly tell the hardware to include the pseudo-header when doing receive checksumming, otherwise hardware checksumming will fail for every received packet and we'll end up setting CHECKSUM_NONE on every received packet. While we're at it, when skb->ip_summed is set to CHECKSUM_UNNECESSARY on received packets, skb->csum is supposed to be undefined, and thus there is no need to set it. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: add support for chips without transmit bandwidth controlLennert Buytenhek2008-09-141-31/+58
| | | | | | | | Add support for mv643xx_eth versions that have no transmit bandwidth control registers at all, such as the ethernet block found in the Marvell 88F6183 ARM SoC. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: avoid reading ->byte_cnt twice during receive processingLennert Buytenhek2008-09-141-2/+5
| | | | | | | | | | Currently, the receive processing reads ->byte_cnt twice (once to update interface statistics and once to properly size the data area of the received skb), but since receive descriptors live in uncached memory, caching this value in a local variable saves one uncached access, and increases routing performance a tiny little bit more. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: shrink default receive and transmit queue sizesLennert Buytenhek2008-09-141-2/+2
| | | | | | | | | | | | | Since the size of the receive queue is directly related to the data cache footprint of the driver (between refilling a receive ring entry with a fresh skb and receiving a packet in that entry, queue_size - 1 other skbs will have been touched), shrink the default receive queue size to a saner number of entries, as 400 is definite overkill for almost all workloads. While we are at it, trim the default transmit queue size a bit as well. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: replace array of skbs awaiting transmit completion with a queueLennert Buytenhek2008-09-141-29/+10
| | | | | | | | | | Get rid of the skb pointer array that we currently use for transmit reclaim, and replace it with an skb queue, to which skbuffs are appended when they are passed to the xmit function, and removed from the front and freed when we do transmit queue reclaim and hit a descriptor with the 'owned by device' bit clear and 'last descriptor' bit set. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: avoid dropping tx lock during transmit reclaimLennert Buytenhek2008-09-141-15/+7
| | | | | | | | | | | | | | By moving DMA unmapping during transmit reclaim back under the netif tx lock, we avoid the situation where we read the DMA address and buffer length from the descriptor under the lock and then not do anything with that data after dropping the lock on platforms where the DMA unmapping routines are all NOPs (which is the case on all ARM platforms that mv643xx_eth is used on at least). This saves two uncached reads, which makes a small but measurable performance difference in routing benchmarks. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: switch to netif tx queue lock, get rid of private spinlockLennert Buytenhek2008-09-141-30/+55
| | | | | | | | | | | | Since our ->hard_start_xmit() method is already called under spinlock protection (the netif tx queue lock), we can simply make that lock cover the private transmit state (descriptor ring indexes et al.) as well, which avoids having to use a private lock to protect that state. Since this was the last user of the driver-private spinlock, it can be killed off. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: move all work to the napi poll handlerLennert Buytenhek2008-09-141-246/+275
| | | | | | | | | Move link status handling, transmit reclaim and TX_END handling from the interrupt handler to the napi poll handler. This allows switching ->lock over to a non-IRQ-safe lock and removes all explicit interrupt disabling from the driver. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: transmit multiqueue supportLennert Buytenhek2008-09-051-22/+18
| | | | | | | | | | | As all the infrastructure for multiple transmit queues already exists in the driver, this patch is entirely trivial. The individual transmit queues are still serialised by the driver's per-port private spinlock, but that will disappear (i.e. be replaced by the per-subqueue ->_xmit_lock) in a subsequent patch. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: delete unused and uninteresting interrupt source mask bitsLennert Buytenhek2008-09-051-11/+6
| | | | | | | | | | | | | | | | | Delete a couple of unused and uninteresting interrupt source mask bits: - The receive resource underrun interrupt sources are uninteresting because if we are in out-of-memory mode, we are already dealing with the issue, and we don't need the hardware to remind us again that we are out of memory. - The LINK and PHY interrupt sources can be coalesced into one define, since we always use them together. - The transmit resource underrun interrupt source can be disabled since we never activate the head descriptor of a paged skb until the fragments are all activated, so transmit underrun during a packet should never happen. - The INT_EXT_TX_0 define is never used. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: get rid of netif_{stop,wake}_queue() calls on link down/upLennert Buytenhek2008-09-051-19/+8
| | | | | | | There is no need to call netif_{stop,wake}_queue() when the link goes down/up, as the networking already takes care of this internally. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: remove force_phy_addr fieldLennert Buytenhek2008-09-0520-28/+28
| | | | | | | | | | | | | | | Currently, there are two different fields in the mv643xx_eth_platform_data struct that together describe the PHY address -- one field (phy_addr) has the address of the PHY, but if that address is zero, a second field (force_phy_addr) needs to be set to distinguish the actual address zero from a zero due to not having filled in the PHY address explicitly (which should mean 'use the default PHY address'). If we are a bit smarter about the encoding of the phy_addr field, we can avoid the need for a second field -- this patch does that. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: smi sharing is a per-unit property, not a per-port oneLennert Buytenhek2008-09-053-12/+15
| | | | | | | | | Which top-level unit's SMI interface to use should be a property of the top-level unit, not of the individual ports. This patch moves the ->shared_smi pointer from the per-port platform data to the global platform data. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: require contiguous receive and transmit queue numberingLennert Buytenhek2008-09-052-82/+47
| | | | | | | Simplify receive and transmit queue handling by requiring the set of queue numbers to be contiguous starting from zero. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: get rid of compile-time configurable transmit checksummingLennert Buytenhek2008-09-051-22/+3
| | | | | | | | | Get rid of the mv643xx_eth-internal MV643XX_ETH_CHECKSUM_OFFLOAD_TX compile-time option. Using transmit checksumming is the sane default, and anyone wanting to disable it should use ethtool(8) instead of recompiling their kernels. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: get rid of receive-side lockingLennert Buytenhek2008-09-051-64/+68
| | | | | | | | | | | By having the receive out-of-memory handling timer schedule the napi poll handler and then doing oom processing from the napi poll handler, all code that touches receive state moves to napi context, letting us get rid of all explicit locking in the receive paths since the only mutual exclusion we need anymore at that point is protection against reentering ourselves, which is provided by napi synchronisation. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: make napi unconditionalLennert Buytenhek2008-09-051-28/+3
| | | | | | | Make napi unconditional on the receive side, so that we can get rid of all the locking and local interrupt disabling in the receive path. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: use the SMI done interrupt to wait for SMI access completionLennert Buytenhek2008-09-051-57/+134
| | | | | | | | | If the platform code has passed us the IRQ number of the mv643xx_eth top-level error interrupt, use the error interrupt to wait for SMI access completion instead of polling the SMI busy bit, since SMI bus accesses can take up to tens of milliseconds. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: switch ->phy_lock from a spinlock to a mutexLennert Buytenhek2008-09-051-16/+7
| | | | | | | | | | | Since commit 81600eea98789da09a32de69ca9d3be8b9503c54 ("mv643xx_eth: use auto phy polling for configuring (R)(G)MII interface"), mv643xx_eth no longer does SMI accesses from interrupt context. The only other callers that do SMI accesses all do them from process context, which means we can switch the PHY lock from a spinlock to a mutex, and get rid of the extra locking in some ethtool methods. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: get rid of modulo operationsLennert Buytenhek2008-09-051-8/+24
| | | | | | | Get rid of the modulo operations that are currently used for computing successive TX/RX descriptor ring indexes. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: get rid of IRQF_SAMPLE_RANDOMLennert Buytenhek2008-09-051-2/+1
| | | | | | | | Using IRQF_SAMPLE_RANDOM for the mv643xx_eth interrupt handler significantly increases interrupt processing overhead, so get rid of it. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: fix receive buffer DMA unmappingLennert Buytenhek2008-09-051-1/+1
| | | | | | | | When tearing down a DMA mapping for a receive buffer, we should pass dma_unmap_single() the exact same address that dma_map_single() gave us when we originally set up the mapping. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* mv643xx_eth: fix 'netdev_priv(dev) == dev->priv' assumptionLennert Buytenhek2008-09-051-1/+1
| | | | Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
* Linux 2.6.27-rc5v2.6.27-rc5Linus Torvalds2008-08-281-1/+1
|
* Merge master.kernel.org:/home/rmk/linux-2.6-armLinus Torvalds2008-08-2841-313/+17518
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] 5226/1: remove unmatched comment end. [ARM] Skip memory holes in FLATMEM when reading /proc/pagetypeinfo [ARM] use bcd2bin/bin2bcd [ARM] use the new byteorder headers [ARM] OMAP: Fix 2430 SMC91x ethernet IRQ [ARM] OMAP: Add and update OMAP default configuration files [ARM] OMAP: Change mailing list for OMAP in MAINTAINERS [ARM] S3C2443: Fix the S3C2443 clock register definitions [ARM] JIVE: Fix the spi bus numbering [ARM] S3C24XX: pwm.c: stop debugging output [ARM] S3C24XX: Fix sparse warnings in pwm.c [ARM] S3C24XX: Fix spare errors in pwm-clock driver [ARM] S3C24XX: Fix sparse warnings in arch/arm/plat-s3c24xx/gpiolib.c [ARM] S3C24XX: Fix nor-simtec driver sparse errors [ARM] 5225/1: zaurus: Register I2C controller for audio codecs [ARM] orion5x: update defconfig to v2.6.27-rc4 [ARM] Orion: register UART1 on QNAP TS-209 and TS-409 [ARM] Orion: activate lm75 driver on DNS-323 [ARM] Orion: fix MAC detection on QNAP TS-209 and TS-409 [ARM] Orion: Fix boot crash on Kurobox Pro
| * [ARM] 5226/1: remove unmatched comment end.Jean-Christophe DUBOIS2008-08-281-1/+1
| | | | | | | | | | | | | | remove unmatched comment end. Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * Merge branch 'omap-rmk'Russell King2008-08-2720-220/+17310
| |\
| | * [ARM] OMAP: Fix 2430 SMC91x ethernet IRQRussell King2008-08-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Taken from omap 97b705ad835f1481270c4b67b402d6e37fa8ad15: ARM: OMAP: Misc compile fixes after syncing with mainline Also fix 2430 smc91x to use IRQ_LOWLEVEL. Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| | * [ARM] OMAP: Add and update OMAP default configuration filesRussell King2008-08-2718-218/+17308
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update omap_h2_1610 and omap_osk_5912 default configurations. Add ams delta, n770, omap 2430sdp, apollon_2420, generic 1510, 1610, 1710, 2420, h4 2420, innovator 1510 and 1610, perseus2 730, palte, palmtt, palmz71 and sx1 default configurations. Pulled out of the omap zoom tree. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| | * [ARM] OMAP: Change mailing list for OMAP in MAINTAINERSDirk Behme2008-08-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | OMAP has now a list at vger. Signed-off-by: Dirk Behme <dirk.behme@gmail.com> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * | [ARM] Skip memory holes in FLATMEM when reading /proc/pagetypeinfoMel Gorman2008-08-272-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ordinarily, memory holes in flatmem still have a valid memmap and is safe to use. However, an architecture (ARM) frees up the memmap backing memory holes on the assumption it is never used. /proc/pagetypeinfo reads the whole range of pages in a zone believing that the memmap is valid and that pfn_valid will return false if it is not. On ARM, freeing the memmap breaks the page->zone linkages even though pfn_valid() returns true and the kernel can oops shortly afterwards due to accessing a bogus struct zone *. This patch lets architectures say when FLATMEM can have holes in the memmap. Rather than an expensive check for valid memory, /proc/pagetypeinfo will confirm that the page linkages are still valid by checking page->zone is still the expected zone. The lookup of page_zone is safe as there is a limited range of memory that is accessed when calling page_zone. Even if page_zone happens to return the correct zone, the impact is that the counters in /proc/pagetypeinfo are slightly off but fragmentation monitoring is unlikely to be relevant on an embedded system. Reported-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Mel Gorman <mel@csn.ul.ie> Tested-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * | [ARM] use bcd2bin/bin2bcdAdrian Bunk2008-08-271-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | This patch changes arm to use the new bcd2bin/bin2bcd functions instead of the obsolete BCD_TO_BIN/BIN_TO_BCD macros. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * | [ARM] use the new byteorder headersHarvey Harrison2008-08-271-14/+11
| | | | | | | | | | | | | | | Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * | Merge branch 'for-rmk' of git://git.marvell.com/orionRussell King2008-08-277-50/+138
| |\ \
| | * | [ARM] orion5x: update defconfig to v2.6.27-rc4Nicolas Pitre2008-08-221-32/+112
| | | | | | | | | | | | | | | | Signed-off-by: Nicolas Pitre <nico@marvell.com>
| | * | [ARM] Orion: register UART1 on QNAP TS-209 and TS-409Martin Michlmayr2008-08-212-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Register UART1 on QNAP TS-209 and TS-409 because the PIC controller is connected to it. This fixes a regression from 2.6.26. Signed-off-by: Martin Michlmayr <tbm@cyrius.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| | * | [ARM] Orion: activate lm75 driver on DNS-323Martin Michlmayr2008-08-212-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The lm75 driver was recently converted to the new-style binding, so now it can be loaded from the DNS-323 support code. Signed-off-by: Martin Michlmayr <tbm@cyrius.com> Tested-by: Tobias Poschwatta <tp@fonz.de> Acked-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| | * | [ARM] Orion: fix MAC detection on QNAP TS-209 and TS-409Martin Michlmayr2008-08-212-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Flash needs to be set up before we can try to read the MAC address from there. Signed-off-by: Martin Michlmayr <tbm@cyrius.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| | * | [ARM] Orion: Fix boot crash on Kurobox ProPer Andersson2008-08-213-4/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Kurobox Pro crashes when any of the PCI controller registers are accessed. This patch adds a function to the Orion PCI handling code that board support code can call to disable enumerating the PCI bus entirely, and makes the Kurobox Pro PCI-related init code call this function. Signed-off-by: Per Andersson <avtobiff@gmail.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
| * | | Merge branch 's3c2410' of git://aeryn.fluff.org.uk/bjdooks/linux.gitRussell King2008-08-266-18/+20
| |\ \ \
| | * | | [ARM] S3C2443: Fix the S3C2443 clock register definitionsWei Shuai2008-08-261-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the S3C2443 clock register definitions for selecting the EPLL reference clock described by S3C2443_CLKSRC_EPLLREF. Signed-off-by: Wei Shuai <cpuwolf@gmail.com> [ben-linux@fluff.org: minor description fixes] Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| | * | | [ARM] JIVE: Fix the spi bus numberingBen Dooks2008-08-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The first spi bus is registered with number 0, but the board data says that the device on it is registered on bus 1. Move the spi bus to bus 1 to keep the compatibility with the original board-support patches. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| | * | | [ARM] S3C24XX: pwm.c: stop debugging outputBen Dooks2008-08-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move debugging output to dev_dbg() instead of dev_info(). Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| | * | | [ARM] S3C24XX: Fix sparse warnings in pwm.cBen Dooks2008-08-261-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the following sparse warnings in arch/arm/plat-s3c24xx/pwm.c: warning: symbol 's3c_device_timer' was not declared. Should it be static? warning: symbol 'pwm_calc_tin' was not declared. Should it be static? Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| | * | | [ARM] S3C24XX: Fix spare errors in pwm-clock driverBen Dooks2008-08-261-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the following sparse warnings in arch/arm/plat-s3c24xx/pwm-clock.c: warning: symbol 'clk_timer_scaler' was not declared. Should it be static? warning: symbol 'clk_timer_tclk' was not declared. Should it be static? warning: symbol 'clk_timer_tdiv' was not declared. Should it be static? Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| | * | | [ARM] S3C24XX: Fix sparse warnings in arch/arm/plat-s3c24xx/gpiolib.cBen Dooks2008-08-261-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the following problems spotted by sparse: warning: symbol 's3c24xx_gpiolib_input' was not declared. Should it be static? warning: symbol 's3c24xx_gpiolib_output' was not declared. Should it be static? warning: symbol 's3c24xx_gpiolib_set' was not declared. Should it be static? warning: symbol 's3c24xx_gpiolib_get' was not declared. Should it be static? warning: symbol 'gpios' was not declared. Should it be static? Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| | * | | [ARM] S3C24XX: Fix nor-simtec driver sparse errorsBen Dooks2008-08-261-1/+2
| | | |/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the following sparse errors in arch/arm/mach-s3c2410/nor-simtec.c: 53:27: warning: symbol 'simtec_nor_pdata' was not declared. Should it be static? 77:13: warning: symbol 'nor_simtec_init' was not declared. Should it be static? Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * | | [ARM] 5225/1: zaurus: Register I2C controller for audio codecsMark Brown2008-08-263-0/+6
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | corgi, spitz and poodle have audio codecs on their primary I2C bus so need to call pxa_set_i2c_info() to set it up during init. Tested on spitz by Stanislav. Reported-by: Stanislav Brabec <utx@penguin.cz> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | | Merge branch 'for-linus' of ↵Linus Torvalds2008-08-28217-197/+200
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: Blackfin arch: Fix PM building on BF52x: No ROTWE on BF52x, add USBWE Blackfin arch: sram: use 'unsigned long' for irqflags Blackfin arch: let PCI depend on BROKEN Blackfin arch: move include/asm-blackfin header files to arch/blackfin Blackfin arch: fix bug - MPU crashes under stress Blackfin arch: Fix bug - when to rmmod the L1_module, it stucks and then reboot the board. Blackfin arch: dont actually need to muck with EMAC_SYSTAT for BF52x for demuxing Blackfin arch: Add MTD Partitions for MTD_DATAFLASH, increase max SPI SCLK
| * | | Blackfin arch: Fix PM building on BF52x: No ROTWE on BF52x, add USBWEMichael Hennerich2008-08-282-98/+89
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
OpenPOWER on IntegriCloud