Move the test up in the function to not hang on systems without ethernet.
Signed-off-by: Steve Sakoman <sakoman@gmail.com>
Acked-by: Ben Warren <biggerbadderben@gmail.com>
 
        dev->iobase = base_addr;
 
+       /* Try to detect chip. Will fail if not present. */
+       if (smc911x_detect_chip(dev)) {
+               free(dev);
+               return 0;
+       }
+
        addrh = smc911x_get_mac_csr(dev, ADDRH);
        addrl = smc911x_get_mac_csr(dev, ADDRL);
        dev->enetaddr[0] = addrl;
        dev->recv = smc911x_rx;
        sprintf(dev->name, "%s-%hu", DRIVERNAME, dev_num);
 
-       /* Try to detect chip. Will fail if not present. */
-       if (smc911x_detect_chip(dev)) {
-               free(dev);
-               return 0;
-       }
-
        eth_register(dev);
        return 0;
 }