Files
wenquan1 5b52ab13c8 net/arp: support queue iob when arp_out failed
arp_out will replace the dev->d_iob to arp request if the iob destination
address is not exist in arp table, this mechanism cause this iob lost
result in first received ping no response or first synack retransmit.
to fix this bug, we queue the iob if arp_out failed, allocate a new
iob to send arp request, after the arp request completed, then we retry
send the queue iob packet.

Signed-off-by: wenquan1 <wenquan1@xiaomi.com>
2026-01-01 17:03:29 +08:00

113 lines
3.1 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
menu "ARP Configuration"
config NET_ARP
bool "Address Resolution Protocol"
default y
select MM_IOB
depends on NET_ETHERNET && NET_IPv4
---help---
This setting is currently overridden by logic in include/nuttx/net
if NET_ARP
config NET_ARPTAB_SIZE
int "ARP table size"
default 16
---help---
The size of the ARP table (in entries).
config NET_ARP_MAXAGE
int "Max ARP entry age"
default 120
---help---
The maximum age of ARP table entries measured in deciseconds. The
default value of 120 corresponds to 20 minutes (BSD default).
config NET_ARP_MAXAGE_UNREACHABLE
int "Max unreachable ARP entry age"
default 1
---help---
The maximum age of unreachable ARP table entries measured in
deciseconds. During unreachable period not send a retry ARP
request for the same destination.
config NET_ARP_IPIN
bool "ARP address harvesting"
default n
---help---
Harvest IP/MAC address mappings from the ARP table from incoming
IP packets. If this option is selected, CONFIG_NET_ARTAB_SIZE
should be large enough to hold the hosts on the network.
This option is NOT recommended on busy networks with many remote
hosts. On such networks the ARP table will be full most of the
time and the MAC addresses that you want will get flushed from
the table often.
config NET_ARP_GRATUITOUS
bool "Gratuitous ARP address accept"
default n
---help---
Accept IP/MAC address mappings from the ARP table from incoming
Gratuitous ARP packets. If this option is selected,
CONFIG_NET_ARTAB_SIZE should be large enough to hold the hosts
on the network.
config NET_ARP_SEND
bool "ARP send"
default !NET_ARP_SEND_QUEUE
---help---
Enable logic to send ARP requests if the target IP address mapping
does not appear in the ARP table.
config NET_ARP_SEND_QUEUE
bool "Iob queue in arp entry support"
default n
depends on IOB_NCHAINS > 0
---help---
Enable queue iob to arp entry when arp_out failed to wait for arp
finished, then resend queue iobs.
if NET_ARP_SEND || NET_ARP_SEND_QUEUE
config ARP_SEND_MAXTRIES
int "ARP send retries"
default 5
---help---
Send the ARP request this number of times before giving up and
deciding that the target IP address is non reachable.
config ARP_SEND_DELAYMSEC
int "ARP re-send delay"
default 20
---help---
Wait this number of milliseconds after sending the ARP request
before checking if the IP address mapping is present in the ARP
table. This time should be related to the maximum round trip time
on the network since it is basically the time from when an ARP
request is sent until the response is received.
endif # NET_ARP_SEND
config NET_ARP_DUMP
bool "Dump ARP packet header"
default n
depends on DEBUG_NET_INFO
---help---
Dump ARP packets to the SYSLOG device.
config NET_ARP_ACD
bool "Support of ARP address Address Conflict Detection"
default n
depends on NET_ARP_SEND
---help---
Enable Support of ARP address Address Conflict Detection
endif # NET_ARP
endmenu # ARP Configuration