SG_ALL wants to be ~0 meaning "any future size".
  Below group of drivers preallocate a scatter list
  buffer of max_size, so set that size to be 255 (Like before).

  A better schema can be advised with a more dynamic allocation.
  Perhaps from a kmem_cache.

  List of drivers/files:
        drivers/firewire/fw-sbp2.c
        drivers/ieee1394/sbp2.[ch]

Signed-off-by: Boaz Harrosh <[EMAIL PROTECTED]>
---
 drivers/firewire/fw-sbp2.c |    6 ++++--
 drivers/ieee1394/sbp2.c    |    2 +-
 drivers/ieee1394/sbp2.h    |    4 +++-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
index c2169d2..078501c 100644
--- a/drivers/firewire/fw-sbp2.c
+++ b/drivers/firewire/fw-sbp2.c
@@ -151,6 +151,7 @@ struct sbp2_target {
 };
 
 #define SBP2_MAX_SG_ELEMENT_LENGTH     0xf000
+#define SBP2_MAX_SG_COUNT              255
 #define SBP2_MAX_SECTORS               255     /* Max sectors supported */
 #define SBP2_ORB_TIMEOUT               2000    /* Timeout in ms */
 
@@ -272,7 +273,8 @@ struct sbp2_command_orb {
        scsi_done_fn_t done;
        struct sbp2_logical_unit *lu;
 
-       struct sbp2_pointer page_table[SG_ALL] __attribute__((aligned(8)));
+       struct sbp2_pointer page_table[SBP2_MAX_SG_COUNT]
+                                               __attribute__((aligned(8)));
        dma_addr_t page_table_bus;
 };
 
@@ -1329,7 +1331,7 @@ static struct scsi_host_template scsi_driver_template = {
        .slave_configure        = sbp2_scsi_slave_configure,
        .eh_abort_handler       = sbp2_scsi_abort,
        .this_id                = -1,
-       .sg_tablesize           = SG_ALL,
+       .sg_tablesize           = SBP2_MAX_SG_COUNT,
        .use_clustering         = ENABLE_CLUSTERING,
        .cmd_per_lun            = 1,
        .can_queue              = 1,
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c
index 1eda11a..070763a 100644
--- a/drivers/ieee1394/sbp2.c
+++ b/drivers/ieee1394/sbp2.c
@@ -324,7 +324,7 @@ static struct scsi_host_template sbp2_shost_template = {
        .slave_configure         = sbp2scsi_slave_configure,
        .slave_destroy           = sbp2scsi_slave_destroy,
        .this_id                 = -1,
-       .sg_tablesize            = SG_ALL,
+       .sg_tablesize            = SBP2_MAX_SG_COUNT,
        .use_clustering          = ENABLE_CLUSTERING,
        .cmd_per_lun             = SBP2_MAX_CMDS,
        .can_queue               = SBP2_MAX_CMDS,
diff --git a/drivers/ieee1394/sbp2.h b/drivers/ieee1394/sbp2.h
index 333a4bb..ae31788 100644
--- a/drivers/ieee1394/sbp2.h
+++ b/drivers/ieee1394/sbp2.h
@@ -222,6 +222,7 @@ struct sbp2_status_block {
  */
 
 #define SBP2_MAX_SG_ELEMENT_LENGTH             0xf000
+#define SBP2_MAX_SG_COUNT                      255
 #define SBP2_MAX_SECTORS                       255
 /* There is no real limitation of the queue depth (i.e. length of the linked
  * list of command ORBs) at the target. The chosen depth is merely an
@@ -257,7 +258,8 @@ struct sbp2_command_info {
 
        /* Also need s/g structure for each sbp2 command */
        struct sbp2_unrestricted_page_table
-               scatter_gather_element[SG_ALL] __attribute__((aligned(8)));
+               scatter_gather_element[SBP2_MAX_SG_COUNT]
+                                               __attribute__((aligned(8)));
        dma_addr_t sge_dma;
        void *sge_buffer;
        dma_addr_t cmd_dma;
-- 
1.5.3.3


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

Reply via email to