Fri, Jun 17, 2016 at 03:48:35PM CEST, d...@cumulusnetworks.com wrote: >On 6/17/16 2:24 AM, Jiri Pirko wrote: >> >>The problem we try to handle is different, it's about offloaded >>forwarded packets which are not seen by kernel. Let me try to draw it :) >> >> port1 port2 (HW stats are counted here) >> \ / >> \ / >> \ / >> --(A)---- ASIC --(B)-- >> | >> (C) >> | >> CPU (SW stats are counted here) >> >> >>Now we have couple of flows for TX and RX (direction does not matter here): >> >>1) port1->A->ASIC->C->CPU >> >> For this flow, HW and SW stats are equal. >> >>2) port1->A->ASIC->C->CPU->C->ASIC->B->port2 >> >> For this flow, HW and SW stats are equal. >> >>3) port1->A->ASIC->B->port2 >> >> For this flow, SW stats are 0. >> >>The purpose of this patchset is to provide facility for user to >>find out the difference between flows 1+2 and 3. In other words, user >>will be able to see the statistics for his slow-path (through kernel). >> >>Also, as a default the accumulated stats (HW) will be exposed to user >>so the userspace apps can react properly. >> > >You no longer agree with this discussion? > http://comments.gmane.org/gmane.linux.network/346740 > >Essentially netdevice stats show counters for packets punted to the cpu and >ethool -S shows h/w stats. This patch set seems to invert that.
That is problematic. Existing apps depend on rtnetlink stats. But if we don't count offloaded forwarded packets, the apps don't see anything. Therefore I believe that this patchset approach is better. The existing apps continue to work and future apps can use newly introduces sw_stats to query slowpath traffic. Makes sense to me.