UDP 송신 최대 속도

안녕하세요.
W6100_EVB 를 이용하여 UDP 통신 속도를 테스트 중입니다.

기본 SPI 통신을 사용하고 아래와 같이 코딩을 하였습니다


r = socket(sn, Sn_MR_UDP, destport, SF_UNI_BLOCK|SOCK_IO_NONBLOCK);
if (r != sn)
{
	printf("%d socket open fail [%d] \n\r", sn, r);
}

while(1)
{
	if (idx == '9') idx = '0';
	else idx++;

	data_buf[0] = idx;
    ret = sendto(sn, data_buf, size, destip, destport, 4);
}

780 단위로 데이터가 잘 전송됩니다.
문제는 제가 생각했던것보다 속도가 안나온다는 겁니다.

어느부분에서 시간이 많이 걸리는지 확인해 보기 위하여 sendto() 함수 안에 GPIO 토글 코드를 삽입하여 측정해 보았습니다.

sendto()함수의 A 구간은 SPI를 통하여 전송하는 구간으로 7.3ms 정도 소요됩니다.
이부분은 SPI 설정 속도가 있으므로 어떨수 없이 들어가는 속도인건 알겠습니다.
추후에 DMA를 쓰고 SPI속도를 80MHz 까지 올리면 충분히 줄일 수 있을 것으로 생각됩니다.

문제는 B구간입니다.
이 부분은 SPI로 데이터를 전송 후 W6100 내부에서 실제로 전송하고 완료를 체크하는 구간인 것 같은데
대략 63ms 가 걸립니다.

이 부분은 제가 수정할 수 없는 부분이므로 W6100이 실제로 처리하는 최대 성능인건가요?

저희가 필요한 속도가 UDP 송신으로 15Mbps가 안정적으로 나와야 합니다.

W5500 성능 향상을 위한 두번째 시도 – The Journal of javakys

위 글을 보면 W5500이긴 하지만 UDP 송신을 12Mbps가 나왔다고 하는데…

어떻게 코딩을 해야 위와 같이 나올 수있나요?
위 테스트에서 쓰인 코드를 볼 수 있을까요?

빠른 답변 부탁드립니다.
수고하세요.