On Mon, Jul 20, 2015 at 06:58:06PM +0200, Alexander Bluhm wrote: > On Mon, Jul 20, 2015 at 01:09:07AM +0000, Florian Obser wrote: > > - s = splnet(); > > > > + s = splnet(); > > pflow_flush(sc); > > + splx(s); > > This splx() looks strange, too. Why flush something that could be > filled by an interrupt after splx()? I think you have to put > everything in one splnet() block. > > I wonder wether pflow(4) is ever run at splnet(). Otherwise > splsoftnet() for the block should be enough. But that is another > topic. Keep the splnet() for now.
No it's not. The spl dance is here for two reasons: 1) protect against pf messing with pflow state while pflow is sending data 2) protect the ip_output() I'm removing pf runs at softnet and ip_output() is gone. so softnet it is ;) I was afraid I got the spl stuff wrong. I'll stare at it a bit more. All the other comments from you and blambert@ are integrated in my tree. -- I'm not entirely sure you are real.
