Don't whack the dispatcher.
Don't force unnecessary overhead to occur with every packet or you will never get anything
Provide kernel-side code that will capture and accumulate
the statistics, then provide a mechanism (i.e.
pseudo-device) that allows those statistics to be read. Any user-side process can then read these statistics, say once per second, to get the answers that it needs.