<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6000.16587" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=987303006-22072008><FONT face=Arial color=#0000ff
size=2>Applied on 1439.</FONT></SPAN></DIV>
<DIV><SPAN class=987303006-22072008><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=987303006-22072008><FONT face=Arial color=#0000ff
size=2>Thanks</FONT></SPAN></DIV>
<DIV><SPAN class=987303006-22072008><FONT face=Arial color=#0000ff
size=2>Tzachi</FONT></SPAN></DIV><BR>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> ofw-bounces@lists.openfabrics.org
[mailto:ofw-bounces@lists.openfabrics.org] <B>On Behalf Of </B>Tzachi
Dar<BR><B>Sent:</B> Monday, July 21, 2008 6:57 PM<BR><B>To:</B>
ofw@lists.openfabrics.org<BR><B>Subject:</B> [ofw] patch: Use tFirst method on
interrupts<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV><FONT face=Arial size=2><SPAN class=684274815-21072008>The following
patch changes the default behavior of mlx4 from tLast to
tFirst.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=684274815-21072008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=684274815-21072008>Assuming that
interrupt moderation is set to x us than:</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=684274815-21072008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=684274815-21072008>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).</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=684274815-21072008>
<DIV><FONT face=Arial size=2><SPAN class=684274815-21072008>tFirst method
means that an interrupt is generated after x us from the first packet. (even
if packets continue to arrive).</SPAN></FONT></DIV></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Index:
Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/fw.c<BR>===================================================================<BR>---
Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/fw.c (revision 2835)<BR>+++
Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/fw.c (revision 2836)<BR>@@
-712,6 +712,12 @@<BR> #else<BR> #error Host endianness not
defined<BR> #endif<BR>+<BR>+ if (g.mod_interrupt_from_first)
{<BR>+ // Bit 30,31 tell the moderation method, 0 default, 1 from
first packet<BR>+ *(inbox + INIT_HCA_FLAGS_OFFSET / 4) |=
cpu_to_be32(1 << 30);<BR>+ }<BR>+<BR> /* Check port for
UD address vector: */<BR> *(inbox + INIT_HCA_FLAGS_OFFSET / 4) |=
cpu_to_be32(1);<BR> <BR>Index:
Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/mlx4.h<BR>===================================================================<BR>---
Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/mlx4.h (revision 2835)<BR>+++
Q:/projinf4/trunk/hw/mlx4/kernel/bus/net/mlx4.h (revision 2836)<BR>@@
-88,6 +88,7 @@<BR> int mod_enable_qos;<BR> int
mod_mlx4_blck_lb;<BR> enum mlx4_port_type
mod_port_type[MLX4_MAX_PORTS];<BR>+ int
mod_interrupt_from_first;<BR> <BR> int
mod_msi_enable;<BR> int mod_msi_num_vector;<BR>Index:
Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/mlx4_bus.inf<BR>===================================================================<BR>---
Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/mlx4_bus.inf (revision
2835)<BR>+++
Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/mlx4_bus.inf (revision
2836)<BR>@@ -184,14 +184,15
@@<BR> HKR,"Parameters","LogNumMpt",%REG_DWORD%,0x00000012<BR> HKR,"Parameters","LogNumMtt",%REG_DWORD%,0x00000014<BR> HKR,"Parameters","EnableQoS",%REG_DWORD%,0x00000001<BR>+HKR,"Parameters","BlockMcastLoopBack",%REG_DWORD%,0x00000000<BR>+HKR,"Parameters","InterruptFromFirstPacket",%REG_DWORD%,0x00000001<BR>+<BR> HKR,"Parameters","NumMac",%REG_DWORD%,0x00000001<BR> HKR,"Parameters","NumVlan",%REG_DWORD%,0x00000000<BR> HKR,"Parameters","UsePrio",%REG_DWORD%,0x00000000<BR> HKR,"Parameters","PortType",%REG_SZ%,"ib,ib"<BR> <BR> <BR>-HKR,"Parameters","BlockMcastLoopBack",%REG_DWORD%,0x00000000<BR>-<BR> HKLM,"System\CurrentControlSet\Control\WMI\GlobalLogger\E51BB6E2-914A-4e21-93C0-192F4801BBFF","Flags",%REG_DWORD%,0xffff<BR> HKLM,"System\CurrentControlSet\Control\WMI\GlobalLogger\E51BB6E2-914A-4e21-93C0-192F4801BBFF","Level",%REG_DWORD%,0x3<BR> <BR>Index:
Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/drv.c<BR>===================================================================<BR>---
Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/drv.c (revision 2835)<BR>+++
Q:/projinf4/trunk/hw/mlx4/kernel/bus/drv/drv.c (revision 2836)<BR>@@
-894,9 +894,6 @@<BR> // "log maximum number of memory translation
table segments per HCA"<BR> DECLARE_CONST_UNICODE_STRING(numMtt,
L"LogNumMtt"); <BR> <BR>- // "Enable Quality of Service support
in the HCA if > 0, (default
1)"<BR>- DECLARE_CONST_UNICODE_STRING(enableQoS,
L"EnableQoS"); <BR>-<BR> // "Maximum number of MACs per ETH
port (1-127, default 1"<BR> DECLARE_CONST_UNICODE_STRING(numMac,
L"NumMac"); <BR> <BR>@@ -906,9 +903,15 @@<BR> // "Enable
steering by VLAN priority on ETH ports (0/1, default
0)"<BR> DECLARE_CONST_UNICODE_STRING(usePrio,
L"UsePrio"); <BR> <BR>+ // "Enable Quality of Service support
in the HCA if > 0, (default
1)"<BR>+ DECLARE_CONST_UNICODE_STRING(enableQoS,
L"EnableQoS"); <BR>+<BR> // "Block multicast loopback packets
if > 0 (default
1)"<BR> DECLARE_CONST_UNICODE_STRING(BlockMcastLB,
L"BlockMcastLoopBack"); <BR> <BR>+ // "Measure the interrupt
from the first packet (default
1)"<BR>+ DECLARE_CONST_UNICODE_STRING(InterruptFromFirstPacket,
L"InterruptFromFirstPacket"); <BR>+<BR> // "Ports L2 type
(ib/eth/auto, entry per port, comma seperated, default ib for
all)"<BR> DECLARE_CONST_UNICODE_STRING(PortType,
L"PortType");<BR> <BR>@@ -970,12 +973,6 @@<BR> if
(NT_SUCCESS (status)) <BR> g.mod_num_mtt =
value;<BR> <BR>- status = WdfRegistryQueryULong(hKey,
&enableQoS, &value);<BR>- if (NT_SUCCESS (status))
<BR>- g.mod_enable_qos =
value;<BR>- else<BR>- g.mod_enable_qos =
1;<BR>-<BR> status = WdfRegistryQueryULong(hKey, &numMac,
&value);<BR> if (NT_SUCCESS (status))
<BR> g.mod_num_mac = value;<BR>@@ -994,12 +991,26
@@<BR> else<BR> g.mod_use_prio =
0;<BR> <BR>+ status = WdfRegistryQueryULong(hKey,
&enableQoS, &value);<BR>+ if (NT_SUCCESS (status))
<BR>+ g.mod_enable_qos =
value;<BR>+ else<BR>+ g.mod_enable_qos =
1;<BR>+<BR>+<BR> status = WdfRegistryQueryULong(hKey,
&BlockMcastLB, &value);<BR> if (NT_SUCCESS (status))
<BR> g.mod_mlx4_blck_lb =
value;<BR> else<BR> g.mod_mlx4_blck_lb
= 1;<BR> <BR>+ status = WdfRegistryQueryULong(hKey,
&InterruptFromFirstPacket, &value);<BR>+ if (NT_SUCCESS
(status)) <BR>+ g.mod_interrupt_from_first =
value;<BR>+ else<BR>+ g.mod_interrupt_from_first =
1;<BR>+<BR>+<BR> status = WdfRegistryQueryULong(hKey,
&MsiEnable, &value);<BR> if (NT_SUCCESS (status))
<BR> g.mod_msi_enable =
value;<BR></DIV></BLOCKQUOTE></FONT></BODY></HTML>