Date: 24 Mar 2014 15:45:22 +0000 From: "Mark Delany" <c2h@romeo.emu.st> To: freebsd-net@freebsd.org Subject: How to make netmap NS_FORWARD work with NR_REG_ONE_NIC? Message-ID: <20140324154522.30664.qmail@f5-external.bushwire.net>
next in thread | raw e-mail | index | archive | help
(Very recent fbsd10) My application is taking advantage of NR_REG_ONE_NIC to register separate handlers for each h/w ring. (Pro tip, you must re-open /dev/netmap each time, a dup() fd doesn't work). While good for performance, it unfortunately appears that NS_FORWARD does not work in this mode - presumably because NR_REG_ONE_NIC doesn't include the host ring. Now it's possible I simply have a bug and NS_FORWARD should work with NR_REG_ONE_NIC - I have demo code I can share if needed - but assuming for a moment I don't have a bug... What's the right way to implement host forwarding with NR_REG_ONE_NIC? Do I have to register an independent handler with NR_REG_SW_NIC and have the h/w ring handlers synchronize with it? If so, I also presume the NR_REG_SW_NIC handler has to manage transfers in both directions, yes? I'm not keen on that approach if I can avoid it as it introduces synchronization costs between handlers where previously I needed none. I also looked at the kernel module and determined that nr_flags = NR_REG_ONE_NIC | NR_REG_SW_NIC is invalid. Oh well. That would have solved my problem nicely. Mark.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140324154522.30664.qmail>