mirror of
https://github.com/apache/nuttx.git
synced 2026-05-12 01:42:49 +08:00
5b52ab13c8
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>
113 lines
3.1 KiB
Plaintext
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
|