diff --git a/examples/common_components/iperf/include/iperf.h b/examples/common_components/iperf/include/iperf.h index e856eefdedc..9ac7627d3a0 100644 --- a/examples/common_components/iperf/include/iperf.h +++ b/examples/common_components/iperf/include/iperf.h @@ -42,10 +42,11 @@ extern "C" { #define IPERF_REPORT_TASK_PRIORITY CONFIG_IPERF_REPORT_TASK_PRIORITY #define IPERF_REPORT_TASK_STACK 4096 -#define IPERF_UDP_TX_LEN (1470) -#define IPERF_UDP_RX_LEN (16 << 10) -#define IPERF_TCP_TX_LEN (16 << 10) -#define IPERF_TCP_RX_LEN (16 << 10) +#define IPERF_DEFAULT_IPV4_UDP_TX_LEN (1470) +#define IPERF_DEFAULT_IPV6_UDP_TX_LEN (1450) +#define IPERF_DEFAULT_UDP_RX_LEN (16 << 10) +#define IPERF_DEFAULT_TCP_TX_LEN (16 << 10) +#define IPERF_DEFAULT_TCP_RX_LEN (16 << 10) #define IPERF_MAX_DELAY 64 diff --git a/examples/common_components/iperf/iperf.c b/examples/common_components/iperf/iperf.c index d7e032042c7..42756d637b3 100644 --- a/examples/common_components/iperf/iperf.c +++ b/examples/common_components/iperf/iperf.c @@ -152,8 +152,8 @@ static void IRAM_ATTR socket_recv(int recv_socket, struct sockaddr_storage liste static void IRAM_ATTR socket_send(int send_socket, struct sockaddr_storage dest_addr, uint8_t type, int bw_lim) { uint8_t *buffer; - int32_t *pkt_id_p; - int32_t pkt_cnt = 0; + uint32_t *pkt_id_p; + uint32_t pkt_cnt = 0; int actual_send = 0; int want_send = 0; int period_us = -1; @@ -169,7 +169,7 @@ static void IRAM_ATTR socket_send(int send_socket, struct sockaddr_storage dest_ const char *error_log = (type == IPERF_TRANS_TYPE_TCP) ? "tcp client send" : "udp client send"; buffer = s_iperf_ctrl.buffer; - pkt_id_p = (int32_t *)s_iperf_ctrl.buffer; + pkt_id_p = (uint32_t *)s_iperf_ctrl.buffer; want_send = s_iperf_ctrl.buffer_len; iperf_start_report(); @@ -193,13 +193,7 @@ static void IRAM_ATTR socket_send(int send_socket, struct sockaddr_storage dest_ } prev_time = send_time; } - *pkt_id_p = htonl(pkt_cnt); // datagrams need to be sequentially numbered - if (pkt_cnt >= INT32_MAX) { - pkt_cnt = 0; - } - else { - pkt_cnt++; - } + *pkt_id_p = htonl(pkt_cnt++); // datagrams need to be sequentially numbered actual_send = sendto(send_socket, buffer, want_send, 0, (struct sockaddr *)&dest_addr, socklen); if (actual_send != want_send) { if (type == IPERF_TRANS_TYPE_UDP) { @@ -545,13 +539,23 @@ static void iperf_task_traffic(void *arg) static uint32_t iperf_get_buffer_len(void) { if (iperf_is_udp_client()) { - return (s_iperf_ctrl.cfg.len_send_buf == 0 ? IPERF_UDP_TX_LEN : s_iperf_ctrl.cfg.len_send_buf); +#ifdef CONFIG_LWIP_IPV6 + if (s_iperf_ctrl.cfg.len_send_buf) { + return s_iperf_ctrl.cfg.len_send_buf; + } else if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6) { + return IPERF_DEFAULT_IPV6_UDP_TX_LEN; + } else { + return IPERF_DEFAULT_IPV4_UDP_TX_LEN; + } +#else + return (s_iperf_ctrl.cfg.len_send_buf == 0 ? IPERF_DEFAULT_IPV4_UDP_TX_LEN : s_iperf_ctrl.cfg.len_send_buf); +#endif } else if (iperf_is_udp_server()) { - return IPERF_UDP_RX_LEN; + return IPERF_DEFAULT_UDP_RX_LEN; } else if (iperf_is_tcp_client()) { - return (s_iperf_ctrl.cfg.len_send_buf == 0 ? IPERF_TCP_TX_LEN : s_iperf_ctrl.cfg.len_send_buf); + return (s_iperf_ctrl.cfg.len_send_buf == 0 ? IPERF_DEFAULT_TCP_TX_LEN : s_iperf_ctrl.cfg.len_send_buf); } else { - return IPERF_TCP_RX_LEN; + return IPERF_DEFAULT_TCP_RX_LEN; } return 0; }