Re: [PATCH 4/7 RESEND] cxgb3 - Update FW to 4.1

2007-05-29 Thread Divy Le Ray

Jeff Garzik wrote:

[EMAIL PROTECTED] wrote:

From: Divy Le Ray [EMAIL PROTECTED]

Bump FW version to 4.1.
Modify chip tuning in consequence.

Signed-off-by: Divy Le Ray [EMAIL PROTECTED]
---

 drivers/net/cxgb3/regs.h|4 
 drivers/net/cxgb3/t3_hw.c   |   40 
++--

 drivers/net/cxgb3/version.h |2 +-
 3 files changed, 27 insertions(+), 19 deletions(-)


You think requiring a FIRMWARE UPGRADE is something that should be 
done in the middle of a kernel bugfix series?  What Q/A planet are you 
from?


I made a bad jugdement.
I'll repost a patch series for 2.6.22 fixes against Linus'tree, and a 
patch series for driver improvements against netdev-2.6#upstream, if it 
is acceptable.




This is a completely ridiculous burden you are placing on the 
individual user.  A good driver knows that firmware NOT SHIPPED WITH 
THE KERNEL does not necessarily move in lock-step with the kernel driver.


We're actively working on RDMA improvements, leading to these FW updates.
Some of the changes are unfortunately not backward compatible, hence the 
exact matching the driver enforces.
The bundle driver/FW is getting finalized. New adapters will be shipped 
with the right image once it is available.
In the mean time, this is indeed a burden for the current users to get 
the corresponding FW.


Divy

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 4/7 RESEND] cxgb3 - Update FW to 4.1

2007-05-28 Thread Jeff Garzik

[EMAIL PROTECTED] wrote:

From: Divy Le Ray [EMAIL PROTECTED]

Bump FW version to 4.1.
Modify chip tuning in consequence.

Signed-off-by: Divy Le Ray [EMAIL PROTECTED]
---

 drivers/net/cxgb3/regs.h|4 
 drivers/net/cxgb3/t3_hw.c   |   40 ++--
 drivers/net/cxgb3/version.h |2 +-
 3 files changed, 27 insertions(+), 19 deletions(-)


You think requiring a FIRMWARE UPGRADE is something that should be done 
in the middle of a kernel bugfix series?  What Q/A planet are you from?


This is a completely ridiculous burden you are placing on the individual 
user.  A good driver knows that firmware NOT SHIPPED WITH THE KERNEL 
does not necessarily move in lock-step with the kernel driver.  You are 
welcome to GPL your firmware and ship it of course


Jeff



-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/7 RESEND] cxgb3 - Update FW to 4.1

2007-05-26 Thread divy
From: Divy Le Ray [EMAIL PROTECTED]

Bump FW version to 4.1.
Modify chip tuning in consequence.

Signed-off-by: Divy Le Ray [EMAIL PROTECTED]
---

 drivers/net/cxgb3/regs.h|4 
 drivers/net/cxgb3/t3_hw.c   |   40 ++--
 drivers/net/cxgb3/version.h |2 +-
 3 files changed, 27 insertions(+), 19 deletions(-)

diff --git a/drivers/net/cxgb3/regs.h b/drivers/net/cxgb3/regs.h
index bf9d6be..2c47d4a 100644
--- a/drivers/net/cxgb3/regs.h
+++ b/drivers/net/cxgb3/regs.h
@@ -1160,6 +1160,8 @@
 
 #define A_TP_MOD_CHANNEL_WEIGHT 0x434
 
+#define A_TP_MOD_RATE_LIMIT 0x438
+
 #define A_TP_PIO_ADDR 0x440
 
 #define A_TP_PIO_DATA 0x444
@@ -1214,6 +1216,8 @@
 #define G_TXDROPCNTCH0RCVD(x) (((x)  S_TXDROPCNTCH0RCVD)  \
   M_TXDROPCNTCH0RCVD)
 
+#define A_TP_PROXY_FLOW_CNTL 0x4b0
+
 #define A_ULPRX_CTL 0x500
 
 #define S_ROUND_ROBIN4
