From b5d8bd70c702d23f8ca615a6d435e4821518447d Mon Sep 17 00:00:00 2001 From: Ludwig Maier Date: Tue, 17 Sep 2013 22:04:05 +0200 Subject: [PATCH] bug fix udp --- libtrbnet/trbnet.c | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/libtrbnet/trbnet.c b/libtrbnet/trbnet.c index 1ee9628..9faad35 100644 --- a/libtrbnet/trbnet.c +++ b/libtrbnet/trbnet.c @@ -35,7 +35,7 @@ static uint32_t tmpData[TMP_DATA_SIZE]; #include #define PCIBAR 0 - + static uint32_t dataBuffer[DMA_BUFFER_NUM_PAGES * 1024]; static unsigned int dataBufferSize = 0; /* Size of dataBuffer in 32bit words */ @@ -490,22 +490,25 @@ static int sendTrbPackage(size_t size) int i; /* Adjust endianess ... */ - for (i = 1; i < size; i++) { - udpBufferS[i] = htons(udpBufferS[i]); + for (i = 0; i < size; i++) { + udpBuffer[i] = htons(udpBuffer[i]); } - + + if (trb3_udp_version == 2) { + size++; + } + while (timeoutCtr < 3) { if (trb3_udp_version == 2) { /* Add udp_command_index */ udp_command_index++; udpBufferS[0] = htons(0x0100 | udp_command_index); - size++; } if (trb_debug > 2) { fprintf(stderr, "Send UDP request attempt #%d\n", timeoutCtr); fprintf(stderr, "udp sent:\n"); for (i = 0; i < size; i++) { - fprintf(stderr, "%d 0x%04x\n", i, udpBufferS[i]); + fprintf(stderr, "%d 0x%04x\n", i, ntohs(udpBufferS[i])); } } @@ -543,24 +546,25 @@ static int sendTrbPackage_nowait(size_t size) int status; int i; + /* Adjust endianess ... */ + for (i = 0; i < size; i++) { + udpBuffer[i] = htons(udpBuffer[i]); + } + if (trb3_udp_version == 2) { /* Add udp_command_index */ udp_command_index++; - udpBufferS[0] = 0x0100 | udp_command_index; + udpBufferS[0] = htons(0x0100 | udp_command_index); size++; } - /* Adjust endianess ... */ - for (i = 0; i < size; i++) { - if (trb_debug > 2) { - if (i == 0) { - fprintf(stderr, "udp sent:\n"); - } - fprintf(stderr, "%d 0x%04x\n", i, udpBufferS[i]); - } - udpBufferS[i] = htons(udpBufferS[i]); + if (trb_debug > 2) { + fprintf(stderr, "udp sent:\n"); + for (i = 0; i < size; i++) { + fprintf(stderr, "%d 0x%04x\n", i, ntohs(udpBufferS[i])); + } } - + /* Send request */ status = sendto(trb3_sockfd, (void*)udpBufferS, @@ -3200,7 +3204,6 @@ int network_reset() if (trb_debug > 0) { fprintf(stderr, "Init_Transfer done.\n"); } - udpBuffer[0] = HEADER_HDR | 0x8030; udpBuffer[1] = sender_address; udpBuffer[2] = 0x0000; @@ -3208,7 +3211,7 @@ int network_reset() udpBuffer[4] = CMD_NETADMINISTRATION; status = sendTrbPackage_nowait(5); - + if (status < 0) { unlockPorts(0); return -1; -- 2.43.0