MSI-X
BCM5718 Programmer’s Guide
Broadcom
®
January 29, 2016 • 5718-PG108-R
Page 241
– Single Vector IOV mode
• Multivector mode
– Multivector RSS mode (5 Vectors Requested)
– Multivector IOV mode (17 Vectors Requested)
The idea is that during boot up, if either RSS or IOV mode is to be enabled, the driver would program the
controller into the appropriate Multivector submode first. Subsequently, if the OS does not allocate the requested
number of MSI-X vectors (five for RSS and 17 for IOV), then the driver must reprogram the controller into the
appropriate Single Vector submode. All of this must be performed before the driver enables the EMAC to receive
or transmit traffic. Once traffic is started, the MSI-X Vector mode must not be reprogrammed. The controller will
behave unpredictably if that is done.
Single Vector mode or Multivector mode may be chosen by the driver by programming register bit 0x6000[7].
Such submodes are derived by the controller from the appropriate RSS, IOV and Multiple Send queue mode
settings. All permissible combinations are shown in the table below.
Vector allocation in each mode is shown below:
Single Vector Mode:
– RSS mode: Vector#0–Aggregate of the following:
– Rx Return Ring Indication (Active only when RSS is Disabled)
– Send Completion
– Link Status Change
– Error/Attention
– Rx Return Ring3 through Ring0 Indications
• IOV mode: Vector#0—Aggregate of the following:
Note:
IOV mode enables 16 VRQs but does not necessarily enable multiple Tx queues, which may
be enabled independent of IOV-mode selection. Hence the send completion, when Single Send queue
is chosen, will always be indicated on Vector#0 while Multiqueue Send Completions will be paired with
Rx queue indications in the respective vectors.
Table 90: MSI-X Vector Mode Selection
MSI-X Vector Mode
Multivector Enable
0x6000[7]
RSS Mode
Enable 0x468[23]
IOV Mode Enable
0x6800[8]
Multi TXQ Enable
0x1800[5]
Single Vector—
RSS Mode
Single TXQ
0x0
0x1
0x0
0x0
Multiple TXQ
0x0
0x1
0x0
0x1
Single Vector—
IOV Mode
Single TXQ
0x0
0x0
0x1
0x0
Multiple TXQ
0x0
0x0
0x1
0x1
Multivector—
RSS Mode
Single TXQ
0x1
0x1
0x0
0x0
Multiple TXQ
0x1
0x1
0x0
0x1
Multivector—
IOV Mode
Single TXQ
0x1
0x0
0x1
0x0
Multiple TXQ
0x1
0x0
0x1
0x1