[U-Boot] [u-boot PATCH v5 04/10] ti: common: board_detect: commodify ethaddr environment setting code
Felipe Balbi
balbi at kernel.org
Tue Mar 14 15:54:23 UTC 2017
Hi,
On Tue, Mar 14, 2017 at 3:05 PM Roger Quadros <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
--
balbi
More information about the U-Boot
mailing list