1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//! Interrupt management for the ixgbe driver.
//!
//! This module provides structures and configuration for managing MSI and MSI-X
//! interrupts on Intel 82599 NICs. Interrupt support is optional and requires the
//! `irq` feature to be enabled.
//!
//! # Interrupt Types
//!
//! The Intel 82599 supports two interrupt mechanisms:
//!
//! - **MSI (Message Signaled Interrupts)**: Single interrupt vector
//! - **MSI-X (Extended MSI)**: Multiple interrupt vectors for per-queue interrupts
//!
//! # Interrupt Throttling
//!
//! Interrupt throttling (rate limiting) is controlled by the `itr_rate` field and
//! is expressed in units of 2μs. Common values:
//!
//! | Value | Time | Interrupts/sec |
//! |-------|-------|----------------|
//! | 0x008 | 2μs | ~488,200 |
//! | 0x028 | 10μs | ~97,600 |
//! | 0xC8 | 50μs | ~20,000 |
//! | 0x7D0 | 500μs | ~2,000 |
use Vec;
/// The number of msi-x vectors this device can have.
/// It can be set from PCI space, but we took the value from the data sheet.
pub const IXGBE_MAX_MSIX_VECTORS: usize = 64;
/// Interrupt configuration for the ixgbe device.
///
/// This structure contains global interrupt settings for the device including
/// throttle rate, timeout, and per-queue configuration.
/// Per-queue interrupt configuration.
///
/// Controls whether interrupts are enabled for a specific transmit or receive queue.
/// The type of interrupt mechanism to use.
///
/// - `Msi`: Message Signaled Interrupts (single vector)
/// - `Msix`: Extended MSI (multiple vectors)