So far, state->remove_tag was sometimes updated incrementally, sometimes
left to correct_vlan_state() to recalculate. Since I want to avoid use of
correct_vlan_state() for IP175D, this patch fixes the only two remaining
places which leave state->remove_tag inconsistent with state->add_tag
and it drops the recalculation.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21717
Let VLAN state variables be initialized not only when the enable VLAN bit
is toggled, but also upon reset.
At this point, this should be a no-op, since the driver reads the current
hardware state before doing any modifications anyway, but I plan to keep
some state locally in the subsequent patches.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21716
Replace vlan_ports array in struct ip175c_state by an array of structures.
Signed-off-by: Martin Mares <mj@ucw.cz>
Signed-off-by: Patrick Horn <patrick.horn@gmail.com>
SVN-Revision: 21715
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
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
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
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
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
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
This patch appears to be lost beetween 2.6.32 and 2.6.33.
Thank you Maddes for the patch.
This helps making orion work with kernel 2.6.34.
closes #7377.
SVN-Revision: 21622
This patch appears to be lost beetween 2.6.32 and 2.6.33.
Thank you Maddes for the patch.
This helps making orion work with kernel 2.6.33.
SVN-Revision: 21552
Before this patch CONFIG_SSB_BLOCKIO was set to y in compat-wireless
but the in kernel ssb system had it set to n, this causes an invalid pointer.
b43 now needs CONFIG_SSB_BLOCKIO=y
SVN-Revision: 21449
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
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
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
[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
* 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