Hi Sergey, Thanks for the feedback. > Subject: Re: [RFC 08/12] ravb: Add carrier_counters to struct ravb_hw_info > > On 10/5/21 2:06 PM, Biju Das wrote: > > > 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@xxxxxxxxxxxxxx> > > Reviewed-by: Sergey Shtylyov <s.shtylyov@xxxxxx> > > [...] > > diff --git a/drivers/net/ethernet/renesas/ravb.h > b/drivers/net/ethernet/renesas/ravb.h > index 8c7b2569c7dd..899e16c5eb1a 100644 > --- a/drivers/net/ethernet/renesas/ravb.h > +++ b/drivers/net/ethernet/renesas/ravb.h > [...] > @@ -1061,6 +1065,7 @@ struct ravb_hw_info { > unsigned nc_queue:1; /* AVB-DMAC has NC queue */ > unsigned magic_pkt:1; /* E-MAC supports magic packet > detection */ > unsigned half_duplex:1; /* E-MAC supports half duplex mode */ > + unsigned carrier_counters:1; /* E-MAC has carrier counters */ > > > > [...] > > diff --git a/drivers/net/ethernet/renesas/ravb_main.c > > b/drivers/net/ethernet/renesas/ravb_main.c > > index 42573eac82b9..c057de81ec58 100644 > > --- a/drivers/net/ethernet/renesas/ravb_main.c > > +++ b/drivers/net/ethernet/renesas/ravb_main.c > > @@ -2075,6 +2075,18 @@ 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->tx_carrier_errors += ravb_read(ndev, CXR55); > > According to the manual, CXR55 counts RX events (carrier extension > lost. Agreed. will remove this from tx_carriers. > > > + ravb_write(ndev, 0, CXR55); /* (write clear) */ > > + nstats->tx_carrier_errors += ravb_read(ndev, CXR56); > > And CXR56 counts receive events too... Agreed. will remove this from tx_carriers. > > > + ravb_write(ndev, 0, CXR56); /* (write clear) */ > > + } > > + > > nstats->rx_packets = stats0->rx_packets; > > nstats->tx_packets = stats0->tx_packets; > > nstats->rx_bytes = stats0->rx_bytes; @@ -2486,6 +2498,7 @@ static > > const struct ravb_hw_info gbeth_hw_info = { > > .aligned_tx = 1, > > .tx_counters = 1, > > .half_duplex = 1, > > + .carrier_counters = 1, > > At least init it next to 'tx_counters'. :-) Agreed. wo;; move next to tx_counters. Regards, Biju > > [...] > > MBR, Sergey