On Wed, Jun 24, 2020 at 10:17:46AM -0700, Tom Herbert wrote:
> Global queues, or gqids, are an abstract representation of NIC
> device queues. They are global in the sense that the each gqid
> can be map to a queue in each device, i.e. if there are multiple
> devices in the system, a gqid can map to a different queue, a dqid,
> in each device in a one to many mapping.  gqids are used for
> configuring packet steering on both send and receive in a generic
> way not bound to a particular device.
> 
> Each transmit or receive device queue may be reversed mapped to
> one gqid. Each device maintains a table mapping gqids to local
> device queues, those tables are used in the data path to convert
> a gqid receive or transmit queue into a device queue relative to
> the sending or receiving device.

I'm confused by this word salad, can it be simplified?

So a RX device queue maps to one global queue, implying that there's a
one way relationship here.  But at the same time, the second sentence
implies each device can map a global RX queue to a device queue.

This would logically mean that for a given device, there's a 1:1
relationship between global and device queue, and the only 'one-to-many'
portion is coming from mapping global queues across different devices.

How would I do this:
    given device eth0
    create new RSS context 200
    create RX queues 800, 801, added to RSS context 200
    create global RX queue for context 200 
    attach 4 sockets to context 200

I'm assuming that each socket ends up being flow-assigned to one of the
underlying device queues (800 or 801), correct?
-- 
Jonathan

Reply via email to