void CreateIOSQ::Init(const SharedIOSQPtr iosq) { // Setup the PRP buffer based upon contig or non-contig memory int prpField = MASK_PRP1_PAGE; if (iosq->GetIsContig() == false) prpField |= MASK_PRP1_LIST; SetPrpBuffer((send_64b_bitmask)prpField, iosq->GetQBuffer(), iosq->GetQSize()); { // Handle DWORD 10 uint32_t dword10 = GetDword(10); // Handle q size dword10 &= ~0xffff0000; dword10 |= (((uint32_t)iosq->GetNumEntries()) << 16); // Handle Q ID dword10 &= ~0x0000ffff; dword10 |= (uint32_t)iosq->GetQId(); SetDword(dword10, 10); } // Handle DWORD 10 { // Handle DWORD 11 uint32_t dword11 = GetDword(11); // Handle the PC bit if (iosq->GetIsContig()) dword11 |= 0x00000001; else dword11 &= ~0x00000001; // Handle Q priority dword11 &= ~0x00000006; dword11 |= (((uint32_t)iosq->GetPriority()) << 1); // Handle CQ ID dword11 &= ~0xffff0000; dword11 |= (((uint32_t)iosq->GetCqId()) << 16); SetDword(dword11, 11); } // Handle DWORD 11 }