Lines Matching +full:non +full:- +full:zero
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
105 switch (mpi_request->Header.PageType & MPI2_CONFIG_PAGETYPE_MASK) { in _config_display_some_debug()
125 switch (mpi_request->ExtPageType) { in _config_display_some_debug()
177 mpi_request->Header.PageNumber, mpi_request->Action, in _config_display_some_debug()
178 le32_to_cpu(mpi_request->PageAddress), smid); in _config_display_some_debug()
183 if (mpi_reply->IOCStatus || mpi_reply->IOCLogInfo) in _config_display_some_debug()
185 le16_to_cpu(mpi_reply->IOCStatus), in _config_display_some_debug()
186 le32_to_cpu(mpi_reply->IOCLogInfo)); in _config_display_some_debug()
190 * _config_alloc_config_dma_memory - obtain physical memory
194 * A wrapper for obtaining dma-able memory for config page request.
196 * Return: 0 for success, non-zero for failure.
204 if (mem->sz > ioc->config_page_sz) { in _config_alloc_config_dma_memory()
205 mem->page = dma_alloc_coherent(&ioc->pdev->dev, mem->sz, in _config_alloc_config_dma_memory()
206 &mem->page_dma, GFP_KERNEL); in _config_alloc_config_dma_memory()
207 if (!mem->page) { in _config_alloc_config_dma_memory()
209 __func__, mem->sz); in _config_alloc_config_dma_memory()
210 r = -ENOMEM; in _config_alloc_config_dma_memory()
213 mem->page = ioc->config_page; in _config_alloc_config_dma_memory()
214 mem->page_dma = ioc->config_page_dma; in _config_alloc_config_dma_memory()
216 ioc->config_vaddr = mem->page; in _config_alloc_config_dma_memory()
221 * _config_free_config_dma_memory - wrapper to free the memory
225 * A wrapper to free dma-able memory when using _config_alloc_config_dma_memory.
227 * Return: 0 for success, non-zero for failure.
233 if (mem->sz > ioc->config_page_sz) in _config_free_config_dma_memory()
234 dma_free_coherent(&ioc->pdev->dev, mem->sz, mem->page, in _config_free_config_dma_memory()
235 mem->page_dma); in _config_free_config_dma_memory()
239 * mpt3sas_config_done - config page completion routine
257 if (ioc->config_cmds.status == MPT3_CMD_NOT_USED) in mpt3sas_config_done()
259 if (ioc->config_cmds.smid != smid) in mpt3sas_config_done()
261 ioc->config_cmds.status |= MPT3_CMD_COMPLETE; in mpt3sas_config_done()
264 ioc->config_cmds.status |= MPT3_CMD_REPLY_VALID; in mpt3sas_config_done()
265 memcpy(ioc->config_cmds.reply, mpi_reply, in mpt3sas_config_done()
266 mpi_reply->MsgLength*4); in mpt3sas_config_done()
268 ioc->config_cmds.status &= ~MPT3_CMD_PENDING; in mpt3sas_config_done()
269 if (ioc->logging_level & MPT_DEBUG_CONFIG) in mpt3sas_config_done()
271 ioc->config_cmds.smid = USHRT_MAX; in mpt3sas_config_done()
272 complete(&ioc->config_cmds.done); in mpt3sas_config_done()
277 * _config_request - main routine for sending config page requests
288 * The ioc->config_cmds.status flag should be MPT3_CMD_NOT_USED before calling
291 * The callback index is set inside `ioc->config_cb_idx.
293 * Return: 0 for success, non-zero for failure.
307 mutex_lock(&ioc->config_cmds.mutex); in _config_request()
308 if (ioc->config_cmds.status != MPT3_CMD_NOT_USED) { in _config_request()
310 mutex_unlock(&ioc->config_cmds.mutex); in _config_request()
311 return -EAGAIN; in _config_request()
317 mpi_request->VF_ID = 0; /* TODO */ in _config_request()
318 mpi_request->VP_ID = 0; in _config_request()
321 mpi_request->Header.PageVersion = mpi_reply->Header.PageVersion; in _config_request()
322 mpi_request->Header.PageNumber = mpi_reply->Header.PageNumber; in _config_request()
323 mpi_request->Header.PageType = mpi_reply->Header.PageType; in _config_request()
324 mpi_request->Header.PageLength = mpi_reply->Header.PageLength; in _config_request()
325 mpi_request->ExtPageLength = mpi_reply->ExtPageLength; in _config_request()
326 mpi_request->ExtPageType = mpi_reply->ExtPageType; in _config_request()
327 if (mpi_request->Header.PageLength) in _config_request()
328 mem.sz = mpi_request->Header.PageLength * 4; in _config_request()
330 mem.sz = le16_to_cpu(mpi_reply->ExtPageLength) * 4; in _config_request()
334 if (mpi_request->Action == in _config_request()
336 mpi_request->Action == in _config_request()
338 ioc->base_add_sg_single(&mpi_request->PageBufferSGE, in _config_request()
345 ioc->base_add_sg_single(&mpi_request->PageBufferSGE, in _config_request()
354 r = -EFAULT; in _config_request()
365 smid = mpt3sas_base_get_smid(ioc, ioc->config_cb_idx); in _config_request()
368 ioc->config_cmds.status = MPT3_CMD_NOT_USED; in _config_request()
369 r = -EAGAIN; in _config_request()
374 memset(ioc->config_cmds.reply, 0, sizeof(Mpi2ConfigReply_t)); in _config_request()
375 ioc->config_cmds.status = MPT3_CMD_PENDING; in _config_request()
377 ioc->config_cmds.smid = smid; in _config_request()
379 if (ioc->logging_level & MPT_DEBUG_CONFIG) in _config_request()
381 init_completion(&ioc->config_cmds.done); in _config_request()
382 ioc->put_smid_default(ioc, smid); in _config_request()
383 wait_for_completion_timeout(&ioc->config_cmds.done, timeout*HZ); in _config_request()
384 if (!(ioc->config_cmds.status & MPT3_CMD_COMPLETE)) { in _config_request()
385 if (!(ioc->logging_level & MPT_DEBUG_CONFIG)) in _config_request()
389 mpt3sas_base_check_cmd_timeout(ioc, ioc->config_cmds.status, in _config_request()
392 if (ioc->config_cmds.smid == smid) in _config_request()
394 if ((ioc->shost_recovery) || (ioc->config_cmds.status & in _config_request()
395 MPT3_CMD_RESET) || ioc->pci_error_recovery) in _config_request()
398 r = -EFAULT; in _config_request()
402 if (ioc->config_cmds.status & MPT3_CMD_REPLY_VALID) { in _config_request()
403 memcpy(mpi_reply, ioc->config_cmds.reply, in _config_request()
407 if ((mpi_request->Header.PageType & 0xF) != in _config_request()
408 (mpi_reply->Header.PageType & 0xF)) { in _config_request()
409 if (!(ioc->logging_level & MPT_DEBUG_CONFIG)) in _config_request()
412 _debug_dump_mf(mpi_request, ioc->request_sz/4); in _config_request()
413 _debug_dump_reply(mpi_reply, ioc->reply_sz/4); in _config_request()
415 ioc->name, __func__, in _config_request()
416 mpi_request->Header.PageType & 0xF, in _config_request()
417 mpi_reply->Header.PageType & 0xF); in _config_request()
420 if (((mpi_request->Header.PageType & 0xF) == in _config_request()
422 mpi_request->ExtPageType != mpi_reply->ExtPageType) { in _config_request()
423 if (!(ioc->logging_level & MPT_DEBUG_CONFIG)) in _config_request()
426 _debug_dump_mf(mpi_request, ioc->request_sz/4); in _config_request()
427 _debug_dump_reply(mpi_reply, ioc->reply_sz/4); in _config_request()
429 ioc->name, __func__, in _config_request()
430 mpi_request->ExtPageType, in _config_request()
431 mpi_reply->ExtPageType); in _config_request()
433 ioc_status = le16_to_cpu(mpi_reply->IOCStatus) in _config_request()
442 config_page && mpi_request->Action == in _config_request()
448 if ((mpi_request->Header.PageType & 0xF) != in _config_request()
450 if (!(ioc->logging_level & MPT_DEBUG_CONFIG)) in _config_request()
453 _debug_dump_mf(mpi_request, ioc->request_sz/4); in _config_request()
454 _debug_dump_reply(mpi_reply, ioc->reply_sz/4); in _config_request()
458 ioc->name, __func__, in _config_request()
459 mpi_request->Header.PageType & 0xF, in _config_request()
463 if (((mpi_request->Header.PageType & 0xF) == in _config_request()
465 (mpi_request->ExtPageType != p[6])) { in _config_request()
466 if (!(ioc->logging_level & MPT_DEBUG_CONFIG)) in _config_request()
469 _debug_dump_mf(mpi_request, ioc->request_sz/4); in _config_request()
470 _debug_dump_reply(mpi_reply, ioc->reply_sz/4); in _config_request()
474 ioc->name, __func__, in _config_request()
475 mpi_request->ExtPageType, p[6]); in _config_request()
486 ioc->config_cmds.status = MPT3_CMD_NOT_USED; in _config_request()
487 mutex_unlock(&ioc->config_cmds.mutex); in _config_request()
495 * mpt3sas_config_get_manufacturing_pg0 - obtain manufacturing page 0
501 * Return: 0 for success, non-zero for failure.
516 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_manufacturing_pg0()
531 * mpt3sas_config_get_manufacturing_pg7 - obtain manufacturing page 7
538 * Return: 0 for success, non-zero for failure.
554 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_manufacturing_pg7()
569 * mpt3sas_config_get_manufacturing_pg10 - obtain manufacturing page 10
575 * Return: 0 for success, non-zero for failure.
591 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_manufacturing_pg10()
606 * mpt3sas_config_get_manufacturing_pg11 - obtain manufacturing page 11
612 * Return: 0 for success, non-zero for failure.
628 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_manufacturing_pg11()
643 * mpt3sas_config_set_manufacturing_pg11 - set manufacturing page 11
649 * Return: 0 for success, non-zero for failure.
665 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_set_manufacturing_pg11()
680 * mpt3sas_config_get_bios_pg2 - obtain bios page 2
686 * Return: 0 for success, non-zero for failure.
701 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_bios_pg2()
716 * mpt3sas_config_get_bios_pg3 - obtain bios page 3
722 * Return: 0 for success, non-zero for failure.
737 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_bios_pg3()
752 * mpt3sas_config_get_iounit_pg0 - obtain iounit page 0
758 * Return: 0 for success, non-zero for failure.
773 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_iounit_pg0()
788 * mpt3sas_config_get_iounit_pg1 - obtain iounit page 1
794 * Return: 0 for success, non-zero for failure.
809 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_iounit_pg1()
824 * mpt3sas_config_set_iounit_pg1 - set iounit page 1
830 * Return: 0 for success, non-zero for failure.
845 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_set_iounit_pg1()
860 * mpt3sas_config_get_iounit_pg3 - obtain iounit page 3
867 * Return: 0 for success, non-zero for failure.
882 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_iounit_pg3()
896 * mpt3sas_config_get_iounit_pg8 - obtain iounit page 8
902 * Return: 0 for success, non-zero for failure.
917 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_iounit_pg8()
932 * mpt3sas_config_get_ioc_pg8 - obtain ioc page 8
938 * Return: 0 for success, non-zero for failure.
953 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_ioc_pg8()
967 * mpt3sas_config_get_ioc_pg1 - obtain ioc page 1
973 * Return: 0 for success, non-zero for failure.
988 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_ioc_pg1()
1003 * mpt3sas_config_set_ioc_pg1 - modify ioc page 1
1009 * Return: 0 for success, non-zero for failure.
1024 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_set_ioc_pg1()
1039 * mpt3sas_config_get_sas_device_pg0 - obtain sas device page 0
1047 * Return: 0 for success, non-zero for failure.
1064 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_sas_device_pg0()
1080 * mpt3sas_config_get_sas_device_pg1 - obtain sas device page 1
1088 * Return: 0 for success, non-zero for failure.
1105 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_sas_device_pg1()
1121 * mpt3sas_config_get_pcie_device_pg0 - obtain pcie device page 0
1129 * Return: 0 for success, non-zero for failure.
1146 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_pcie_device_pg0()
1162 * mpt3sas_config_get_pcie_device_pg2 - obtain pcie device page 2
1170 * Return: 0 for success, non-zero for failure.
1187 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_pcie_device_pg2()
1203 * mpt3sas_config_get_number_hba_phys - obtain number of phys on the host
1208 * Return: 0 for success, non-zero for failure.
1227 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_number_hba_phys()
1248 * mpt3sas_config_get_sas_iounit_pg0 - obtain sas iounit page 0
1258 * Return: 0 for success, non-zero for failure.
1275 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_sas_iounit_pg0()
1289 * mpt3sas_config_get_sas_iounit_pg1 - obtain sas iounit page 1
1299 * Return: 0 for success, non-zero for failure.
1316 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_sas_iounit_pg1()
1330 * mpt3sas_config_set_sas_iounit_pg1 - send sas iounit page 1
1340 * Return: 0 for success, non-zero for failure.
1357 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_set_sas_iounit_pg1()
1374 * mpt3sas_config_get_expander_pg0 - obtain expander page 0
1382 * Return: 0 for success, non-zero for failure.
1398 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_expander_pg0()
1414 * mpt3sas_config_get_expander_pg1 - obtain expander page 1
1422 * Return: 0 for success, non-zero for failure.
1439 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_expander_pg1()
1457 * mpt3sas_config_get_enclosure_pg0 - obtain enclosure page 0
1465 * Return: 0 for success, non-zero for failure.
1481 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_enclosure_pg0()
1497 * mpt3sas_config_get_phy_pg0 - obtain phy page 0
1504 * Return: 0 for success, non-zero for failure.
1520 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_phy_pg0()
1537 * mpt3sas_config_get_phy_pg1 - obtain phy page 1
1544 * Return: 0 for success, non-zero for failure.
1560 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_phy_pg1()
1577 * mpt3sas_config_get_raid_volume_pg1 - obtain raid volume page 1
1585 * Return: 0 for success, non-zero for failure.
1601 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_raid_volume_pg1()
1617 * mpt3sas_config_get_number_pds - obtain number of phys disk assigned to volume
1623 * Return: 0 for success, non-zero for failure.
1642 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_number_pds()
1666 * mpt3sas_config_get_raid_volume_pg0 - obtain raid volume page 0
1675 * Return: 0 for success, non-zero for failure.
1691 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_raid_volume_pg0()
1706 * mpt3sas_config_get_phys_disk_pg0 - obtain phys disk page 0
1714 * Return: 0 for success, non-zero for failure.
1730 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_phys_disk_pg0()
1746 * mpt3sas_config_get_volume_handle - returns volume handle for give hidden
1753 * Return: 0 for success, non-zero for failure.
1776 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); in mpt3sas_config_get_volume_handle()
1786 r = -1; in mpt3sas_config_get_volume_handle()
1799 r = -1; in mpt3sas_config_get_volume_handle()
1804 for (i = 0; i < config_page->NumElements; i++) { in mpt3sas_config_get_volume_handle()
1805 element_type = le16_to_cpu(config_page-> in mpt3sas_config_get_volume_handle()
1813 le16_to_cpu(config_page->ConfigElement[i]. in mpt3sas_config_get_volume_handle()
1817 le16_to_cpu(config_page-> in mpt3sas_config_get_volume_handle()
1829 config_num = config_page->ConfigNum; in mpt3sas_config_get_volume_handle()
1837 * mpt3sas_config_get_volume_wwid - returns wwid given the volume handle
1843 * Return: 0 for success, non-zero for failure.
1859 return -1; in mpt3sas_config_get_volume_wwid()