diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 15:55:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 15:55:29 -0400 |
commit | 424a6f6ef990b7e9f56f6627bfc6c46b493faeb4 (patch) | |
tree | 0028356ed8003495fbbe1f716f359e3c8ebc35b6 /drivers/scsi/bnx2fc | |
parent | 1ab142d499294b844ecc81e8004db4ce029b0b61 (diff) | |
parent | cd8df932d894f3128c884e3ae1b2b484540513db (diff) |
Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
SCSI updates from James Bottomley:
"The update includes the usual assortment of driver updates (lpfc,
qla2xxx, qla4xxx, bfa, bnx2fc, bnx2i, isci, fcoe, hpsa) plus a huge
amount of infrastructure work in the SAS library and transport class
as well as an iSCSI update. There's also a new SCSI based virtio
driver."
* tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (177 commits)
[SCSI] qla4xxx: Update driver version to 5.02.00-k15
[SCSI] qla4xxx: trivial cleanup
[SCSI] qla4xxx: Fix sparse warning
[SCSI] qla4xxx: Add support for multiple session per host.
[SCSI] qla4xxx: Export CHAP index as sysfs attribute
[SCSI] scsi_transport: Export CHAP index as sysfs attribute
[SCSI] qla4xxx: Add support to display CHAP list and delete CHAP entry
[SCSI] iscsi_transport: Add support to display CHAP list and delete CHAP entry
[SCSI] pm8001: fix endian issue with code optimization.
[SCSI] pm8001: Fix possible racing condition.
[SCSI] pm8001: Fix bogus interrupt state flag issue.
[SCSI] ipr: update PCI ID definitions for new adapters
[SCSI] qla2xxx: handle default case in qla2x00_request_firmware()
[SCSI] isci: improvements in driver unloading routine
[SCSI] isci: improve phy event warnings
[SCSI] isci: debug, provide state-enum-to-string conversions
[SCSI] scsi_transport_sas: 'enable' phys on reset
[SCSI] libsas: don't recover end devices attached to disabled phys
[SCSI] libsas: fixup target_port_protocols for expanders that don't report sata
[SCSI] libsas: set attached device type and target protocols for local phys
...
Diffstat (limited to 'drivers/scsi/bnx2fc')
-rw-r--r-- | drivers/scsi/bnx2fc/bnx2fc.h | 8 | ||||
-rw-r--r-- | drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 20 |
2 files changed, 20 insertions, 8 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc.h b/drivers/scsi/bnx2fc/bnx2fc.h index 049ea907e04a..a4953ef9e53a 100644 --- a/drivers/scsi/bnx2fc/bnx2fc.h +++ b/drivers/scsi/bnx2fc/bnx2fc.h | |||
@@ -62,7 +62,7 @@ | |||
62 | #include "bnx2fc_constants.h" | 62 | #include "bnx2fc_constants.h" |
63 | 63 | ||
64 | #define BNX2FC_NAME "bnx2fc" | 64 | #define BNX2FC_NAME "bnx2fc" |
65 | #define BNX2FC_VERSION "1.0.9" | 65 | #define BNX2FC_VERSION "1.0.10" |
66 | 66 | ||
67 | #define PFX "bnx2fc: " | 67 | #define PFX "bnx2fc: " |
68 | 68 | ||
@@ -114,6 +114,8 @@ | |||
114 | #define BNX2FC_HASH_TBL_CHUNK_SIZE (16 * 1024) | 114 | #define BNX2FC_HASH_TBL_CHUNK_SIZE (16 * 1024) |
115 | 115 | ||
116 | #define BNX2FC_MAX_SEQS 255 | 116 | #define BNX2FC_MAX_SEQS 255 |
117 | #define BNX2FC_MAX_RETRY_CNT 3 | ||
118 | #define BNX2FC_MAX_RPORT_RETRY_CNT 255 | ||
117 | 119 | ||
118 | #define BNX2FC_READ (1 << 1) | 120 | #define BNX2FC_READ (1 << 1) |
119 | #define BNX2FC_WRITE (1 << 0) | 121 | #define BNX2FC_WRITE (1 << 0) |
@@ -121,8 +123,10 @@ | |||
121 | #define BNX2FC_MIN_XID 0 | 123 | #define BNX2FC_MIN_XID 0 |
122 | #define BNX2FC_MAX_XID \ | 124 | #define BNX2FC_MAX_XID \ |
123 | (BNX2FC_MAX_OUTSTANDING_CMNDS + BNX2FC_ELSTM_XIDS - 1) | 125 | (BNX2FC_MAX_OUTSTANDING_CMNDS + BNX2FC_ELSTM_XIDS - 1) |
126 | #define FCOE_MAX_NUM_XIDS 0x2000 | ||
124 | #define FCOE_MIN_XID (BNX2FC_MAX_XID + 1) | 127 | #define FCOE_MIN_XID (BNX2FC_MAX_XID + 1) |
125 | #define FCOE_MAX_XID (FCOE_MIN_XID + 4095) | 128 | #define FCOE_MAX_XID (FCOE_MIN_XID + FCOE_MAX_NUM_XIDS - 1) |
129 | #define FCOE_XIDS_PER_CPU (FCOE_MIN_XID + (512 * nr_cpu_ids) - 1) | ||
126 | #define BNX2FC_MAX_LUN 0xFFFF | 130 | #define BNX2FC_MAX_LUN 0xFFFF |
127 | #define BNX2FC_MAX_FCP_TGT 256 | 131 | #define BNX2FC_MAX_FCP_TGT 256 |
128 | #define BNX2FC_MAX_CMD_LEN 16 | 132 | #define BNX2FC_MAX_CMD_LEN 16 |
diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c index a9af42e83632..abd72a01856d 100644 --- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c +++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c | |||
@@ -22,7 +22,7 @@ DEFINE_PER_CPU(struct bnx2fc_percpu_s, bnx2fc_percpu); | |||
22 | 22 | ||
23 | #define DRV_MODULE_NAME "bnx2fc" | 23 | #define DRV_MODULE_NAME "bnx2fc" |
24 | #define DRV_MODULE_VERSION BNX2FC_VERSION | 24 | #define DRV_MODULE_VERSION BNX2FC_VERSION |
25 | #define DRV_MODULE_RELDATE "Oct 21, 2011" | 25 | #define DRV_MODULE_RELDATE "Jan 22, 2011" |
26 | 26 | ||
27 | 27 | ||
28 | static char version[] __devinitdata = | 28 | static char version[] __devinitdata = |
@@ -939,8 +939,14 @@ static int bnx2fc_libfc_config(struct fc_lport *lport) | |||
939 | 939 | ||
940 | static int bnx2fc_em_config(struct fc_lport *lport) | 940 | static int bnx2fc_em_config(struct fc_lport *lport) |
941 | { | 941 | { |
942 | int max_xid; | ||
943 | |||
944 | if (nr_cpu_ids <= 2) | ||
945 | max_xid = FCOE_XIDS_PER_CPU; | ||
946 | else | ||
947 | max_xid = FCOE_MAX_XID; | ||
942 | if (!fc_exch_mgr_alloc(lport, FC_CLASS_3, FCOE_MIN_XID, | 948 | if (!fc_exch_mgr_alloc(lport, FC_CLASS_3, FCOE_MIN_XID, |
943 | FCOE_MAX_XID, NULL)) { | 949 | max_xid, NULL)) { |
944 | printk(KERN_ERR PFX "em_config:fc_exch_mgr_alloc failed\n"); | 950 | printk(KERN_ERR PFX "em_config:fc_exch_mgr_alloc failed\n"); |
945 | return -ENOMEM; | 951 | return -ENOMEM; |
946 | } | 952 | } |
@@ -952,8 +958,8 @@ static int bnx2fc_lport_config(struct fc_lport *lport) | |||
952 | { | 958 | { |
953 | lport->link_up = 0; | 959 | lport->link_up = 0; |
954 | lport->qfull = 0; | 960 | lport->qfull = 0; |
955 | lport->max_retry_count = 3; | 961 | lport->max_retry_count = BNX2FC_MAX_RETRY_CNT; |
956 | lport->max_rport_retry_count = 3; | 962 | lport->max_rport_retry_count = BNX2FC_MAX_RPORT_RETRY_CNT; |
957 | lport->e_d_tov = 2 * 1000; | 963 | lport->e_d_tov = 2 * 1000; |
958 | lport->r_a_tov = 10 * 1000; | 964 | lport->r_a_tov = 10 * 1000; |
959 | 965 | ||
@@ -1536,6 +1542,7 @@ static void __bnx2fc_destroy(struct bnx2fc_interface *interface) | |||
1536 | static int bnx2fc_destroy(struct net_device *netdev) | 1542 | static int bnx2fc_destroy(struct net_device *netdev) |
1537 | { | 1543 | { |
1538 | struct bnx2fc_interface *interface = NULL; | 1544 | struct bnx2fc_interface *interface = NULL; |
1545 | struct workqueue_struct *timer_work_queue; | ||
1539 | int rc = 0; | 1546 | int rc = 0; |
1540 | 1547 | ||
1541 | rtnl_lock(); | 1548 | rtnl_lock(); |
@@ -1548,9 +1555,9 @@ static int bnx2fc_destroy(struct net_device *netdev) | |||
1548 | goto netdev_err; | 1555 | goto netdev_err; |
1549 | } | 1556 | } |
1550 | 1557 | ||
1551 | 1558 | timer_work_queue = interface->timer_work_queue; | |
1552 | destroy_workqueue(interface->timer_work_queue); | ||
1553 | __bnx2fc_destroy(interface); | 1559 | __bnx2fc_destroy(interface); |
1560 | destroy_workqueue(timer_work_queue); | ||
1554 | 1561 | ||
1555 | netdev_err: | 1562 | netdev_err: |
1556 | mutex_unlock(&bnx2fc_dev_lock); | 1563 | mutex_unlock(&bnx2fc_dev_lock); |
@@ -2054,6 +2061,7 @@ if_create_err: | |||
2054 | ifput_err: | 2061 | ifput_err: |
2055 | bnx2fc_net_cleanup(interface); | 2062 | bnx2fc_net_cleanup(interface); |
2056 | bnx2fc_interface_put(interface); | 2063 | bnx2fc_interface_put(interface); |
2064 | goto mod_err; | ||
2057 | netdev_err: | 2065 | netdev_err: |
2058 | module_put(THIS_MODULE); | 2066 | module_put(THIS_MODULE); |
2059 | mod_err: | 2067 | mod_err: |