# # For a description of the syntax of this configuration file, # see the file kconfig-language.txt in the NuttX tools repository. # menu "Common I/O Buffer Support" config MM_IOB bool "Enable generic I/O buffer support" default n ---help--- This setting will build the common I/O buffer (IOB) support library. if MM_IOB config IOB_NBUFFERS int "Number of pre-allocated I/O buffers" default 36 if NET_WRITE_BUFFERS default 24 if !NET_WRITE_BUFFERS && NET_READAHEAD default 8 if !NET_WRITE_BUFFERS && !NET_READAHEAD ---help--- Each packet is represented by a series of small I/O buffers in a chain. This setting determines the number of preallocated I/O buffers available for packet data. config IOB_BUFSIZE int "Payload size of one I/O buffer" default 196 ---help--- Each packet is represented by a series of small I/O buffers in a chain. This setting determines the data payload each preallocated I/O buffer. config IOB_HEADSIZE int "Head size of each I/O buffer" default 0 ---help--- This setting determines the reserved size in front of the payload buffer in each I/O buffer. config IOB_ALIGNMENT int "Alignment size of each I/O buffer" default 1 ---help--- The member io_head of all I/O buffers is aligned to the value specified by this configuration. config IOB_SECTION string "The section where iob buffer is located" ---help--- The section where iob buffer is located. The section must be zero-initialized on system boot. config IOB_NCHAINS int "Number of pre-allocated I/O buffer chain heads" default 0 if !NET_READAHEAD default IOB_NBUFFERS if NET_READAHEAD ---help--- These tiny nodes are used as "containers" to support queueing of I/O buffer chains. This will limit the number of I/O transactions that can be "in-flight" at any give time. The default value of zero disables this features. These generic I/O buffer chain containers are not currently used by any logic in NuttX. That is because their other specialized I/O buffer chain containers that also carry a payload of usage specific information. Note: TCP doesn't use this. Note: UDP and CAN use this. config IOB_THROTTLE int "I/O buffer throttle value" default 0 if !NET_WRITE_BUFFERS || !NET_READAHEAD default 8 if NET_WRITE_BUFFERS && NET_READAHEAD ---help--- TCP write buffering and read-ahead buffer use the same pool of free I/O buffers. In order to prevent uncontrolled incoming TCP packets from hogging all of the available, pre-allocated I/O buffers, a throttling value is required. This throttle value assures that I/O buffers will be denied to the read-ahead logic before TCP writes are halted. config IOB_NOTIFIER bool "Support IOB notifications" default n depends on SCHED_WORKQUEUE select WQUEUE_NOTIFIER ---help--- Enable building of IOB notifier logic that will execute a worker function on the high priority work queue when an IOB is available. This is is a general purpose notifier, but was developed specifically to support poll() logic where the poll must wait for an IOB to become available. config IOB_NOTIFIER_DIV int "Notification divider" default 4 range 1 64 depends on IOB_NOTIFIER ---help--- IOBs may become available at very high rates and the resulting notification processing can be substantial even if there is nothing waiting for a free IOB. This divider will reduce that rate of notification. This must be an even power of two. Supported values include: 1, 2, 4, 8, 16, 32, 64. The default value of 4 means that a notification will be sent only when there are a multiple of 4 IOBs available. config IOB_DEBUG bool "Force I/O buffer debug" default n depends on DEBUG_FEATURES && !SYSLOG_BUFFER ---help--- This option will force debug output from I/O buffer logic. This is not normally something that would want to do but is convenient if you are debugging the I/O buffer logic and do not want to get overloaded with other un-related debug output. NOTE that this selection is not available if IOBs are being used to syslog buffering logic (CONFIG_SYSLOG_BUFFER=y)! endif # MM_IOB endmenu # Common I/O buffer support