net: dsa: microchip: add MIB counter reading support
Add background MIB counter reading support. Port MIB counters should only be read when there is link. Otherwise it is a waste of time as hardware never increases those counters. There are exceptions as some switches keep track of dropped counts no matter what. Signed-off-by: Tristram Ha <Tristram.Ha@microchip.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
42fc6a4c61
commit
7c6ff470aa
@@ -1,19 +1,21 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0
|
||||
* Microchip switch driver common header
|
||||
*
|
||||
* Copyright (C) 2017-2018 Microchip Technology Inc.
|
||||
* Copyright (C) 2017-2019 Microchip Technology Inc.
|
||||
*/
|
||||
|
||||
#ifndef __KSZ_COMMON_H
|
||||
#define __KSZ_COMMON_H
|
||||
|
||||
void ksz_update_port_member(struct ksz_device *dev, int port);
|
||||
void ksz_init_mib_timer(struct ksz_device *dev);
|
||||
|
||||
/* Common DSA access functions */
|
||||
|
||||
int ksz_phy_read16(struct dsa_switch *ds, int addr, int reg);
|
||||
int ksz_phy_write16(struct dsa_switch *ds, int addr, int reg, u16 val);
|
||||
int ksz_sset_count(struct dsa_switch *ds, int port, int sset);
|
||||
void ksz_get_ethtool_stats(struct dsa_switch *ds, int port, uint64_t *buf);
|
||||
int ksz_port_bridge_join(struct dsa_switch *ds, int port,
|
||||
struct net_device *br);
|
||||
void ksz_port_bridge_leave(struct dsa_switch *ds, int port,
|
||||
@@ -211,4 +213,18 @@ static void ksz_port_cfg(struct ksz_device *dev, int port, int offset, u8 bits,
|
||||
ksz_write8(dev, addr, data);
|
||||
}
|
||||
|
||||
struct ksz_poll_ctx {
|
||||
struct ksz_device *dev;
|
||||
int port;
|
||||
int offset;
|
||||
};
|
||||
|
||||
static inline u32 ksz_pread32_poll(struct ksz_poll_ctx *ctx)
|
||||
{
|
||||
u32 data;
|
||||
|
||||
ksz_pread32(ctx->dev, ctx->port, ctx->offset, &data);
|
||||
return data;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user