diff --git a/drivers/net/cxgb3/t3_hw.c b/drivers/net/cxgb3/t3_hw.c
index fb485d0..4929ac9 100644
--- a/drivers/net/cxgb3/t3_hw.c
+++ b/drivers/net/cxgb3/t3_hw.c
@@ -921,7 +921,7 @@ static int t3_flash_erase_sectors(struct
 /*
  * t3_load_fw - download firmware
  * @adapter: the adapter
- * @fw_data: the firrware image to write
+ * @fw_data: the firmware image to write
  * @size: image size
  *
  * Write the supplied firmware image to the card's serial flash.
@@ -2362,7 +2362,7 @@ static void tp_config(struct adapter *ad
 F_TCPCHECKSUMOFFLOAD | V_IPTTL(64));
t3_write_reg(adap, A_TP_TCP_OPTIONS, V_MTUDEFAULT(576) |
 F_MTUENABLE | V_WINDOWSCALEMODE(1) |
-V_TIMESTAMPSMODE(1) | V_SACKMODE(1) | V_SACKRX(1));
+V_TIMESTAMPSMODE(0) | V_SACKMODE(1) | V_SACKRX(1));
t3_write_reg(adap, A_TP_DACK_CONFIG, V_AUTOSTATE3(1) |
 V_AUTOSTATE2(1) | V_AUTOSTATE1(0) |
 V_BYTETHRESHOLD(16384) | V_MSSTHRESHOLD(2) |
@@ -2371,16 +2371,18 @@ static void tp_config(struct adapter *ad
 F_IPV6ENABLE | F_NICMODE);
t3_write_reg(adap, A_TP_TX_RESOURCE_LIMIT, 0x18141814);
t3_write_reg(adap, A_TP_PARA_REG4, 0x5050105);
-   t3_set_reg_field(adap, A_TP_PARA_REG6,
-adap-params.rev  0 ? F_ENABLEESND : F_T3A_ENABLEESND,
-0);
+   t3_set_reg_field(adap, A_TP_PARA_REG6, 0,
+adap-params.rev  0 ? F_ENABLEESND :
+F_T3A_ENABLEESND);
 
t3_set_reg_field(adap, A_TP_PC_CONFIG,
-F_ENABLEEPCMDAFULL | F_ENABLEOCSPIFULL,
-F_TXDEFERENABLE | F_HEARBEATDACK | F_TXCONGESTIONMODE |
-F_RXCONGESTIONMODE);
+F_ENABLEEPCMDAFULL,
+F_ENABLEOCSPIFULL |F_TXDEFERENABLE | F_HEARBEATDACK |
+F_TXCONGESTIONMODE | F_RXCONGESTIONMODE);
t3_set_reg_field(adap, A_TP_PC_CONFIG2, F_CHDRAFULL, 0);
-
+   t3_write_reg(adap, A_TP_PROXY_FLOW_CNTL, 1080);
+   t3_write_reg(adap, A_TP_PROXY_FLOW_CNTL, 1000);
+   
if (adap-params.rev  0) {
tp_wr_indirect(adap, A_TP_EGRESS_CONFIG, F_REWRITEFORCETOSIZE);
t3_set_reg_field(adap, A_TP_PARA_REG3, F_TXPACEAUTO,
@@ -2390,9 +2392,10 @@ static void tp_config(struct adapter *ad
} else
t3_set_reg_field(adap, A_TP_PARA_REG3, 0, F_TXPACEFIXED);
 
-   t3_write_reg(adap, A_TP_TX_MOD_QUEUE_WEIGHT1, 0x12121212);
-   t3_write_reg(adap, A_TP_TX_MOD_QUEUE_WEIGHT0, 0x12121212);
-   t3_write_reg(adap, A_TP_MOD_CHANNEL_WEIGHT, 0x1212);
+   t3_write_reg(adap, A_TP_TX_MOD_QUEUE_WEIGHT1, 0);
+   t3_write_reg(adap, A_TP_TX_MOD_QUEUE_WEIGHT0, 0);
+   t3_write_reg(adap, A_TP_MOD_CHANNEL_WEIGHT, 0);
+   t3_write_reg(adap, A_TP_MOD_RATE_LIMIT, 0xf220);
 }
 
 /* Desired TP timer resolution in usec */
@@ -2468,6 +2471,7 @@ int t3_tp_set_coalescing_size(struct ada
val |= F_RXCOALESCEENABLE;
if (psh)
val |= F_RXCOALESCEPSHEN;
+   size = min(MAX_RX_COALESCING_LEN, size);
t3_write_reg(adap, A_TP_PARA_REG2, V_RXCOALESCESIZE(size) |
 V_MAXRXDATA(MAX_RX_COALESCING_LEN));
}
@@ -2497,10 +2501,10 @@ static void __devinit init_mtus(unsigned
 * are enabled and still have at least 8 bytes of payload.
 */
mtus[0] = 88;
-   mtus[1] = 256;
-   mtus[2] = 512;
-   mtus[3] = 576;
-   mtus[4] = 808;
+   mtus[1] = 88;
+   mtus[2] = 256;
+   mtus[3] = 512;
+   mtus[4] = 576;
mtus[5] = 1024;
mtus[6] = 1280;
mtus[7] = 1492;
@@ -2802,7 +2806,7 @@ static void init_hw_for_avail_ports(stru
t3_set_reg_field(adap, A_ULPTX_CONFIG, F_CFG_RR_ARB, 0);
t3_write_reg(adap, A_MPS_CFG, F_TPRXPORTEN | F_TPTXPORT0EN |