Commit 9f3b704d authored by Titouan Soulard's avatar Titouan Soulard

libtrx: add a frame counter

parent 65cd8079
...@@ -19,7 +19,8 @@ ...@@ -19,7 +19,8 @@
struct SDRMetadata { struct SDRMetadata {
uint8_t version; uint8_t version;
uint16_t sample_count; uint16_t sample_count;
uint8_t __unused[29]; uint32_t frame_number;
uint8_t __unused[25];
}; };
struct SDRMemoryRegion { struct SDRMemoryRegion {
...@@ -39,6 +40,7 @@ struct SDRContext { ...@@ -39,6 +40,7 @@ struct SDRContext {
struct ibv_mr *send_mrs[TRX_RDMA_MR_COUNT]; struct ibv_mr *send_mrs[TRX_RDMA_MR_COUNT];
uint64_t send_mrs_status; uint64_t send_mrs_status;
uint32_t frame_count;
int consumed_mr_id; int consumed_mr_id;
int consumed_mr_length; int consumed_mr_length;
......
...@@ -109,6 +109,8 @@ void trx_rdma_write(TRXState *s, trx_timestamp_t timestamp, const void **samples ...@@ -109,6 +109,8 @@ void trx_rdma_write(TRXState *s, trx_timestamp_t timestamp, const void **samples
// When an MR is full, send it, next iteration will find another one // When an MR is full, send it, next iteration will find another one
if(sdr_context->consumed_mr_length == TRX_RDMA_MR_SIZE) { if(sdr_context->consumed_mr_length == TRX_RDMA_MR_SIZE) {
out_data->meta.sample_count = TRX_RDMA_MR_SIZE; out_data->meta.sample_count = TRX_RDMA_MR_SIZE;
out_data->meta.frame_number = sdr_context->frame_count++;
capulet_rdma_ib_post_send(&sdr_context->ib_ctx, IBV_WR_SEND, sdr_context->send_mrs[sdr_context->consumed_mr_id], sizeof(struct SDRMemoryRegion), sdr_context->consumed_mr_id, NULL); capulet_rdma_ib_post_send(&sdr_context->ib_ctx, IBV_WR_SEND, sdr_context->send_mrs[sdr_context->consumed_mr_id], sizeof(struct SDRMemoryRegion), sdr_context->consumed_mr_id, NULL);
sdr_context->consumed_mr_id = -1; sdr_context->consumed_mr_id = -1;
} }
...@@ -220,6 +222,7 @@ int trx_driver_init(TRXState *s) { ...@@ -220,6 +222,7 @@ int trx_driver_init(TRXState *s) {
sdr_context->server_addr = trx_get_param_string(s, "server_addr"); sdr_context->server_addr = trx_get_param_string(s, "server_addr");
sdr_context->device_name = trx_get_param_string(s, "device_name"); sdr_context->device_name = trx_get_param_string(s, "device_name");
sdr_context->last_timestamp = 0; sdr_context->last_timestamp = 0;
sdr_context->frame_count = 0;
sdr_context->send_mrs_status = ((uint64_t) 1 << TRX_RDMA_MR_COUNT) - 1; sdr_context->send_mrs_status = ((uint64_t) 1 << TRX_RDMA_MR_COUNT) - 1;
sdr_context->consumed_mr_id = -1; sdr_context->consumed_mr_id = -1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment