@@ -141,6 +141,9 @@ class ProgramDmaBench : public Program
141141 SuffixOption<size_t >::make (&mBufferSize )->default_value (" 1Gi" ),
142142 " Buffer size in bytes. Rounded down to 2 MiB multiple. Minimum of 2 MiB. Use 2 MiB hugepage by default; |"
143143 " if buffer size is a multiple of 1 GiB, will try to use GiB hugepages" );
144+ options.add_options ()(" data-source" ,
145+ po::value<std::string>(&mOptions .dataSourceString )->default_value (" INTERNAL" ),
146+ " Data source [FEE, INTERNAL, DIU, SIU, DDG]" );
144147 options.add_options ()(" dma-channel" ,
145148 po::value<int >(&mOptions .dmaChannel )->default_value (0 ),
146149 " DMA channel selection (note: C-RORC has channels 0 to 5, CRU only 0)" );
@@ -154,9 +157,6 @@ class ProgramDmaBench : public Program
154157 options.add_options ()(" links" ,
155158 po::value<std::string>(&mOptions .links )->default_value (" 0" ),
156159 " Links to open. A comma separated list of integers or ranges, e.g. '0,2,5-10'" );
157- options.add_options ()(" loopback" ,
158- po::value<std::string>(&mOptions .loopbackModeString )->default_value (" INTERNAL" ),
159- " Generator loopback mode [NONE, INTERNAL, DIU, SIU, DDG]" );
160160 options.add_options ()(" max-rdh-packetcount" ,
161161 po::value<size_t >(&mOptions .maxRdhPacketCounter )->default_value (255 ),
162162 " Maximum packet counter expected in the RDH" );
@@ -224,9 +224,9 @@ class ProgramDmaBench : public Program
224224 auto cardId = Options::getOptionCardId (map);
225225 auto params = Parameters::makeParameters (cardId, mOptions .dmaChannel );
226226 params.setDmaPageSize (mOptions .dmaPageSize );
227- params.setGeneratorLoopback ( LoopbackMode ::fromString (mOptions .loopbackModeString ));
227+ params.setDataSource ( DataSource ::fromString (mOptions .dataSourceString ));
228228
229- mLoopback = params.getGeneratorLoopbackRequired ();
229+ mDataSource = params.getDataSourceRequired ();
230230
231231 params.setStbrdEnabled (mOptions .stbrd ); // Set STBRD for the CRORC
232232
@@ -516,7 +516,7 @@ class ProgramDmaBench : public Program
516516 auto readoutCount = fetchAddDmaPagesReadOut ();
517517 size_t pageSize = readoutPage (pageAddress, readoutCount);
518518
519- if (mOptions .byteCountEnabled && !(mOptions .loopbackModeString == " INTERNAL" )) {
519+ if (mOptions .byteCountEnabled && !(mOptions .dataSourceString == " INTERNAL" )) {
520520 mByteCount .fetch_add (pageSize, std::memory_order_relaxed);
521521 }
522522 readoutBytes += pageSize;
@@ -557,7 +557,7 @@ class ProgramDmaBench : public Program
557557 for (int i = 0 ; i < size; ++i) {
558558 auto superpage = mChannel ->popSuperpage ();
559559 fetchAddSuperpagesReadOut ();
560- if ((mLoopback == LoopbackMode::None ) || (mLoopback == LoopbackMode ::Ddg)) {
560+ if ((mDataSource == DataSource::Fee ) || (mDataSource == DataSource ::Ddg)) {
561561 auto superpageAddress = mBufferBaseAddress + superpage.getOffset ();
562562 size_t readoutBytes = 0 ;
563563 while ((readoutBytes < superpage.getReceived ()) && !isSigInt ()) { // At least one more dma page fits in the superpage
@@ -586,7 +586,7 @@ class ProgramDmaBench : public Program
586586
587587 size_t readoutPage (uintptr_t pageAddress, int64_t readoutCount)
588588 {
589- size_t pageSize = (mLoopback == LoopbackMode ::Internal) ? mPageSize : DataFormat::getOffset (reinterpret_cast <const char *>(pageAddress));
589+ size_t pageSize = (mDataSource == DataSource ::Internal) ? mPageSize : DataFormat::getOffset (reinterpret_cast <const char *>(pageAddress));
590590
591591 // Read out to file
592592 printToFile (pageAddress, pageSize, readoutCount);
@@ -596,7 +596,7 @@ class ProgramDmaBench : public Program
596596
597597 // Get link ID if needed
598598 uint32_t linkId = 0 ; // Use 0 for non-CRU cards
599- if (mCardType == CardType::Cru && mLoopback != LoopbackMode ::Internal) {
599+ if (mCardType == CardType::Cru && mDataSource != DataSource ::Internal) {
600600 linkId = DataFormat::getLinkId (reinterpret_cast <const char *>(pageAddress));
601601 if (linkId >= mDataGeneratorCounters .size ()) {
602602 BOOST_THROW_EXCEPTION (Exception ()
@@ -635,12 +635,12 @@ class ProgramDmaBench : public Program
635635
636636 bool checkErrorsCru (uintptr_t pageAddress, size_t pageSize, int64_t eventNumber, int linkId)
637637 {
638- if (mLoopback == LoopbackMode ::Ddg) {
638+ if (mDataSource == DataSource ::Ddg) {
639639 return checkErrorsCruDdg (pageAddress, pageSize, eventNumber, linkId);
640- } else if (mLoopback == LoopbackMode ::Internal) {
640+ } else if (mDataSource == DataSource ::Internal) {
641641 return checkErrorsCruInternal (pageAddress, pageSize, eventNumber, linkId);
642642 } else {
643- BOOST_THROW_EXCEPTION (Exception () << ErrorInfo::Message (" CRU error check: Loopback Mode " + LoopbackMode ::toString (mLoopback ) + " not supported" ));
643+ BOOST_THROW_EXCEPTION (Exception () << ErrorInfo::Message (" CRU error check: Data Source " + DataSource ::toString (mDataSource ) + " not supported" ));
644644 }
645645 }
646646
@@ -1078,7 +1078,7 @@ class ProgramDmaBench : public Program
10781078 std::string links;
10791079 bool bufferFullCheck = false ;
10801080 size_t dmaPageSize;
1081- std::string loopbackModeString ;
1081+ std::string dataSourceString ;
10821082 std::string timeLimitString;
10831083 uint64_t pausePush;
10841084 uint64_t pauseRead;
@@ -1187,8 +1187,8 @@ class ProgramDmaBench : public Program
11871187 // / Flag to test how quickly the readout buffer gets full in case of error
11881188 bool mBufferFullCheck ;
11891189
1190- // / Loopback mode
1191- LoopbackMode ::type mLoopback ;
1190+ // / Data Source
1191+ DataSource ::type mDataSource ;
11921192};
11931193
11941194int main (int argc, char ** argv)
0 commit comments