diff options
Diffstat (limited to 'host/lib')
| -rw-r--r-- | host/lib/transport/super_recv_packet_handler.hpp | 17 | 
1 files changed, 14 insertions, 3 deletions
| diff --git a/host/lib/transport/super_recv_packet_handler.hpp b/host/lib/transport/super_recv_packet_handler.hpp index 5ca18d4a0..b65d7c7aa 100644 --- a/host/lib/transport/super_recv_packet_handler.hpp +++ b/host/lib/transport/super_recv_packet_handler.hpp @@ -231,7 +231,7 @@ public:              buffs, nsamps_per_buff, metadata, timeout          ); -        if (one_packet){ +        if (one_packet or metadata.end_of_burst){  #ifdef UHD_TXRX_DEBUG_PRINTS              dbg_gather_data(nsamps_per_buff, accum_num_samps, metadata, timeout, one_packet);  #endif @@ -239,7 +239,9 @@ public:          }          //first recv had an error code set, return immediately -        if (metadata.error_code != rx_metadata_t::ERROR_CODE_NONE) return accum_num_samps; +        if (metadata.error_code != rx_metadata_t::ERROR_CODE_NONE) { +            return accum_num_samps; +        }          //loop until buffer is filled or error code          while(accum_num_samps < nsamps_per_buff){ @@ -253,10 +255,16 @@ public:                  _queue_error_for_next_call = true;                  break;              } +              accum_num_samps += num_samps; + +            //return immediately if end of burst +            if (_queue_metadata.end_of_burst) { +                break; +            }          }  #ifdef UHD_TXRX_DEBUG_PRINTS -		dbg_gather_data(nsamps_per_buff, accum_num_samps, metadata, timeout, one_packet); +        dbg_gather_data(nsamps_per_buff, accum_num_samps, metadata, timeout, one_packet);  #endif          return accum_num_samps;      } @@ -573,6 +581,9 @@ private:              case PACKET_TIMEOUT_ERROR:                  std::swap(curr_info, next_info); //save progress from curr -> next +                if(_props[index].handle_flowctrl) { +                    _props[index].handle_flowctrl(next_info[index].ifpi.packet_count); +                }                  curr_info.metadata.error_code = rx_metadata_t::ERROR_CODE_TIMEOUT;                  return; | 
