Commit Graph

51 Commits

Author SHA1 Message Date
Gabor Juhos
065bc60f37 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
2010-06-08 20:18:20 +00:00
Gabor Juhos
09be47cf90 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
2010-06-08 20:18:15 +00:00
Gabor Juhos
f09e3fb65b 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
2010-06-08 20:18:10 +00:00
Gabor Juhos
7b5a77fa39 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
2010-06-08 20:18:05 +00:00
Gabor Juhos
b3073617a5 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
2010-06-08 20:18:00 +00:00
Gabor Juhos
f96f1cd16f 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
2010-06-08 20:17:55 +00:00
Gabor Juhos
c0c0a60718 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
2010-06-08 20:17:03 +00:00
Gabor Juhos
f7cc3d576c swconfig: Add cpu port index to help output.
Let swconfig provide the cpu port index in its help page. This is
needed as e.g. Atheros switches have their cpu port at port 0, not
port 5.

This could allow e.g. luci to get a rough overview of the layout of
the switch.

Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@gmail.com>

SVN-Revision: 20939
2010-04-16 19:32:40 +00:00
Florian Fainelli
fba1a0a074 swconfig: Check vlan/port indexes for validity.
Swconfig needs to make sure that requested vlans/ports actually exist,
else it might read or modify memory not belonging to itself.

This patch adds a quick range check in swconfig's kernel part to
prevent accidential or intentional memory modification.

Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@gmail.com>

SVN-Revision: 20811
2010-04-11 20:51:37 +00:00
Gabor Juhos
3491026cbb Generic: Clean up output of AR8216 driver.
This patch is rather a cosmetic patch. It fixes the following issues:

 * Demote the unknown device message to debug level to not spam
   the log.
 * Fix the version print of the unknown device message.
 * Output the 'attach' message only when attaching as switch driver,
   not when attaching as phy driver.
 * Correctly return NET_RX_DROP when dropping packets.

Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@gmail.com>
Cc: bacfire@openwrt.org

SVN-Revision: 20773
2010-04-10 11:34:11 +00:00
Gabor Juhos
72d4353728 generic: make chip detection more reliable in the AR8216 driver
Fixes broken ethernet on the Planex MZK-W04NU/W300NH boards.

Cc: bacfire@openwrt.org

SVN-Revision: 20753
2010-04-09 08:40:12 +00:00
Jo-Philipp Wich
23bebe33a7 Add support for the ar8316 switch. This patch enhances the ar8216 driver with ar8316 support and fixes some minor issues with the ar8216 driver itself. It should not break anything, but isn't tested on ar8216 devices.
[PATCH 2/2] ar71xx: Add the ar8316 driver to rs pro/rb-450g.
Add the ar8216 driver to the ar71xx target, and add network
configurations for the RouterStation Pro and the RouterBoard RB-450G.

