[U-Boot] [u-boot PATCH v5 04/10] ti: common: board_detect: commodify ethaddr environment setting code

Felipe Balbi balbi at kernel.org
Wed Mar 15 14:46:36 UTC 2017


Hi,

Roger Quadros <rogerq at ti.com> writes:
>> On Tue, Mar 14, 2017 at 3:05 PM Roger Quadros <rogerq at ti.com <mailto:rogerq at ti.com>> wrote:
>> 
>>     +void board_ti_set_ethaddr(int index)
>>     +{
>>     +       uint8_t mac_addr[6];
>>     +       int i;
>>     +       u64 mac1, mac2;
>>     +       u8 mac_addr1[6], mac_addr2[6];
>>     +       int num_macs;
>>     +       /*
>>     +        * Export any Ethernet MAC addresses from EEPROM.
>>     +        * The 2 MAC addresses in EEPROM define the address range.
>>     +        */
>>     +       board_ti_get_eth_mac_addr(0, mac_addr1);
>>     +       board_ti_get_eth_mac_addr(1, mac_addr2);
>>     +
>>     +       if (is_valid_ethaddr(mac_addr1) && is_valid_ethaddr(mac_addr2)) {
>>     +               mac1 = mac_to_u64(mac_addr1);
>>     +               mac2 = mac_to_u64(mac_addr2);
>>     +
>>     +               /* must contain an address range */
>>     +               num_macs = mac2 - mac1 + 1;
>>     +               if (num_macs <= 0)
>>     +                       return;
>> 
>> 
>> seems like there's still one minor improvement here:
>> 
>> If num_macs < 0, then it could be that mac1 and mac2 are swapped.
>> 
>> Perhaps test for that ?
>> 
>> if (num_macs == 0)
>>      bail();
>> 
>> if (num_macs < 0) {
>>         if ((mac1 - mac2 + 1) < 50) {
>>                 num_macs = mac1 - mac2 + 1;
>>                 mac1 ^= mac2;
>>                 mac2 ^= mac1;
>>                 mac1 ^= mac2;
>> [...]
>> 
>> don't know how much this may help, it's a judgment call, I suppose
>
> We don't have any boards with swapped mac1 and mac2. We'd like to

in that case, why would (mac2-mac1+1) ever be < 0?

-- 
balbi


More information about the U-Boot mailing list