switch fusion to use <linux/list.h> everywhere
Subsystems (2)
PATCH 1/1 switch fusion to use <linux/list.h> everywhere
drivers/message/fusion/mptbase.c +22 -32
@@ -437,7 +437,7 @@/* Put Request back on FreeQ! */ spin_lock_irqsave (&ioc->FreeQlock, flags); -Q_ADD_TAIL (&ioc->FreeQ, &mf->u.frame.linkage,MPT_FRAME_HDR ); +list_add_tail (&mf->u.frame.linkage.list, &ioc->FreeQ);#ifdef MFCNT ioc->mfcnt--;#endif
@@ -533,7 +533,7 @@del_timer (&pCfg->timer);spin_lock_irqsave (&ioc->FreeQlock, flags); -Q_DEL_ITEM (&pCfg->linkage); +list_del (&pCfg->linkage);spin_unlock_irqrestore (&ioc->FreeQlock, flags);/*
@@ -819,11 +819,12 @@return NULL ;spin_lock_irqsave (&ioc->FreeQlock, flags); -if (!Q_IS_EMPTY (&ioc->FreeQ)) { +if (!list_empty (&ioc->FreeQ)) {int req_offset; - mf = ioc->FreeQ.head; -Q_DEL_ITEM (&mf->u.frame.linkage); + mf =list_entry (ioc->FreeQ.next,MPT_FRAME_HDR , + u.frame.linkage.list); +list_del (&mf->u.frame.linkage.list); mf->u.frame.hwhdr.msgctxu.fld.cb_idx = handle;/* byte */ req_offset = (u8 *)mf - (u8 *)ioc->req_frames;/* u16! */
@@ -919,7 +920,7 @@/* Put Request back on FreeQ! */ spin_lock_irqsave (&ioc->FreeQlock, flags); -Q_ADD_TAIL (&ioc->FreeQ, &mf->u.frame.linkage,MPT_FRAME_HDR ); +list_add_tail (&mf->u.frame.linkage.list, &ioc->FreeQ);#ifdef MFCNT ioc->mfcnt--;#endif
@@ -1198,7 +1199,7 @@/* Initialize the running configQ head. */ -Q_INIT (&ioc->configQ,Q_ITEM ); +INIT_LIST_HEAD (&ioc->configQ);/* Find lookup slot. */ INIT_LIST_HEAD (&ioc->list);
@@ -3592,14 +3593,14 @@/* Initialize the free chain Q. */ -Q_INIT (&ioc->FreeChainQ,MPT_FRAME_HDR ); +INIT_LIST_HEAD (&ioc->FreeChainQ);/* Post the chain buffers to the FreeChainQ. */ mem = (u8 *)ioc->ChainBuffer;for (i=0 ; i < num_chain; i++) { mf = (MPT_FRAME_HDR *) mem; -Q_ADD_TAIL (&ioc->FreeChainQ.head, &mf->u.frame.linkage,MPT_FRAME_HDR ); +list_add_tail (&mf->u.frame.linkage.list, &ioc->FreeChainQ); mem += ioc->req_sz; }
@@ -3609,12 +3610,13 @@ mem = (u8 *) ioc->req_frames;spin_lock_irqsave (&ioc->FreeQlock, flags); -Q_INIT (&ioc->FreeQ,MPT_FRAME_HDR ); +INIT_LIST_HEAD (&ioc->FreeQ);for (i =0 ; i < ioc->req_depth; i++) { mf = (MPT_FRAME_HDR *) mem;/* Queue REQUESTs *internally*! */ -Q_ADD_TAIL (&ioc->FreeQ.head, &mf->u.frame.linkage,MPT_FRAME_HDR ); +list_add_tail (&mf->u.frame.linkage.list, &ioc->FreeQ); + mem += ioc->req_sz; }spin_unlock_irqrestore (&ioc->FreeQlock, flags);
@@ -4903,7 +4905,7 @@/* Add to end of Q, set timer and then issue this command */ spin_lock_irqsave (&ioc->FreeQlock, flags); -Q_ADD_TAIL (&ioc->configQ.head, &pCfg->linkage,Q_ITEM ); +list_add_tail (&pCfg->linkage, &ioc->configQ);spin_unlock_irqrestore (&ioc->FreeQlock, flags);add_timer (&pCfg->timer);
@@ -5014,7 +5016,7 @@/* Add to end of Q, set timer and then issue this command */ spin_lock_irqsave (&ioc->FreeQlock, flags); -Q_ADD_TAIL (&ioc->configQ.head, &pCfg->linkage,Q_ITEM ); +list_add_tail (&pCfg->linkage, &ioc->configQ);spin_unlock_irqrestore (&ioc->FreeQlock, flags);add_timer (&pCfg->timer);
@@ -5081,13 +5083,8 @@* the FIFO's are primed. */ spin_lock_irqsave (&ioc->FreeQlock, flags); -if (!Q_IS_EMPTY (&ioc->configQ)){ - pCfg = (CONFIGPARMS *)ioc->configQ.head; -do { -del_timer (&pCfg->timer); - pCfg = (CONFIGPARMS *) (pCfg->linkage.forw); - }while (pCfg != (CONFIGPARMS *)&ioc->configQ); - } +list_for_each_entry (pCfg, &ioc->configQ, linkage) +del_timer (&pCfg->timer);spin_unlock_irqrestore (&ioc->FreeQlock, flags); }else {
@@ -5097,19 +5094,12 @@* Flush the Q, and wake up all suspended threads. */ spin_lock_irqsave (&ioc->FreeQlock, flags); -if (!Q_IS_EMPTY (&ioc->configQ)){ - pCfg = (CONFIGPARMS *)ioc->configQ.head; -do { - pNext = (CONFIGPARMS *) pCfg->linkage.forw; - -Q_DEL_ITEM (&pCfg->linkage); - - pCfg->status =MPT_CONFIG_ERROR ; - pCfg->wait_done =1 ; -wake_up (&mpt_waitq); +list_for_each_entry_safe (pCfg, pNext, &ioc->configQ, linkage) { +list_del (&pCfg->linkage); - pCfg = pNext; - }while (pCfg != (CONFIGPARMS *)&ioc->configQ); + pCfg->status =MPT_CONFIG_ERROR ; + pCfg->wait_done =1 ; +wake_up (&mpt_waitq); }spin_unlock_irqrestore (&ioc->FreeQlock, flags); }
drivers/message/fusion/mptbase.h +5 -62
139 lines not on this page · raw message
drivers/message/fusion/mptscsih.c +7 -21
@@ -340,19 +340,18 @@dsgprintk ((MYIOC_s_INFO_FMT"getFreeChainBuffer called\n" , ioc->name));spin_lock_irqsave (&ioc->FreeQlock, flags); -if (!Q_IS_EMPTY (&ioc->FreeChainQ)) { - +if (!list_empty (&ioc->FreeChainQ)) {int offset; - chainBuf = ioc->FreeChainQ.head; -Q_DEL_ITEM (&chainBuf->u.frame.linkage); + chainBuf =list_entry (ioc->FreeChainQ.next,MPT_FRAME_HDR , + u.frame.linkage.list); +list_del (&chainBuf->u.frame.linkage.list); offset = (u8 *)chainBuf - (u8 *)ioc->ChainBuffer; chain_idx = offset / ioc->req_sz; rc =SUCCESS ;dsgprintk ((MYIOC_s_INFO_FMT"getFreeChainBuffer (index %d), got buf=%p\n" , ioc->name, *retIndex, chainBuf)); - } -else { + }else { rc =FAILED ; chain_idx =MPT_HOST_NO_CHAIN ; dfailprintk((MYIOC_s_ERR_FMT "getFreeChainBuffer failed\n",
@@ -360,9 +359,7 @@ }spin_unlock_irqrestore (&ioc->FreeQlock, flags); - *retIndex = chain_idx; -return rc; }/* mptscsih_getFreeChainBuffer() */
@@ -1218,12 +1215,6 @@dprintk ((MYIOC_s_INFO_FMT"ScsiLookup @ %p, sz=%d\n" , ioc->name, hd->ScsiLookup, sz)); -/* Initialize this Scsi_Host -* internal task Q. -*/ -Q_INIT (&hd->taskQ,MPT_FRAME_HDR ); - hd->taskQcnt =0 ; -/* Allocate memory for the device structures. * A non-Null pointer at an offset * indicates a device exists.
@@ -2102,9 +2093,9 @@ chain = (MPT_FRAME_HDR *) (ioc->ChainBuffer + (chain_idx * ioc->req_sz)); +spin_lock_irqsave (&ioc->FreeQlock, flags); -Q_ADD_TAIL (&ioc->FreeChainQ.head, - &chain->u.frame.linkage,MPT_FRAME_HDR ); +list_add_tail (&chain->u.frame.linkage.list, &ioc->FreeChainQ);spin_unlock_irqrestore (&ioc->FreeQlock, flags); dmfprintk((MYIOC_s_INFO_FMT "FreeChainBuffers (index %d)\n",
@@ -2664,8 +2655,6 @@if (hd->tmPtr) {del_timer (&hd->TMtimer); } -dtmprintk ((MYIOC_s_WARN_FMT"taskQcnt (%d)\n" , - ioc->name, hd->taskQcnt)); }else {dtmprintk ((MYIOC_s_WARN_FMT"TaskMgmt Complete: NULL Scsi Host Ptr\n" , ioc->name));
@@ -2799,9 +2788,6 @@ }else {memset (vdev,0 ,sizeof (VirtDevice));rwlock_init (&vdev->VdevLock); -Q_INIT (&vdev->WaitQ, void); -Q_INIT (&vdev->SentQ, void); -Q_INIT (&vdev->DoneQ, void); vdev->tflags =MPT_TARGET_FLAGS_Q_YES ; vdev->ioc_id = hd->ioc->id; vdev->target_id = device->id;