SVN-Revision: 20722
2010-04-05 23:03:16 +00:00
Felix Fietkau
e4a6acf9b8 enable IP175A support in the IP175C PHY driver (based on patch from jh in #6733)
SVN-Revision: 20551
2010-03-28 18:57:42 +00:00
Felix Fietkau
527accf920 ar8216: fix the mtu register definition
SVN-Revision: 20110
2010-03-09 21:43:16 +00:00
Felix Fietkau
513e8c583f Several small fixes for ar8216 driver (patch by Jonas Gorski)
* Create defines for some magic values/masks.

 * Change vlan_id to u16, to allow VIDs > 255.

 * Add a range check to set_pvid as it isn't a VID, but the index
   in the vlan table.

 * Set the max VID to 4094, since 4095 is a reserved value and
   should not be used.

 * In mangle_rx replace the provided VID with the VID of the table
   entry of the port, not the index of the table.

 * In hw_apply, remove a redundant emptyness check (was already
   checked several lines above).

 * In no vlan mode do not set the ingress mode to secure, as there
   are no vlan table entries, but to use the port's destination
   masks. Otherwise the switch won't forward anything.

 * In read_status tell that the phy is up (taken from the rtl8306
   driver).

SVN-Revision: 20083
2010-03-09 14:35:41 +00:00
Gabor Juhos
f1509eaf8c kernel: add driver for the RTL8366RB switch
Thanks to Andrew Tarabaras.

SVN-Revision: 19837
2010-02-24 13:39:02 +00:00
Gabor Juhos
e251cd15c9 kernel: fix typos in the AR8216 header file
SVN-Revision: 19834
2010-02-24 13:38:48 +00:00
Gabor Juhos
c253898e89 rtl8366_smi: sanitize gpio values to a 0/1 boolean
SVN-Revision: 19402
2010-01-30 15:25:12 +00:00
Gabor Juhos
6bfdc7c998 rtl8366s: reset the chip early, this allows ethernet to work as soon as possible
SVN-Revision: 19355
2010-01-27 21:01:48 +00:00
Gabor Juhos
49c4df5487 rtl8366: make it available on all platforms
SVN-Revision: 19329
2010-01-25 15:13:38 +00:00
Felix Fietkau
2bff4bf4e5 rtl8306: manage the wan port as a separate phy device with proper link status reading and autonegotiation - the genphy driver does not handle it properly
SVN-Revision: 18709
2009-12-09 03:25:33 +00:00
Felix Fietkau
ddc2e2270b ar71xx: make the rtl8306 switch attach to eth0 instead of eth1 on the wrt160nl, fixes wan port detection (#6309)
SVN-Revision: 18699
2009-12-08 14:06:18 +00:00
Felix Fietkau
df35ee622f fix link status detection in various switch drivers
SVN-Revision: 18698
2009-12-08 14:06:09 +00:00
Felix Fietkau
30e635c55b move the updated version (for 2.6.30+) of ar8216/mvswitch to the generic files directory and remove patches for older kernel versions (no longer in use)
SVN-Revision: 17594
2009-09-16 12:24:46 +00:00
Felix Fietkau
6e28b28c5e add a driver for rtl8306 switches
SVN-Revision: 17248
2009-08-14 00:52:17 +00:00
Felix Fietkau
3e7d58574f ar8216: rename the vlan attribute to enable_vlan to keep it consistent with other drivers
SVN-Revision: 16770
2009-07-11 01:21:01 +00:00
Felix Fietkau
3455f00d7a ar8216: fix transmission of large frames by setting the switch mtu
SVN-Revision: 16629
2009-06-29 21:54:16 +00:00
Felix Fietkau
c1918c778c ar8216: add delay for page switching to work around register setting corruption. use packet mangling to fix up the vlan for incoming packets (workaround for hardware bug, which renders normal 802.1q support unusable)
SVN-Revision: 16442
2009-06-14 03:32:01 +00:00
Felix Fietkau
4e12c9d210 fix a crash in ip175c attribute enumeration
SVN-Revision: 15506
2009-04-30 13:57:22 +00:00
Felix Fietkau
a523450678 Add a driver for Atheros AR8216 switches Thanks to Vertical Communications, Inc. for providing access to the documentation
SVN-Revision: 15482
2009-04-29 13:02:41 +00:00
Felix Fietkau
8ec2ad91ad swconfig: add a generic switch reset call
SVN-Revision: 15470
2009-04-28 19:16:17 +00:00
Felix Fietkau
3fce73ce46 clean up the ip175c driver some more, add support for setting the pvid and fix querying the phy status
SVN-Revision: 15308
2009-04-20 21:26:44 +00:00
Felix Fietkau
f6f55bae7d swconfig: add a generic method for setting the port primary vlan id (used for transparently fixing up pvid for untagged port when setting vlan ports)
SVN-Revision: 15307
2009-04-20 21:26:39 +00:00
Felix Fietkau
4320a28228 add IC+ IP175C driver (based on Patrick Horn's driver, see #4050)
SVN-Revision: 15305
2009-04-20 18:57:55 +00:00
Felix Fietkau
787e9fcf93 swconfig: treat struct switch_attr as constant
SVN-Revision: 15302
2009-04-20 18:57:36 +00:00
Felix Fietkau
cd80e16a80 swconfig: remove old debugging stuff
SVN-Revision: 15301
2009-04-20 18:57:30 +00:00
Felix Fietkau
1929c7511c mvswitch: re-enable header mode
SVN-Revision: 15186
2009-04-10 11:33:49 +00:00
Felix Fietkau
bfa8064ccd atheros: in later kernels, vlan 0 no longer works as expected, switch to (1,2) instead of (0,1) for lan/wan
SVN-Revision: 14981
2009-03-22 20:19:23 +00:00
Felix Fietkau
f972eb41b5 mvswitch,adm6996: use phy fixups instead of a nonstandard patch for hardware detection
SVN-Revision: 14977
2009-03-22 20:18:36 +00:00
Felix Fietkau
d1b986bd54 improve routing/nat performance for devices using the marvell 88e6060 switch
SVN-Revision: 13060
2008-10-28 17:54:22 +00:00
Felix Fietkau
1e570a9288 change the way ./files* and the generic kernel files are applied. ./files now applies to *ALL* kernel versions, and is copied along with ./files-* - this gets rid of quite a bit of redundancy in the extra kernel drivers.
SVN-Revision: 13010
2008-10-18 21:43:30 +00:00
Felix Fietkau
c7150f281c add missing defines for mvswitch
SVN-Revision: 11895
2008-07-21 18:12:38 +00:00
Felix Fietkau
3ad51a1c33 some more mvswitch fixes: - initialize the vlan destination map properly - workaround for moving node bug: clear the ATU database on every PHY poll
SVN-Revision: 11881
2008-07-19 23:09:56 +00:00
Felix Fietkau
87e673487a add extra safety for the packet mangling in the mvswitch driver
SVN-Revision: 11880
2008-07-19 23:09:43 +00:00
Felix Fietkau
b014357704 set marvell switch ATU ageing time to minimum instead of maximum - hopefully fixes some fonera 2.0 ethernet issues
SVN-Revision: 11410
2008-06-09 10:31:46 +00:00
Felix Fietkau
9e0ee80132 enable a different pseudo-vlan mode in the marvell switch (uses a proprietary header instead of a proprietary trailer) - fixes some mtu issues
SVN-Revision: 10975
2008-04-29 12:55:44 +00:00
Felix Fietkau
c3fcb26d47 allow bigger packets in the marvell switch (does not fix the mtu problems yet)
SVN-Revision: 10970
2008-04-28 21:59:06 +00:00
Felix Fietkau
86bbc820d5 fix vlan mapping for cpu port on the marvell switch
SVN-Revision: 10934
2008-04-24 01:09:47 +00:00
Felix Fietkau
69999abeda clear VLANTunnel bit on the marvell switch ports - should help with some bridging issues
SVN-Revision: 10931
2008-04-23 16:28:05 +00:00
Felix Fietkau
11d94ce083 Add support for the ultra-crappy Marvell 88E6060, which is used in Fonera+ and the upcoming Fonera 2.0
SVN-Revision: 10876
2008-04-20 08:29:01 +00:00