mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-01-14 10:50:58 +00:00
ar8216: display flow control info in swconfig get_link in case of autonegatiation too
The swconfig get_link attribute (at least) on AR8327/AR8337 doesn't consider the autonegotiated flow control. AR8327/AR8337 provide the info about autonegotiated rx/tx flow control in bits 10 and 11 of the port status register. Use these values to display info about autonegotiated rx/tx flow control as part of the get_link attribute. Successfully tested on TL-WDR4900 (AR8327 rev.4) and TL-WDR4300 (AR8327 rev.2). Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> SVN-Revision: 44023
This commit is contained in:
parent
53c0c6054f
commit
6dfea16ab9
@ -710,7 +710,23 @@ ar8327_init_port(struct ar8xxx_priv *priv, int port)
|
|||||||
static u32
|
static u32
|
||||||
ar8327_read_port_status(struct ar8xxx_priv *priv, int port)
|
ar8327_read_port_status(struct ar8xxx_priv *priv, int port)
|
||||||
{
|
{
|
||||||
return ar8xxx_read(priv, AR8327_REG_PORT_STATUS(port));
|
u32 t;
|
||||||
|
|
||||||
|
t = ar8xxx_read(priv, AR8327_REG_PORT_STATUS(port));
|
||||||
|
/* map the flow control autoneg result bits to the flow control bits
|
||||||
|
* used in forced mode to allow ar8216_read_port_link detect
|
||||||
|
* flow control properly if autoneg is used
|
||||||
|
*/
|
||||||
|
if (t & AR8216_PORT_STATUS_LINK_UP &&
|
||||||
|
t & AR8216_PORT_STATUS_LINK_AUTO) {
|
||||||
|
t &= ~(AR8216_PORT_STATUS_TXFLOW | AR8216_PORT_STATUS_RXFLOW);
|
||||||
|
if (t & AR8327_PORT_STATUS_TXFLOW_AUTO)
|
||||||
|
t |= AR8216_PORT_STATUS_TXFLOW;
|
||||||
|
if (t & AR8327_PORT_STATUS_RXFLOW_AUTO)
|
||||||
|
t |= AR8216_PORT_STATUS_RXFLOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32
|
static u32
|
||||||
|
@ -84,6 +84,8 @@
|
|||||||
#define AR8327_MAX_FRAME_SIZE_MTU BITS(0, 14)
|
#define AR8327_MAX_FRAME_SIZE_MTU BITS(0, 14)
|
||||||
|
|
||||||
#define AR8327_REG_PORT_STATUS(_i) (0x07c + (_i) * 4)
|
#define AR8327_REG_PORT_STATUS(_i) (0x07c + (_i) * 4)
|
||||||
|
#define AR8327_PORT_STATUS_TXFLOW_AUTO BIT(10)
|
||||||
|
#define AR8327_PORT_STATUS_RXFLOW_AUTO BIT(11)
|
||||||
|
|
||||||
#define AR8327_REG_HEADER_CTRL 0x098
|
#define AR8327_REG_HEADER_CTRL 0x098
|
||||||
#define AR8327_REG_PORT_HEADER(_i) (0x09c + (_i) * 4)
|
#define AR8327_REG_PORT_HEADER(_i) (0x09c + (_i) * 4)
|
||||||
|
Loading…
Reference in New Issue
Block a user