diff options
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_config.c')
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_config.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_config.c b/drivers/scsi/mpt2sas/mpt2sas_config.c index 2b4d37613d32..863778071a9d 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_config.c +++ b/drivers/scsi/mpt2sas/mpt2sas_config.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * This module provides common API for accessing firmware configuration pages | 2 | * This module provides common API for accessing firmware configuration pages |
3 | * | 3 | * |
4 | * This code is based on drivers/scsi/mpt2sas/mpt2_base.c | 4 | * This code is based on drivers/scsi/mpt2sas/mpt2_base.c |
5 | * Copyright (C) 2007-2010 LSI Corporation | 5 | * Copyright (C) 2007-2012 LSI Corporation |
6 | * (mailto:DL-MPTFusionLinux@lsi.com) | 6 | * (mailto:DL-MPTFusionLinux@lsi.com) |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or | 8 | * This program is free software; you can redistribute it and/or |
@@ -683,6 +683,42 @@ mpt2sas_config_set_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, | |||
683 | } | 683 | } |
684 | 684 | ||
685 | /** | 685 | /** |
686 | * mpt2sas_config_get_iounit_pg3 - obtain iounit page 3 | ||
687 | * @ioc: per adapter object | ||
688 | * @mpi_reply: reply mf payload returned from firmware | ||
689 | * @config_page: contents of the config page | ||
690 | * @sz: size of buffer passed in config_page | ||
691 | * Context: sleep. | ||
692 | * | ||
693 | * Returns 0 for success, non-zero for failure. | ||
694 | */ | ||
695 | int | ||
696 | mpt2sas_config_get_iounit_pg3(struct MPT2SAS_ADAPTER *ioc, | ||
697 | Mpi2ConfigReply_t *mpi_reply, Mpi2IOUnitPage3_t *config_page, u16 sz) | ||
698 | { | ||
699 | Mpi2ConfigRequest_t mpi_request; | ||
700 | int r; | ||
701 | |||
702 | memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t)); | ||
703 | mpi_request.Function = MPI2_FUNCTION_CONFIG; | ||
704 | mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_HEADER; | ||
705 | mpi_request.Header.PageType = MPI2_CONFIG_PAGETYPE_IO_UNIT; | ||
706 | mpi_request.Header.PageNumber = 3; | ||
707 | mpi_request.Header.PageVersion = MPI2_IOUNITPAGE3_PAGEVERSION; | ||
708 | mpt2sas_base_build_zero_len_sge(ioc, &mpi_request.PageBufferSGE); | ||
709 | r = _config_request(ioc, &mpi_request, mpi_reply, | ||
710 | MPT2_CONFIG_PAGE_DEFAULT_TIMEOUT, NULL, 0); | ||
711 | if (r) | ||
712 | goto out; | ||
713 | |||
714 | mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | ||
715 | r = _config_request(ioc, &mpi_request, mpi_reply, | ||
716 | MPT2_CONFIG_PAGE_DEFAULT_TIMEOUT, config_page, sz); | ||
717 | out: | ||
718 | return r; | ||
719 | } | ||
720 | |||
721 | /** | ||
686 | * mpt2sas_config_get_ioc_pg8 - obtain ioc page 8 | 722 | * mpt2sas_config_get_ioc_pg8 - obtain ioc page 8 |
687 | * @ioc: per adapter object | 723 | * @ioc: per adapter object |
688 | * @mpi_reply: reply mf payload returned from firmware | 724 | * @mpi_reply: reply mf payload returned from firmware |