134 #if defined(WIN32) || defined(WIN64) 135 #define snprintf(dst, ...) _snprintf_s((dst), _countof(dst), __VA_ARGS__) 139 #define PACKETS 2500000 140 #define PACKET_SIZE 1024 // Packet size to transmit (incl crc.) 141 #define SEGMENT_SIZE (1024 * 1024) 148 #define MIN_PADDING_SIZE_WITH_DESCR (64 + NT_DESCR_NT_LENGTH) 149 #define PADDING_THRESHOLD (PACKET_SIZE + NT_DESCR_NT_LENGTH + MIN_PADDING_SIZE_WITH_DESCR) 165 fprintf(stderr,
"%s: %s\n", prefix, errorBuffer);
191 "transmit_segment_example_info")) != NT_SUCCESS) {
198 if ((status =
NT_InfoRead(hInfo, &info)) != NT_SUCCESS) {
210 if ((status =
NT_InfoRead(hInfo, &info)) != NT_SUCCESS) {
226 maxTxSizeWithDescr += NT_DESCR_NT_LENGTH;
233 status =
NT_NetTxOpen(&hNetTx,
"transmit_segment_example_txstream",
235 if (status != NT_SUCCESS) {
244 printf(
"Commencing transmission\n");
265 if (spaceLeftInSegment == 0)
269 NT_NET_SET_PKT_CLEAR_DESCR_NT(&pktNetBuf);
270 NT_NET_SET_PKT_DESCR_TYPE_NT(&pktNetBuf);
272 NT_NET_SET_PKT_TXPORT(&pktNetBuf,
PORT);
284 uint64_t paddingWithDescr;
285 if (spaceLeftInSegment <= maxTxSizeWithDescr) {
288 paddingWithDescr = spaceLeftInSegment;
290 maxTxSizeWithDescr) {
293 paddingWithDescr = maxTxSizeWithDescr;
301 uint64_t paddingNoDescr = paddingWithDescr - NT_DESCR_NT_LENGTH;
305 NT_NET_SET_PKT_CAP_LENGTH(&pktNetBuf, (uint16_t)paddingNoDescr);
306 NT_NET_SET_PKT_WIRE_LENGTH(&pktNetBuf, (uint16_t)paddingNoDescr);
309 NT_NET_SET_PKT_TXIGNORE(&pktNetBuf, 1);
314 NT_NET_SET_PKT_CAP_LENGTH(&pktNetBuf, (uint16_t)
PACKET_SIZE);
315 NT_NET_SET_PKT_WIRE_LENGTH(&pktNetBuf, (uint16_t)PACKET_SIZE);
320 for (uint32_t
i = 0;
i < PACKET_SIZE/4;
i++) {
328 NT_NET_SET_PKT_RECALC_L2_CRC(&pktNetBuf, 1);
341 printError(
"NT_NetTxRelease() failed", status);
351 if (timeOut >= 1000) {
352 printError(
"Timeout waiting for data to be sent", NT_ERROR_OPERATION_TIMEOUT);
362 if (status != NT_SUCCESS) {
372 if ((nHbSizeAvail == nHbSizeTotal) && (nHbSizeRel == 0) && (nHbSizeDeq == 0))
380 printf(
"Done: %d packets sent\n", numPackets);