[ofw] patch: Use tFirst method on interrupts
Tzachi Dar
tzachid at mellanox.co.il
Mon Jul 21 23:30:43 PDT 2008
Applied on 1439.
Thanks
Tzachi
________________________________
From: ofw-bounces at lists.openfabrics.org
[mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Tzachi Dar
Sent: Monday, July 21, 2008 6:57 PM
To: ofw at lists.openfabrics.org
Subject: [ofw] patch: Use tFirst method on interrupts
The following patch changes the default behavior of mlx4 from
tLast to tFirst.
Assuming that interrupt moderation is set to x us than:
tLast method means that an interrupt is generated after x us
that no packet arrives. (that is if packets continue to arrive, no
interrupt will be generated).
tFirst method means that an interrupt is generated after x us
from the first packet. (even if packets continue to arrive).
Index: Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/fw.c
===================================================================
--- Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/fw.c (revision
2835)
+++ Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/fw.c (revision
2836)
@@ -712,6 +712,12 @@
#else
#error Host endianness not defined
#endif
+
+ if (g.mod_interrupt_from_first) {
+ // Bit 30,31 tell the moderation method, 0 default, 1 from
first packet
+ *(inbox + INIT_HCA_FLAGS_OFFSET / 4) |= cpu_to_be32(1 << 30);
+ }
+
/* Check port for UD address vector: */
*(inbox + INIT_HCA_FLAGS_OFFSET / 4) |= cpu_to_be32(1);
Index: Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/mlx4.h
===================================================================
--- Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/mlx4.h (revision
2835)
+++ Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/mlx4.h (revision
2836)
@@ -88,6 +88,7 @@
int mod_enable_qos;
int mod_mlx4_blck_lb;
enum mlx4_port_type mod_port_type[MLX4_MAX_PORTS];
+ int mod_interrupt_from_first;
int mod_msi_enable;
int mod_msi_num_vector;
Index: Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/mlx4_bus.inf
===================================================================
--- Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/mlx4_bus.inf
(revision 2835)
+++ Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/mlx4_bus.inf
(revision 2836)
@@ -184,14 +184,15 @@
HKR,"Parameters","LogNumMpt",%REG_DWORD%,0x00000012
HKR,"Parameters","LogNumMtt",%REG_DWORD%,0x00000014
HKR,"Parameters","EnableQoS",%REG_DWORD%,0x00000001
+HKR,"Parameters","BlockMcastLoopBack",%REG_DWORD%,0x00000000
+HKR,"Parameters","InterruptFromFirstPacket",%REG_DWORD%,0x00000001
+
HKR,"Parameters","NumMac",%REG_DWORD%,0x00000001
HKR,"Parameters","NumVlan",%REG_DWORD%,0x00000000
HKR,"Parameters","UsePrio",%REG_DWORD%,0x00000000
HKR,"Parameters","PortType",%REG_SZ%,"ib,ib"
-HKR,"Parameters","BlockMcastLoopBack",%REG_DWORD%,0x00000000
-
HKLM,"System\CurrentControlSet\Control\WMI\GlobalLogger\E51BB6E2-914A-4e
21-93C0-192F4801BBFF","Flags",%REG_DWORD%,0xffff
HKLM,"System\CurrentControlSet\Control\WMI\GlobalLogger\E51BB6E2-914A-4e
21-93C0-192F4801BBFF","Level",%REG_DWORD%,0x3
Index: Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/drv.c
===================================================================
--- Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/drv.c (revision
2835)
+++ Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/drv.c (revision
2836)
@@ -894,9 +894,6 @@
// "log maximum number of memory translation table segments
per HCA"
DECLARE_CONST_UNICODE_STRING(numMtt, L"LogNumMtt");
- // "Enable Quality of Service support in the HCA if > 0,
(default 1)"
- DECLARE_CONST_UNICODE_STRING(enableQoS, L"EnableQoS");
-
// "Maximum number of MACs per ETH port (1-127, default 1"
DECLARE_CONST_UNICODE_STRING(numMac, L"NumMac");
@@ -906,9 +903,15 @@
// "Enable steering by VLAN priority on ETH ports (0/1,
default 0)"
DECLARE_CONST_UNICODE_STRING(usePrio, L"UsePrio");
+ // "Enable Quality of Service support in the HCA if > 0,
(default 1)"
+ DECLARE_CONST_UNICODE_STRING(enableQoS, L"EnableQoS");
+
// "Block multicast loopback packets if > 0 (default 1)"
DECLARE_CONST_UNICODE_STRING(BlockMcastLB,
L"BlockMcastLoopBack");
+ // "Measure the interrupt from the first packet (default 1)"
+ DECLARE_CONST_UNICODE_STRING(InterruptFromFirstPacket,
L"InterruptFromFirstPacket");
+
// "Ports L2 type (ib/eth/auto, entry per port, comma
seperated, default ib for all)"
DECLARE_CONST_UNICODE_STRING(PortType, L"PortType");
@@ -970,12 +973,6 @@
if (NT_SUCCESS (status))
g.mod_num_mtt = value;
- status = WdfRegistryQueryULong(hKey, &enableQoS, &value);
- if (NT_SUCCESS (status))
- g.mod_enable_qos = value;
- else
- g.mod_enable_qos = 1;
-
status = WdfRegistryQueryULong(hKey, &numMac, &value);
if (NT_SUCCESS (status))
g.mod_num_mac = value;
@@ -994,12 +991,26 @@
else
g.mod_use_prio = 0;
+ status = WdfRegistryQueryULong(hKey, &enableQoS, &value);
+ if (NT_SUCCESS (status))
+ g.mod_enable_qos = value;
+ else
+ g.mod_enable_qos = 1;
+
+
status = WdfRegistryQueryULong(hKey, &BlockMcastLB, &value);
if (NT_SUCCESS (status))
g.mod_mlx4_blck_lb = value;
else
g.mod_mlx4_blck_lb = 1;
+ status = WdfRegistryQueryULong(hKey,
&InterruptFromFirstPacket, &value);
+ if (NT_SUCCESS (status))
+ g.mod_interrupt_from_first = value;
+ else
+ g.mod_interrupt_from_first = 1;
+
+
status = WdfRegistryQueryULong(hKey, &MsiEnable, &value);
if (NT_SUCCESS (status))
g.mod_msi_enable = value;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20080722/418f0a35/attachment.html>
More information about the ofw
mailing list