Lines Matching +full:per +full:- +full:context
5 * Copyright (C) 2012-2014 LSI Corporation
6 * Copyright (C) 2013-2014 Avago Technologies
7 * (mailto: MPT-FusionLinux.pdl@avagotech.com)
22 * LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
41 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
74 * struct config_request - obtain dma memory via routine
87 * _config_display_some_debug - debug routine
88 * @ioc: per adapter object
92 * Context: none.
104 if (!(ioc->logging_level & MPT_DEBUG_CONFIG)) in _config_display_some_debug()
108 switch (mpi_request->Header.PageType & MPI2_CONFIG_PAGETYPE_MASK) { in _config_display_some_debug()
128 switch (mpi_request->ExtPageType) { in _config_display_some_debug()
180 ioc->name, calling_function_name, desc, in _config_display_some_debug()
181 mpi_request->Header.PageNumber, mpi_request->Action, in _config_display_some_debug()
182 le32_to_cpu(mpi_request->PageAddress), smid); in _config_display_some_debug()
187 if (mpi_reply->IOCStatus || mpi_reply->IOCLogInfo) in _config_display_some_debug()
190 ioc->name, le16_to_cpu(mpi_reply->IOCStatus), in _config_display_some_debug()
191 le32_to_cpu(mpi_reply->IOCLogInfo)); in _config_display_some_debug()
195 * _config_alloc_config_dma_memory - obtain physical memory
196 * @ioc: per adapter object
199 * A wrapper for obtaining dma-able memory for config page request.
201 * Return: 0 for success, non-zero for failure.
209 if (mem->sz > ioc->config_page_sz) { in _config_alloc_config_dma_memory()
210 mem->page = dma_alloc_coherent(&ioc->pdev->dev, mem->sz, in _config_alloc_config_dma_memory()
211 &mem->page_dma, GFP_KERNEL); in _config_alloc_config_dma_memory()
212 if (!mem->page) { in _config_alloc_config_dma_memory()
215 ioc->name, __func__, mem->sz); in _config_alloc_config_dma_memory()
216 r = -ENOMEM; in _config_alloc_config_dma_memory()
219 mem->page = ioc->config_page; in _config_alloc_config_dma_memory()
220 mem->page_dma = ioc->config_page_dma; in _config_alloc_config_dma_memory()
222 ioc->config_vaddr = mem->page; in _config_alloc_config_dma_memory()
227 * _config_free_config_dma_memory - wrapper to free the memory
228 * @ioc: per adapter object
231 * A wrapper to free dma-able memory when using _config_alloc_config_dma_memory.
233 * Return: 0 for success, non-zero for failure.
239 if (mem->sz > ioc->config_page_sz) in _config_free_config_dma_memory()
240 dma_free_coherent(&ioc->pdev->dev, mem->sz, mem->page, in _config_free_config_dma_memory()
241 mem->page_dma); in _config_free_config_dma_memory()
245 * mpt3sas_config_done - config page completion routine
246 * @ioc: per adapter object
250 * Context: none.
263 if (ioc->config_cmds.status == MPT3_CMD_NOT_USED) in mpt3sas_config_done()
265 if (ioc->config_cmds.smid != smid) in mpt3sas_config_done()
267 ioc->config_cmds.status |= MPT3_CMD_COMPLETE; in mpt3sas_config_done()
270 ioc->config_cmds.status |= MPT3_CMD_REPLY_VALID; in mpt3sas_config_done()
271 memcpy(ioc->config_cmds.reply, mpi_reply, in mpt3sas_config_done()
272 mpi_reply->MsgLength*4); in mpt3sas_config_done()
274 ioc->config_cmds.status &= ~MPT3_CMD_PENDING; in mpt3sas_config_done()
276 ioc->config_cmds.smid = USHRT_MAX; in mpt3sas_config_done()
277 complete(&ioc->config_cmds.done); in mpt3sas_config_done()
282 * _config_request - main routine for sending config page requests
283 * @ioc: per adapter object
289 * Context: sleep
293 * The ioc->config_cmds.status flag should be MPT3_CMD_NOT_USED before calling
296 * The callback index is set inside `ioc->config_cb_idx.
298 * Return: 0 for success, non-zero for failure.
314 mutex_lock(&ioc->config_cmds.mutex); in _config_request()
315 if (ioc->config_cmds.status != MPT3_CMD_NOT_USED) { in _config_request()
317 ioc->name, __func__); in _config_request()
318 mutex_unlock(&ioc->config_cmds.mutex); in _config_request()
319 return -EAGAIN; in _config_request()
325 mpi_request->VF_ID = 0; /* TODO */ in _config_request()
326 mpi_request->VP_ID = 0; in _config_request()
329 mpi_request->Header.PageVersion = mpi_reply->Header.PageVersion; in _config_request()
330 mpi_request->Header.PageNumber = mpi_reply->Header.PageNumber; in _config_request()
331 mpi_request->Header.PageType = mpi_reply->Header.PageType; in _config_request()
332 mpi_request->Header.PageLength = mpi_reply->Header.PageLength; in _config_request()
333 mpi_request->ExtPageLength = mpi_reply->ExtPageLength; in _config_request()
334 mpi_request->ExtPageType = mpi_reply->ExtPageType; in _config_request()
335 if (mpi_request->Header.PageLength) in _config_request()
336 mem.sz = mpi_request->Header.PageLength * 4; in _config_request()
338 mem.sz = le16_to_cpu(mpi_reply->ExtPageLength) * 4; in _config_request()
342 if (mpi_request->Action == in _config_request()
344 mpi_request->Action == in _config_request()
346 ioc->base_add_sg_single(&mpi_request->PageBufferSGE, in _config_request()
353 ioc->base_add_sg_single(&mpi_request->PageBufferSGE, in _config_request()
362 r = -EFAULT; in _config_request()
366 ioc->name, __func__, retry_count); in _config_request()
374 ioc->name, __func__); in _config_request()
375 ioc->config_cmds.status = MPT3_CMD_NOT_USED; in _config_request()
376 r = -EFAULT; in _config_request()
383 ioc->name, __func__, wait_state_count); in _config_request()
387 ioc->name, __func__); in _config_request()
389 smid = mpt3sas_base_get_smid(ioc, ioc->config_cb_idx); in _config_request()
392 ioc->name, __func__); in _config_request()
393 ioc->config_cmds.status = MPT3_CMD_NOT_USED; in _config_request()
394 r = -EAGAIN; in _config_request()
400 ioc->config_cmds.status = MPT3_CMD_PENDING; in _config_request()
402 ioc->config_cmds.smid = smid; in _config_request()
405 init_completion(&ioc->config_cmds.done); in _config_request()
407 wait_for_completion_timeout(&ioc->config_cmds.done, timeout*HZ); in _config_request()
408 if (!(ioc->config_cmds.status & MPT3_CMD_COMPLETE)) { in _config_request()
410 ioc->config_cmds.status, mpi_request, in _config_request()
413 if (ioc->config_cmds.smid == smid) in _config_request()
415 if ((ioc->shost_recovery) || (ioc->config_cmds.status & in _config_request()
416 MPT3_CMD_RESET) || ioc->pci_error_recovery) in _config_request()
419 r = -EFAULT; in _config_request()
423 if (ioc->config_cmds.status & MPT3_CMD_REPLY_VALID) { in _config_request()
424 memcpy(mpi_reply, ioc->config_cmds.reply, in _config_request()
428 if ((mpi_request->Header.PageType & 0xF) != in _config_request()
429 (mpi_reply->Header.PageType & 0xF)) { in _config_request()
430 _debug_dump_mf(mpi_request, ioc->request_sz/4); in _config_request()
431 _debug_dump_reply(mpi_reply, ioc->request_sz/4); in _config_request()
435 ioc->name, __func__, in _config_request()
436 (mpi_request->Header.PageType & 0xF), in _config_request()
437 (mpi_reply->Header.PageType & 0xF)); in _config_request()
440 if (((mpi_request->Header.PageType & 0xF) == in _config_request()
442 mpi_request->ExtPageType != mpi_reply->ExtPageType) { in _config_request()
443 _debug_dump_mf(mpi_request, ioc->request_sz/4); in _config_request()
444 _debug_dump_reply(mpi_reply, ioc->request_sz/4); in _config_request()
448 ioc->name, __func__, mpi_request->ExtPageType, in _config_request()
449 mpi_reply->ExtPageType); in _config_request()
451 ioc_status = le16_to_cpu(mpi_reply->IOCStatus) in _config_request()
457 ioc->name, __func__, retry_count); in _config_request()
460 config_page && mpi_request->Action == in _config_request()
466 if ((mpi_request->Header.PageType & 0xF) != in _config_request()
468 _debug_dump_mf(mpi_request, ioc->request_sz/4); in _config_request()
469 _debug_dump_reply(mpi_reply, ioc->request_sz/4); in _config_request()
477 ioc->name, __func__, in _config_request()
478 (mpi_request->Header.PageType & 0xF), in _config_request()
482 if (((mpi_request->Header.PageType & 0xF) == in _config_request()
484 (mpi_request->ExtPageType != p[6])) { in _config_request()
485 _debug_dump_mf(mpi_request, ioc->request_sz/4); in _config_request()
486 _debug_dump_reply(mpi_reply, ioc->request_sz/4); in _config_request()
494 ioc->name, __func__, in _config_request()
495 mpi_request->ExtPageType, p[6]); in _config_request()
506 ioc->config_cmds.status = MPT3_CMD_NOT_USED; in _config_request()
507 mutex_unlock(&ioc->config_cmds.mutex); in _config_request()
515 * mpt3sas_config_get_manufacturing_pg0 - obtain manufacturing page 0
516 * @ioc: per adapter object
519 * Context: sleep.
521 * Return: 0 for success, non-zero for failure.
536 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_manufacturing_pg0()
551 * mpt3sas_config_get_manufacturing_pg7 - obtain manufacturing page 7
552 * @ioc: per adapter object
556 * Context: sleep.
558 * Return: 0 for success, non-zero for failure.
574 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_manufacturing_pg7()
589 * mpt3sas_config_get_manufacturing_pg10 - obtain manufacturing page 10
590 * @ioc: per adapter object
593 * Context: sleep.
595 * Return: 0 for success, non-zero for failure.
611 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_manufacturing_pg10()
626 * mpt3sas_config_get_manufacturing_pg11 - obtain manufacturing page 11
627 * @ioc: per adapter object
630 * Context: sleep.
632 * Return: 0 for success, non-zero for failure.
648 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_manufacturing_pg11()
663 * mpt3sas_config_set_manufacturing_pg11 - set manufacturing page 11
664 * @ioc: per adapter object
667 * Context: sleep.
669 * Return: 0 for success, non-zero for failure.
685 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_set_manufacturing_pg11()
700 * mpt3sas_config_get_bios_pg2 - obtain bios page 2
701 * @ioc: per adapter object
704 * Context: sleep.
706 * Return: 0 for success, non-zero for failure.
721 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_bios_pg2()
736 * mpt3sas_config_get_bios_pg3 - obtain bios page 3
737 * @ioc: per adapter object
740 * Context: sleep.
742 * Return: 0 for success, non-zero for failure.
757 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_bios_pg3()
772 * mpt3sas_config_get_iounit_pg0 - obtain iounit page 0
773 * @ioc: per adapter object
776 * Context: sleep.
778 * Return: 0 for success, non-zero for failure.
793 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_iounit_pg0()
808 * mpt3sas_config_get_iounit_pg1 - obtain iounit page 1
809 * @ioc: per adapter object
812 * Context: sleep.
814 * Return: 0 for success, non-zero for failure.
829 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_iounit_pg1()
844 * mpt3sas_config_set_iounit_pg1 - set iounit page 1
845 * @ioc: per adapter object
848 * Context: sleep.
850 * Return: 0 for success, non-zero for failure.
865 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_set_iounit_pg1()
880 * mpt3sas_config_get_iounit_pg3 - obtain iounit page 3
881 * @ioc: per adapter object
885 * Context: sleep.
887 * Return: 0 for success, non-zero for failure.
902 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_iounit_pg3()
916 * mpt3sas_config_get_iounit_pg8 - obtain iounit page 8
917 * @ioc: per adapter object
920 * Context: sleep.
922 * Return: 0 for success, non-zero for failure.
937 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_iounit_pg8()
952 * mpt3sas_config_get_ioc_pg8 - obtain ioc page 8
953 * @ioc: per adapter object
956 * Context: sleep.
958 * Return: 0 for success, non-zero for failure.
973 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_ioc_pg8()
988 * mpt3sas_config_get_sas_device_pg0 - obtain sas device page 0
989 * @ioc: per adapter object
994 * Context: sleep.
996 * Return: 0 for success, non-zero for failure.
1013 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_sas_device_pg0()
1029 * mpt3sas_config_get_sas_device_pg1 - obtain sas device page 1
1030 * @ioc: per adapter object
1035 * Context: sleep.
1037 * Return: 0 for success, non-zero for failure.
1054 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_sas_device_pg1()
1070 * mpt3sas_config_get_pcie_device_pg0 - obtain pcie device page 0
1071 * @ioc: per adapter object
1076 * Context: sleep.
1078 * Return: 0 for success, non-zero for failure.
1095 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_pcie_device_pg0()
1111 * mpt3sas_config_get_pcie_device_pg2 - obtain pcie device page 2
1112 * @ioc: per adapter object
1117 * Context: sleep.
1119 * Return: 0 for success, non-zero for failure.
1136 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_pcie_device_pg2()
1152 * mpt3sas_config_get_number_hba_phys - obtain number of phys on the host
1153 * @ioc: per adapter object
1155 * Context: sleep.
1157 * Return: 0 for success, non-zero for failure.
1176 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_number_hba_phys()
1197 * mpt3sas_config_get_sas_iounit_pg0 - obtain sas iounit page 0
1198 * @ioc: per adapter object
1202 * Context: sleep.
1207 * Return: 0 for success, non-zero for failure.
1224 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_sas_iounit_pg0()
1238 * mpt3sas_config_get_sas_iounit_pg1 - obtain sas iounit page 1
1239 * @ioc: per adapter object
1243 * Context: sleep.
1248 * Return: 0 for success, non-zero for failure.
1265 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_sas_iounit_pg1()
1279 * mpt3sas_config_set_sas_iounit_pg1 - send sas iounit page 1
1280 * @ioc: per adapter object
1284 * Context: sleep.
1289 * Return: 0 for success, non-zero for failure.
1306 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_set_sas_iounit_pg1()
1323 * mpt3sas_config_get_expander_pg0 - obtain expander page 0
1324 * @ioc: per adapter object
1329 * Context: sleep.
1331 * Return: 0 for success, non-zero for failure.
1347 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_expander_pg0()
1363 * mpt3sas_config_get_expander_pg1 - obtain expander page 1
1364 * @ioc: per adapter object
1369 * Context: sleep.
1371 * Return: 0 for success, non-zero for failure.
1388 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_expander_pg1()
1406 * mpt3sas_config_get_enclosure_pg0 - obtain enclosure page 0
1407 * @ioc: per adapter object
1412 * Context: sleep.
1414 * Return: 0 for success, non-zero for failure.
1430 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_enclosure_pg0()
1446 * mpt3sas_config_get_phy_pg0 - obtain phy page 0
1447 * @ioc: per adapter object
1451 * Context: sleep.
1453 * Return: 0 for success, non-zero for failure.
1469 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_phy_pg0()
1486 * mpt3sas_config_get_phy_pg1 - obtain phy page 1
1487 * @ioc: per adapter object
1491 * Context: sleep.
1493 * Return: 0 for success, non-zero for failure.
1509 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_phy_pg1()
1526 * mpt3sas_config_get_raid_volume_pg1 - obtain raid volume page 1
1527 * @ioc: per adapter object
1532 * Context: sleep.
1534 * Return: 0 for success, non-zero for failure.
1550 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_raid_volume_pg1()
1566 * mpt3sas_config_get_number_pds - obtain number of phys disk assigned to volume
1567 * @ioc: per adapter object
1570 * Context: sleep.
1572 * Return: 0 for success, non-zero for failure.
1591 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_number_pds()
1615 * mpt3sas_config_get_raid_volume_pg0 - obtain raid volume page 0
1616 * @ioc: per adapter object
1622 * Context: sleep.
1624 * Return: 0 for success, non-zero for failure.
1640 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_raid_volume_pg0()
1655 * mpt3sas_config_get_phys_disk_pg0 - obtain phys disk page 0
1656 * @ioc: per adapter object
1661 * Context: sleep.
1663 * Return: 0 for success, non-zero for failure.
1679 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_phys_disk_pg0()
1695 * mpt3sas_config_get_volume_handle - returns volume handle for give hidden
1697 * @ioc: per adapter object
1700 * Context: sleep.
1702 * Return: 0 for success, non-zero for failure.
1725 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_volume_handle()
1735 r = -1; in mpt3sas_config_get_volume_handle()
1748 r = -1; in mpt3sas_config_get_volume_handle()
1753 for (i = 0; i < config_page->NumElements; i++) { in mpt3sas_config_get_volume_handle()
1754 element_type = le16_to_cpu(config_page-> in mpt3sas_config_get_volume_handle()
1762 le16_to_cpu(config_page->ConfigElement[i]. in mpt3sas_config_get_volume_handle()
1766 le16_to_cpu(config_page-> in mpt3sas_config_get_volume_handle()
1778 config_num = config_page->ConfigNum; in mpt3sas_config_get_volume_handle()
1786 * mpt3sas_config_get_volume_wwid - returns wwid given the volume handle
1787 * @ioc: per adapter object
1790 * Context: sleep.
1792 * Return: 0 for success, non-zero for failure.
1808 return -1; in mpt3sas_config_get_volume_wwid()