libertas: only enable rtap with mesh firmware
Since only mesh-enabled firmware has the CMD_802_11_MONITOR_MODE on which the rtap functionality depends, only expose the rtap functionality when mesh is also available. Signed-off-by: Dan Williams <dcbw@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
d4764b29b6
commit
3b72b01d3a
@@ -297,9 +297,7 @@ static ssize_t lbs_rtap_set(struct device *dev,
|
|||||||
lbs_add_rtap(priv);
|
lbs_add_rtap(priv);
|
||||||
}
|
}
|
||||||
priv->monitormode = monitor_mode;
|
priv->monitormode = monitor_mode;
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else {
|
|
||||||
if (!priv->monitormode)
|
if (!priv->monitormode)
|
||||||
return strlen(buf);
|
return strlen(buf);
|
||||||
priv->monitormode = 0;
|
priv->monitormode = 0;
|
||||||
@@ -1242,8 +1240,6 @@ int lbs_start_card(struct lbs_private *priv)
|
|||||||
lbs_pr_err("cannot register ethX device\n");
|
lbs_pr_err("cannot register ethX device\n");
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (device_create_file(&dev->dev, &dev_attr_lbs_rtap))
|
|
||||||
lbs_pr_err("cannot register lbs_rtap attribute\n");
|
|
||||||
|
|
||||||
lbs_update_channel(priv);
|
lbs_update_channel(priv);
|
||||||
|
|
||||||
@@ -1275,6 +1271,13 @@ int lbs_start_card(struct lbs_private *priv)
|
|||||||
|
|
||||||
if (device_create_file(&dev->dev, &dev_attr_lbs_mesh))
|
if (device_create_file(&dev->dev, &dev_attr_lbs_mesh))
|
||||||
lbs_pr_err("cannot register lbs_mesh attribute\n");
|
lbs_pr_err("cannot register lbs_mesh attribute\n");
|
||||||
|
|
||||||
|
/* While rtap isn't related to mesh, only mesh-enabled
|
||||||
|
* firmware implements the rtap functionality via
|
||||||
|
* CMD_802_11_MONITOR_MODE.
|
||||||
|
*/
|
||||||
|
if (device_create_file(&dev->dev, &dev_attr_lbs_rtap))
|
||||||
|
lbs_pr_err("cannot register lbs_rtap attribute\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1306,9 +1309,9 @@ void lbs_stop_card(struct lbs_private *priv)
|
|||||||
netif_carrier_off(priv->dev);
|
netif_carrier_off(priv->dev);
|
||||||
|
|
||||||
lbs_debugfs_remove_one(priv);
|
lbs_debugfs_remove_one(priv);
|
||||||
device_remove_file(&dev->dev, &dev_attr_lbs_rtap);
|
|
||||||
if (priv->mesh_tlv) {
|
if (priv->mesh_tlv) {
|
||||||
device_remove_file(&dev->dev, &dev_attr_lbs_mesh);
|
device_remove_file(&dev->dev, &dev_attr_lbs_mesh);
|
||||||
|
device_remove_file(&dev->dev, &dev_attr_lbs_rtap);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Flush pending command nodes */
|
/* Flush pending command nodes */
|
||||||
|
Reference in New Issue
Block a user