diff --git a/src/netif/ppp/ppp.c b/src/netif/ppp/ppp.c index 594d18c..52ece9c 100644 --- a/src/netif/ppp/ppp.c +++ b/src/netif/ppp/ppp.c @@ -1716,7 +1716,8 @@ pppos_input(ppp_pcb *pcb, u_char *s, int l) break; } if (pcrx->in_head == NULL) { - u8_t *payload = next_pbuf->payload; + u8_t *payload = next_pbuf->payload + PBUF_LINK_HLEN; + next_pbuf->len += PBUF_LINK_HLEN; #if PPP_INPROC_MULTITHREADED *((ppp_pcb**)payload) = pcb; payload += sizeof(ppp_pcb*); @@ -1749,6 +1750,7 @@ static void pppos_input_callback(void *arg) { struct pbuf *pb = (struct pbuf*)arg; ppp_pcb *pcb; + pbuf_header(pb, -PBUF_LINK_HLEN); pcb = *((ppp_pcb**)pb->payload); if(pbuf_header(pb, -(s16_t)sizeof(ppp_pcb*))) { LWIP_ASSERT("pbuf_header failed\n", 0);