feat(esp_netif): PPP: Use RAM allocated pbufs instead of POOL (fixed size)

PPP netif: Used allocated packet buffers of exact size
for input to TCP/IP stack to consume less memory in download mode
(compared to the previously used fixed sized packet buffers)
This commit is contained in:
David Cermak
2023-09-19 16:01:49 +02:00
parent 966b8620c2
commit 10a5fcf99e
4 changed files with 53 additions and 2 deletions

View File

@@ -0,0 +1,28 @@
/*
* SPDX-FileCopyrightText: 2001-2004 Swedish Institute of Computer Science
*
* SPDX-License-Identifier: BSD-3-Clause
*
* SPDX-FileContributor: 2023 Espressif Systems (Shanghai) CO LTD
*/
#include "pppif.h"
#include "lwip/tcpip.h"
/*
* Similar to pppos_input_tcpip() from lwip's ppp netif, but instead
* of PBUF_POOL, we use PBUF_RAM type of the pbuf we pass to the stack
*/
err_t pppos_input_tcpip_as_ram_pbuf(ppp_pcb *ppp, u8_t *s, int l)
{
struct pbuf *p = pbuf_alloc(PBUF_RAW, l, PBUF_RAM);
if (!p) {
return ERR_MEM;
}
pbuf_take(p, s, l);
err_t err = tcpip_inpkt(p, ppp_netif(ppp), pppos_input_sys);
if (err != ERR_OK) {
pbuf_free(p);
}
return err;
}