if (priv->psstate != PS_STATE_FULL_POWER)
return -1;
- if (priv->mesh_dev && !priv->mesh_autostart_enabled) {
- /* Mesh autostart must be activated while sleeping
- * On resume it will go back to the current state
- */
- struct cmd_ds_mesh_access mesh_access;
- memset(&mesh_access, 0, sizeof(mesh_access));
-
- mesh_access.data[0] = cpu_to_le32(1);
- lbs_mesh_access(priv, CMD_ACT_MESH_SET_AUTOSTART_ENABLED, &mesh_access);
- }
-
netif_device_detach(cardp->eth_dev);
netif_device_detach(priv->mesh_dev);
netif_device_attach(cardp->eth_dev);
netif_device_attach(priv->mesh_dev);
- if (priv->mesh_dev && !priv->mesh_autostart_enabled) {
- /* Mesh autostart was activated while sleeping
- * Disable it if appropriate
- */
- struct cmd_ds_mesh_access mesh_access;
- memset(&mesh_access, 0, sizeof(mesh_access));
- mesh_access.data[0] = cpu_to_le32(0);
- lbs_mesh_access(priv, CMD_ACT_MESH_SET_AUTOSTART_ENABLED, &mesh_access);
- }
-
lbs_deb_leave(LBS_DEB_USB);
return 0;
}
*/
static DEVICE_ATTR(anycast_mask, 0644, lbs_anycast_get, lbs_anycast_set);
-static ssize_t lbs_autostart_enabled_get(struct device *dev,
- struct device_attribute *attr, char * buf)
-{
- struct lbs_private *priv = to_net_dev(dev)->priv;
- struct cmd_ds_mesh_access mesh_access;
- int ret;
-
- memset(&mesh_access, 0, sizeof(mesh_access));
-
- ret = lbs_mesh_access(priv, CMD_ACT_MESH_GET_AUTOSTART_ENABLED, &mesh_access);
- if (ret)
- return ret;
- return sprintf(buf, "%d\n", le32_to_cpu(mesh_access.data[0]));
-}
-
-static ssize_t lbs_autostart_enabled_set(struct device *dev,
- struct device_attribute *attr, const char * buf, size_t count)
-{
- struct cmd_ds_mesh_access mesh_access;
- uint32_t datum;
- struct lbs_private *priv = (to_net_dev(dev))->priv;
- int ret;
-
- memset(&mesh_access, 0, sizeof(mesh_access));
- sscanf(buf, "%d", &datum);
- mesh_access.data[0] = cpu_to_le32(datum);
-
- ret = lbs_mesh_access(priv, CMD_ACT_MESH_SET_AUTOSTART_ENABLED, &mesh_access);
- if (ret == 0)
- priv->mesh_autostart_enabled = datum ? 1 : 0;
-
- return strlen(buf);
-}
-
-static DEVICE_ATTR(autostart_enabled, 0644,
- lbs_autostart_enabled_get, lbs_autostart_enabled_set);
-
static struct attribute *lbs_mesh_sysfs_entries[] = {
&dev_attr_anycast_mask.attr,
- &dev_attr_autostart_enabled.attr,
NULL,
};
static int lbs_setup_firmware(struct lbs_private *priv)
{
int ret = -1;
- struct cmd_ds_mesh_access mesh_access;
lbs_deb_enter(LBS_DEB_FW);
goto done;
}
- /* Disable mesh autostart */
- if (priv->mesh_dev) {
- memset(&mesh_access, 0, sizeof(mesh_access));
- mesh_access.data[0] = cpu_to_le32(0);
- ret = lbs_mesh_access(priv, CMD_ACT_MESH_SET_AUTOSTART_ENABLED,
- &mesh_access);
- if (ret) {
- printk("Mesh autostart set failed\n");
- ret = 0;
- //ret = -1;
- goto done;
- }
- priv->mesh_autostart_enabled = 0;
- }
-
ret = 0;
done:
lbs_deb_leave_args(LBS_DEB_FW, "ret %d", ret);