Gabor Juhos
2f769ba91f
generic: ar8216: clear driver specific data pointer in phy_device
...
This is needed to avoid a NULL pointer dereference:
[ 19.525270] Unable to handle kernel paging request for data at address 0x00000018
[ 19.532750] Faulting instruction address: 0xc016e104
[ 19.537714] Oops: Kernel access of bad area, sig: 11 [#1 ]
[ 19.543102] P1010 RDB
[ 19.545365] Modules linked in: booke_wdt nf_nat_irc nf_nat_ftp nf_conntrack_irc nf_conntrack_ftp ipt_MASQUERADE iptable_nat xt_nat d
[ 19.590725] NIP: c016e104 LR: c0171490 CTR: 00000000
[ 19.595681] REGS: c4bc3c10 TRAP: 0300 Tainted: G W O (3.7.6)
[ 19.602284] MSR: 00029000 <CE,EE,ME> CR: 82002022 XER: 20000000
[ 19.608381] DEAR: 00000018, ESR: 00000000
[ 19.612382] TASK = c4cd9c80[2070] 'ifconfig' THREAD: c4bc2000
GPR00: 00000001 c4bc3cc0 c4cd9c80 00000000 c7811000 00000000 00000000 0000e8ec
GPR08: 0000e8eb 00000000 00029000 00000001 00000000 100801f8 1005c51c 1005c514
GPR16: 1005c468 1005c54c 1005c258 1005c530 10060000 00000000 c7811000 ffff8914
GPR24: c7815030 c793e400 10063adb 00000000 c7811000 c045594c c78ca600 c7815000
[ 19.646352] NIP [c016e104] register_switch+0x98/0x2d0
[ 19.651397] LR [c0171490] ar8216_config_init+0x2d8/0x3f4
[ 19.656697] Call Trace:
[ 19.659138] [c4bc3cc0] [c0170490] ar8216_mii_read+0x64/0xc4 (unreliable)
[ 19.665835] [c4bc3d00] [c0171490] ar8216_config_init+0x2d8/0x3f4
[ 19.671835] [c4bc3d20] [c016cf8c] phy_init_hw+0x50/0x6c
[ 19.677053] [c4bc3d30] [c016d078] phy_attach_direct+0xd0/0xf8
[ 19.682793] [c4bc3d50] [c016d154] phy_connect_direct+0x24/0x68
[ 19.688621] [c4bc3d70] [c0183b70] of_phy_connect+0x48/0x6c
[ 19.694102] [c4bc3d90] [c0175aac] gfar_enet_open+0x254/0x3d8
[ 19.699755] [c4bc3db0] [c019acc4] __dev_open+0xc0/0x120
[ 19.704975] [c4bc3dd0] [c019af98] __dev_change_flags+0xd4/0x15c
[ 19.710888] [c4bc3df0] [c019b0d4] dev_change_flags+0x1c/0x60
[ 19.716544] [c4bc3e10] [c01ebb94] devinet_ioctl+0x290/0x690
[ 19.722111] [c4bc3e70] [c01ec8d4] inet_ioctl+0x88/0xbc
[ 19.727245] [c4bc3e80] [c0186b98] sock_ioctl+0x258/0x294
[ 19.732551] [c4bc3ea0] [c009c00c] do_vfs_ioctl+0x6a4/0x728
[ 19.738031] [c4bc3f10] [c009c0d4] sys_ioctl+0x44/0x70
[ 19.743077] [c4bc3f40] [c000c74c] ret_from_syscall+0x0/0x3c
[ 19.748646] --- Exception: c01 at 0x48091b34
[ 19.748646] LR = 0x480e4b64
[ 19.756033] Instruction dump:
[ 19.758991] 2f830000 907f0050 3860fff4 419e021c 837f0000 38000000 901f0038 901f0040
[ 19.766744] 901f003c 7f600034 5400d97e 0f000000 <801b0018> 2f800000 40be0010 801b001c
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35497 3c298f89-4303-0410-b956-a3cf2f4a3e73
2013-02-05 08:39:26 +00:00
Gabor Juhos
708c4a4f33
generic: ar8216: unregister switch on error path
...
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35496 3c298f89-4303-0410-b956-a3cf2f4a3e73
2013-02-05 08:39:24 +00:00
Gabor Juhos
2e918d7ca5
generic: ar8216: add sgmii_delay_en field to ar8327_platform_data
...
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34881 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-12-25 18:45:31 +00:00
Gabor Juhos
cd8ad1441e
generic: ar8216: don't use 0 as default VID on AR8327
...
VID0 is reserved for priority-tagged packets.
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34862 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-12-22 18:30:04 +00:00
Gabor Juhos
911703d3d7
generic: ar8316: allow to configure port 6 via platform data on AR8327
...
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34847 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-12-22 12:12:37 +00:00
Gabor Juhos
50709b5321
generic: ar8216: rename cpuport_cfg to port0_cfg in ar8327_platform_data
...
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34846 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-12-22 12:12:35 +00:00
Gabor Juhos
8217b9bc8c
generic: ar8216: set delay values for SGMII mode on AR8327
...
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34315 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-11-23 20:55:26 +00:00
Gabor Juhos
1ef9ccffe2
generic: ar8216: introduce ar8216_mib_op helper
...
The ar8216_mib_{capture,flush} functions are similar.
Move the common code into a helper and use that from
the original functions.
This change also fixes a lockdep warning in
ar8216_mib_flush.
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34297 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-11-22 10:33:03 +00:00
Gabor Juhos
7ce8530f4f
generic: ar8216: fix port number check in 'ar8xxx_mib_work_func'
...
Also add a WARN_ON to 'ar8216_mib_fetch_port_stat'
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34283 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-11-20 20:40:04 +00:00
Gabor Juhos
6446586528
generic: ar8216: remove an unblanced mutex_unlock call
...
Fixes the following warning:
[ 94.080000]
[ 94.080000] =====================================
[ 94.080000] [ BUG: bad unlock balance detected! ]
[ 94.080000] 3.3.8 #2 Tainted: G O
[ 94.080000] -------------------------------------
[ 94.080000] swconfig/1220 is trying to release lock (&priv->mib_lock) at:
[ 94.080000] [<801df8f4>] ar8216_sw_get_port_mib+0x138/0x16c
[ 94.080000] but there are no more locks to release!
[ 94.080000]
[ 94.080000] other info that might help us debug this:
[ 94.080000] 2 locks held by swconfig/1220:
[ 94.080000] #0 : (genl_mutex){+.+...}, at: [<80222430>] genl_rcv+0x14/0x34
[ 94.080000] #1 : (&dev->sw_mutex){+.+...}, at: [<801da018>] swconfig_get_dev+0x88/0xb4
[ 94.080000]
[ 94.080000] stack backtrace:
[ 94.080000] Call Trace:
[ 94.080000] [<8028dc58>] dump_stack+0x8/0x34
[ 94.080000] [<800a5128>] print_unlock_inbalance_bug+0xe0/0xfc
[ 94.080000] [<800a82c0>] lock_release+0x18c/0x1c8
[ 94.080000] [<80292074>] __mutex_unlock_slowpath+0xd8/0x17c
[ 94.080000] [<801df8f4>] ar8216_sw_get_port_mib+0x138/0x16c
[ 94.080000] [<801db688>] swconfig_get_attr+0xbc/0x394
[ 94.080000] [<8022261c>] genl_rcv_msg+0x1cc/0x214
[ 94.080000] [<80221a18>] netlink_rcv_skb+0x6c/0xe8
[ 94.080000] [<80222440>] genl_rcv+0x24/0x34
[ 94.080000] [<80221370>] netlink_unicast+0x15c/0x22c
[ 94.080000] [<8022175c>] netlink_sendmsg+0x240/0x2d0
[ 94.080000] [<801ef544>] sock_sendmsg+0x84/0x9c
[ 94.080000] [<801f0648>] __sys_sendmsg+0x1cc/0x270
[ 94.080000] [<801f207c>] sys_sendmsg+0x48/0x7c
[ 94.080000] [<8006ad78>] stack_done+0x20/0x40
[ 94.080000]
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34282 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-11-20 20:40:03 +00:00
Gabor Juhos
756a18fffc
generic: ar8216: add missing locking calls
...
Fixes the following lockdep warning:
[ 19.160000] ------------[ cut here ]------------
[ 19.160000] WARNING: at drivers/net/phy/ar8216.c:322 ar8216_rmw+0x54/0xa4()
[ 19.170000] Modules linked in: nf_defrag_ipv4 nf_conntrack ehci_hcd
sd_mod pppox ipt_REJECT xt_TCPMSS ipt_LOG xt_comment xt_multip
ort xt_mac xt_limit iptable_mangle iptable_filter ip_tables xt_tcpudp
x_tables ppp_async ppp_generic slhc ath9k(O) ath9k_common(O) at
h9k_hw(O) ath(O) mac80211(O) usbcore usb_common scsi_mod nls_base crc7
crc_itu_t crc_ccitt cfg80211(O) compat(O) arc4 aes_generic cry
pto_blkcipher cryptomgr aead crypto_hash crypto_algapi ledtrig_timer
ledtrig_default_on leds_gpio gpio_button_hotplug(O)
[ 19.210000] Call Trace:
[ 19.220000] [<8028dc38>] dump_stack+0x8/0x34
[ 19.220000] [<80072da0>] warn_slowpath_common+0x78/0xa4
[ 19.230000] [<80072de4>] warn_slowpath_null+0x18/0x24
[ 19.230000] [<801de820>] ar8216_rmw+0x54/0xa4
[ 19.240000] [<801df460>] ar8216_mib_capture+0x70/0xd0
[ 19.240000] [<801df944>] ar8xxx_mib_work_func+0x34/0x98
[ 19.250000] [<80089a7c>] process_one_work+0x28c/0x460
[ 19.250000] [<8008a630>] worker_thread+0x22c/0x334
[ 19.260000] [<8008e544>] kthread+0x88/0x90
[ 19.260000] [<80065020>] kernel_thread_helper+0x10/0x18
[ 19.270000]
[ 19.270000] ---[ end trace 22e9d696adfa6a08 ]---
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34281 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-11-20 20:40:00 +00:00
Gabor Juhos
51c169ab3d
generic: ar8216: add MIB counter support for the AR8216 switch as well
...
Thanks to Jonas Gorski for the reference URL.
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34245 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-11-18 16:21:00 +00:00
Gabor Juhos
232b64b668
generic: ar8216: rename AR8216_*_STATS_* defines
...
The names are misleading, those are only valid from
AR8236. The AR8216 chip uses different offsets.
Thanks to Jonas Gorski for the report.
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34244 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-11-18 16:20:56 +00:00
Gabor Juhos
3c8aacbed8
generic ar8216: allow to read/reset MIB counters via swconfig
...
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34243 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-11-18 12:26:35 +00:00
Gabor Juhos
1101fbc106
generic: ar8216: use dynamically allocated private data in ar8216_probe
...
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34242 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-11-18 12:26:34 +00:00
Gabor Juhos
4ecbabb00b
generic: ar8216: start aneg on each PHY of the AR8327
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32604 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-07-05 08:26:39 +00:00
Gabor Juhos
8d2d96fb1e
generic: ar8216: allow to configure AR8327 LEDs via platform data
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32456 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-06-19 10:44:16 +00:00
Gabor Juhos
8e8353898c
generic: ar8216: add revision specific PHY fixups for AR8327
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32000 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-05-29 16:39:27 +00:00
Gabor Juhos
37ce7c5714
generic: ar8216: replace chip_type field with chip_{ver,rev} in ar8216_priv
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31999 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-05-29 16:39:26 +00:00
Gabor Juhos
049f00ab72
generic: ar8216: add chip_is_ar8{216,236,316,327} helpers
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31998 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-05-29 16:39:24 +00:00
Felix Fietkau
f20d1938b5
kernel: rewrite the phy packet hook, put it in the network stack to avoid having to keep non-upstream ethernet driver changes
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31637 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-05-06 21:19:14 +00:00
Felix Fietkau
a4fcc4529e
ar8216: enable forwarding of multicast frames to the cpu port on ar8327 (thx, SeG)
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31441 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-04-22 19:19:49 +00:00
John Crispin
ea1c8334d9
[ar8216] fixes breakage introduced in 776722ce36ac95877efb7fd771dde2f6ffc96433
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31054 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-22 13:07:34 +00:00
Gabor Juhos
69e2e9c108
generic: ar8216: add support for the AR8327 chip
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31011 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:55 +00:00
Gabor Juhos
baeb3db74d
generic: ar8216: allow to use more ports
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31010 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:51 +00:00
Gabor Juhos
998ee8cbbc
generic: ar8216: reorder chip specific functions
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31009 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:48 +00:00
Gabor Juhos
16e8051306
generic: ar8216: reorder switch_dev specific functions
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31008 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:45 +00:00
Gabor Juhos
8213a8e8f5
generic: ar8216: use ar8216_sw_ prefix for switchdev related functions
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31007 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:42 +00:00
Gabor Juhos
71f7596c79
generic: ar8216: use switch_dev->ports in for loops
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31006 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:40 +00:00
Gabor Juhos
e616b588f8
generic: ar8216: add read_port_status field to ar8xxx_chip
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31005 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:39 +00:00
Gabor Juhos
44eec652f1
generic: ar8216: add init_globals field to ar8xxx_chip
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31004 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:36 +00:00
Gabor Juhos
3b2249677c
generic: ar8216: add caps field to ar8xxx_chip
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31003 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:33 +00:00
Gabor Juhos
959df6a165
generic: ar8216: add vtu_load_vlan field to ar8xxx_chip
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31002 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:30 +00:00
Gabor Juhos
071a509f67
generic: ar8216: add vtu_flush field to ar8xxx_chip
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31001 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:26 +00:00
Gabor Juhos
0d1a31938c
generic: ar8216: add init_port field to ar8xxx_chip
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31000 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:23 +00:00
Gabor Juhos
d52cff00a4
generic: ar8216: add setup_port field to ar8xxx_chip
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30999 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:19 +00:00
Gabor Juhos
ea9e2d7fb2
generic: ar8216: add hw_init field to ar8xxx_chip
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30998 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:15 +00:00
Gabor Juhos
3a4a231982
generic: ar8216: add a separate structure for chip specific stuff
...
Also add a hw_init function into that.
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30997 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:12 +00:00
Gabor Juhos
595d1849e5
generic: ar8216: rename chip field of struct ar8216
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30996 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:08 +00:00
Gabor Juhos
baee093c4e
generic: ar8216: move ar8216_id_chip function
...
Also remove the inline annotation.
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30995 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:05 +00:00
Gabor Juhos
e4682f031a
generic: ar8216: rename ar8216_ops to ar8216_sw_ops
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30994 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-18 22:06:03 +00:00
Felix Fietkau
531638e839
ar8216: fix a MTU related regression
...
Switch reset on AR8316 appears to clobber the MTU configuration register
and possibly other global config registers. Move global configuration
register init writes back to the reset callback.
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30951 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-15 16:57:27 +00:00
Gabor Juhos
72f225874b
generic: ar8216: merge multiple if statements in ar8216_hw_apply
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30928 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-13 17:33:12 +00:00
Gabor Juhos
c1db1347f6
generic: ar8216: use usleep_range in ar8216_mii_{read,write}
...
msleep(1) can sleep for up to 20ms.
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30885 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-11 17:19:14 +00:00
Gabor Juhos
4769d71b06
generic: ar8216: add a helper function for writing PHY debug registers
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30884 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-11 16:49:35 +00:00
Gabor Juhos
1fb98d5708
generic: ar8216: add lockep assertion to ar8216_rmw
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30883 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-11 16:49:33 +00:00
Gabor Juhos
488b7bdd9b
generic: ar8216: coding style cleanup
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30857 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-08 10:21:14 +00:00
Gabor Juhos
6808474a82
generic: ar8216: don't use static variable in ar8236_hw_init
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30856 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-08 10:21:12 +00:00
Gabor Juhos
3f153edf08
generic: ar8216: move register inititalization into hw_init
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30855 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-08 10:21:11 +00:00
Gabor Juhos
0dbb34d4d6
generic: ar8216: set chip type directly in ar8216_id_chip
...
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30854 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-08 10:21:10 +00:00