/** * lbs_setup_firmware - gets the HW spec from the firmware and sets * some basic parameters * * @priv: A pointer to &struct lbs_private structure * returns: 0 or -1 */ static int lbs_setup_firmware(struct lbs_private *priv) { int ret = -1; s16 curlevel = 0, minlevel = 0, maxlevel = 0; lbs_deb_enter(LBS_DEB_FW); /* Read MAC address from firmware */ memset(priv->current_addr, 0xff, ETH_ALEN); ret = lbs_update_hw_spec(priv); if (ret) goto done; /* Read power levels if available */ ret = lbs_get_tx_power(priv, &curlevel, &minlevel, &maxlevel); if (ret == 0) { priv->txpower_cur = curlevel; priv->txpower_min = minlevel; priv->txpower_max = maxlevel; } /* Send cmd to FW to enable 11D function */ ret = lbs_set_snmp_mib(priv, SNMP_MIB_OID_11D_ENABLE, 1); lbs_set_mac_control(priv); done: lbs_deb_leave_args(LBS_DEB_FW, "ret %d", ret); return ret; }
/** * @brief This function gets the HW spec from the firmware and sets * some basic parameters. * * @param priv A pointer to struct lbs_private structure * @return 0 or -1 */ static int lbs_setup_firmware(struct lbs_private *priv) { int ret = -1; s16 curlevel = 0, minlevel = 0, maxlevel = 0; lbs_deb_enter("enter lbs_setup_firmware\n"); /* Read MAC address from firmware */ memset(priv->current_addr, 0xff, ETH_ALEN); ret = lbs_update_hw_spec(priv);//根据固件的情况更新MAC地址、区域信道等细节信息填充到priv中 if (ret) goto done; /* Read power levels if available */ ret = lbs_get_tx_power(priv, &curlevel, &minlevel, &maxlevel);//获取当前功率、最小功率和最大功率 if (ret == 0) { priv->txpower_cur = curlevel; priv->txpower_min = minlevel; priv->txpower_max = maxlevel; } lbs_set_mac_control(priv); done: lbs_deb_leave_args("leave lbs_setup_firmware(ret=%d)\n", ret); return ret; }