pReq->DataLength = 0x04; pdev = (struct pci_dev *) ioc->pcidev; 
pReq->DataLength = cpu_to_le16(0x04); pdev = ioc->pcidev; 
mpt_toolbox(MPT_ADAPTER *ioc, CONFIGPARMS *pCfg){	ToolboxIstwiReadWriteRequest_t	*pReq;	MPT_FRAME_HDR	*mf;	struct pci_dev	*pdev;	unsigned long	 flags;	int		 rc;	u32		 flagsLength;	int		 in_isr;	/*	Prevent calling wait_event() (below), if caller happens	 *	to be in ISR context, because that is fatal!	 */	in_isr = in_interrupt();	if (in_isr) {		dcprintk((MYIOC_s_WARN_FMT "toobox request not allowed in ISR context!\n",				ioc->name));		return -EPERM;	}	/* Get and Populate a free Frame	 */	if ((mf = mpt_get_msg_frame(mpt_base_index, ioc)) == NULL) {		dcprintk((MYIOC_s_WARN_FMT "mpt_toolbox: no msg frames!\n",				ioc->name));		return -EAGAIN;	}	pReq = (ToolboxIstwiReadWriteRequest_t	*)mf;	pReq->Tool = pCfg->action;	pReq->Reserved = 0;	pReq->ChainOffset = 0;	pReq->Function = MPI_FUNCTION_TOOLBOX;	pReq->Reserved1 = 0;	pReq->Reserved2 = 0;	pReq->MsgFlags = 0;	pReq->Flags = pCfg->dir;	pReq->BusNum = 0;	pReq->Reserved3 = 0;	pReq->NumAddressBytes = 0x01;	pReq->Reserved4 = 0;	pReq->DataLength = 0x04;	pdev = (struct pci_dev *) ioc->pcidev;	if (pdev->devfn & 1)		pReq->DeviceAddr = 0xB2;	else		pReq->DeviceAddr = 0xB0;	pReq->Addr1 = 0;	pReq->Addr2 = 0;	pReq->Addr3 = 0;	pReq->Reserved5 = 0;	/* Add a SGE to the config request.	 */	flagsLength = MPT_SGE_FLAGS_SSIMPLE_READ | 4;	mpt_add_sge((char *)&pReq->SGL, flagsLength, pCfg->physAddr);	dcprintk((MYIOC_s_INFO_FMT "Sending Toolbox request, Tool=%x\n",		ioc->name, pReq->Tool));	/* Append pCfg pointer to end of mf	 */	*((void **) (((u8 *) mf) + (ioc->req_sz - sizeof(void *)))) =  (void *) pCfg;	/* Initalize the timer	 */	init_timer(&pCfg->timer);	pCfg->timer.data = (unsigned long) ioc;	pCfg->timer.function = mpt_timer_expired;	pCfg->wait_done = 0;	/* Set the timer; ensure 10 second minimum */	if (pCfg->timeout < 10)		pCfg->timer.expires = jiffies + HZ*10;	else		pCfg->timer.expires = jiffies + HZ*pCfg->timeout;	/* Add to end of Q, set timer and then issue this command */	spin_lock_irqsave(&ioc->FreeQlock, flags);	list_add_tail(&pCfg->linkage, &ioc->configQ);	spin_unlock_irqrestore(&ioc->FreeQlock, flags);	add_timer(&pCfg->timer);	mpt_put_msg_frame(mpt_base_index, ioc, mf);	wait_event(mpt_waitq, pCfg->wait_done);	/* mf has been freed - do not access */	rc = pCfg->status;	return rc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/637fa99b86a00a0b5767a982b83a512ff48ad6d2/mptbase.c/clean/drivers/message/fusion/mptbase.c