ravb: Add tx_counters to struct ravb_hw_info
The register for retrieving TX counters is present only on R-Car Gen3 and RZ/G2L; it is not present on R-Car Gen2. Add the tx_counters hw feature bit to struct ravb_hw_info, to enable this feature specifically for R-Car Gen3 now and later extend it to RZ/G2L. Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8bc4caa0ab
commit
0b81d67311
@ -1000,6 +1000,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 */
|
||||
};
|
||||
|
||||
struct ravb_private {
|
||||
|
@ -1632,13 +1632,14 @@ static u16 ravb_select_queue(struct net_device *ndev, struct sk_buff *skb,
|
||||
static struct net_device_stats *ravb_get_stats(struct net_device *ndev)
|
||||
{
|
||||
struct ravb_private *priv = netdev_priv(ndev);
|
||||
const struct ravb_hw_info *info = priv->info;
|
||||
struct net_device_stats *nstats, *stats0, *stats1;
|
||||
|
||||
nstats = &ndev->stats;
|
||||
stats0 = &priv->stats[RAVB_BE];
|
||||
stats1 = &priv->stats[RAVB_NC];
|
||||
|
||||
if (priv->chip_id == RCAR_GEN3) {
|
||||
if (info->tx_counters) {
|
||||
nstats->tx_dropped += ravb_read(ndev, TROCR);
|
||||
ravb_write(ndev, 0, TROCR); /* (write clear) */
|
||||
}
|
||||
@ -1937,6 +1938,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
|
||||
.stats_len = ARRAY_SIZE(ravb_gstrings_stats),
|
||||
.max_rx_len = RX_BUF_SZ + RAVB_ALIGN - 1,
|
||||
.internal_delay = 1,
|
||||
.tx_counters = 1,
|
||||
};
|
||||
|
||||
static const struct ravb_hw_info ravb_gen2_hw_info = {
|
||||
|
Loading…
Reference in New Issue
Block a user