Kconfig 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #
  2. # For a description of the syntax of this configuration file,
  3. # see the file kconfig-language.txt in the NuttX tools repository.
  4. #
  5. menu "Common I/O Buffer Support"
  6. config MM_IOB
  7. bool "Enable generic I/O buffer support"
  8. default n
  9. ---help---
  10. This setting will build the common I/O buffer (IOB) support
  11. library.
  12. if MM_IOB
  13. config IOB_NBUFFERS
  14. int "Number of pre-allocated I/O buffers"
  15. default 24 if (NET_WRITE_BUFFERS && !NET_READAHEAD) || (!NET_WRITE_BUFFERS && NET_READAHEAD)
  16. default 36 if NET_WRITE_BUFFERS && NET_READAHEAD
  17. default 8 if !NET_WRITE_BUFFERS && !NET_READAHEAD
  18. ---help---
  19. Each packet is represented by a series of small I/O buffers in a
  20. chain. This setting determines the number of preallocated I/O
  21. buffers available for packet data.
  22. config IOB_BUFSIZE
  23. int "Payload size of one I/O buffer"
  24. default 196
  25. ---help---
  26. Each packet is represented by a series of small I/O buffers in a
  27. chain. This setting determines the data payload each preallocated
  28. I/O buffer.
  29. config IOB_NCHAINS
  30. int "Number of pre-allocated I/O buffer chain heads"
  31. default 0 if !NET_READAHEAD && !NET_UDP_READAHEAD
  32. default 8 if NET_READAHEAD || NET_UDP_READAHEAD
  33. ---help---
  34. These tiny nodes are used as "containers" to support queueing of
  35. I/O buffer chains. This will limit the number of I/O transactions
  36. that can be "in-flight" at any give time. The default value of
  37. zero disables this features.
  38. These generic I/O buffer chain containers are not currently used
  39. by any logic in NuttX. That is because their other other specialized
  40. I/O buffer chain containers that also carry a payload of usage
  41. specific information.
  42. config IOB_THROTTLE
  43. int "I/O buffer throttle value"
  44. default 0 if !NET_WRITE_BUFFERS || !NET_READAHEAD
  45. default 8 if NET_WRITE_BUFFERS && NET_READAHEAD
  46. ---help---
  47. TCP write buffering and read-ahead buffer use the same pool of free
  48. I/O buffers. In order to prevent uncontrolled incoming TCP packets
  49. from hogging all of the available, pre-allocated I/O buffers, a
  50. throttling value is required. This throttle value assures that
  51. I/O buffers will be denied to the read-ahead logic before TCP writes
  52. are halted.
  53. config IOB_NOTIFIER
  54. bool "Support IOB notifications"
  55. default n
  56. depends on SCHED_WORKQUEUE
  57. select WQUEUE_NOTIFIER
  58. ---help---
  59. Enable building of IOB notifier logic that will execute a worker
  60. function on the high priority work queue when an IOB is available.
  61. This is is a general purpose notifier, but was developed specifically to
  62. support poll() logic where the poll must wait for an IOB to become
  63. available.
  64. config IOB_NOTIFIER_DIV
  65. int "Notification divider"
  66. default 4
  67. range 1 64
  68. depends on IOB_NOTIFIER
  69. ---help---
  70. IOBs may become available at very high rates and the resulting
  71. notification processing can be substantial even if there is nothing
  72. waiting for a free IOB. This divider will reduce that rate of
  73. notification. This must be an even power of two. Supported values
  74. include: 1, 2, 4, 8, 16, 32, 64. The default value of 4 means that
  75. a notification will be sent only when there are a multiple of 4 IOBs
  76. available.
  77. config IOB_DEBUG
  78. bool "Force I/O buffer debug"
  79. default n
  80. depends on DEBUG_FEATURES && !SYSLOG_BUFFER
  81. ---help---
  82. This option will force debug output from I/O buffer logic. This
  83. is not normally something that would want to do but is convenient
  84. if you are debugging the I/O buffer logic and do not want to get
  85. overloaded with other un-related debug output.
  86. NOTE that this selection is not available if IOBs are being used
  87. to syslog buffering logic (CONFIG_SYSLOG_BUFFER=y)!
  88. endif # MM_IOB
  89. endmenu # Common I/O buffer support