int lbs_start_card(struct lbs_private *priv) { struct net_device *dev = priv->dev; int ret = -1; lbs_deb_enter(LBS_DEB_MAIN); /* poke the firmware */ ret = lbs_setup_firmware(priv); if (ret) goto done; if (!lbs_disablemesh) lbs_init_mesh(priv); else pr_info("%s: mesh disabled\n", dev->name); if (lbs_cfg_register(priv)) { pr_err("cannot register device\n"); goto done; } if (lbs_mesh_activated(priv)) lbs_start_mesh(priv); lbs_debugfs_init_one(priv, dev); netdev_info(dev, "Marvell WLAN 802.11 adapter\n"); ret = 0; done: lbs_deb_leave_args(LBS_DEB_MAIN, "ret %d", ret); return ret; }
int lbs_resume(struct lbs_private *priv) { int ret; lbs_deb_enter(LBS_DEB_FW); ret = lbs_set_host_sleep(priv, 0); netif_device_attach(priv->dev); if (priv->mesh_dev) netif_device_attach(priv->mesh_dev); if (priv->deep_sleep_required) { priv->deep_sleep_required = 0; ret = lbs_set_deep_sleep(priv, 1); if (ret) netdev_err(priv->dev, "deep sleep activation failed: %d\n", ret); } if (priv->setup_fw_on_resume) ret = lbs_setup_firmware(priv); lbs_deb_leave_args(LBS_DEB_FW, "ret %d", ret); return ret; }
int lbs_start_card(struct lbs_private *priv) { int ret = -1; lbs_deb_enter("enter lbs_start_card\n"); ret = lbs_setup_firmware(priv);//读取和设置相关的固件参数 if (ret) goto done; lbs_init_11d(priv);//不是能802.11d lbs_update_channel(priv);//获取当前信道编号记录在priv->curbssparams.channel中 done: lbs_pr_info("Marvell WLAN 802.11 adapter\n"); lbs_deb_leave_args("leave lbs_start_card(ret=%d)\n", ret); return ret; }