[U-Boot] [u-boot PATCH v5 04/10] ti: common: board_detect: commodify ethaddr environment setting code
Roger Quadros
rogerq at ti.com
Wed Mar 15 15:04:40 UTC 2017
On 15/03/17 16:46, Felipe Balbi wrote:
>
> 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?
>
For incorrectly programmed boards in pre-production probably.
--
cheers,
-roger
More information about the U-Boot
mailing list