• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/dev/pms/RefTisa/sallsdk/spc/

Lines Matching refs:circularQ

208 /** \fn mpiMsgFreeGet(mpiICQueue_t *circularQ, bit16 messageSize, void** messagePtr)
210 * \param circularQ Pointer to an inbound circular queue
229 mpiICQueue_t *circularQ,
235 agsaRoot_t *agRoot=circularQ->agRoot;
240 SA_ASSERT(NULL != circularQ, "circularQ cannot be null");
242 SA_ASSERT(0 != circularQ->numElements, "The number of elements in this queue is 0");
245 if(messageSize > circularQ->elementSize)
247 SA_DBG1(("mpiMsgFreeGet: Message Size (%d) is larger than Q element size (%d)\n",messageSize,circularQ->elementSize));
252 OSSA_READ_LE_32(circularQ->agRoot, &circularQ->consumerIdx, circularQ->ciPointer, 0);
257 if (((circularQ->producerIdx + bcCount) % circularQ->numElements) == circularQ->consumerIdx)
260 smTrace(hpDBG_VERY_LOUD,"Za", (((circularQ->producerIdx & 0xFFF) << 16) | (circularQ->consumerIdx & 0xFFF) ));
263 SA_DBG1(("mpiMsgFreeGet: %d + %d == %d AGSA_RC_BUSY\n",circularQ->producerIdx,bcCount,circularQ->consumerIdx));
268 smTrace(hpDBG_VERY_LOUD,"Zb", (((circularQ->producerIdx & 0xFFF) << 16) | (circularQ->consumerIdx & 0xFFF) ));
273 offset = circularQ->producerIdx * circularQ->elementSize;
275 circularQ->producerIdx = (circularQ->producerIdx + bcCount) % circularQ->numElements;
278 msgHeader = (mpiMsgHeader_t*) (((bit8 *)(circularQ->memoryRegion.virtPtr)) + offset);
293 GLOBAL bit32 mpiMsgFreeGetOQ(mpiOCQueue_t *circularQ, bit16 messageSize, void** messagePtr)
300 SA_ASSERT(NULL != circularQ, "circularQ cannot be null");
302 SA_ASSERT(0 != circularQ->numElements, "The number of elements in this queue is 0");
305 if(messageSize > circularQ->elementSize)
312 //OSSA_READ_LE_32(circularQ->agRoot, &circularQ->consumerIdx, circularQ->ciPointer, 0);
317 if (((circularQ->producerIdx + bcCount) % circularQ->numElements) == circularQ->consumerIdx)
324 offset = circularQ->producerIdx * circularQ->elementSize;
326 circularQ->producerIdx = (circularQ->producerIdx + bcCount) % circularQ->numElements;
329 msgHeader = (mpiMsgHeader_t*) (((bit8 *)(circularQ->memoryRegion.virtPtr)) + offset);
345 /** \fn mpiMsgProduce(mpiICQueue_t *circularQ, void *messagePtr, mpiMsgCategory_t category, bit16 opCode, bit8 responseQueue)
347 * \param circularQ Pointer to an inbound queue
362 mpiICQueue_t *circularQ,
376 SA_ASSERT(NULL != circularQ, "circularQ argument cannot be null");
378 SA_ASSERT(0 != circularQ->numElements, "The number of elements in this queue"
389 if (circularQ->priority)
402 ossaCachePreFlush(circularQ->agRoot,
403 (void *)circularQ->memoryRegion.appHandle,
404 (void *)msgHeader, circularQ->elementSize * bc);
405 OSSA_WRITE_LE_32(circularQ->agRoot, msgHeader, OSSA_OFFSET_OF(mpiMsgHeader_t,
408 ossaCacheFlush(circularQ->agRoot, (void *)circularQ->memoryRegion.appHandle,
409 (void *)msgHeader, circularQ->elementSize * bc);
411 MPI_DEBUG_TRACE( circularQ->qNumber,
412 ((circularQ->producerIdx << 16 ) | circularQ->consumerIdx),
415 circularQ->elementSize);
417 ossaLogIomb(circularQ->agRoot,
418 circularQ->qNumber,
421 circularQ->elementSize);
427 mpiICQueue_t *circularQ,
437 ret = mpiMsgPrepare(circularQ, messagePtr, category, opCode, responseQueue,
442 ossaHwRegWriteExt(circularQ->agRoot,
443 circularQ->PIPCIBar,
444 circularQ->PIPCIOffset,
445 circularQ->producerIdx);
450 GLOBAL void mpiIBQMsgSend(mpiICQueue_t *circularQ)
452 ossaHwRegWriteExt(circularQ->agRoot,
453 circularQ->PIPCIBar,
454 circularQ->PIPCIOffset,
455 circularQ->producerIdx);
462 mpiICQueue_t *circularQ,
489 agsaRoot_t *agRoot=circularQ->agRoot;
499 SA_ASSERT(NULL != circularQ, "circularQ argument cannot be null");
501 SA_ASSERT(0 != circularQ->numElements, "The number of elements in this queue is 0");
514 if (circularQ->priority)
530 ossaCachePreFlush(circularQ->agRoot, (void *)circularQ->memoryRegion.appHandle, (void *)msgHeader, circularQ->elementSize * bc);
531 OSSA_WRITE_LE_32(circularQ->agRoot, msgHeader, OSSA_OFFSET_OF(mpiMsgHeader_t, Header), Header);
533 ossaCacheFlush(circularQ->agRoot, (void *)circularQ->memoryRegion.appHandle, (void *)msgHeader, circularQ->elementSize * bc);
535 MPI_DEBUG_TRACE( circularQ->qNumber,
536 ((circularQ->producerIdx << 16 ) | circularQ->consumerIdx),
539 circularQ->elementSize);
541 ossaLogIomb(circularQ->agRoot,
542 circularQ->qNumber,
545 circularQ->elementSize);
548 MPI_IBQ_IOMB_LOG(circularQ->qNumber, (void *)msgHeader, circularQ->elementSize);
552 smTrace(hpDBG_IOMB,"M1",circularQ->qNumber);
553 /* TP:M1 circularQ->qNumber */
554 for (i=0; i<((bit32)bc*(circularQ->elementSize/4)); i++)
567 if (circularQ->BunchStarts_QPending == 0)
570 circularQ->BunchStarts_QPendingTick = saRoot->timeTick;
573 circularQ->BunchStarts_QPending++;
579 SA_DBG1(("mpiMsgProduce: BunchStarts - QPending %d, Q-%d\n", circularQ->BunchStarts_QPending, circularQ->qNumber));
586 circularQ->BunchStarts_QPending = 0;
588 ossaHwRegWriteExt(circularQ->agRoot,
589 circularQ->PIPCIBar,
590 circularQ->PIPCIOffset,
591 circularQ->producerIdx);
603 mpiICQueue_t *circularQ;
608 circularQ= &saRoot->inboundQueue[inq];
612 if (circularQ->BunchStarts_QPending &&
613 ((circularQ->BunchStarts_QPending >= saRoot->BunchStarts_Threshold) ||
614 ((saRoot->timeTick - circularQ->BunchStarts_QPendingTick) >= saRoot->BunchStarts_TimeoutTicks))
617 if(circularQ->qNumber != inq)
619 SA_DBG1(("mpiMsgProduceBunch:circularQ->qNumber(%d) != inq(%d)\n",circularQ->qNumber, inq));
622 SA_DBG1(("mpiMsgProduceBunch: IQ=%d, PI=%d\n", inq, circularQ->producerIdx));
623 SA_DBG1(("mpiMsgProduceBunch: Qpending=%d, TotPending=%d\n", circularQ->BunchStarts_QPending, saRoot->BunchStarts_Pending));
625 ossaHwRegWriteExt(circularQ->agRoot,
626 circularQ->PIPCIBar,
627 circularQ->PIPCIOffset,
628 circularQ->producerIdx);
631 saRoot->BunchStarts_Pending -= circularQ->BunchStarts_QPending;
634 circularQ->BunchStarts_QPending = 0;
635 circularQ->BunchStarts_QPendingTick = saRoot->timeTick;
642 /** \fn mpiMsgConsume(mpiOCQueue_t *circularQ, void *messagePtr1,
645 * \param circularQ Pointer to a outbound queue
661 mpiOCQueue_t *circularQ,
671 SA_ASSERT(NULL != circularQ, "circularQ argument cannot be null");
676 SA_ASSERT(0 != circularQ->numElements, "The number of elements in this queue is 0");
681 if(circularQ->producerIdx != circularQ->consumerIdx)
684 msgHeader = (mpiMsgHeader_t*) ((bit8 *)(circularQ->memoryRegion.virtPtr) + circularQ->consumerIdx * circularQ->elementSize);
690 ossaCacheInvalidate(circularQ->agRoot, (void *)circularQ->memoryRegion.appHandle, (void *)msgHeader, circularQ->elementSize);
694 OSSA_READ_LE_32(circularQ->agRoot, &msgHeader_tmp, msgHeader, 0);
703 SA_DBG1(("mpiMsgConsume: CI=%d PI=%d msgHeader=%p\n", circularQ->consumerIdx, circularQ->producerIdx, (void *)msgHeader));
704 circularQ->consumerIdx = (circularQ->consumerIdx + 1) % circularQ->numElements;
706 ossaHwRegWriteExt(circularQ->agRoot,
707 circularQ->CIPCIBar,
708 circularQ->CIPCIOffset,
709 circularQ->consumerIdx);
716 SA_ASSERT(circularQ->consumerIdx <= circularQ->numElements, "Multi-buffer messages cannot wrap around");
730 ossaCacheInvalidate(circularQ->agRoot, (void *)circularQ->memoryRegion.appHandle, (void *)msgHeader, (*pBC - 1) * circularQ->elementSize);
733 SA_DBG3(("mpiMsgConsume: CI=%d PI=%d msgHeader=%p\n", circularQ->consumerIdx, circularQ->producerIdx, (void *)msgHeader));
734 MPI_OBQ_IOMB_LOG(circularQ->qNumber, (void *)msgHeader, circularQ->elementSize);
742 circularQ->consumerIdx = (circularQ->consumerIdx + ((msgHeader_tmp >> SHIFT24) & BC_MASK)) % circularQ->numElements;
747 OSSA_WRITE_LE_32(circularQ->agRoot, msgHeader, OSSA_OFFSET_OF(mpiMsgHeader_t, Header), msgHeader_tmp);
750 ossaHwRegWriteExt(circularQ->agRoot,
751 circularQ->CIPCIBar,
752 circularQ->CIPCIOffset,
753 circularQ->consumerIdx);
755 OSSA_READ_LE_32(circularQ->agRoot, &circularQ->producerIdx, circularQ->piPointer, 0);
763 agsaRoot_t *agRoot=circularQ->agRoot;
764 SA_DBG1(("mpiMsgConsume: V bit not set, PI=%d CI=%d msgHeader=%p\n", circularQ->producerIdx, circularQ->consumerIdx,(void *)msgHeader));
765 SA_DBG1(("mpiMsgConsume: V bit not set, 0x%08X Q=%d \n", msgHeader_tmp, circularQ->qNumber));
767 MPI_DEBUG_TRACE(MPI_DEBUG_TRACE_QNUM_ERROR + circularQ->qNumber,
768 ((circularQ->producerIdx << 16 ) | circularQ->consumerIdx),
771 circularQ->elementSize);
773 circularQ->consumerIdx = circularQ->consumerIdx % circularQ->numElements;
774 circularQ->consumerIdx ++;
775 OSSA_WRITE_LE_32(circularQ->agRoot, msgHeader, OSSA_OFFSET_OF(mpiMsgHeader_t, Header), msgHeader_tmp);
777 circularQ->CIPCIBar,
778 circularQ->CIPCIOffset,
779 circularQ->consumerIdx);
780 MPI_OBQ_IOMB_LOG(circularQ->qNumber, (void *)msgHeader, circularQ->elementSize);
782 SA_DBG1(("mpiMsgConsume: V bit is not set!!!!! HW CI=%d\n", ossaHwRegReadExt(circularQ->agRoot, circularQ->CIPCIBar, circularQ->CIPCIOffset) ));
790 OSSA_READ_LE_32(circularQ->agRoot, &circularQ->producerIdx, circularQ->piPointer, 0);
792 } while(circularQ->producerIdx != circularQ->consumerIdx); /* while we don't have any more not-yet-delivered message */
803 /** \fn mpiMsgFreeSet(mpiOCQueue_t *circularQ, void *messagePtr)
805 * \param circularQ Pointer to an outbound queue
818 mpiOCQueue_t *circularQ,
826 SA_ASSERT(NULL != circularQ, "circularQ argument cannot be null");
828 SA_ASSERT(0 != circularQ->numElements, "The number of elements in this queue is 0");
833 if ( ((mpiMsgHeader_t*)((bit8*)circularQ->memoryRegion.virtPtr + circularQ->consumerIdx * circularQ->elementSize)) != msgHeader)
836 SA_DBG1(("mpiMsgFreeSet: Wrong CI, Q %d ConsumeIdx = %d msgHeader 0x%08x\n",circularQ->qNumber, circularQ->consumerIdx ,msgHeader->Header));
837 SA_DBG1(("mpiMsgFreeSet: msgHeader %p != %p\n", msgHeader,((mpiMsgHeader_t*)((bit8*)circularQ->memoryRegion.virtPtr + circularQ->consumerIdx * circularQ->elementSize))));
843 OSSA_READ_LE_32(circularQ->agRoot, &circularQ->producerIdx, circularQ->piPointer, 0);
845 SA_DBG3(("mpiMsgFreeSet: ProducerIdx = %d\n", circularQ->producerIdx));
852 circularQ->consumerIdx = (circularQ->consumerIdx + bc) % circularQ->numElements;
857 SA_ASSERT(circularQ->consumerIdx <= circularQ->numElements, "Multi-buffer messages cannot wrap arround");
864 ossaHwRegWriteExt(circularQ->agRoot,
865 circularQ->CIPCIBar,
866 circularQ->CIPCIOffset,
867 circularQ->consumerIdx);
870 OSSA_READ_LE_32(circularQ->agRoot, &circularQ->producerIdx, circularQ->piPointer, 0);
873 SA_DBG5(("mpiMsgFreeSet: CI=%d PI=%d\n", circularQ->consumerIdx, circularQ->producerIdx));
910 mpiOCQueue_t *circularQ,
924 SA_ASSERT(NULL != circularQ, "circularQ argument cannot be null");
926 SA_ASSERT(0 != circularQ->numElements, "The number of elements in this queue"
939 SA_DBG4(("mpiMsgProduceOQ: msgHeader %p opcode %d pi/ci %d / %d\n", msgHeader, opCode, circularQ->producerIdx, circularQ->consumerIdx));
942 if (circularQ->priority)
954 //ossaCachePreFlush(circularQ->agRoot,
955 // (void *)circularQ->memoryRegion.appHandle,
956 // (void *)msgHeader, circularQ->elementSize * bc);
957 OSSA_WRITE_LE_32(circularQ->agRoot, msgHeader, OSSA_OFFSET_OF(mpiMsgHeader_t,
961 //ossaCacheFlush(circularQ->agRoot, (void *)circularQ->memoryRegion.appHandle,
962 // (void *)msgHeader, circularQ->elementSize * bc);
964 MPI_DEBUG_TRACE( circularQ->qNumber,
965 ((circularQ->producerIdx << 16 ) | circularQ->consumerIdx),
968 circularQ->elementSize);
970 ossaLogIomb(circularQ->agRoot,
971 circularQ->qNumber,
974 circularQ->elementSize);