aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/files/drivers
Commit message (Collapse)AuthorAgeFilesLines
* ar71xx: return limit as number of processed frames when re-scheduling NAPI pollFelix Fietkau2015-06-141-1/+1
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@45971 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: generalize cybertan partition parserJohn Crispin2015-03-111-6/+0
| | | | | | | | | | By removing the NL16 signature check, the parser can be utilized by other devices like the WD My Net Wi-fi Range Extender. Signed-off-by: Christian Lamparter <chunkeey@googlemail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44664 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: rename wrt160nl's trx partition parserJohn Crispin2015-03-111-18/+18
| | | | | | | | | This patch renames the partition parser from wrt160nl to more generic cybertan. Signed-off-by: Christian Lamparter <chunkeey@googlemail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44663 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: fix gpio-latch driverJohn Crispin2015-03-101-1/+2
| | | | | | | | gpio api has changed. the remove call no longer returns a value. Signed-off-by: John Crispin <blogic@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44650 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: fix mv88e6063 compile for 3.14John Crispin2015-02-151-1/+2
| | | | | | Signed-off-by: John Crispin <blogic@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44459 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: add v3.18 supportJohn Crispin2015-02-152-1/+21
| | | | | | Signed-off-by: John Crispin <blogic@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44456 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: improve ethernet driver cache footprint by removing an unnecessary ↵Felix Fietkau2014-12-093-27/+36
| | | | | | | | pointer Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@43588 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ag71xx: replace delay with sleep callsJohn Crispin2014-12-072-6/+6
| | | | | | | | | | | | I don't see that we're in an atomic context so there's no need to busy-wait. Therefore replace the delay with sleep calls. See also Documentation/timers/timers-howto.txt. It states: "In general, use of mdelay is discouraged and code should be refactored to allow for the use of msleep." Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@43539 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ag71xx: replace fixed PHY reset wait time in ar7240sw_setupJohn Crispin2014-12-071-1/+28
| | | | | | | | | Replace the fixed wait time of 1s with polling for BMCR_RESET to be cleared on all PHYs. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@43538 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ack completed tx descriptors only after the full frame has been ↵Felix Fietkau2014-09-101-10/+16
| | | | | | | | completed Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42457 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: re-enable descriptor splitting on ar716x after the previous bugfixes ↵Felix Fietkau2014-09-061-2/+0
| | | | | | | | (#13072) Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42429 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: fix off-by-one error in packet descriptor splitting (patch from #13072)Felix Fietkau2014-09-061-1/+6
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42428 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: on ar716x, split ethernet packets in 512 byte chunks instead of 256 ↵Felix Fietkau2014-09-061-1/+1
| | | | | | | | (improves performance) (patch from #13072) Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42427 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: disable ethernet descriptor splitting for now, as it seems to cause ↵Felix Fietkau2014-08-301-0/+2
| | | | | | | | tx hangs in some setups Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42333 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: split packets into multiple descriptors on ar716xFelix Fietkau2014-08-293-28/+105
| | | | | | | | | | | This improves performance when doing concurrent rx/tx on a single ethernet MAC, e.g. when routing between VLANs. Fixes #13072 Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42328 3c298f89-4303-0410-b956-a3cf2f4a3e73
* kernel: modify mtd related patches for 3.14Hauke Mehrtens2014-05-082-2/+6
| | | | | | | | | | | | | The change is the same as ("kernel/generic: modify mtd related patches"). Since these files are under files directory, not a files directory of specific kernel version, better to also change them. So it will avoid adding files to future specific files directory (e.g. files-3.14) for this mtd related change. Signed-off-by: Zhao, Gang <gamerh2o@gmail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@40732 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: rb91x-nand: rewrite to use GPIO APIGabor Juhos2014-02-231-114/+136
| | | | | | | | | Rewrite tha rb91x-nand driver to use GPIO API to modify the NAND control lines. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39700 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: add a generic GPIO latch driverGabor Juhos2014-02-221-0/+219
| | | | | | | | It will be used for the Mikrotik boards. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39697 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: increase calculated max frame length valueGabor Juhos2014-01-111-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The r39147 commit introduces a regression: at lease on some routers with ar8216 switch large packets get lost if 802.1q tagged port is used on the interface connected to the aforementioned switch. The r39147 changes code in the way so interface is set to accept packets no longer than max ethernet frame length for a given mtu. Unfortunately ar8216 has a feature: it sends two additional bytes as a packet header and those this header needs to be added to the max frame length. Otherwise long enough packets get lost. The problem only manuifests itself if interface is used in vlan tagged mode. If interface is untagged then ar8216's header fits into space used by 802.1q tag and not packets are lost. Include two additional bytes in the max frame length calculation to fix the issue. This patch is tested and works with Trendnet TEW-632BRP. Signed-off-by Nikolay Martynov <mar.kolya@gmail.com> Patchwork: http://patchwork.openwrt.org/patch/4656/ [juhosg: - simplify the patch to include the additional bytes of the switch header unconditionally, - change subject and update commit message] Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39219 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: fix max frame length setup of the built-in switchesGabor Juhos2013-12-201-5/+12
| | | | | | | | | | | | | The currently used bitmask of the maximum frame length field is wrong for both models. On AR724x/AR933x the largest frame size is 2047 bytes, on the AR934x it is 16383 bytes. Make the MTU setup code model specific, and use the correct bitmask for both models. Also change the value to the maximum. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39148 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: calculate max frame len register value from the MTUGabor Juhos2013-12-201-3/+15
| | | | | | | | | | | | | | | Set the MAX_FRAME_LEN register to zero in ag71xx_hw_init() and write the correct value into that from the ag71xx_open() and ag71xx_fast_reset() functions. Also recalculate the RX buffer size based on the actual maximum frame length value to optimize memory allocation. Additionaly, disallow to change the MTU value while the interface it running. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39147 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: add ag71xx_max_frame_len() helperGabor Juhos2013-12-201-2/+8
| | | | | | Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39146 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: get max_frame_len and desc_pktlen_mask from platform dataGabor Juhos2013-12-201-2/+5
| | | | | | | | This will allow to use SoC specific values for both. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39145 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: store descriptor packet length mask in ag71xx structGabor Juhos2013-12-202-7/+5
| | | | | | | | | | | | | | | The currently used bitmask is not correct for all SoCs. Introduce a new field in struct ag71xx and store the bitmask in that. Use the current value for now, it will be adjusted for each SoCs in further patches. Aslo use the new field directly in the ag71xx_rx_packets and ag71xx_hard_start_xmit() functions and remove the ag71xx_desc_pktlen() helper. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39144 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: implement callback in mdio resetGabor Juhos2013-12-171-0/+3
| | | | | | | | | | | This enables us to add fixups to the board specific code for boards that require special treatment of PHYs on mdio bus reset. Signed-off-by: Felix Kaechele <heffer@fedoraproject.org> http://patchwork.openwrt.org/patch/4614/ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39127 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: compute the RX buffer size from the maximum frame sizeGabor Juhos2013-12-172-3/+1
| | | | | | | | | | | | | | | | Currently, the AG71XX_RX_PKT_SIZE value limits the received frame size to 1514/1516 bytes with/without a VLAN header respectively. However the hardware limit is controlled by the value the AG71XX_REG_MAC_MFL register which contains the value of the max_frame_len field. Compute the RX buffer size from the max_frame_len field to get rid of the 1514/1516 byte limitation. Also remove the unused AG71XX_RX_PKT_SIZE definition. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39121 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: store RX buffer size in the ag71xx structGabor Juhos2013-12-172-6/+8
| | | | | | | | This allows to change the value dynamically. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39120 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: store maximum frame length in the ag71xx structGabor Juhos2013-12-172-2/+8
| | | | | | | | | This will allow to use different values for the different SoCs. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39117 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: use mdio bus name in ar7240_probe messagesGabor Juhos2013-12-171-4/+4
| | | | | | | | | | | | | | | The ar7240_probe function uses the network device name in the kernel log messages, however the name is not yet initialized when the ar7240_probe function is called. Use the mdio bus name in the messages to avoid ugly log lines like the following one: eth%d: Found an AR7240/AR9330 built-in switch Reported-by: Ronald Wahl <ronald.wahl@raritan.com> Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39116 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ag71xx: ag71xx: use device name for debugfs entryGabor Juhos2013-12-171-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | The ag71xx debugfs code uses the network device name for the device specific debugfs directory. Since r38689 'ar71xx: ag71xx: fix a race involving netdev registration' the debugfs initialization happens before the ethernet device gets registered and the network device name contains 'eth%d' at this point. If the board setup code registers multiple ag71xx devices, the debugfs code tries to create the device specific dir with the same name which causes an error like this: eth0: Atheros AG71xx at 0xba000000, irq 5, mode:GMII ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.1:04 [uid=004dd041, driver=Generic PHY] ag71xx: probe of ag71xx.0 failed with error -12 Use the device name for the debugfs directory to avoid the collisions. Also add an error message and change the return code if the debugfs_create_dir call fails. Reported-by: Ronald Wahl <ronald.wahl@raritan.com> Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39115 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: add NAND driver for the Mikrotik RB91x boardsGabor Juhos2013-12-161-0/+355
| | | | | | Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39097 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: fix ag71xx_probe error pathGabor Juhos2013-11-111-1/+3
| | | | | | | Signed-off-by: Catalin Patulea <cat@vv.carleton.ca> Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38716 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: fix a race involving netdev registrationGabor Juhos2013-11-082-23/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In particular, phy_connect before register_netdev. This is because register_netdev runs the netdev notifiers, which can race with the rest of the initialization in ag71xx_probe. In my case this manifested in two ways: 1) If ag71xx is compiled as a module and inserted after netifd has started, netifd is notified by register_netdev before the call to ag71xx_phy_connect. netifd tries to bring the interface up, which calls ag71xx_open, which in turn enters ag71xx_phy_start. This keys off ag->phy_dev (which is still NULL) and thinks this is a fixed-link board, and enters ag71xx_link_adjust. This looks at ag->speed which is not yet initialized and hits the BUG() in the switch (ag->speed) in ag71xx_link_adjust. This is the wrong code path for ag71xx_phy_start - my board has PHYs that need to be brought up with phy_start. Doing ag71xx_phy_connect before register_netdev ensures that ag->phy_dev is non-NULL before ag71xx_phy_start is ever called. 2) When ag71xx is built into the kernel, and netconsole is enabled, there is a gap in the initial burst of replayed printks right after the netdev comes up. My assumption is that netconsole is also triggered by a netdev notifier, and part of this printk burst happens before the call into ag71xx_phy_connect, so part of the burst is lost while the PHY comes up. This patch fixes the gap - all the printks before eth0 comes up are bursted in full when netconsole initializes. ag71xx_phy_connect_xxx no longer runs with a registered netdev, so the logging has been adjusted accordingly to avoid "unregistered net_device" or "eth%d" messages in dmesg. Signed-off-by: Catalin Patulea <cat@vv.carleton.ca> Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38689 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ar934x-nfc: disable subpage write when hardware ECC is usedGabor Juhos2013-09-271-0/+6
| | | | | | | | It is not supported by the controller. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38234 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: use netgear prefix for WNDR3700 LED namesGabor Juhos2013-09-211-1/+1
| | | | | | Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38098 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ar934x_nfc: add experimental support for hardware ECCGabor Juhos2013-09-191-2/+339
| | | | | | Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38069 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ar934x_nfc: return error code from some low-level functionsGabor Juhos2013-09-191-10/+18
| | | | | | | | | | Change some flow-level unctions to return with an error code in order to be able to report errors to the core code. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38068 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ar934x_nfc: use devm_* functionsGabor Juhos2013-09-191-15/+6
| | | | | | Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38067 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ethernet: reduce tx dma ring size further to improve cache footprintFelix Fietkau2013-08-131-2/+2
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37765 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ethernet: reduce tx and rx DMA ring size to improve cache footprintFelix Fietkau2013-08-121-2/+2
| | | | | | | | 256 entries is a bit excessive, even for gigabit speeds Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37762 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ethernet: cache skb->len in the tx function to avoid accessing it ↵Felix Fietkau2013-08-122-5/+10
| | | | | | | | | | again in completion Improves ethernet performance, especially during bridging Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37761 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: fix typoFelix Fietkau2013-08-121-1/+1
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37759 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ethernet: skip calls to netdev_completed_queue and netif_wake_queue ↵Felix Fietkau2013-08-121-0/+3
| | | | | | | | if no tx cleanup was done Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37758 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ethernet: do not update the unused dev->last_rx fieldFelix Fietkau2013-08-121-1/+0
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37757 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: add missing return statement in ethernet mtu change opFelix Fietkau2013-08-121-0/+1
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37756 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: allow mtu > 1500 based on the configured tx/rx mtu register valueFelix Fietkau2013-08-101-1/+10
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37748 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: add linux 3.10Felix Fietkau2013-07-091-1/+1
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37214 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: remove __dev{init,exit} annotations from kernel filesGabor Juhos2013-02-1912-33/+33
| | | | | | Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35687 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: allow unknown multicast frames to pass to the CPU on AR934xFelix Fietkau2013-02-111-2/+4
| | | | git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35564 3c298f89-4303-0410-b956-a3cf2f4a3e73
* ar71xx: ag71xx: show PHY interface mode in dmesgGabor Juhos2012-12-251-2/+24
| | | | | | Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34880 3c298f89-4303-0410-b956-a3cf2f4a3e73