]> Pileus Git - ~andy/linux/blobdiff - drivers/scsi/mpt2sas/mpt2sas_config.c
Merge branch 'x86-process-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[~andy/linux] / drivers / scsi / mpt2sas / mpt2sas_config.c
index ab8c560865d8ac8fde992cc05c25d734e66c3855..594a389c6526f265d9cc8b58d530702a3f1ba312 100644 (file)
@@ -2,7 +2,7 @@
  * This module provides common API for accessing firmware configuration pages
  *
  * This code is based on drivers/scsi/mpt2sas/mpt2_base.c
- * Copyright (C) 2007-2008  LSI Corporation
+ * Copyright (C) 2007-2009  LSI Corporation
  *  (mailto:DL-MPTFusionLinux@lsi.com)
  *
  * This program is free software; you can redistribute it and/or
@@ -227,23 +227,25 @@ _config_free_config_dma_memory(struct MPT2SAS_ADAPTER *ioc,
  * mpt2sas_config_done - config page completion routine
  * @ioc: per adapter object
  * @smid: system request message index
- * @VF_ID: virtual function id
+ * @msix_index: MSIX table index supplied by the OS
  * @reply: reply message frame(lower 32bit addr)
  * Context: none.
  *
  * The callback handler when using _config_request.
  *
- * Return nothing.
+ * Return 1 meaning mf should be freed from _base_interrupt
+ *        0 means the mf is freed from this function.
  */
-void
-mpt2sas_config_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 VF_ID, u32 reply)
+u8
+mpt2sas_config_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
+    u32 reply)
 {
        MPI2DefaultReply_t *mpi_reply;
 
        if (ioc->config_cmds.status == MPT2_CMD_NOT_USED)
-               return;
+               return 1;
        if (ioc->config_cmds.smid != smid)
-               return;
+               return 1;
        ioc->config_cmds.status |= MPT2_CMD_COMPLETE;
        mpi_reply =  mpt2sas_base_get_reply_virt_addr(ioc, reply);
        if (mpi_reply) {
@@ -257,6 +259,7 @@ mpt2sas_config_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 VF_ID, u32 reply)
 #endif
        ioc->config_cmds.smid = USHORT_MAX;
        complete(&ioc->config_cmds.done);
+       return 1;
 }
 
 /**
@@ -303,6 +306,9 @@ _config_request(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
        retry_count = 0;
        memset(&mem, 0, sizeof(struct config_request));
 
+       mpi_request->VF_ID = 0; /* TODO */
+       mpi_request->VP_ID = 0;
+
        if (config_page) {
                mpi_request->Header.PageVersion = mpi_reply->Header.PageVersion;
                mpi_request->Header.PageNumber = mpi_reply->Header.PageNumber;
@@ -380,7 +386,7 @@ _config_request(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
        _config_display_some_debug(ioc, smid, "config_request", NULL);
 #endif
        init_completion(&ioc->config_cmds.done);
-       mpt2sas_base_put_smid_default(ioc, smid, config_request->VF_ID);
+       mpt2sas_base_put_smid_default(ioc, smid);
        timeleft = wait_for_completion_timeout(&ioc->config_cmds.done,
            timeout*HZ);
        if (!(ioc->config_cmds.status & MPT2_CMD_COMPLETE)) {