Commit 3b72b01d authored by Dan Williams's avatar Dan Williams Committed by John W. Linville

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: default avatarDan Williams <dcbw@redhat.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent d4764b29
...@@ -297,9 +297,7 @@ static ssize_t lbs_rtap_set(struct device *dev, ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment