mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/iperf_udp_tx_issue' into 'release/v4.4'
iperf: added sequential numberring of Tx'ed datagrams See merge request espressif/esp-idf!26085
This commit is contained in:
commit
67a0939231
@ -42,10 +42,11 @@ extern "C" {
|
||||
#define IPERF_REPORT_TASK_PRIORITY 6
|
||||
#define IPERF_REPORT_TASK_STACK 4096
|
||||
|
||||
#define IPERF_UDP_TX_LEN (1472)
|
||||
#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
|
||||
|
||||
|
@ -152,6 +152,8 @@ static void socket_recv(int recv_socket, struct sockaddr_storage listen_addr, ui
|
||||
static void socket_send(int send_socket, struct sockaddr_storage dest_addr, uint8_t type, int bw_lim)
|
||||
{
|
||||
uint8_t *buffer;
|
||||
uint32_t *pkt_id_p;
|
||||
uint32_t pkt_cnt = 0;
|
||||
int actual_send = 0;
|
||||
int want_send = 0;
|
||||
int period_us = -1;
|
||||
@ -161,6 +163,7 @@ static void socket_send(int send_socket, struct sockaddr_storage dest_addr, uint
|
||||
int err = 0;
|
||||
|
||||
buffer = s_iperf_ctrl.buffer;
|
||||
pkt_id_p = (uint32_t *)s_iperf_ctrl.buffer;
|
||||
want_send = s_iperf_ctrl.buffer_len;
|
||||
iperf_start_report();
|
||||
|
||||
@ -184,6 +187,7 @@ static void socket_send(int send_socket, struct sockaddr_storage dest_addr, uint
|
||||
}
|
||||
prev_time = send_time;
|
||||
}
|
||||
*pkt_id_p = htonl(pkt_cnt++); // datagrams need to be sequentially numbered
|
||||
if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6) {
|
||||
actual_send = sendto(send_socket, buffer, want_send, 0, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr_in6));
|
||||
} else if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4) {
|
||||
@ -471,13 +475,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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user