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

Commit c0174ee2 authored by Maital Hahn's avatar Maital Hahn Committed by Kalle Valo
Browse files

wlcore/wl18xx: mesh: added initial mesh support for wl8



1. Added support for interface and role of mesh type.
2. Enabled enable/start of mesh-point role,
   and opening and closing a connection with a mesh peer.
3. Added multirole combination of mesh and ap
   under the same limits of dual ap mode.
4. Add support for 'sta_rc_update' opcode for mesh IF.
   The 'sta_rc_update' opcode is being used in mesh_plink.c.
Add support in wlcore to handle this opcode correctly for mesh
(as opposed to current implementation that handles STA only).
5. Bumped the firmware version to support new Mesh functionality

Signed-off-by: default avatarMaital Hahn <maitalm@ti.com>
Signed-off-by: default avatarYaniv Machani <yanivma@ti.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 8cfb8600
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -1821,9 +1821,12 @@ static const struct ieee80211_iface_limit wl18xx_iface_limits[] = {
	},
	{
		.max = 1,
		.types = BIT(NL80211_IFTYPE_AP) |
			 BIT(NL80211_IFTYPE_P2P_GO) |
			 BIT(NL80211_IFTYPE_P2P_CLIENT),
		.types =   BIT(NL80211_IFTYPE_AP)
			 | BIT(NL80211_IFTYPE_P2P_GO)
			 | BIT(NL80211_IFTYPE_P2P_CLIENT)
#ifdef CONFIG_MAC80211_MESH
			 | BIT(NL80211_IFTYPE_MESH_POINT)
#endif
	},
	{
		.max = 1,
@@ -1836,6 +1839,12 @@ static const struct ieee80211_iface_limit wl18xx_iface_ap_limits[] = {
		.max = 2,
		.types = BIT(NL80211_IFTYPE_AP),
	},
#ifdef CONFIG_MAC80211_MESH
	{
		.max = 1,
		.types = BIT(NL80211_IFTYPE_MESH_POINT),
	},
#endif
	{
		.max = 1,
		.types = BIT(NL80211_IFTYPE_P2P_DEVICE),
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@
#define WL18XX_IFTYPE_VER	9
#define WL18XX_MAJOR_VER	WLCORE_FW_VER_IGNORE
#define WL18XX_SUBTYPE_VER	WLCORE_FW_VER_IGNORE
#define WL18XX_MINOR_VER	11
#define WL18XX_MINOR_VER	58

#define WL18XX_CMD_MAX_SIZE          740

+1 −0
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ enum wl12xx_role {
	WL1271_ROLE_DEVICE,
	WL1271_ROLE_P2P_CL,
	WL1271_ROLE_P2P_GO,
	WL1271_ROLE_MESH_POINT,

	WL12XX_INVALID_ROLE_TYPE = 0xff
};
+1 −1
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ static int wlcore_validate_fw_ver(struct wl1271 *wl)
	wl1271_error("Your WiFi FW version (%u.%u.%u.%u.%u) is invalid.\n"
		     "Please use at least FW %s\n"
		     "You can get the latest firmwares at:\n"
		     "git://github.com/TI-OpenLink/firmwares.git",
		     "git://git.ti.com/wilink8-wlan/wl18xx_fw.git",
		     fw_ver[FW_VER_CHIP], fw_ver[FW_VER_IF_TYPE],
		     fw_ver[FW_VER_MAJOR], fw_ver[FW_VER_SUBTYPE],
		     fw_ver[FW_VER_MINOR], min_fw_str);
+8 −5
Original line number Diff line number Diff line
@@ -629,12 +629,15 @@ int wl12xx_cmd_role_start_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif)

	wl1271_debug(DEBUG_CMD, "cmd role start ap %d", wlvif->role_id);

	/* If MESH --> ssid_len is always 0 */
	if (!ieee80211_vif_is_mesh(vif)) {
		/* trying to use hidden SSID with an old hostapd version */
		if (wlvif->ssid_len == 0 && !bss_conf->hidden_ssid) {
			wl1271_error("got a null SSID from beacon/bss");
			ret = -EINVAL;
			goto out;
		}
	}

	cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
	if (!cmd) {
Loading