aboutsummaryrefslogtreecommitdiffstats
path: root/host/usrp_e_utils/usrp-e-loopback.c
diff options
context:
space:
mode:
Diffstat (limited to 'host/usrp_e_utils/usrp-e-loopback.c')
-rw-r--r--host/usrp_e_utils/usrp-e-loopback.c19
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);