]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/cxgb3/cxgb3_offload.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
[karo-tx-linux.git] / drivers / net / cxgb3 / cxgb3_offload.c
index cf26968737966ddff1b52d0052644954f234f42f..c5b3de1bb45625a688ee7d020e723545284f0947 100644 (file)
@@ -207,6 +207,17 @@ static int cxgb_ulp_iscsi_ctl(struct adapter *adapter, unsigned int req,
                break;
        case ULP_ISCSI_SET_PARAMS:
                t3_write_reg(adapter, A_ULPRX_ISCSI_TAGMASK, uiip->tagmask);
+               /* set MaxRxData and MaxCoalesceSize to 16224 */
+               t3_write_reg(adapter, A_TP_PARA_REG2, 0x3f603f60);
+               /* program the ddp page sizes */
+               {
+                       int i;
+                       unsigned int val = 0;
+                       for (i = 0; i < 4; i++)
+                               val |= (uiip->pgsz_factor[i] & 0xF) << (8 * i);
+                       if (val)
+                               t3_write_reg(adapter, A_ULPRX_ISCSI_PSZ, val);
+               }
                break;
        default:
                ret = -EOPNOTSUPP;
@@ -1255,6 +1266,25 @@ static inline void unregister_tdev(struct t3cdev *tdev)
        mutex_unlock(&cxgb3_db_lock);
 }
 
+static inline int adap2type(struct adapter *adapter)
+{
+       int type = 0;
+
+       switch (adapter->params.rev) {
+       case T3_REV_A:
+               type = T3A;
+               break;
+       case T3_REV_B:
+       case T3_REV_B2:
+               type = T3B;
+               break;
+       case T3_REV_C:
+               type = T3C;
+               break;
+       }
+       return type;
+}
+
 void __devinit cxgb3_adapter_ofld(struct adapter *adapter)
 {
        struct t3cdev *tdev = &adapter->tdev;
@@ -1264,7 +1294,7 @@ void __devinit cxgb3_adapter_ofld(struct adapter *adapter)
        cxgb3_set_dummy_ops(tdev);
        tdev->send = t3_offload_tx;
        tdev->ctl = cxgb_offload_ctl;
-       tdev->type = adapter->params.rev == 0 ? T3A : T3B;
+       tdev->type = adap2type(adapter);
 
        register_tdev(tdev);
 }