On Thu, 2020-07-02 at 18:47 -0700, Jakub Kicinski wrote:
> On Thu,  2 Jul 2020 15:19:14 -0700 Saeed Mahameed wrote:
> > From: Ron Diskin <ro...@mellanox.com>
> > 
> > Currently the FW does not generate events for counters other than
> > error
> > counters. Unlike ".get_ethtool_stats", ".ndo_get_stats64" (which ip
> > -s
> > uses) might run in atomic context, while the FW interface is non
> > atomic.
> > Thus, 'ip' is not allowed to issue fw commands, so it will only
> > display
> > cached counters in the driver.
> > 
> > Add a SW counter (mcast_packets) in the driver to count rx
> > multicast
> > packets. The counter also counts broadcast packets, as we consider
> > it a
> > special case of multicast.
> > Use the counter value when calling "ip -s"/"ifconfig".  Display the
> > new
> > counter when calling "ethtool -S", and add a matching counter
> > (mcast_bytes) for completeness.
> 
> What is the problem that is being solved here exactly?
> 
> Device counts mcast wrong / unsuitably?
> 

To read mcast counter we need to execute FW command which is blocking,
we can't block in atomic context .ndo_get_stats64 :( .. we have to
count in SW. 

the previous approach wasn't accurate as we read the mcast counter in a
background thread triggered by the previous read.. so we were off by
the interval between two reads.

> > Fixes: f62b8bb8f2d3 ("net/mlx5: Extend mlx5_core to support
> > ConnectX-4 Ethernet functionality")
> > Signed-off-by: Ron Diskin <ro...@mellanox.com>
> > Reviewed-by: Tariq Toukan <tar...@mellanox.com>
> > Signed-off-by: Saeed Mahameed <sae...@mellanox.com>

Reply via email to