Jonas Gorski
c674c874b7
ag71xx: close a race between the phy state machine and link state
...
A fast stop/start cycle could leave the ag71xx interrupts and tx engine
disabled when using a phy driver with a fixed link and the start/stop
happens between two phy state machine polls.
Prevent this by always forcing the link down on stop regardless of phy
state and having a phy connected.
SVN-Revision: 28380
2011-10-08 11:37:14 +00:00
Felix Fietkau
1bdf65f580
ar71xx: fix register range check for DMA stuck checks (thx, Frédéric Moulins)
...
SVN-Revision: 28213
2011-09-11 17:44:12 +00:00
Felix Fietkau
12c84f8eeb
ar71xx: add some code to detect DMA stuck conditions on ar7240
...
SVN-Revision: 27975
2011-08-13 22:30:14 +00:00
Felix Fietkau
85ccc74e1b
ar71xx: on ar724x only reset the link status in the restart handler, the fast reset takes care of DMA stuck issues
...
SVN-Revision: 27973
2011-08-13 21:49:46 +00:00
Felix Fietkau
4b75394056
ar71xx: fix ethernet FIFO state corruption on ar7240
...
When starting/stopping DMA sometimes the FIFO state gets corrupted,
leading to wildly fluctuating latencies or packet data corruption.
Fix this by issuing a fast MAC reset as soon as the link is detected
as up. Fixes #9689 , #9405
SVN-Revision: 27896
2011-08-04 17:36:31 +00:00
Felix Fietkau
d2aeca6b6d
ag71xx: fix memory corruption issues on ar7240 on ethernet start/stop
...
When the DMA engine state gets corrupted due to a hardware issues, it
often won't stop rx until a full reset is issued. In that case the hardware
must keep a valid descriptor, otherwise it will write to random places in
system RAM, triggering random crashes. To fix this, keep a dummy descriptor
without a buffer that keeps the DMA engine in a sane state until the reset
is done
SVN-Revision: 27895
2011-08-04 17:36:27 +00:00
Felix Fietkau
500c3a1475
ar71xx: fix MAC/MDIO reset mask handling
...
SVN-Revision: 27894
2011-08-04 17:36:23 +00:00
Felix Fietkau
c7173a211d
ar71xx: reinitialize global switch settings after reset on ar7240
...
SVN-Revision: 27705
2011-07-20 14:39:47 +00:00
Felix Fietkau
ca473833c4
ar71xx: configure address aging on ar7240
...
SVN-Revision: 27704
2011-07-20 14:39:42 +00:00
Felix Fietkau
fefc79f3cb
ar71xx: reset the phy in the ethernet init on ar724x
...
SVN-Revision: 27703
2011-07-20 12:04:34 +00:00
Felix Fietkau
005fe5d1fd
ar71xx: make sure that rx and interrupts are disabled before issuing the hardware reset
...
SVN-Revision: 27702
2011-07-20 12:04:29 +00:00
Felix Fietkau
e7ab000008
ar71xx: increase the delay after the ethernet MAC reset
...
SVN-Revision: 27701
2011-07-20 12:04:25 +00:00
Felix Fietkau
255dcaa3a6
ar71xx: fix an unused variable warning
...
SVN-Revision: 27700
2011-07-20 12:04:20 +00:00
Felix Fietkau
f3d693c0ee
ar71xx: do not reset the hardware on transmit timeout - this would mess up the up the PHY state
...
SVN-Revision: 27568
2011-07-09 06:30:13 +00:00
Felix Fietkau
2806c75c07
ag71xx: keep the rx engine stopped while the link is not up, should hopefully fix stability issues from #9405
...
SVN-Revision: 27567
2011-07-09 06:29:46 +00:00
Gabor Juhos
d98476c6bd
ar71xx: merge 2.6.39 patches
...
Also remove the old UART driver for ar933x.
SVN-Revision: 27314
2011-06-29 08:57:37 +00:00
Gabor Juhos
6627574e57
ar71xx: add 2.6.39 support
...
SVN-Revision: 27310
2011-06-29 08:57:32 +00:00
Gabor Juhos
e6af77a1c8
ar71xx: cleanup AR933X UART driver
...
SVN-Revision: 27222
2011-06-19 13:17:51 +00:00
Gabor Juhos
b7e016ba42
ar71xx: use ar933x_uart.h in the AR933X serial driver
...
SVN-Revision: 27166
2011-06-13 08:12:40 +00:00
Gabor Juhos
13363d9129
ar71xx: setup wdt_clock for AR913X to avoid a kernel bug
...
Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@gmail.com>
SVN-Revision: 27102
2011-06-04 12:30:10 +00:00
Felix Fietkau
31dd60689e
Revert "ar71xx: only enable the rx engine after the link is up..."
...
It messes up the DMA state when the link goes down
SVN-Revision: 27088
2011-06-01 18:15:43 +00:00
Gabor Juhos
b460bc6f12
ar71xx: add serial driver for the AR933X UART
...
SVN-Revision: 27065
2011-05-31 22:53:40 +00:00
Gabor Juhos
88c45e3130
ar71xx: the watchdog uses the reference clock on the AR933x SoCs
...
SVN-Revision: 27060
2011-05-31 22:53:34 +00:00
Gabor Juhos
0677e16248
ar71xx: Fix header offset for newer WRT160NL models
...
Newer WRT160NLs have a flash chip with 4K erase blocks instead of 64K,
resulting in miscalculated partition sizes.
Since the actual sizes did not change, hardcode them to their current
sizes, and make sure they are at least one erase block big (in case Cisco
decides to start to use chips with 128K erase blocks).
Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@gmail.com>
SVN-Revision: 27049
2011-05-31 22:53:20 +00:00
Gabor Juhos
60d5abbc27
ar71xx: ag71xx: make ring sizes configurable via ethtool
...
SVN-Revision: 27041
2011-05-31 22:53:10 +00:00
Gabor Juhos
7a2651f633
ar71xx: ag71xx: prepare to make ring sizes configurable
...
SVN-Revision: 27040
2011-05-31 22:53:09 +00:00
Gabor Juhos
669aba3871
ar71xx: ag71xx: nuke unused AG71XX_TX_FIFO_LEN define
...
Reported-by: Dave Täht <dave.taht@gmail.com>
SVN-Revision: 27039
2011-05-31 22:53:07 +00:00
Felix Fietkau
2b5402d128
ar71xx: only enable the rx engine after the link is up, fixes a race condition that got rx stuck when the interface is brought up during lots of inbound traffic (thx, matteo)
...
SVN-Revision: 27035
2011-05-30 23:08:01 +00:00
Felix Fietkau
0ebc93831f
ar71xx: disable flow control for ar724x, it can get stuck in a loop of continously sending MAC pause frames
...
SVN-Revision: 27034
2011-05-30 23:07:57 +00:00
Matteo Croce
4deecea26b
ar71xx: detect link on LAN ports
...
SVN-Revision: 26922
2011-05-17 11:12:56 +00:00
Matteo Croce
c0c2e18452
use correct macros and frame size in ag71xx
...
SVN-Revision: 26890
2011-05-14 23:10:06 +00:00
Gabor Juhos
5d77f370d6
ar71xx: ag71xx: make switch register access atomic
...
Reading of the PHY registers occasionally returns with bogus values
under heavy load. This misleads the PHY driver and thus causes false
link/speed change notifications which leads to performance loss.
This is easily noticable during an iperf session:
...
[ 3] 52.0-53.0 sec 11.3 MBytes 94.4 Mbits/sec
[ 3] 53.0-54.0 sec 11.4 MBytes 95.4 Mbits/sec
eth1: link down
br-lan: port 2(eth1) entering forwarding state
eth1: link up (100Mbps/Full duplex)
br-lan: port 2(eth1) entering forwarding state
br-lan: port 2(eth1) entering forwarding state
[ 3] 54.0-55.0 sec 6.75 MBytes 56.6 Mbits/sec
[ 3] 55.0-56.0 sec 0.00 Bytes 0.00 bits/sec
[ 3] 56.0-57.0 sec 10.5 MBytes 88.1 Mbits/sec
...
[ 3] 169.0-170.0 sec 11.4 MBytes 95.4 Mbits/sec
[ 3] 170.0-171.0 sec 11.4 MBytes 95.4 Mbits/sec
eth1: link up (10Mbps/Half duplex)
[ 3] 171.0-172.0 sec 7.63 MBytes 64.0 Mbits/sec
[ 3] 172.0-173.0 sec 9.38 MBytes 78.6 Mbits/sec
eth1: link up (100Mbps/Full duplex)
[ 3] 173.0-174.0 sec 11.3 MBytes 94.4 Mbits/sec
[ 3] 174.0-175.0 sec 11.4 MBytes 95.4 Mbits/sec
SVN-Revision: 26856
2011-05-08 16:32:53 +00:00
Gabor Juhos
3711658281
ar71xx: ag71xx: fix section mismatch warnings
...
The function __devinit ag71xx_probe() references
a function __devexit ag71xx_phy_disconnect().
This is often seen when error handling in the init function
uses functionality in the exit path.
The fix is often to remove the __devexit annotation of
ag71xx_phy_disconnect() so it may be used outside an exit section.
The function ag71xx_phy_disconnect() references a function in an exit
section.
Often the function ag71xx_ar7240_cleanup() has valid usage outside the
exit section
and the fix is to remove the __devexit annotation of
ag71xx_ar7240_cleanup.
SVN-Revision: 26855
2011-05-08 13:30:36 +00:00
Gabor Juhos
ef53029870
ar71xx: ag71xx: fix build error if debugfs is enabled
...
SVN-Revision: 26854
2011-05-08 13:30:26 +00:00
Gabor Juhos
8b67d748cb
ar71xx: ag71xx: add debugfs entry for [rt]x_ring
...
SVN-Revision: 26845
2011-05-07 12:40:34 +00:00
Gabor Juhos
2166432ba0
ar71xx: ag71xx: add timestamps to ag71xx_buf
...
SVN-Revision: 26844
2011-05-07 12:40:28 +00:00
Gabor Juhos
896e1d1ab4
ar71xx: ag71xx: use dynamically allocated buffer for napi_stats
...
SVN-Revision: 26843
2011-05-07 12:40:26 +00:00
Gabor Juhos
a6708d20d1
ar71xx: ag71xx: use debugfs_remove_recursive
...
SVN-Revision: 26842
2011-05-07 12:40:25 +00:00
Gabor Juhos
a8bf5e3cdb
ar71xx: rename ar934x_ref_freq to ar71xx_ref_freq
...
Also initialize that for each SoC and print its value along with the
other frequencies.
SVN-Revision: 26561
2011-04-09 18:47:52 +00:00
Gabor Juhos
2b064bb398
ar71xx: add support for the watchdog of the AR934x SoCs
...
Signed-off-by: Jaiganesh Narayanan <jnarayanan@atheros.com>
SVN-Revision: 26516
2011-04-07 20:53:10 +00:00
Felix Fietkau
41ee4a283c
ar71xx: only allow internal access to the ar7240 switch, export the MDIO bus behind the switch instead
...
SVN-Revision: 26393
2011-04-02 00:47:29 +00:00
Felix Fietkau
acbb3e50e7
ar71xx: frequent ethernet mac resets upset the MDIO bus on ar7240, so do not run them on every device open, only on tx timeouts
...
SVN-Revision: 26392
2011-04-02 00:47:25 +00:00
Gabor Juhos
23a6173099
ar71xx: use gpio_*_cansleep calls in the rb4xx NAND driver
...
SVN-Revision: 24944
2011-01-09 09:29:45 +00:00
Gabor Juhos
920a34c0ce
ar71xx: drivers/ar71xx_wdt: fix size argument passed to copy_to_user()
...
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
SVN-Revision: 23983
2010-11-12 18:52:45 +00:00
Gabor Juhos
3106aea40b
ar71xx: drivers/ag71xx: remove deprecated usage of IRQF_SAMPLE_RANDOM
...
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
SVN-Revision: 23982
2010-11-12 18:52:28 +00:00
Gabor Juhos
30ef7d55fc
ar71xx: use pr_* functions in drivers
...
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
SVN-Revision: 23981
2010-11-12 18:52:12 +00:00
Gabor Juhos
fddf3b8dac
ar71xx: drivers/rb4xx_nand: remove C++ comment usage
...
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
SVN-Revision: 23980
2010-11-12 18:51:55 +00:00
Gabor Juhos
f4d5c885e4
ar71xx: return statements does not need parenthesis
...
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
SVN-Revision: 23979
2010-11-12 18:51:38 +00:00
Gabor Juhos
e244e1c7cd
ar71xx: fix inline attribute location
...
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
SVN-Revision: 23978
2010-11-12 18:51:21 +00:00
Gabor Juhos
acd8ad4de5
ar71xx: wrap long lines
...
(build errors has been fixed - juhosg)
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
SVN-Revision: 23977
2010-11-12 18:51:04 +00:00
Gabor Juhos
500fac1735
ar71xx: fix whitespaces nits
...
(build error has been fixed - juhosg)
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
SVN-Revision: 23975
2010-11-12 18:50:29 +00:00
Felix Fietkau
6656450c6d
ar71xx: fix more section mismatches
...
SVN-Revision: 23575
2010-10-21 18:42:16 +00:00
Felix Fietkau
8858d90afe
ar71xx: improve 2.6.36 compatibility. also, instead of adding a forward port patch to the 2.6.36 patches, add a backport patch to 2.6.32
...
SVN-Revision: 23574
2010-10-21 18:42:11 +00:00
Felix Fietkau
b61a804bf7
ar71xx: increase rb4xx nand kernel partition size (patch by danimo)
...
SVN-Revision: 23293
2010-10-07 14:27:34 +00:00
Gabor Juhos
47f8fd1dde
ar71xx: rewrite SPI drivers for the RB4xx boards
...
* add a new SPI controller driver
* add SPI driver for the CPLD chip
* convert the NAND driver
* enable the mikroSD slot
* enable more LEDs
SVN-Revision: 22863
2010-08-31 20:13:47 +00:00
Felix Fietkau
523fcf0497
ar71xx: add a new driver for the ar7240 switch using swconfig. hooks directly into the ethernet driver, as MAC resets also require switch reinitializations and the switch is part of the cpu core anyway switch only tl-wr741nd (and other devices using this board file, such as tl-wr841nd) over to using this by default, as other devices are still untested fixes #7563
...
SVN-Revision: 22675
2010-08-16 19:21:57 +00:00
Felix Fietkau
a27ea45e76
ar71xx: only reinit the ethernet MAC at .open() on ar724x for now, until we've figured out what part of it causes the issue described in #7563
...
SVN-Revision: 22075
2010-07-06 12:40:07 +00:00
Felix Fietkau
15b209d09f
ag71xx: reset the hardware during open(), this improves recovery from tx timeouts on ar724x considerably
...
SVN-Revision: 22055
2010-07-04 02:15:08 +00:00
Felix Fietkau
89da22d1ea
ag71xx: fix a memory corruption bug that happens if you flood the interface with packets while it's being brought down fixes boot time crashes under load reported by matteo
...
SVN-Revision: 22054
2010-07-04 01:31:33 +00:00
Gabor Juhos
5a28fb88a4
ar71xx: fix leds-rb750 build failure on 2.6.34
...
SVN-Revision: 22016
2010-07-01 14:49:06 +00:00
Gabor Juhos
6ce447427c
ar71xx: fix build error in the rb{4xx,750}_nand drivers on 2.6.34/35
...
SVN-Revision: 21736
2010-06-09 15:31:34 +00:00
Gabor Juhos
90e2b1ad6b
ar71xx: fix 2.6.34 build errors
...
SVN-Revision: 21698
2010-06-07 09:18:13 +00:00
Felix Fietkau
7966004d99
ag71xx: remove rx alignment code for small packets, it seems to break ipv6 for some reason ( fixes #7236 )
...
SVN-Revision: 21166
2010-04-26 16:39:13 +00:00
Felix Fietkau
1c0e751391
ar71xx: fix up alignment handling
...
- on ar724x, rx buffers can be aligned with an offset of 2, which keeps the ip header aligned
- alignment offset is only added if the ar8216 workaround is not active and the phy driver does not advertise its own packet alignment
- ar71xx and ar91xx can not handle rx alignment offsets, however taking a hit on unaligned exceptions seems to have less overhead than re-aligning the data for large packets
- use memmove to re-align small packets, if necessary
tested on ar9132, ar7240 and ar7242 based devices without ar8216 headers
SVN-Revision: 20892
2010-04-15 23:31:17 +00:00
Gabor Juhos
4c29a2c263
ar71xx: ag71xx: avoid unalinged accesses when using the phy specific receive functions
...
Cc: backfire@openwrt.org
SVN-Revision: 20751
2010-04-09 08:40:06 +00:00
Gabor Juhos
4a28844d80
ar71xx: ag71xx: call the phy driver's netif_receive_skb()
...
Ag71xx needs to call the phy's netif_receive_skb() to allow phy drivers
to mangle rx packets. This patch fixes it.
This fixes the header mangling of the AR8216 driver.
Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@gmail.com>
Cc:backfire@openwrt.org
SVN-Revision: 20750
2010-04-09 08:38:46 +00:00
Gabor Juhos
c874513cfa
ar71xx: fix broken LAN ports on the boards with AR8216 switch ( closes #7024 )
...
* cc: backfire@openwrt.org
SVN-Revision: 20673
2010-04-03 13:59:08 +00:00
Gabor Juhos
905f2d62f9
ar71xx: update image generation and trx header parsing for the WRT160NL
...
* patch by Bernhard Loos
* note: trailing whitespaces has been removed
SVN-Revision: 20525
2010-03-27 17:38:36 +00:00
Gabor Juhos
b7ca043240
ar71xx: ag71xx: copy received packet to avoid unaligned access in the IP stack
...
SVN-Revision: 20506
2010-03-27 13:05:27 +00:00
Gabor Juhos
f9acf8ada1
ar71xx: ag71xx: introduce ag71xx_has_ar8216() helper
...
SVN-Revision: 20505
2010-03-27 13:05:24 +00:00
Gabor Juhos
200db5ebb5
ar71xx: ag71xx: reorganize ag71xx_rx_packet function
...
SVN-Revision: 20504
2010-03-27 13:05:20 +00:00
Gabor Juhos
245775a49f
ar71xx: ag71xx: Add netpoll support
...
This patch adds support for polling interrupts, used by
netconsole and the likes.
Tested on d-link dir-615 C1 using netconsole.
Signed-off-by: Pat Erley <pat-lkml@erley.org>
SVN-Revision: 20503
2010-03-27 13:05:17 +00:00
Andy Boyett
681054333e
wrt400n: lan ports don't need the ar8216 workaround
...
SVN-Revision: 20491
2010-03-26 19:09:11 +00:00
Gabor Juhos
9a1031ce6d
ar71xx: change PHY select logic, and update phy_masks
...
SVN-Revision: 20358
2010-03-21 18:16:07 +00:00
Gabor Juhos
2a818f388a
ar71xx: ag71xx: fix MAC address setup
...
SVN-Revision: 20092
2010-03-09 18:05:36 +00:00
Gabor Juhos
d58a367083
ar71xx: add NAND driver for the RB750
...
SVN-Revision: 20054
2010-03-08 12:10:23 +00:00
Gabor Juhos
6600fab893
ar71xx: add LED driver for the RB750
...
SVN-Revision: 20051
2010-03-08 12:10:01 +00:00
Gabor Juhos
2702ae4e8f
ar71xx: ag71xx: move calling ag71xx_phy_stop out from spinlock
...
SVN-Revision: 20004
2010-03-05 20:29:22 +00:00
Gabor Juhos
a4bccded57
ar71xx: ag71xx: move link update function
...
SVN-Revision: 20003
2010-03-05 20:29:18 +00:00
Gabor Juhos
eacf9a7614
ar71xx: ag71xx: don't use dev->trans_start
...
SVN-Revision: 20002
2010-03-05 20:29:14 +00:00
Gabor Juhos
ba288eeb84
ar71xx: ag71xx: use dma_unmap_single to unmap frames
...
SVN-Revision: 20001
2010-03-05 20:29:10 +00:00
Gabor Juhos
0e4eaea770
ar71xx: ag71xx: use correct device pointer for dma_map_single
...
SVN-Revision: 19951
2010-03-02 13:36:18 +00:00
Gabor Juhos
84823e1477
ar71xx: ag71xx: don't use virt_to_phys
...
SVN-Revision: 19950
2010-03-02 13:36:15 +00:00
Gabor Juhos
4a987d6008
ar71xx: ag71xx: simplify register access functions
...
SVN-Revision: 19949
2010-03-02 13:36:12 +00:00
Gabor Juhos
e157281c5d
ar71xx: ag71xx: use NETDEV_TX_OK
...
SVN-Revision: 19948
2010-03-02 13:36:09 +00:00
Gabor Juhos
1612fd447d
ar71xx: enable TX/RX flow control on the AR7240
...
SVN-Revision: 19832
2010-02-24 13:38:41 +00:00
Gabor Juhos
c747902042
ar71xx: add missing fields to the ar71xx-ehci driver
...
SVN-Revision: 19534
2010-02-06 17:00:16 +00:00
Gabor Juhos
49c4df5487
rtl8366: make it available on all platforms
...
SVN-Revision: 19329
2010-01-25 15:13:38 +00:00
Gabor Juhos
97b983c8b9
rtl8366s: simplify mib counters handling
...
SVN-Revision: 19326
2010-01-25 14:24:53 +00:00
Gabor Juhos
2b5ba9073f
rtl8366_smi: move RTL8366S driver into a separate file
...
SVN-Revision: 19279
2010-01-22 17:38:07 +00:00
Gabor Juhos
46b0e6643a
rtl8366_smi: rename rtl8366s specific functions and definitions
...
SVN-Revision: 19278
2010-01-22 17:37:58 +00:00
Gabor Juhos
08055fd6d1
rtl8366_smi: move chip specific stuff into its own struct
...
SVN-Revision: 19277
2010-01-22 17:37:53 +00:00
Gabor Juhos
de751af190
rtl8366_smi: separate gpio initialization
...
SVN-Revision: 19276
2010-01-22 17:37:50 +00:00
Gabor Juhos
a1247d2f83
rtl8366_smi: store GPIO numbers directly in the rtl8366_smi struct
...
SVN-Revision: 19275
2010-01-22 17:37:47 +00:00
Gabor Juhos
ab278275ee
rtl8366_smi: store device pointer instead of plaform_device
...
SVN-Revision: 19274
2010-01-22 17:37:41 +00:00
Gabor Juhos
edfa82ab60
rtl8366_smi: rename switch attribute handlers
...
SVN-Revision: 19254
2010-01-21 12:13:43 +00:00
Gabor Juhos
7aefde9f66
rtl8366_smi: simplify rtl8366_attr_get_port_link function
...
SVN-Revision: 19250
2010-01-20 20:36:30 +00:00
Gabor Juhos
83fb9f73e1
rtl8366_smi: make rtl8366_phy_config_{aneg,init} static
...
SVN-Revision: 19249
2010-01-20 20:36:27 +00:00
Gabor Juhos
cad07a09c1
rtl8366_smi: simplify rtl8366_{get,set}_port_vlan_index functions
...
SVN-Revision: 19248
2010-01-20 20:36:24 +00:00
Gabor Juhos
50849c6cff
rtl8366_smi: minor code optimalizations
...
SVN-Revision: 19247
2010-01-20 20:36:21 +00:00