NetXtreme Legacy Interrupt Model
BCM5718 Programmer’s Guide
Broadcom
®
January 29, 2016 • 5718-PG108-R
Page 230
Legacy Status Word Format:
• Bit [0]: Update-Bit
• Bit [1]: Link Status Change
• Bit [2]: Error/Attention
• Bit [3]: Resvd–always 0
• Bit [4]: Resvd–always 0
• Bit [5]: Resvd–always 0
• Bits [31:6]: Reserved 0x0
ISR Flow
The basic flow of an ISR is as follows:
1.
Acknowledge interrupt. Write a nonzero value (i.e., value = 1) to interrupt mailbox 0 (see Interrupt Mailbox
0 Register 0x200) for host standard and flat modes, and other Interrupt Mailbox Registers 0x5800-0x40 for
indirect mode, to indicate to the controller that the driver is currently processing the interrupt. This step
temporarily disables further device interrupts.
2.
Read and save the value of the status tag field of the status block.
3.
Claim the interrupt. Determine if action is required. Read the updated bit of the status word. If the update bit
is asserted then the controller has updated the status block.
4.
Clear the update bit of the status word in the status block. This indicates that the host driver either has or
will touch the status block. If a during interrupt event occurs, the host driver can examine the update bit later
to determine if a fresh status block has been moved to host memory space since.
5.
Check for Rx traffic indications:
a. Loop through enabled Rx Return Rings (0 to 3).
b. Check for differences between Rx return ring producer indices (status block) and Rx return ring consumer
indices (value written to mailbox on previous call) as this indicates the number of Rx frames to process
from the Rx return ring.
c. Process the Rx packets.
d. Update the Rx return ring consumer indices in each mailbox.
6.
Check for Tx completions:
a. Check for differences between previous consumer index (tracked by host driver) and current consumer
index in the status block. These are the Tx BDs which can be made available again to the next send
operation.
0x08
Receive Standard Producer Ring Consumer
Index
Receive Return Ring 1 Producer Index
0x0C
Receive Return Ring 2 Producer Index
Receive Return Ring 3 Producer Index
0x10
Send BD Consumer Index
Receive Return Ring 0 Producer Index
0x14
Reserved 0x0
Receive Jumbo Producer Ring Consumer Index
Table 88: NetXtreme Legacy Status Block Format (Cont.)
Offset
3116
150