ath10k: apply Mesh subtype when Mesh interface created.
authorPeter Oh <poh@qca.qualcomm.com>
Tue, 24 Nov 2015 17:37:35 +0000 (09:37 -0800)
committerKalle Valo <kvalo@qca.qualcomm.com>
Mon, 30 Nov 2015 14:54:51 +0000 (16:54 +0200)
QCA988X firmware starting from 10.2.4.70.12-2 has capability to support
Mesh Control Field Present bit in QoS field in native Wi-Fi mode.
Hence apply Mesh subtype according to the WMI service map.

Firmware will allows unicast, broadcast, multicast, and WDS frame
(FromDS = 1 and ToDS = 1) to be received via the interface, once Mesh
subtype is used.

The firmware and this patch together make native Wi-Fi mode comply to
IEEE802.11s Mesh frame in open mode, but the firmware doesn't yet
support secured Mesh mode.

Signed-off-by: Peter Oh <poh@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/mac.c

index de19967c64ce2fca798b1f7245ec878d74f8567c..8ae5216fd188ca808d772577e27f9cb8e7ff2c8e 100644 (file)
@@ -4364,7 +4364,9 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
                arvif->vdev_type = WMI_VDEV_TYPE_IBSS;
                break;
        case NL80211_IFTYPE_MESH_POINT:
-               if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags)) {
+               if (test_bit(WMI_SERVICE_MESH, ar->wmi.svc_map)) {
+                       arvif->vdev_subtype = WMI_VDEV_SUBTYPE_MESH;
+               } else if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags)) {
                        ret = -EINVAL;
                        ath10k_warn(ar, "must load driver with rawmode=1 to add mesh interfaces\n");
                        goto err;