Merge branch 'master' into for_paulus
[linux-drm-fsl-dcu.git] / drivers / scsi / aacraid / rkt.c
index 643f23b5ded884a2e11b79df58e36eaa27d66dc0..d953c3fe998aa99c159bca641903c5e48a7e9d8f 100644 (file)
 
 #include "aacraid.h"
 
+#define AAC_NUM_IO_FIB_RKT      (246 - AAC_NUM_MGT_FIB)
+
+/**
+ *     aac_rkt_select_comm     -       Select communications method
+ *     @dev: Adapter
+ *     @comm: communications method
+ */
+
+static int aac_rkt_select_comm(struct aac_dev *dev, int comm)
+{
+       int retval;
+       extern int aac_rx_select_comm(struct aac_dev *dev, int comm);
+       retval = aac_rx_select_comm(dev, comm);
+       if (comm == AAC_COMM_MESSAGE) {
+               /*
+                * FIB Setup has already been done, but we can minimize the
+                * damage by at least ensuring the OS never issues more
+                * commands than we can handle. The Rocket adapters currently
+                * can only handle 246 commands and 8 AIFs at the same time,
+                * and in fact do notify us accordingly if we negotiate the
+                * FIB size. The problem that causes us to add this check is
+                * to ensure that we do not overdo it with the adapter when a
+                * hard coded FIB override is being utilized. This special
+                * case warrants this half baked, but convenient, check here.
+                */
+               if (dev->scsi_host_ptr->can_queue > AAC_NUM_IO_FIB_RKT) {
+                       dev->init->MaxIoCommands =
+                               cpu_to_le32(AAC_NUM_IO_FIB_RKT + AAC_NUM_MGT_FIB);
+                       dev->scsi_host_ptr->can_queue = AAC_NUM_IO_FIB_RKT;
+               }
+       }
+       return retval;
+}
+
 /**
  *     aac_rkt_ioremap
  *     @size: mapping resize request
@@ -63,39 +97,13 @@ static int aac_rkt_ioremap(struct aac_dev * dev, u32 size)
 
 int aac_rkt_init(struct aac_dev *dev)
 {
-       int retval;
        extern int _aac_rx_init(struct aac_dev *dev);
-       extern void aac_rx_start_adapter(struct aac_dev *dev);
 
        /*
         *      Fill in the function dispatch table.
         */
        dev->a_ops.adapter_ioremap = aac_rkt_ioremap;
+       dev->a_ops.adapter_comm = aac_rkt_select_comm;
 
-       retval = _aac_rx_init(dev);
-       if (retval)
-               return retval;
-       if (dev->new_comm_interface) {
-               /*
-                * FIB Setup has already been done, but we can minimize the
-                * damage by at least ensuring the OS never issues more
-                * commands than we can handle. The Rocket adapters currently
-                * can only handle 246 commands and 8 AIFs at the same time,
-                * and in fact do notify us accordingly if we negotiate the
-                * FIB size. The problem that causes us to add this check is
-                * to ensure that we do not overdo it with the adapter when a
-                * hard coded FIB override is being utilized. This special
-                * case warrants this half baked, but convenient, check here.
-                */
-               if (dev->scsi_host_ptr->can_queue > (246 - AAC_NUM_MGT_FIB)) {
-                       dev->init->MaxIoCommands = cpu_to_le32(246);
-                       dev->scsi_host_ptr->can_queue = 246 - AAC_NUM_MGT_FIB;
-               }
-       }
-       /*
-        *      Tell the adapter that all is configured, and it can start
-        *      accepting requests
-        */
-       aac_rx_start_adapter(dev);
-       return 0;
+       return _aac_rx_init(dev);
 }