int lbs_start_iface(struct lbs_private *priv) { struct cmd_ds_802_11_mac_address cmd; int ret; if (priv->power_restore) { ret = priv->power_restore(priv); if (ret) return ret; } cmd.hdr.size = cpu_to_le16(sizeof(cmd)); cmd.action = cpu_to_le16(CMD_ACT_SET); memcpy(cmd.macadd, priv->current_addr, ETH_ALEN); ret = lbs_cmd_with_response(priv, CMD_802_11_MAC_ADDRESS, &cmd); if (ret) { lbs_deb_net("set MAC address failed\n"); goto err; } lbs_update_channel(priv); priv->iface_running = true; return 0; err: if (priv->power_save) priv->power_save(priv); 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; }