On Fri, Apr 26, 2024 at 04:52:13PM -0700, Jakub Kicinski wrote: > On Fri, 26 Apr 2024 16:43:53 -0700 Joe Damato wrote: > > > In case of mlx4 looks like the buffer refill is "async", the driver > > > tries to refill the buffers to max, but if it fails the next NAPI poll > > > will try again. Allocation failures are not directly tied to packet > > > drops. In case of bnxt if "replacement" buffer can't be allocated - > > > packet is dropped and old buffer gets returned to the ring (although > > > if I'm 100% honest bnxt may be off by a couple, too, as the OOM stat > > > gets incremented on ifup pre-fill failures). > > > > Yes, I see that now. I'll drop this patch entirely from v3 and just leave > > the other two and remove alloc_fail from the queue stats patch. > > Up to you, but I'd keep alloc_fail itself. > If mlx4 gets page pool support one day it will be useful to run this: > https://lore.kernel.org/all/20240426232400.624864-1-kuba@xxxxxxxxxx/ > > And I think it's useful to be able to check in case there are Rx > discards whether the system was also under transient memory pressure > or not. Ah, maybe I read what you wrote incorrectly in your previous message. I think you were saying that I should drop just the dev->stats.rx_missed_errors = dropped; due to the definition of rx_missed_errors, but that by the definition of rx-alloc-fail: alloc_fail = ring->dropped; is still valid and can stay. Is that right or am I just totally off?