Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -297,9 +297,7 @@ static ssize_t lbs_rtap_set(struct device *dev,
			lbs_add_rtap(priv);
		}
		priv->monitormode = monitor_mode;
	}

	else {
	} else {
		if (!priv->monitormode)
			return strlen(buf);
		priv->monitormode = 0;
@@ -1242,8 +1240,6 @@ int lbs_start_card(struct lbs_private *priv)
		lbs_pr_err("cannot register ethX device\n");
		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);

@@ -1275,6 +1271,13 @@ int lbs_start_card(struct lbs_private *priv)

			if (device_create_file(&dev->dev, &dev_attr_lbs_mesh))
				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);

	lbs_debugfs_remove_one(priv);
	device_remove_file(&dev->dev, &dev_attr_lbs_rtap);
	if (priv->mesh_tlv) {
		device_remove_file(&dev->dev, &dev_attr_lbs_mesh);
		device_remove_file(&dev->dev, &dev_attr_lbs_rtap);
	}

	/* Flush pending command nodes */