Lines Matching refs:ioc

127 static int mptctl_do_fw_download(int ioc, char __user *ufwbuf, size_t fwlen);
129 struct buflist **blp, dma_addr_t *sglbuf_dma, MPT_ADAPTER *ioc);
131 struct buflist *buflist, MPT_ADAPTER *ioc);
136 static int mptctl_ioc_reset(MPT_ADAPTER *ioc, int reset_phase);
141 static int mptctl_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply);
170 * @ioc: Pointer to MPT adapter
179 mptctl_syscall_down(MPT_ADAPTER *ioc, int nonblock)
184 if (!mutex_trylock(&ioc->ioctl_cmds.mutex))
187 if (mutex_lock_interruptible(&ioc->ioctl_cmds.mutex))
201 mptctl_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *req, MPT_FRAME_HDR *reply)
210 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "completing mpi function "
211 "(0x%02X), req=%p, reply=%p\n", ioc->name, req->u.hdr.Function,
218 if (ioc->ioctl_cmds.msg_context != req->u.hdr.MsgContext)
221 ioc->ioctl_cmds.status |= MPT_MGMT_STATUS_COMMAND_GOOD;
226 ioc->ioctl_cmds.status |= MPT_MGMT_STATUS_RF_VALID;
227 sz = min(ioc->reply_sz, 4*reply->u.reply.MsgLength);
228 memcpy(ioc->ioctl_cmds.reply, reply, sz);
231 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT
232 "iocstatus (0x%04X), loginfo (0x%08X)\n", ioc->name,
241 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT
243 "tag = (0x%04x), transfer_count (0x%08x)\n", ioc->name,
254 sense_data = ((u8 *)ioc->sense_buf_pool +
256 memcpy(ioc->ioctl_cmds.sense, sense_data, sz);
257 ioc->ioctl_cmds.status |= MPT_MGMT_STATUS_SENSE_VALID;
264 if (ioc->ioctl_cmds.status & MPT_MGMT_STATUS_PENDING) {
266 mpt_clear_taskmgmt_in_progress_flag(ioc);
267 ioc->ioctl_cmds.status &= ~MPT_MGMT_STATUS_PENDING;
268 complete(&ioc->ioctl_cmds.done);
269 if (ioc->bus_type == SAS)
270 ioc->schedule_target_reset(ioc);
272 ioc->ioctl_cmds.status &= ~MPT_MGMT_STATUS_PENDING;
273 complete(&ioc->ioctl_cmds.done);
286 mptctl_taskmgmt_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
291 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
293 ioc->name, mf, mr));
295 ioc->taskmgmt_cmds.status |= MPT_MGMT_STATUS_COMMAND_GOOD;
300 ioc->taskmgmt_cmds.status |= MPT_MGMT_STATUS_RF_VALID;
301 memcpy(ioc->taskmgmt_cmds.reply, mr,
304 if (ioc->taskmgmt_cmds.status & MPT_MGMT_STATUS_PENDING) {
305 mpt_clear_taskmgmt_in_progress_flag(ioc);
306 ioc->taskmgmt_cmds.status &= ~MPT_MGMT_STATUS_PENDING;
307 complete(&ioc->taskmgmt_cmds.done);
308 if (ioc->bus_type == SAS)
309 ioc->schedule_target_reset(ioc);
316 mptctl_do_taskmgmt(MPT_ADAPTER *ioc, u8 tm_type, u8 bus_id, u8 target_id)
328 mutex_lock(&ioc->taskmgmt_cmds.mutex);
329 if (mpt_set_taskmgmt_in_progress_flag(ioc) != 0) {
330 mutex_unlock(&ioc->taskmgmt_cmds.mutex);
336 mf = mpt_get_msg_frame(mptctl_taskmgmt_id, ioc);
338 dtmprintk(ioc,
340 ioc->name));
341 mpt_clear_taskmgmt_in_progress_flag(ioc);
346 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "TaskMgmt request (mf=%p)\n",
347 ioc->name, mf));
354 (ioc->bus_type == FC))
368 switch (ioc->bus_type) {
381 dtmprintk(ioc,
383 ioc->name, tm_type, timeout));
385 INITIALIZE_MGMT_STATUS(ioc->taskmgmt_cmds.status)
387 if ((ioc->facts.IOCCapabilities & MPI_IOCFACTS_CAPABILITY_HIGH_PRI_Q) &&
388 (ioc->facts.MsgVersion >= MPI_VERSION_01_05))
389 mpt_put_msg_frame_hi_pri(mptctl_taskmgmt_id, ioc, mf);
391 retval = mpt_send_handshake_request(mptctl_taskmgmt_id, ioc,
394 dfailprintk(ioc,
397 " (ioc %p, mf %p, rc=%d) \n", ioc->name,
398 ioc, mf, retval));
399 mpt_free_msg_frame(ioc, mf);
400 mpt_clear_taskmgmt_in_progress_flag(ioc);
406 ii = wait_for_completion_timeout(&ioc->taskmgmt_cmds.done, timeout*HZ);
408 if (!(ioc->taskmgmt_cmds.status & MPT_MGMT_STATUS_COMMAND_GOOD)) {
409 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
410 "TaskMgmt failed\n", ioc->name));
411 mpt_free_msg_frame(ioc, mf);
412 mpt_clear_taskmgmt_in_progress_flag(ioc);
413 if (ioc->taskmgmt_cmds.status & MPT_MGMT_STATUS_DID_IOCRESET)
420 if (!(ioc->taskmgmt_cmds.status & MPT_MGMT_STATUS_RF_VALID)) {
421 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
422 "TaskMgmt failed\n", ioc->name));
427 pScsiTmReply = (SCSITaskMgmtReply_t *) ioc->taskmgmt_cmds.reply;
428 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
431 "term_cmnds=%d\n", ioc->name, pScsiTmReply->Bus,
445 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
446 "TaskMgmt failed\n", ioc->name));
451 mutex_unlock(&ioc->taskmgmt_cmds.mutex);
452 CLEAR_MGMT_STATUS(ioc->taskmgmt_cmds.status)
463 mptctl_timeout_expired(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf)
470 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT ": %s\n",
471 ioc->name, __func__));
474 mpt_halt_firmware(ioc);
476 spin_lock_irqsave(&ioc->taskmgmt_lock, flags);
477 if (ioc->ioc_reset_in_progress) {
478 spin_unlock_irqrestore(&ioc->taskmgmt_lock, flags);
479 CLEAR_MGMT_PENDING_STATUS(ioc->ioctl_cmds.status)
480 mpt_free_msg_frame(ioc, mf);
483 spin_unlock_irqrestore(&ioc->taskmgmt_lock, flags);
486 CLEAR_MGMT_PENDING_STATUS(ioc->ioctl_cmds.status)
488 if (ioc->bus_type == SAS) {
490 ret_val = mptctl_do_taskmgmt(ioc,
494 ret_val = mptctl_do_taskmgmt(ioc,
502 ret_val = mptctl_do_taskmgmt(ioc,
509 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Calling Reset! \n",
510 ioc->name));
511 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
512 mpt_free_msg_frame(ioc, mf);
524 mptctl_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
528 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
529 "%s: MPT_IOC_SETUP_RESET\n", ioc->name, __func__));
532 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
533 "%s: MPT_IOC_PRE_RESET\n", ioc->name, __func__));
536 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
537 "%s: MPT_IOC_POST_RESET\n", ioc->name, __func__));
538 if (ioc->ioctl_cmds.status & MPT_MGMT_STATUS_PENDING) {
539 ioc->ioctl_cmds.status |= MPT_MGMT_STATUS_DID_IOCRESET;
540 complete(&ioc->ioctl_cmds.done);
553 mptctl_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
559 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "%s() called\n",
560 ioc->name, __func__));
569 ioc->aen_event_read_flag=1;
570 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Raised SIGIO to application\n",
571 ioc->name));
572 devtverboseprintk(ioc, printk(MYIOC_s_DEBUG_FMT
573 "Raised SIGIO to application\n", ioc->name));
582 if(ioc->aen_event_read_flag)
588 if (ioc->events && (ioc->eventTypes & ( 1 << event))) {
589 ioc->aen_event_read_flag=1;
590 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT
591 "Raised SIGIO to application\n", ioc->name));
592 devtverboseprintk(ioc, printk(MYIOC_s_DEBUG_FMT
593 "Raised SIGIO to application\n", ioc->name));
609 MPT_ADAPTER *ioc;
613 list_for_each_entry(ioc, &ioc_list, list)
614 ioc->aen_event_read_flag=0;
729 printk(KERN_DEBUG MYNAM "%s@%d::mptctl_do_reset - ioc%d not found!\n",
794 mptctl_do_fw_download(int ioc, char __user *ufwbuf, size_t fwlen)
818 if (mpt_verify_adapter(ioc, &iocp) < 0) {
819 printk(KERN_DEBUG MYNAM "ioctl_fwdl - ioc%d not found!\n",
820 ioc);
836 dctlprintk(iocp, printk(MYIOC_s_DEBUG_FMT "DbG: kfwdl.ioc = %04xh\n",
837 iocp->name, ioc));
1024 * ioc - pointer to the mptadapter
1033 struct buflist **blp, dma_addr_t *sglbuf_dma, MPT_ADAPTER *ioc)
1066 sglbuf = pci_alloc_consistent(ioc->pcidev, MAX_SGL_BYTES, sglbuf_dma);
1083 sg_spill = ((ioc->req_sz - sge_offset)/ioc->SGE_size) - 1;
1087 buflist[buflist_ent].kptr = pci_alloc_consistent(ioc->pcidev,
1094 "not enough memory! :-(\n", ioc->name);
1096 ioc->name, numfrags);
1105 dma_addr = pci_map_single(ioc->pcidev,
1121 "-SG: No can do - " "Chain required! :-(\n", ioc->name);
1122 printk(MYIOC_s_WARN_FMT "(freeing %d frags)\n", ioc->name, numfrags);
1130 "too many SG frags! :-(\n", ioc->name);
1132 ioc->name, numfrags);
1143 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "-SG: kbuf_alloc_2_sgl() - "
1144 "%d SG frags generated!\n", ioc->name, numfrags));
1146 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "-SG: kbuf_alloc_2_sgl() - "
1147 "last (big) alloc_sz=%d\n", ioc->name, alloc_sz));
1165 pci_free_consistent(ioc->pcidev, len, kptr, dma_addr);
1167 pci_free_consistent(ioc->pcidev, MAX_SGL_BYTES, sglbuf, *sglbuf_dma);
1178 kfree_sgl(MptSge_t *sgl, dma_addr_t sgl_dma, struct buflist *buflist, MPT_ADAPTER *ioc)
1204 pci_unmap_single(ioc->pcidev, dma_addr, len, dir);
1205 pci_free_consistent(ioc->pcidev, len, kptr, dma_addr);
1222 pci_unmap_single(ioc->pcidev, dma_addr, len, dir);
1223 pci_free_consistent(ioc->pcidev, len, kptr, dma_addr);
1227 pci_free_consistent(ioc->pcidev, MAX_SGL_BYTES, sgl, sgl_dma);
1229 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "-SG: Free'd 1 SGL buf + %d kbufs!\n",
1230 ioc->name, n));
1248 MPT_ADAPTER *ioc;
1287 if (((iocnum = mpt_verify_adapter(karg->hdr.iocnum, &ioc)) < 0) ||
1288 (ioc == NULL)) {
1289 printk(KERN_DEBUG MYNAM "%s::mptctl_getiocinfo() @%d - ioc%d not found!\n",
1299 ioc->name, __FILE__, __LINE__);
1304 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mptctl_getiocinfo called.\n",
1305 ioc->name));
1310 if (ioc->bus_type == SAS)
1312 else if (ioc->bus_type == FC)
1324 pdev = (struct pci_dev *) ioc->pcidev;
1350 if (ioc->sh) {
1351 shost_for_each_device(sdev, ioc->sh) {
1364 karg->FWVersion = ioc->facts.FWVersion.Word;
1365 karg->BIOSVersion = ioc->biosVersion;
1373 karg->hostId = ioc->pfacts[port].PortSCSIID;
1381 ioc->name, __FILE__, __LINE__, uarg);
1405 MPT_ADAPTER *ioc;
1424 if (((iocnum = mpt_verify_adapter(karg.hdr.iocnum, &ioc)) < 0) ||
1425 (ioc == NULL)) {
1426 printk(KERN_DEBUG MYNAM "%s::mptctl_gettargetinfo() @%d - ioc%d not found!\n",
1431 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mptctl_gettargetinfo called.\n",
1432 ioc->name));
1443 ioc->name, __FILE__, __LINE__);
1464 ioc->name, __FILE__, __LINE__);
1471 if (ioc->sh){
1472 shost_for_each_device(sdev, ioc->sh) {
1497 ioc->name, __FILE__, __LINE__, uarg);
1507 ioc->name, __FILE__, __LINE__, pdata);
1530 MPT_ADAPTER *ioc;
1540 if (((iocnum = mpt_verify_adapter(karg.hdr.iocnum, &ioc)) < 0) ||
1541 (ioc == NULL)) {
1542 printk(KERN_DEBUG MYNAM "%s::mptctl_readtest() @%d - ioc%d not found!\n",
1547 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mptctl_readtest called.\n",
1548 ioc->name));
1554 karg.chip_type = ioc->mfcnt;
1556 karg.chip_type = ioc->pcidev->device;
1558 strncpy (karg.name, ioc->name, MPT_MAX_NAME);
1560 strncpy (karg.product, ioc->prod_name, MPT_PRODUCT_LENGTH);
1568 ioc->name, __FILE__, __LINE__, uarg);
1591 MPT_ADAPTER *ioc;
1601 if (((iocnum = mpt_verify_adapter(karg.hdr.iocnum, &ioc)) < 0) ||
1602 (ioc == NULL)) {
1603 printk(KERN_DEBUG MYNAM "%s::mptctl_eventquery() @%d - ioc%d not found!\n",
1608 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mptctl_eventquery called.\n",
1609 ioc->name));
1611 karg.eventTypes = ioc->eventTypes;
1618 ioc->name, __FILE__, __LINE__, uarg);
1630 MPT_ADAPTER *ioc;
1640 if (((iocnum = mpt_verify_adapter(karg.hdr.iocnum, &ioc)) < 0) ||
1641 (ioc == NULL)) {
1642 printk(KERN_DEBUG MYNAM "%s::mptctl_eventenable() @%d - ioc%d not found!\n",
1647 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mptctl_eventenable called.\n",
1648 ioc->name));
1649 if (ioc->events == NULL) {
1653 ioc->events = kzalloc(sz, GFP_KERNEL);
1654 if (!ioc->events) {
1657 ioc->name);
1660 ioc->alloc_total += sz;
1662 ioc->eventContext = 0;
1667 ioc->eventTypes = karg.eventTypes;
1678 MPT_ADAPTER *ioc;
1689 if (((iocnum = mpt_verify_adapter(karg.hdr.iocnum, &ioc)) < 0) ||
1690 (ioc == NULL)) {
1691 printk(KERN_DEBUG MYNAM "%s::mptctl_eventreport() @%d - ioc%d not found!\n",
1695 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mptctl_eventreport called.\n",
1696 ioc->name));
1707 if ((max < 1) || !ioc->events)
1711 ioc->aen_event_read_flag=0;
1716 if (copy_to_user(uarg->eventData, ioc->events, numBytes)) {
1719 ioc->name, __FILE__, __LINE__, ioc->events);
1732 MPT_ADAPTER *ioc;
1743 if (((iocnum = mpt_verify_adapter(karg.hdr.iocnum, &ioc)) < 0) ||
1744 (ioc == NULL)) {
1745 printk(KERN_DEBUG MYNAM "%s::mptctl_replace_fw() @%d - ioc%d not found!\n",
1750 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mptctl_replace_fw called.\n",
1751 ioc->name));
1754 if (ioc->cached_fw == NULL)
1757 mpt_free_fw_memory(ioc);
1768 mpt_alloc_fw_memory(ioc, newFwSize);
1769 if (ioc->cached_fw == NULL)
1774 if (copy_from_user(ioc->cached_fw, uarg->newImage, newFwSize)) {
1777 "@ %p\n", ioc->name, __FILE__, __LINE__, uarg);
1778 mpt_free_fw_memory(ioc);
1784 ioc->facts.FWImageSize = newFwSize;
1805 MPT_ADAPTER *ioc;
1817 if (((iocnum = mpt_verify_adapter(karg.hdr.iocnum, &ioc)) < 0) ||
1818 (ioc == NULL)) {
1819 printk(KERN_DEBUG MYNAM "%s::mptctl_mpt_command() @%d - ioc%d not found!\n",
1844 MPT_ADAPTER *ioc;
1868 if (((iocnum = mpt_verify_adapter(karg.hdr.iocnum, &ioc)) < 0) ||
1869 (ioc == NULL)) {
1870 printk(KERN_DEBUG MYNAM "%s::mptctl_do_mpt_command() @%d - ioc%d not found!\n",
1875 spin_lock_irqsave(&ioc->taskmgmt_lock, flags);
1876 if (ioc->ioc_reset_in_progress) {
1877 spin_unlock_irqrestore(&ioc->taskmgmt_lock, flags);
1882 spin_unlock_irqrestore(&ioc->taskmgmt_lock, flags);
1888 sz += ioc->SGE_size;
1890 sz += ioc->SGE_size;
1892 if (sz > ioc->req_sz) {
1895 ioc->name, __FILE__, __LINE__, sz, ioc->req_sz);
1901 if ((mf = mpt_get_msg_frame(mptctl_id, ioc)) == NULL)
1915 ioc->name, __FILE__, __LINE__, mfPtr);
1926 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "sending mpi function (0x%02X), req=%p\n",
1927 ioc->name, hdr->Function, mf));
1939 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "\ttype=0x%02x ext_type=0x%02x "
1940 "number=0x%02x action=0x%02x\n", ioc->name,
1959 if (ioc->sh) {
1966 id = (ioc->devices_per_bus == 0) ? 256 : ioc->devices_per_bus;
1970 ioc->name, __FILE__, __LINE__);
1975 if (pScsiReq->Bus >= ioc->number_of_buses) {
1978 ioc->name, __FILE__, __LINE__);
1984 pScsiReq->MsgFlags |= mpt_msg_flags(ioc);
1999 cpu_to_le32(ioc->sense_buf_low_dma
2002 shost_for_each_device(sdev, ioc->sh) {
2033 ioc->name, __FILE__, __LINE__);
2049 if (!ioc->sh) {
2052 ioc->name, __FILE__, __LINE__);
2064 if (ioc->sh) {
2071 pScsiReq->MsgFlags |= mpt_msg_flags(ioc);
2086 cpu_to_le32(ioc->sense_buf_low_dma
2109 ioc->name, __FILE__, __LINE__);
2119 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT
2122 ioc->name, pScsiTm->TaskType, le32_to_cpu
2137 high_addr = cpu_to_le32((u32)((u64)ioc->req_frames_dma >> 32));
2138 sense_high= cpu_to_le32((u32)((u64)ioc->sense_buf_pool_dma >> 32));
2144 if ((pInit->Flags != 0) || (pInit->MaxDevices != ioc->facts.MaxDevices) ||
2145 (pInit->MaxBuses != ioc->facts.MaxBuses) ||
2146 (pInit->ReplyFrameSize != cpu_to_le16(ioc->reply_sz)) ||
2151 ioc->name, __FILE__, __LINE__);
2184 ioc->name, __FILE__, __LINE__, hdr->Function);
2218 ioc->pcidev, bufOut.len, &dma_addr_out);
2227 ioc->add_sge(psge, flagsLength, dma_addr_out);
2228 psge += ioc->SGE_size;
2239 ioc->name, __FILE__, __LINE__,karg.dataOutBufPtr);
2251 bufIn.kptr = pci_alloc_consistent(ioc->pcidev,
2261 ioc->add_sge(psge, flagsLength, dma_addr_in);
2267 ioc->add_sge(psge, flagsLength, (dma_addr_t) -1);
2270 SET_MGMT_MSG_CONTEXT(ioc->ioctl_cmds.msg_context, hdr->MsgContext);
2271 INITIALIZE_MGMT_STATUS(ioc->ioctl_cmds.status)
2274 mutex_lock(&ioc->taskmgmt_cmds.mutex);
2275 if (mpt_set_taskmgmt_in_progress_flag(ioc) != 0) {
2276 mutex_unlock(&ioc->taskmgmt_cmds.mutex);
2280 DBG_DUMP_TM_REQUEST_FRAME(ioc, (u32 *)mf);
2282 if ((ioc->facts.IOCCapabilities & MPI_IOCFACTS_CAPABILITY_HIGH_PRI_Q) &&
2283 (ioc->facts.MsgVersion >= MPI_VERSION_01_05))
2284 mpt_put_msg_frame_hi_pri(mptctl_id, ioc, mf);
2286 rc =mpt_send_handshake_request(mptctl_id, ioc,
2289 dfailprintk(ioc, printk(MYIOC_s_ERR_FMT
2290 "send_handshake FAILED! (ioc %p, mf %p)\n",
2291 ioc->name, ioc, mf));
2292 mpt_clear_taskmgmt_in_progress_flag(ioc);
2294 mutex_unlock(&ioc->taskmgmt_cmds.mutex);
2300 mpt_put_msg_frame(mptctl_id, ioc, mf);
2305 timeleft = wait_for_completion_timeout(&ioc->ioctl_cmds.done,
2307 if (!(ioc->ioctl_cmds.status & MPT_MGMT_STATUS_COMMAND_GOOD)) {
2309 dfailprintk(ioc, printk(MYIOC_s_ERR_FMT "%s: TIMED OUT!\n",
2310 ioc->name, __func__));
2311 if (ioc->ioctl_cmds.status & MPT_MGMT_STATUS_DID_IOCRESET) {
2313 mutex_unlock(&ioc->taskmgmt_cmds.mutex);
2320 ioc->name, mpt_GetIocState(ioc, 0), function);
2322 mutex_unlock(&ioc->taskmgmt_cmds.mutex);
2323 mptctl_timeout_expired(ioc, mf);
2331 mutex_unlock(&ioc->taskmgmt_cmds.mutex);
2339 if (ioc->ioctl_cmds.status & MPT_MGMT_STATUS_RF_VALID) {
2340 if (karg.maxReplyBytes < ioc->reply_sz) {
2342 4*ioc->ioctl_cmds.reply[2]);
2344 sz = min(ioc->reply_sz, 4*ioc->ioctl_cmds.reply[2]);
2348 ioc->ioctl_cmds.reply, sz)){
2352 ioc->name, __FILE__, __LINE__, karg.replyFrameBufPtr);
2361 if (ioc->ioctl_cmds.status & MPT_MGMT_STATUS_SENSE_VALID) {
2365 ioc->ioctl_cmds.sense, sz)) {
2368 ioc->name, __FILE__, __LINE__,
2379 if ((ioc->ioctl_cmds.status & MPT_MGMT_STATUS_COMMAND_GOOD) &&
2386 ioc->name, __FILE__, __LINE__,
2394 CLEAR_MGMT_STATUS(ioc->ioctl_cmds.status)
2395 SET_MGMT_MSG_CONTEXT(ioc->ioctl_cmds.msg_context, 0);
2400 pci_free_consistent(ioc->pcidev,
2405 pci_free_consistent(ioc->pcidev,
2413 mpt_free_msg_frame(ioc, mf);
2433 MPT_ADAPTER *ioc;
2464 if (((iocnum = mpt_verify_adapter(karg.hdr.iocnum, &ioc)) < 0) ||
2465 (ioc == NULL)) {
2466 printk(KERN_DEBUG MYNAM "%s::mptctl_hp_hostinfo() @%d - ioc%d not found!\n",
2470 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT ": mptctl_hp_hostinfo called.\n",
2471 ioc->name));
2476 pdev = (struct pci_dev *) ioc->pcidev;
2488 if (ioc->sh != NULL)
2489 karg.host_no = ioc->sh->host_no;
2495 karg.fw_version[0] = ioc->facts.FWVersion.Struct.Major >= 10 ?
2496 ((ioc->facts.FWVersion.Struct.Major / 10) + '0') : '0';
2497 karg.fw_version[1] = (ioc->facts.FWVersion.Struct.Major % 10 ) + '0';
2499 karg.fw_version[3] = ioc->facts.FWVersion.Struct.Minor >= 10 ?
2500 ((ioc->facts.FWVersion.Struct.Minor / 10) + '0') : '0';
2501 karg.fw_version[4] = (ioc->facts.FWVersion.Struct.Minor % 10 ) + '0';
2503 karg.fw_version[6] = ioc->facts.FWVersion.Struct.Unit >= 10 ?
2504 ((ioc->facts.FWVersion.Struct.Unit / 10) + '0') : '0';
2505 karg.fw_version[7] = (ioc->facts.FWVersion.Struct.Unit % 10 ) + '0';
2507 karg.fw_version[9] = ioc->facts.FWVersion.Struct.Dev >= 10 ?
2508 ((ioc->facts.FWVersion.Struct.Dev / 10) + '0') : '0';
2509 karg.fw_version[10] = (ioc->facts.FWVersion.Struct.Dev % 10 ) + '0';
2526 if (mpt_config(ioc, &cfg) == 0) {
2531 pbuf = pci_alloc_consistent(ioc->pcidev, hdr.PageLength * 4, &buf_dma);
2534 if (mpt_config(ioc, &cfg) == 0) {
2541 pci_free_consistent(ioc->pcidev, hdr.PageLength * 4, pbuf, buf_dma);
2546 rc = mpt_GetIocState(ioc, 1);
2565 if ((ioc->bus_type == SAS) || (ioc->bus_type == FC))
2573 if (ioc->sh != NULL) {
2574 MPT_SCSI_HOST *hd = shost_priv(ioc->sh);
2577 karg.hard_resets = ioc->hard_resets;
2578 karg.soft_resets = ioc->soft_resets;
2579 karg.timeouts = ioc->timeouts;
2586 if ((mf = mpt_get_msg_frame(mptctl_id, ioc)) == NULL) {
2587 dfailprintk(ioc, printk(MYIOC_s_WARN_FMT
2588 "%s, no msg frames!!\n", ioc->name, __func__));
2606 pbuf = pci_alloc_consistent(ioc->pcidev, 4, &buf_dma);
2609 ioc->add_sge((char *)&IstwiRWRequest->SGL,
2613 SET_MGMT_MSG_CONTEXT(ioc->ioctl_cmds.msg_context,
2615 INITIALIZE_MGMT_STATUS(ioc->ioctl_cmds.status)
2616 mpt_put_msg_frame(mptctl_id, ioc, mf);
2619 timeleft = wait_for_completion_timeout(&ioc->ioctl_cmds.done,
2621 if (!(ioc->ioctl_cmds.status & MPT_MGMT_STATUS_COMMAND_GOOD)) {
2623 printk(MYIOC_s_WARN_FMT "%s: failed\n", ioc->name, __func__);
2624 if (ioc->ioctl_cmds.status & MPT_MGMT_STATUS_DID_IOCRESET) {
2625 mpt_free_msg_frame(ioc, mf);
2631 ioc->name, mpt_GetIocState(ioc, 0));
2632 mptctl_timeout_expired(ioc, mf);
2647 if (ioc->ioctl_cmds.status & MPT_MGMT_STATUS_RF_VALID)
2651 CLEAR_MGMT_STATUS(ioc->ioctl_cmds.status)
2652 SET_MGMT_MSG_CONTEXT(ioc->ioctl_cmds.msg_context, 0);
2655 pci_free_consistent(ioc->pcidev, 4, pbuf, buf_dma);
2662 ioc->name, __FILE__, __LINE__, uarg);
2687 MPT_ADAPTER *ioc;
2704 if (((iocnum = mpt_verify_adapter(karg.hdr.iocnum, &ioc)) < 0) ||
2705 (ioc == NULL)) {
2706 printk(KERN_DEBUG MYNAM "%s::mptctl_hp_targetinfo() @%d - ioc%d not found!\n",
2710 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mptctl_hp_targetinfo called.\n",
2711 ioc->name));
2715 if ((ioc->bus_type == SAS) || (ioc->bus_type == FC))
2718 if ((ioc->spi_data.sdp0length == 0) || (ioc->sh == NULL))
2721 if (ioc->sh->host_no != karg.hdr.host)
2726 data_sz = ioc->spi_data.sdp0length * 4;
2727 pg0_alloc = (SCSIDevicePage0_t *) pci_alloc_consistent(ioc->pcidev, data_sz, &page_dma);
2729 hdr.PageVersion = ioc->spi_data.sdp0version;
2742 if ((rc = mpt_config(ioc, &cfg)) == 0) {
2765 pci_free_consistent(ioc->pcidev, data_sz, (u8 *) pg0_alloc, page_dma);
2787 if ((mpt_config(ioc, &cfg) == 0) && (cfg.cfghdr.hdr->PageLength > 0)) {
2792 ioc->pcidev, data_sz, &page_dma);
2796 if ((rc = mpt_config(ioc, &cfg)) == 0) {
2801 pci_free_consistent(ioc->pcidev, data_sz, (u8 *) pg3_alloc, page_dma);
2804 hd = shost_priv(ioc->sh);
2813 ioc->name, __FILE__, __LINE__, uarg);
2862 printk(KERN_DEBUG MYNAM "::compat_mptfwxfer_ioctl @%d - ioc%d not found!\n",
2902 printk(KERN_DEBUG MYNAM "::compat_mpt_command @%d - ioc%d not found!\n",
2984 MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
2986 mutex_init(&ioc->ioctl_cmds.mutex);
2987 init_completion(&ioc->ioctl_cmds.done);