133 #if defined(WIN32) || defined(WIN64) 134 #define snprintf(dst, ...) _snprintf_s((dst), _countof(dst), __VA_ARGS__) 138 #define PACKETS 2500000 139 #define PACKET_SIZE 1024 // Packet size to transmit (incl crc.) 140 #define SEGMENT_SIZE (1024 * 1024) 147 #define MIN_PADDING_SIZE_WITH_DESCR (64 + NT_DESCR_NT_LENGTH) 148 #define PADDING_THRESHOLD (PACKET_SIZE + NT_DESCR_NT_LENGTH + MIN_PADDING_SIZE_WITH_DESCR) 155 usleep((
unsigned)ms * 1000u);
164 fprintf(stderr,
"%s: %s\n", prefix, errorBuffer);
176 if ((status =
NT_Init(NTAPI_VERSION)) != NT_SUCCESS) {
190 "transmit_segment_example_info")) != NT_SUCCESS) {
197 if ((status =
NT_InfoRead(hInfo, &info)) != NT_SUCCESS) {
209 if ((status =
NT_InfoRead(hInfo, &info)) != NT_SUCCESS) {
225 maxTxSizeWithDescr += NT_DESCR_NT_LENGTH;
232 status =
NT_NetTxOpen(&hNetTx,
"transmit_segment_example_txstream",
234 if (status != NT_SUCCESS) {
243 printf(
"Commencing transmission\n");
264 if (spaceLeftInSegment == 0)
268 NT_NET_SET_PKT_CLEAR_DESCR_NT(&pktNetBuf);
269 NT_NET_SET_PKT_DESCR_TYPE_NT(&pktNetBuf);
271 NT_NET_SET_PKT_TXPORT(&pktNetBuf,
PORT);
283 uint64_t paddingWithDescr;
284 if (spaceLeftInSegment <= maxTxSizeWithDescr) {
287 paddingWithDescr = spaceLeftInSegment;
289 maxTxSizeWithDescr) {
292 paddingWithDescr = maxTxSizeWithDescr;
300 uint64_t paddingNoDescr = paddingWithDescr - NT_DESCR_NT_LENGTH;
304 NT_NET_SET_PKT_CAP_LENGTH(&pktNetBuf, (uint16_t)paddingNoDescr);
305 NT_NET_SET_PKT_WIRE_LENGTH(&pktNetBuf, (uint16_t)paddingNoDescr);
308 NT_NET_SET_PKT_TXIGNORE(&pktNetBuf, 1);
313 NT_NET_SET_PKT_CAP_LENGTH(&pktNetBuf, (uint16_t)
PACKET_SIZE);
314 NT_NET_SET_PKT_WIRE_LENGTH(&pktNetBuf, (uint16_t)PACKET_SIZE);
319 for (uint32_t i = 0; i < PACKET_SIZE/4; i++) {
327 NT_NET_SET_PKT_RECALC_L2_CRC(&pktNetBuf, 1);
340 printError(
"NT_NetTxRelease() failed", status);
350 if (timeOut >= 1000) {
351 printError(
"Timeout waiting for data to be sent", NT_ERROR_OPERATION_TIMEOUT);
361 if (status != NT_SUCCESS) {
371 if ((nHbSizeAvail == nHbSizeTotal) && (nHbSizeRel == 0) && (nHbSizeDeq == 0))
379 printf(
"Done: %d packets sent\n", numPackets);