Tag: TCPIP
All the articles with the tag "TCPIP".
-
lwIP에서 tcp_write()가 ERR_MEM을 돌려준다: free RAM보다 snd_buf와 snd_queuelen을 먼저 보자
lwIP RAW TCP에서 tcp_write()가 간헐적으로 ERR_MEM을 반환하면 free RAM보다 TCP_SND_BUF, TCP_SND_QUEUELEN, MEMP_NUM_TCP_SEG, unsent/unacked 큐를 먼저 확인해야 한다. 작은 write 반복, ACK 지연, sent callback 없는 busy loop가 송신 큐를 막는 패턴을 정리한다.
-
lwIP에서 송신이 가끔 멈춘다: linkoutput에서 TX descriptor와 pbuf 수명을 같이 보자
lwIP 포팅에서 수신은 되는데 송신이 부하 중 멈추거나 linkoutput이 실패하면 TX descriptor 회수, pbuf chain 처리, zero-copy pbuf lifetime을 같이 봐야 한다. 복사 기반 송신과 DMA zero-copy 송신에서 ownership 기준이 어떻게 달라지는지 정리한다.
-
lwIP에서 RX pbuf를 넘긴 뒤 가끔 깨진다: tcpip_input ownership을 먼저 정리하자
lwIP 포팅에서 RX 패킷을 tcpip_input()으로 넘긴 뒤 간헐적인 payload 깨짐, double free, PBUF_POOL 고갈이 보이면 pbuf ownership 규칙을 먼저 확인해야 한다. ERR_OK와 실패 반환값, DMA 버퍼 재사용, ISR 컨텍스트, 예외 경로별 pbuf_free 기준을 정리한다.
-
-
lwIP에서 ping은 되는데 TCP나 UDP만 이상하다: checksum offload를 반만 켜면 증상이 더 헷갈린다
lwIP 포팅에서 ICMP는 되는데 TCP나 UDP만 깨지거나, 송신만 실패하고 수신은 정상처럼 보이면 checksum offload 설정 불일치를 먼저 확인해야 한다. lwIP 옵션과 MAC 드라이버가 같은 책임 분담을 보지 않으면 패킷은 나가도 상대가 조용히 버릴 수 있다.
-
lwIP에서 tcpip_thread 안에서 다시 기다리면 멈춘다: callback 안의 netconn/sockets 호출이 self-deadlock이 되는 이유
lwIP에서 tcpip_callback, netif callback, 내부 이벤트 훅 안에서 netconn 또는 sockets API를 다시 호출하면 부하가 낮을 때는 지나가도 어느 순간 전체 네트워크가 멈출 수 있다. 같은 tcpip_thread가 자기 자신에게 일을 보내고 완료를 기다리는 self-deadlock 패턴이라, 호출 컨텍스트를 분리해 두는 편이 안전하다.