static int if_usb_reset_device(wlan_private *priv) { int ret; lbs_deb_enter(LBS_DEB_USB); ret = libertas_prepare_and_send_command(priv, cmd_802_11_reset, cmd_act_halt, 0, 0, NULL); msleep_interruptible(10); lbs_deb_leave_args(LBS_DEB_USB, "ret %d", ret); return ret; }
int libertas_set_mac_packet_filter(wlan_private * priv) { int ret = 0; lbs_deb_enter(LBS_DEB_CMD); /* Send MAC control command to station */ ret = libertas_prepare_and_send_command(priv, CMD_MAC_CONTROL, 0, 0, 0, NULL); lbs_deb_leave_args(LBS_DEB_CMD, "ret %d", ret); return ret; }
/** * @brief This function sends Exit_PS command to firmware. * * @param priv A pointer to wlan_private structure * @param wait_option wait response or not * @return n/a */ void libertas_ps_wakeup(wlan_private * priv, int wait_option) { __le32 Localpsmode; lbs_deb_enter(LBS_DEB_HOST); Localpsmode = cpu_to_le32(WLAN802_11POWERMODECAM); libertas_prepare_and_send_command(priv, CMD_802_11_PS_MODE, CMD_SUBCMD_EXIT_PS, wait_option, 0, &Localpsmode); lbs_deb_leave(LBS_DEB_HOST); }
void libertas_ps_sleep(wlan_private * priv, int wait_option) { lbs_deb_enter(LBS_DEB_HOST); /* * PS is currently supported only in Infrastructure mode * Remove this check if it is to be supported in IBSS mode also */ libertas_prepare_and_send_command(priv, CMD_802_11_PS_MODE, CMD_SUBCMD_ENTER_PS, wait_option, 0, NULL); lbs_deb_leave(LBS_DEB_HOST); }
/** * @brief This function sets DOMAIN INFO to FW * @param priv pointer to wlan_private * @return 0; -1 */ static int set_domain_info_11d(wlan_private * priv) { int ret; if (!priv->adapter->enable11d) { lbs_deb_11d("dnld domain Info with 11d disabled\n"); return 0; } ret = libertas_prepare_and_send_command(priv, CMD_802_11D_DOMAIN_INFO, CMD_ACT_SET, CMD_OPTION_WAITFORRSP, 0, NULL); if (ret) lbs_deb_11d("fail to dnld domain info\n"); return ret; }
int libertas_set_radio_control(wlan_private * priv) { int ret = 0; lbs_deb_enter(LBS_DEB_CMD); ret = libertas_prepare_and_send_command(priv, CMD_802_11_RADIO_CONTROL, CMD_ACT_SET, CMD_OPTION_WAITFORRSP, 0, NULL); lbs_deb_cmd("RADIO_SET: radio %d, preamble %d\n", priv->adapter->radioon, priv->adapter->preamble); lbs_deb_leave_args(LBS_DEB_CMD, "ret %d", ret); return ret; }
static void libertas_ethtool_get_stats(struct net_device * dev, struct ethtool_stats * stats, u64 * data) { wlan_private *priv = dev->priv; struct cmd_ds_mesh_access mesh_access; int ret; lbs_deb_enter(LBS_DEB_ETHTOOL); /* Get Mesh Statistics */ ret = libertas_prepare_and_send_command(priv, CMD_MESH_ACCESS, CMD_ACT_MESH_GET_STATS, CMD_OPTION_WAITFORRSP, 0, &mesh_access); if (ret) return; priv->mstats.fwd_drop_rbt = le32_to_cpu(mesh_access.data[0]); priv->mstats.fwd_drop_ttl = le32_to_cpu(mesh_access.data[1]); priv->mstats.fwd_drop_noroute = le32_to_cpu(mesh_access.data[2]); priv->mstats.fwd_drop_nobuf = le32_to_cpu(mesh_access.data[3]); priv->mstats.fwd_unicast_cnt = le32_to_cpu(mesh_access.data[4]); priv->mstats.fwd_bcast_cnt = le32_to_cpu(mesh_access.data[5]); priv->mstats.drop_blind = le32_to_cpu(mesh_access.data[6]); priv->mstats.tx_failed_cnt = le32_to_cpu(mesh_access.data[7]); data[0] = priv->mstats.fwd_drop_rbt; data[1] = priv->mstats.fwd_drop_ttl; data[2] = priv->mstats.fwd_drop_noroute; data[3] = priv->mstats.fwd_drop_nobuf; data[4] = priv->mstats.fwd_unicast_cnt; data[5] = priv->mstats.fwd_bcast_cnt; data[6] = priv->mstats.drop_blind; data[7] = priv->mstats.tx_failed_cnt; lbs_deb_enter(LBS_DEB_ETHTOOL); }
static int libertas_ethtool_get_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom, u8 * bytes) { wlan_private *priv = (wlan_private *) dev->priv; wlan_adapter *adapter = priv->adapter; struct wlan_ioctl_regrdwr regctrl; char *ptr; int ret; regctrl.action = 0; regctrl.offset = eeprom->offset; regctrl.NOB = eeprom->len; if (eeprom->offset + eeprom->len > LIBERTAS_EEPROM_LEN) return -EINVAL; // mutex_lock(&priv->mutex); adapter->prdeeprom = kmalloc(eeprom->len+sizeof(regctrl), GFP_KERNEL); if (!adapter->prdeeprom) return -ENOMEM; memcpy(adapter->prdeeprom, ®ctrl, sizeof(regctrl)); /* +14 is for action, offset, and NOB in * response */ lbs_deb_ethtool("action:%d offset: %x NOB: %02x\n", regctrl.action, regctrl.offset, regctrl.NOB); ret = libertas_prepare_and_send_command(priv, CMD_802_11_EEPROM_ACCESS, regctrl.action, CMD_OPTION_WAITFORRSP, 0, ®ctrl); if (ret) { if (adapter->prdeeprom) kfree(adapter->prdeeprom); goto done; } mdelay(10); ptr = (char *)adapter->prdeeprom; /* skip the command header, but include the "value" u32 variable */ ptr = ptr + sizeof(struct wlan_ioctl_regrdwr) - 4; /* * Return the result back to the user */ memcpy(bytes, ptr, eeprom->len); if (adapter->prdeeprom) kfree(adapter->prdeeprom); // mutex_unlock(&priv->mutex); ret = 0; done: lbs_deb_enter_args(LBS_DEB_ETHTOOL, "ret %d", ret); return ret; }