---
title: "[W5500] 리눅스 드라이버에서 버퍼관련"
url: "https://maker.wiznet.io/forum/13209"
markdown_url: "https://maker.wiznet.io/forum/13209/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "PigToy"
created: "2019-02-18T06:41:13+09:00"
last_activity: "2019-02-18T23:44:53+09:00"
language: "ko"
views: 721
replies: 3
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# [W5500] 리눅스 드라이버에서 버퍼관련

## Question

Asked by PigToy on 2019-02-18 in Ethernet Chips.

리눅스 보드에 w5500 chip을 on board화 시켜 사용 중 입니다.
디바이스 드라이버는 리눅스 기본 드라이버를 사용 했습니다.
만약 프로그램에서 소켓 client를 4개의 서버에 따로 접속한다고 가정했을 경우,
해당 링크 코드에
<https://elixir.bootlin.com/linux/v4.20.10/source/drivers/net/ethernet/wiznet/w5100.c#L655>

w5500_memory_configure() 함수를 보면 원본은 하나만 rx, tx 16K씩 세팅하게 되어 있는데, 아래와 같이 4K씩 4개로 나눠 세팅을 하는게 맞는지 궁금합니다.
static void w5500_memory_configure(struct w5100_priv *priv)
{
int i;

```
for (i = 0; i < 4; i++) {
	w5100_write(priv, W5500_Sn_RXMEM_SIZE(i), 0x04);
	w5100_write(priv, W5500_Sn_TXMEM_SIZE(i), 0x04);
}

for (i = 4; i < 8; i++) {
	w5100_write(priv, W5500_Sn_RXMEM_SIZE(i), 0);
	w5100_write(priv, W5500_Sn_TXMEM_SIZE(i), 0);
}
```

}

## Replies

### Reply 1 by irina, 2019-02-18

안녕하세요,
제가 해당 코드를 확인해본결과

말씀하는 대로 사용하시면,
SOCKET 0~3 의 RX/TX memory size는 4K씩 설정되고,
SOCKET 4~7 의 RX/TC memory size는 0으로 할당됩니다.

감사합니다.
irina

### Reply 2 by PigToy, 2019-02-18 (in reply to reply 1)

답변 감사합니다.
한 가지만 더 질문 드리자면,
저렇게 했을 경우 SOCKET 0~3만 사용 가능하고 SOCKET 4~7은 버퍼가 없기 때문에 사용불가가 맞는지요?

### Reply 3 by irina, 2019-02-18

네 밀씀하신 부분이 맞습니다.

예를 들어 SOCKET 4~7을 TCP로 SOCKET을 OPEN 한후
TCP connection 과정에서 발생하는 packet을 보면 window size가 0으로 되어있는걸 볼수 있습니다.
이때, 데이터전송을 하게 되면, buffer가 없기때문에, W5500에서는 RST packet을 보내고 SOCKET CLOSE 가 됩니다.

감사합니다.
irina

---

Source: https://maker.wiznet.io/forum/13209
