Raw모드로 icmp 사용시

4개 소켓중에 하나의 포트를 RAW-ICMP 모드로 Ping-Request 용도로 사용합니다.

상대측 장치의 네트웍 상태를 확인하기위해 주기적으로 Ping 요청하는거지요.

이 기능을 구현하고 나니 W5100 자체 Ping 기능이 작동을 안하네요?

어떻게 살리죠?

W5100 자체 ping 기능은 펌웨어 구현과 전혀 상관없이 동작합니다.

IP주소와 MAC 주소를 한번 체크해보세요.

또는 핑 세팅도 확인해보세요

RAW-ICMP 모드를 해제하고 TCP모드로 바꾸면 ping 잘 됩니다.
RAW-ICMP 모드로 전환하면 안됩니다.

PC에서 Ping 하면 RAW-ICMP로 설정된 포트로 ping-request 데이터가 들어옵니다.
그래서 프로그램적으로 응답데이터를 보내서 처리하긴 했는데…

ping요청 데이터가 RAW-ICMP 포트로 들어와서 W5100 내부 Ping 처리기(?)가 핑 요청데이터를 놓치는거 아닌가? 생각해봅니다.

IP RAW모드로 소켓을 오픈한 건가요??
그렇다면 ping request는 모두 소프트웨어로 올라오게 됩니다.
그러므로 직접 처리해 줘야 합니다.

MR Register의 상위4번째 비트인 Ping Block Bit가 '1’로 설정되어 있으면
W5100의 내부 Ping reply로직이 Disable되어 Ping Request에 대한 Reply를 하지 않을 수 있습니다 .

이 로직은 MACRAW 사용유무에 상관없이 동작합니다.
감사합니다.