ravb: Add carrier_counters to struct ravb_hw_info
RZ/G2L E-MAC supports carrier counters. Add a carrier_counter hw feature bit to struct ravb_hw_info to add this feature only for RZ/G2L. Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
1c59eb678c
commit
b6a4ee6e74
@ -196,6 +196,8 @@ enum ravb_reg {
|
||||
MAHR = 0x05c0,
|
||||
MALR = 0x05c8,
|
||||
TROCR = 0x0700, /* R-Car Gen3 and RZ/G2L only */
|
||||
CXR41 = 0x0708, /* RZ/G2L only */
|
||||
CXR42 = 0x0710, /* RZ/G2L only */
|
||||
CEFCR = 0x0740,
|
||||
FRECR = 0x0748,
|
||||
TSFRCR = 0x0750,
|
||||
@ -1017,6 +1019,7 @@ struct ravb_hw_info {
|
||||
/* hardware features */
|
||||
unsigned internal_delay:1; /* AVB-DMAC has internal delays */
|
||||
unsigned tx_counters:1; /* E-MAC has TX counters */
|
||||
unsigned carrier_counters:1; /* E-MAC has carrier counters */
|
||||
unsigned multi_irqs:1; /* AVB-DMAC and E-MAC has multiple irqs */
|
||||
unsigned gptp:1; /* AVB-DMAC has gPTP support */
|
||||
unsigned ccc_gac:1; /* AVB-DMAC has gPTP support active in config mode */
|
||||
|
@ -2053,6 +2053,13 @@ static struct net_device_stats *ravb_get_stats(struct net_device *ndev)
|
||||
ravb_write(ndev, 0, TROCR); /* (write clear) */
|
||||
}
|
||||
|
||||
if (info->carrier_counters) {
|
||||
nstats->collisions += ravb_read(ndev, CXR41);
|
||||
ravb_write(ndev, 0, CXR41); /* (write clear) */
|
||||
nstats->tx_carrier_errors += ravb_read(ndev, CXR42);
|
||||
ravb_write(ndev, 0, CXR42); /* (write clear) */
|
||||
}
|
||||
|
||||
nstats->rx_packets = stats0->rx_packets;
|
||||
nstats->tx_packets = stats0->tx_packets;
|
||||
nstats->rx_bytes = stats0->rx_bytes;
|
||||
@ -2432,6 +2439,7 @@ static const struct ravb_hw_info gbeth_hw_info = {
|
||||
.rx_max_buf_size = SZ_8K,
|
||||
.aligned_tx = 1,
|
||||
.tx_counters = 1,
|
||||
.carrier_counters = 1,
|
||||
.half_duplex = 1,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user