Re: [PATCH v2 net-next] net/mlx5e: Report rx_discards_phy via rx_fifo_errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 15 Nov 13:25, Jakub Kicinski wrote:
On Fri, 15 Nov 2024 11:54:38 -0800 Saeed Mahameed wrote:
>We can, but honestly I'd just make sure they are counted in rx_dropped

rx_dropped: Number of packets received but not processed,
  *   e.g. due to lack of resources or unsupported protocol.
  *   For hardware interfaces this counter may include packets discarded
  *   due to L2 address filtering but should not include packets dropped
                                  ^^^^^^^^^^^^^^
  *   by the device due to buffer exhaustion which are counted separately in
                           ^^^^^^^^^^^^^^^^^
  *   @rx_missed_errors (since procfs folds those two counters together).
      ^^^^^^^^^^^^^^^^^

I presume you quote this comment to indicate the rx_dropped should
count packets dropped due to buffer exhaustion? If yes then you don't
understand the comment. If no then I don't understand why you're
quoting it.


I quoted this because you suggested to use rx_dropped. It's not a good fit.
In your previous reply you said: "but honestly I'd just make sure they are counted in rx_dropped"

I think we should use rx_fifo_errors for this and update documentation:

rx_missed_errors --> host buffers
rx_fifo_errors   --> device buffers

In theory I'd love to use fifo errors to mean device buffer drops.
In practice devices can backpressure due to host slowness, so the

So what? host slowness will always be counted in rx_missed_errors.
if you see both rx_missed_erros and fifo_errors progressing, you can make
the connection.. With CX devices out_of_buffer "missed_errors" can never cause
fifo drops "fifo_errors".

device drops are hard to categorize. The vendors themselves have
limited understanding of how their devices will behave under real
workloads. And once devices are deployed it may be too late to change
definitions.


Forget about vendors, here is my simplified categorization that we could
align with easily among all vendors and users

// delivered to SW but dropped in SW
1) seen by sw dropped by sw. (rx_dropped?)

// couldn't deliver to SW (back-pressure)
2) slow SW: passed pipeline/fifo: but SW lack of descriptors (rx_missed_errors)
3) overflow: pipeline/fifo overflow at any point before SW queue (rx_fifo_errors)
4) expected drops: steering/flow filters, configuration, carrier
   down, etc ).. no counter in rtnl_stats exists for this
// couldn't deliver to SW, errors
5) errors, dropped due to packet related errors or HW errors

If all vendors agree, with some repurposing and renaming of the counters
maybe we can achieve the above with minimal backward compatibility breakage.
To solve this once and for all, we need the documentation to reflect strong
and clear definitions even if it renders existing implementation/interpretation to be wrong. Otherwise this will never be solved.

rx_dropped       --> unsupported portocols, filter drops, link down, etc..




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux