svn commit: r357051 - head/sys/dev/bge

Gleb Smirnoff glebius at freebsd.org
Fri Jan 24 01:25:08 UTC 2020


On Thu, Jan 23, 2020 at 08:17:46PM -0500, Ryan Stone wrote:
R> On Thu, Jan 23, 2020 at 6:05 PM Gleb Smirnoff <glebius at freebsd.org> wrote:
R> >
R> > On Thu, Jan 23, 2020 at 02:17:33PM -0500, Ryan Stone wrote:
R> > R> What is a driver's responsibility now for entering/leaving the net epoch now?
R> >
R> > For drivers that are 'special', entering the net epoch is necessary. Special
R> > usually means running if_input outside network interrupt context.
R> >
R> > However, there is plan to generalize entering/exiting epoch for taskqueues
R> > and callouts.
R> 
R> Why on earth is it done that way rather than putting the network epoch
R> enter/exit in ether_input?  I'm with Ian; this sounds like a huge
R> layering violation.

Because at interrupt level we can batch multiple packets in a single epoch.
This speeds up unfiltered packet forwarding performance by 5%.

With driver level pfil hooks I would claim even more improvement, because before
the change we needed to enter epoch twice - once for filtering, than for ether_input.

Epoch isn't a layer, it is a synchronisation primitive, so I disagree about
statement on layering violation.

-- 
Gleb Smirnoff


More information about the svn-src-head mailing list