@@ -66,13 +66,13 @@ void UioMemSgdma::print_desc(const S2mmDesc& desc) const {
6666 BLI << " sof = " << std::dec << desc.control.rxsof;
6767 BLI << " eof = " << std::dec << desc.control.rxeof;
6868 BLI << " status" ;
69- BLI << " buffer_len = " << std::dec << desc.status.buffer_len ;
69+ BLI << " buffer_len = " << std::dec << desc.status.num_stored_bytes ;
7070 BLI << " sof = " << std::dec << desc.status.rxsof;
7171 BLI << " eof = " << std::dec << desc.status.rxeof;
7272 BLI << " dmainterr = " << std::dec << desc.status.dmainterr;
7373 BLI << " dmaslverr = " << std::dec << desc.status.dmaslverr;
7474 BLI << " dmadecerr = " << std::dec << desc.status.dmadecerr;
75- BLI << " cmpit = " << std::dec << desc.status.cmpit ;
75+ BLI << " cmplt = " << std::dec << desc.status.cmplt ;
7676 BLI << " }" << std::dec;
7777}
7878
@@ -98,26 +98,29 @@ std::vector<UioRegion> UioMemSgdma::get_full_buffers() {
9898
9999 for (size_t i = 0; i < _nr_cyc_desc; i++) {
100100 S2mmDesc desc = descriptors[_next_readable_buf].rd();
101- if (!desc.status.cmpit ) {
101+ if (!desc.status.cmplt ) {
102102 break;
103103 }
104- desc.status.cmpit = 0;
105- descriptors[_next_readable_buf].wr(desc);
106104
107- if (desc.status.buffer_len != desc.control.buffer_len || desc.status.buffer_len == 0) {
105+ if ((!desc.status.rxeof && (desc.status.num_stored_bytes != desc.control.buffer_len)) ||
106+ desc.status.num_stored_bytes == 0) {
108107 BOOST_LOG_SEV(_lg, bls::error)
109108 << " Descriptor #" << i << " size mismatch (expected " << desc.control.buffer_len
110- << " , received " << desc.status.buffer_len << " ), skipping";
109+ << " , received " << desc.status.num_stored_bytes << " ), skipping";
111110
112111 print_desc (desc);
113112 continue ;
114113 }
115114
115+ desc.status.cmplt = 0 ;
116+ descriptors[_next_readable_buf].wr(desc);
117+
116118 bufs.emplace_back(
117- UioRegion{static_cast <uintptr_t >(desc.buffer_addr ), desc.status .buffer_len });
119+ UioRegion{static_cast <uintptr_t >(desc.buffer_addr ), desc.status .num_stored_bytes });
118120
119121 BOOST_LOG_SEV (_lg, bls::trace)
120- << " save buf #" << _next_readable_buf << " @ 0x" << std::hex << desc.buffer_addr;
122+ << " save buf #" << _next_readable_buf << " (" << desc.status.num_stored_bytes
123+ << " bytes) @ 0x" << std::hex << desc.buffer_addr;
121124
122125 _next_readable_buf++;
123126 _next_readable_buf %= _nr_cyc_desc;
0 commit comments