diff options
Diffstat (limited to 'host/usrp_e_utils/usrp-e-loopback.c')
-rw-r--r-- | host/usrp_e_utils/usrp-e-loopback.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/host/usrp_e_utils/usrp-e-loopback.c b/host/usrp_e_utils/usrp-e-loopback.c index a63882475..0bd3d3100 100644 --- a/host/usrp_e_utils/usrp-e-loopback.c +++ b/host/usrp_e_utils/usrp-e-loopback.c @@ -38,11 +38,15 @@ static int calc_checksum(struct pkt *p) i = 0; sum = 0; - for (i=0; i < p->len; i++) - sum += p->data[i]; - - sum += p->seq_num; - sum += p->len; + if (p->len < 1016) { + for (i=0; i < p->len; i++) + sum += p->data[i]; + + sum += p->seq_num; + sum += p->len; + } else { + printf("Bad packet length = %d received.\n", p->len); + } return sum; } @@ -212,6 +216,11 @@ int main(int argc, char *argv[]) packet_data_length = atoi(argv[1]); + if (packet_data_length > 1016) { + packet_data_length = 1016; + printf("Max data length = 1016, clamping.\n"); + } + fp = open("/dev/usrp_e0", O_RDWR); printf("fp = %d\n", fp); |