shill: wimax: Obtain MAC address after WiMax device DBus object appears.

BUG=chrome-os-partner:10674
TEST=Tested with corresponding changes in wimax-manager and verified
that shill obtains the correct MAC address of the WiMAX device the
system resumes from suspend.

Change-Id: I762681f0cbcf77685e4bcd9c55fe0ef0d5fc3ab6
Reviewed-on: https://gerrit.chromium.org/gerrit/35254
Commit-Ready: Ben Chan <benchan@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
diff --git a/device_info.cc b/device_info.cc
index 482349f..975d44d 100644
--- a/device_info.cc
+++ b/device_info.cc
@@ -376,8 +376,8 @@
                       << " -- notifying ModemInfo.";
 
       // The MAC address provided by RTNL is not reliable for Gobi 2K modems.
-      // Clear it here, and it will be fetched from the kernel is
-      // GetMacAddress().
+      // Clear it here, and it will be fetched from the kernel in
+      // GetMACAddress().
       infos_[interface_index].mac_address.Clear();
       manager_->modem_info()->OnDeviceInfoAvailable(link_name);
       break;
@@ -402,6 +402,12 @@
       SLOG(Device, 2) << "WiMax link " << link_name
                       << " at index " << interface_index
                       << " -- notifying WiMaxProvider.";
+      // The MAC address provided by RTNL may not be the final value as the
+      // WiMAX device may change the address after initialization. Clear it
+      // here, and it will be fetched from the kernel when
+      // WiMaxProvider::CreateDevice() is called after the WiMAX device DBus
+      // object is created by the WiMAX manager daemon.
+      infos_[interface_index].mac_address.Clear();
       manager_->wimax_provider()->OnDeviceInfoAvailable(link_name);
       break;
     case Technology::kPPP: