From 7b935e6641f6521b12dd2f6ad03668130365bce3 Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Gollapudi Date: Mon, 23 Jan 2012 18:00:48 -0800 Subject: [PATCH] --- yaml --- r: 292909 b: refs/heads/master c: 7d742f659e00f08016a4446a9134036e47f9a0cf h: refs/heads/master i: 292907: 1aae709cd3b2ab7cca89f9e8e70673f27c7aa8a0 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/bnx2fc/bnx2fc.h | 4 +++- trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 9 ++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index e4694dbe34be..b397b537c8d8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 44c570b5b09d1d1cc3167834f89f754f1bc5ac14 +refs/heads/master: 7d742f659e00f08016a4446a9134036e47f9a0cf diff --git a/trunk/drivers/scsi/bnx2fc/bnx2fc.h b/trunk/drivers/scsi/bnx2fc/bnx2fc.h index c5af098e3b55..aa8576f3694e 100644 --- a/trunk/drivers/scsi/bnx2fc/bnx2fc.h +++ b/trunk/drivers/scsi/bnx2fc/bnx2fc.h @@ -123,8 +123,10 @@ #define BNX2FC_MIN_XID 0 #define BNX2FC_MAX_XID \ (BNX2FC_MAX_OUTSTANDING_CMNDS + BNX2FC_ELSTM_XIDS - 1) +#define FCOE_MAX_NUM_XIDS 0x2000 #define FCOE_MIN_XID (BNX2FC_MAX_XID + 1) -#define FCOE_MAX_XID (FCOE_MIN_XID + 4095) +#define FCOE_MAX_XID (FCOE_MIN_XID + FCOE_MAX_NUM_XIDS - 1) +#define FCOE_XIDS_PER_CPU (FCOE_MIN_XID + (512 * nr_cpu_ids) - 1) #define BNX2FC_MAX_LUN 0xFFFF #define BNX2FC_MAX_FCP_TGT 256 #define BNX2FC_MAX_CMD_LEN 16 diff --git a/trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c index bd18ab5ccbab..0766b93ebd9a 100644 --- a/trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c +++ b/trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c @@ -940,8 +940,14 @@ static int bnx2fc_libfc_config(struct fc_lport *lport) static int bnx2fc_em_config(struct fc_lport *lport) { + int max_xid; + + if (nr_cpu_ids <= 2) + max_xid = FCOE_XIDS_PER_CPU; + else + max_xid = FCOE_MAX_XID; if (!fc_exch_mgr_alloc(lport, FC_CLASS_3, FCOE_MIN_XID, - FCOE_MAX_XID, NULL)) { + max_xid, NULL)) { printk(KERN_ERR PFX "em_config:fc_exch_mgr_alloc failed\n"); return -ENOMEM; } @@ -2056,6 +2062,7 @@ static int bnx2fc_create(struct net_device *netdev, enum fip_state fip_mode) ifput_err: bnx2fc_net_cleanup(interface); bnx2fc_interface_put(interface); + goto mod_err; netdev_err: module_put(THIS_MODULE); mod_err: