netmap extra rings and buffers
Eggert, Lars
lars at netapp.com
Fri Sep 5 12:05:10 UTC 2014
Thank you!
On 2014-9-4, at 17:48, Luigi Rizzo <rizzo at iet.unipi.it> wrote:
> On Thu, Sep 04, 2014 at 11:58:28AM +0000, Eggert, Lars wrote:
>> Hi Luigi,
>>
>> I'm allocating extra rings and/or extra buffers via the nr_arg1/nr_arg3 parameters for NIOCREGIF.
>>
>> Once I've done that, how do I actually access those rings and buffers?
>>
>> For extra rings, the documentation and example code don't really say anything.
>>
>> For extra buffers, the documentation says "nifp->ni_bufs_head will be the index of the first buffer" but doesn't really explain how I can find the buffer given its index (since it's not in a ring, the NETMAP_BUF macro doesn't seem to apply?) The part about "buffers are linked to each other using the first uint32_t as the index" is also unclear to me.
>>
>> Do you have some more text or example code that shows how to use extra rings and buffers?
>
> the ifield to request extra rings is only important when you want
> to make sure that the memory region for a VALE port has also
> space to host some pipes. Otherwise, for physical ports (which at
> the moment all share the same address space) there is not a real
> need to specify it.
>
> For the extra buffers, remember that NETMAP_BUF() can translate
> buffer indexes for any netmap buffer, even those not in a ring.
> All it does is grab the base address of the buffer pool from the
> ring, and add the buffer index times the buffer size.
>
> So you can navigate the pool of extra buffers as follows
>
> uint32_t x = nifp->ni_bufs_head; // index of first buf
>
> void *p = NETMAP_BUF(any_ring, x); // address of the first buffer
>
> x = *((uint32_t *)p); // index of the next buffer
>
> cheers
> luigi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 273 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freebsd.org/pipermail/freebsd-net/attachments/20140905/e96c5961/attachment.sig>
More information about the freebsd-net
mailing list