wiphy_name(dev->wiphy), dev->wiphy->perm_addr,
               chip_name, priv->asic_rev, priv->rf->name);
  
 +#ifdef CONFIG_RTL8187_LEDS
 +      eeprom_93cx6_read(&eeprom, 0x3F, ®);
 +      reg &= 0xFF;
 +      rtl8187_leds_init(dev, reg);
 +#endif
 +
        return 0;
  
+  err_free_dmabuf:
+       kfree(priv->io_dmabuf);
   err_free_dev:
        ieee80211_free_hw(dev);
        usb_set_intfdata(intf, NULL);
 
        rtnl_lock();
        memcpy(flogi_maddr, (u8[6]) FC_FCOE_FLOGI_MAC, ETH_ALEN);
        dev_unicast_add(fc->real_dev, flogi_maddr, ETH_ALEN);
 +      if (fc->ctlr.spma)
 +              dev_unicast_add(fc->real_dev, fc->ctlr.ctl_src_addr, ETH_ALEN);
+       dev_mc_add(fc->real_dev, FIP_ALL_ENODE_MACS, ETH_ALEN, 0);
        rtnl_unlock();
  
        /*
        if (lp->emp)
                fc_exch_mgr_free(lp->emp);
  
-       /* Free the per-CPU revieve threads */
 -      /* Delete secondary MAC addresses */
 -      rtnl_lock();
 -      memcpy(flogi_maddr, (u8[6]) FC_FCOE_FLOGI_MAC, ETH_ALEN);
 -      dev_unicast_delete(fc->real_dev, flogi_maddr, ETH_ALEN);
 -      if (!is_zero_ether_addr(fc->ctlr.data_src_addr))
 -              dev_unicast_delete(fc->real_dev,
 -                                 fc->ctlr.data_src_addr, ETH_ALEN);
 -      dev_mc_delete(fc->real_dev, FIP_ALL_ENODE_MACS, ETH_ALEN, 0);
 -      rtnl_unlock();
 -
+       /* Free the per-CPU receive threads */
        fcoe_percpu_clean(lp);
  
        /* Free existing skbs */