[U-Boot] [PATCH 00/11] Improve env var handling for net stack

Joe Hershberger
2015-04-27T18:20:35Z

Hi Simon,

On Thu, Apr 23, 2015 at 11:32 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi Joe,
>
> On 21 April 2015 at 16:02, Joe Hershberger <joe.hershberger@ni.com> wrote:
>> This includes moving CONFIG_REGEX to Kconfig and adding support for
>> regex to the env_attr lists (when CONFIG_REGEX is enabled).
>>
>> This allows ethaddrs to all be checked for access and format by default.
>> Also use callbacks to keep network stack variables up to date instead of
>> polling them on each call to net_loop.
>>
>> This is a step in the right direction to refactoring the network stack
>> to be similar to that of barebox.
>>
>>
>> Joe Hershberger (11):
>> sandbox: Enable some ENV commands
>> kconfig: Move REGEX to Kconfig
>> sandbox: Enable regex support
>> env: Fix return values in env_attr_lookup()
>> env: Simplify the reverse_strstr() interface
>> env: Allow env_attr_walk to pass a priv * to callback
>> env: Add regex support to env_attrs
>> env: Distinguish finer between source of env change
>> net: Apply default format rules to all ethaddr
>> net: Use env callbacks for net variables
>> net: Add default flags for common net env vars
>>
>> common/cmd_nvedit.c | 36 +++++---
>> common/env_attr.c | 179 ++++++++++++++++++++++++++++---------
>> common/env_callback.c | 6 +-
>> common/env_flags.c | 6 +-
>> configs/acadia_defconfig | 1 +
>> configs/bamboo_defconfig | 1 +
>> configs/bubinga_defconfig | 1 +
>> configs/canyonlands_defconfig | 1 +
>> configs/dlvision-10g_defconfig | 1 +
>> configs/dlvision_defconfig | 1 +
>> configs/ebony_defconfig | 1 +
>> configs/gdppc440etx_defconfig | 1 +
>> configs/icon_defconfig | 1 +
>> configs/intip_defconfig | 1 +
>> configs/io64_defconfig | 1 +
>> configs/io_defconfig | 1 +
>> configs/iocon_defconfig | 1 +
>> configs/katmai_defconfig | 1 +
>> configs/kilauea_defconfig | 1 +
>> configs/luan_defconfig | 1 +
>> configs/m28evk_defconfig | 1 +
>> configs/m53evk_defconfig | 1 +
>> configs/makalu_defconfig | 1 +
>> configs/neo_defconfig | 1 +
>> configs/novena_defconfig | 1 +
>> configs/ocotea_defconfig | 1 +
>> configs/redwood_defconfig | 1 +
>> configs/sandbox_defconfig | 1 +
>> configs/sequoia_defconfig | 1 +
>> configs/socfpga_arria5_defconfig | 1 +
>> configs/socfpga_cyclone5_defconfig | 1 +
>> configs/t3corp_defconfig | 1 +
>> configs/taihu_defconfig | 1 +
>> configs/taishan_defconfig | 1 +
>> configs/walnut_defconfig | 1 +
>> configs/yosemite_defconfig | 1 +
>> configs/yucca_defconfig | 1 +
>> include/configs/amcc-common.h | 1 -
>> include/configs/m28evk.h | 1 -
>> include/configs/m53evk.h | 1 -
>> include/configs/novena.h | 1 -
>> include/configs/sandbox.h | 5 ++
>> include/configs/socfpga_arria5.h | 1 -
>> include/configs/socfpga_cyclone5.h | 1 -
>> include/env_attr.h | 10 +--
>> include/env_callback.h | 32 ++++++-
>> include/env_flags.h | 23 ++++-
>> include/search.h | 2 +
>> lib/Kconfig | 8 ++
>> net/net.c | 105 ++++++++++++++++++----
>> test/dm/eth.c | 1 +
>> 51 files changed, 358 insertions(+), 94 deletions(-)
>
> Looks good! I wonder if you could update a README somewhere to explain
> how it works?

I'll update README to describe it.

> If I understand correctly, you need to enable CONFIG_REGEX for the
> eth1addr variable to work (for example). Is that right? If so, what is
> the code size impact?

That's sort-of correct. Before the regex, only the "ethaddr" was
checked for format, though the eth1addr, etc. all "worked", just were
unverified.

I did some build tests...

Without CONFIG_REGEX, the total size grew by 295 bytes (due to the
other global changes).
With CONFIG_REGEX enabled, the total size grew by 378 bytes.
Enabling CONFIG_REGEX now adds 3633 bytes total.

This test was on BB Black (ARM).

Raw data:

text data bss dec hex filename
W/ patch W/O regex
394014 13324 305876 713214 ae1fe /tmp/u-boot-build/arm/u-boot
W/ patch W/ regex
397651 13324 305872 716847 af02f /tmp/u-boot-build/arm/u-boot
W/O patch W/O regex
393811 13276 305832 712919 ae0d7 /tmp/u-boot-build/arm/u-boot
W/O patch W/ regex
397333 13276 305860 716469 aeeb5 /tmp/u-boot-build/arm/u-boot

Cheers,
-Joe