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

Commit 581a8b0f authored by Javier Cardona's avatar Javier Cardona Committed by John W. Linville
Browse files

nl80211: rename NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE



To NL80211_MESH_SETUP_IE. This reflects our ability to insert any ie
into a mesh beacon, not simply path selection ies.

Signed-off-by: default avatarJavier Cardona <javier@cozybit.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent a22e93f5
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -545,6 +545,7 @@ enum nl80211_commands {
/* source-level API compatibility */
#define NL80211_CMD_GET_MESH_PARAMS NL80211_CMD_GET_MESH_CONFIG
#define NL80211_CMD_SET_MESH_PARAMS NL80211_CMD_SET_MESH_CONFIG
#define NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE NL80211_MESH_SETUP_IE

/**
 * enum nl80211_attrs - nl80211 netlink attributes
@@ -1719,9 +1720,9 @@ enum nl80211_meshconf_params {
 * vendor specific path metric or disable it to use the default Airtime
 * metric.
 *
 * @NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE: A vendor specific information
 * element that vendors will use to identify the path selection methods and
 * metrics in use.
 * @NL80211_MESH_SETUP_IE: Information elements for this mesh, for instance, a
 * robust security network ie, or a vendor specific information element that
 * vendors will use to identify the path selection methods and metrics in use.
 *
 * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number
 * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use
@@ -1730,7 +1731,7 @@ enum nl80211_mesh_setup_params {
	__NL80211_MESH_SETUP_INVALID,
	NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL,
	NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC,
	NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE,
	NL80211_MESH_SETUP_IE,

	/* keep last */
	__NL80211_MESH_SETUP_ATTR_AFTER_LAST,
+4 −4
Original line number Diff line number Diff line
@@ -689,8 +689,8 @@ struct mesh_config {
 * @mesh_id_len: length of the mesh ID, at least 1 and at most 32 bytes
 * @path_sel_proto: which path selection protocol to use
 * @path_metric: which metric to use
 * @vendor_ie: vendor information elements (optional)
 * @vendor_ie_len: length of vendor information elements
 * @ie: vendor information elements (optional)
 * @ie_len: length of vendor information elements
 *
 * These parameters are fixed when the mesh is created.
 */
@@ -699,8 +699,8 @@ struct mesh_setup {
	u8 mesh_id_len;
	u8  path_sel_proto;
	u8  path_metric;
	const u8 *vendor_ie;
	u8 vendor_ie_len;
	const u8 *ie;
	u8 ie_len;
};

/**
+7 −8
Original line number Diff line number Diff line
@@ -1034,26 +1034,25 @@ static int copy_mesh_setup(struct ieee80211_if_mesh *ifmsh,
	u8 *new_ie;
	const u8 *old_ie;

	/* first allocate the new vendor information element */
	/* allocate information elements */
	new_ie = NULL;
	old_ie = ifmsh->vendor_ie;
	old_ie = ifmsh->ie;

	ifmsh->vendor_ie_len = setup->vendor_ie_len;
	if (setup->vendor_ie_len) {
		new_ie = kmemdup(setup->vendor_ie, setup->vendor_ie_len,
	if (setup->ie_len) {
		new_ie = kmemdup(setup->ie, setup->ie_len,
				GFP_KERNEL);
		if (!new_ie)
			return -ENOMEM;
	}
	ifmsh->ie_len = setup->ie_len;
	ifmsh->ie = new_ie;
	kfree(old_ie);

	/* now copy the rest of the setup parameters */
	ifmsh->mesh_id_len = setup->mesh_id_len;
	memcpy(ifmsh->mesh_id, setup->mesh_id, ifmsh->mesh_id_len);
	ifmsh->mesh_pp_id = setup->path_sel_proto;
	ifmsh->mesh_pm_id = setup->path_metric;
	ifmsh->vendor_ie = new_ie;

	kfree(old_ie);

	return 0;
}
+2 −2
Original line number Diff line number Diff line
@@ -488,8 +488,8 @@ struct ieee80211_if_mesh {
	struct mesh_config mshcfg;
	u32 mesh_seqnum;
	bool accepting_plinks;
	const u8 *vendor_ie;
	u8 vendor_ie_len;
	const u8 *ie;
	u8 ie_len;
};

#ifdef CONFIG_MAC80211_MESH
+3 −3
Original line number Diff line number Diff line
@@ -279,9 +279,9 @@ void mesh_mgmt_ies_add(struct sk_buff *skb, struct ieee80211_sub_if_data *sdata)
	    MESHCONF_CAPAB_ACCEPT_PLINKS : 0x00;
	*pos++ = 0x00;

	if (sdata->u.mesh.vendor_ie) {
		int len = sdata->u.mesh.vendor_ie_len;
		const u8 *data = sdata->u.mesh.vendor_ie;
	if (sdata->u.mesh.ie) {
		int len = sdata->u.mesh.ie_len;
		const u8 *data = sdata->u.mesh.ie;
		if (skb_tailroom(skb) > len)
			memcpy(skb_put(skb, len), data, len);
	}
Loading