From 61ac77affe18287df63697d208ed84f9a151284a Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 19 Sep 2024 08:08:21 +0200 Subject: [PATCH] Modem: Increase buffer sizes to 256k and make sure to never transfer more packets than there are available FIFO slots, and removed excess logging, fixes #4793. --- src/network/net_modem.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/network/net_modem.c b/src/network/net_modem.c index e48467a86..6addec352 100644 --- a/src/network/net_modem.c +++ b/src/network/net_modem.c @@ -264,7 +264,7 @@ modem_read_phonebook_file(modem_t *modem, const char *path) if (strspn(entry.phone, "01234567890*=,;#+>") != strlen(entry.phone)) { /* Invalid characters. */ - pclog("Modem: Invalid character in phone number %s\n", entry.phone); + modem_log("Modem: Invalid character in phone number %s\n", entry.phone); continue; } @@ -617,7 +617,7 @@ modem_enter_idle_state(modem_t *modem) if (modem->listen_port) { modem->serversocket = plat_netsocket_create_server(NET_SOCKET_TCP, modem->listen_port); if (modem->serversocket == (SOCKET) -1) { - pclog("Failed to set up server on port %d\n", modem->listen_port); + modem_log("Failed to set up server on port %d\n", modem->listen_port); } } @@ -703,14 +703,14 @@ modem_dial(modem_t *modem, const char *str) modem->numberinprogress[0] = 0; modem->clientsocket = plat_netsocket_create(NET_SOCKET_TCP); if (modem->clientsocket == -1) { - pclog("Failed to create client socket\n"); + modem_log("Failed to create client socket\n"); modem_send_res(modem, ResNOCARRIER); modem_enter_idle_state(modem); return; } if (-1 == plat_netsocket_connect(modem->clientsocket, buf, port)) { - pclog("Failed to connect to %s\n", buf); + modem_log("Failed to connect to %s\n", buf); modem_send_res(modem, ResNOCARRIER); modem_enter_idle_state(modem); return; @@ -1147,7 +1147,7 @@ fifo8_resize_2x(Fifo8 *fifo) if (!used) return; - uint8_t *temp_buf = calloc(fifo->capacity * 2, 1); + uint8_t *temp_buf = calloc(size, 1); if (!temp_buf) { fatal("net_modem: Out Of Memory!\n"); } @@ -1440,7 +1440,8 @@ modem_cmdpause_timer_callback(void *priv) if (modem->connected) { uint8_t buffer[16]; int wouldblock = 0; - int res = plat_netsocket_receive(modem->clientsocket, buffer, sizeof(buffer), &wouldblock); + int recv = MIN(modem->rx_data.capacity - modem->rx_data.num, sizeof(buffer)); + int res = plat_netsocket_receive(modem->clientsocket, buffer, recv, &wouldblock); if (res > 0) { if (modem->telnet_mode) @@ -1488,8 +1489,8 @@ modem_init(const device_t *info) modem->clientsocket = modem->serversocket = modem->waitingclientsocket = -1; - fifo8_create(&modem->data_pending, 0x20000); - fifo8_create(&modem->rx_data, 0x20000); + fifo8_create(&modem->data_pending, 0x40000); + fifo8_create(&modem->rx_data, 0x40000); timer_add(&modem->dtr_timer, modem_dtr_callback_timer, modem, 0); timer_add(&modem->host_to_serial_timer, host_to_modem_cb, modem, 0);