On 08/31/2016 11:57 AM, Timur Tabi wrote: > Timur Tabi wrote: >> >>> Seems that there are several unused members in the emac_stats struct: >>> >>>> +struct emac_stats { >>> ... >>> ... >>> Both rx_bcast_byte_cnt and rx_mcast_byte_cnt are not used anywhere/ >>>> + u64 rx_bcast_byte_cnt; /* broadcast packets byte count >>>> (without FCS) */ >>>> + u64 rx_mcast_byte_cnt; /* multicast packets byte count >>>> (without FCS) */ >>> ... >>> rx_err_addr is not used >>>> + u64 rx_err_addr; /* packets dropped due to address >>>> filtering */ >> >> I'll go through the structure and remove the unused fields. > > It turns out I cannot actually strip out those "unused" fields. They > are all indirectly used in emac_get_stats64: > > u64 *stats_itr = &adpt->stats.rx_ok; > > while (addr <= REG_MAC_RX_STATUS_END) { > val = readl_relaxed(adpt->base + addr); > *stats_itr += val; > stats_itr++; > addr += sizeof(u32); > } if these are truly 64-bits stats, how come you are using a single readl_* to access them? Or is the u64 rx_err_addr just used as temporary storage and aligned to the largest size you need to deal with? -- Florian -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html