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