by the way. this big fat kernel warning exists in all operation modes unless anything else but aes-128 ccmp is used. since the chipset is capable of doing gcmp etc. as well
it would be nice if this issue can be fixed. otherwise encryption support can be defined as "broken" for mt7615
Am 06.06.2019 um 18:19 schrieb Lorenzo Bianconi:
i tested your patch against a qca 9984 chipset using SAE and withoutHi Sebastian,
encryption. both did not work. the devices are connecting, but no data
connection is possible
I tested Ryder's patch using mt76x2 as mesh peer and it works fine for me.
Could you please provide some more info?
Regards,
Lorenzo
Sebastian
Am 03.06.2019 um 08:08 schrieb Ryder Lee:
Enable NL80211_IFTYPE_MESH_POINT and update its path.
Signed-off-by: Ryder Lee <ryder.lee@xxxxxxxxxxxx>
---
Changes since v3 - fix a wrong expression
Changes since v2 - remove unused definitions
---
ÂÂ drivers/net/wireless/mediatek/mt76/mt7615/init.c | 6 ++++++
ÂÂ drivers/net/wireless/mediatek/mt76/mt7615/main.c | 1 +
 drivers/net/wireless/mediatek/mt76/mt7615/mcu.c | 4 +++-
 drivers/net/wireless/mediatek/mt76/mt7615/mcu.h | 6 ------
ÂÂ 4 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/init.c b/drivers/net/wireless/mediatek/mt76/mt7615/init.c
index 59f604f3161f..f860af6a42da 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/init.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/init.c
@@ -133,6 +133,9 @@ static const struct ieee80211_iface_limit if_limits[] = {
ÂÂÂÂÂÂ {
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ .max = MT7615_MAX_INTERFACES,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ .types = BIT(NL80211_IFTYPE_AP) |
+#ifdef CONFIG_MAC80211_MESH
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ BIT(NL80211_IFTYPE_MESH_POINT) |
+#endif
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ BIT(NL80211_IFTYPE_STATION)
ÂÂÂÂÂÂ }
ÂÂ };
@@ -195,6 +198,9 @@ int mt7615_register_device(struct mt7615_dev *dev)
ÂÂÂÂÂÂ dev->mt76.antenna_mask = 0xf;
ÂÂÂÂÂÂ wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
+#ifdef CONFIG_MAC80211_MESH
+ BIT(NL80211_IFTYPE_MESH_POINT) |
+#endif
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ BIT(NL80211_IFTYPE_AP);
ÂÂÂÂÂÂ ret = mt76_register_device(&dev->mt76, true, mt7615_rates,
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/main.c b/drivers/net/wireless/mediatek/mt76/mt7615/main.c
index b0bb7cc12385..585e67fa2728 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/main.c
@@ -37,6 +37,7 @@ static int get_omac_idx(enum nl80211_iftype type, u32 mask)
ÂÂÂÂÂÂ switch (type) {
ÂÂÂÂÂÂ case NL80211_IFTYPE_AP:
+ÂÂÂÂ case NL80211_IFTYPE_MESH_POINT:
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ /* ap use hw bssid 0 and ext bssid */
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ if (~mask & BIT(HW_BSSID_0))
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ return HW_BSSID_0;
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
index 43f70195244c..e82297048449 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
@@ -754,6 +754,7 @@ int mt7615_mcu_set_bss_info(struct mt7615_dev *dev,
ÂÂÂÂÂÂ switch (vif->type) {
ÂÂÂÂÂÂ case NL80211_IFTYPE_AP:
+ÂÂÂÂ case NL80211_IFTYPE_MESH_POINT:
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ tx_wlan_idx = mvif->sta.wcid.idx;
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ conn_type = CONNECTION_INFRA_AP;
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ break;
@@ -968,7 +969,7 @@ int mt7615_mcu_add_wtbl(struct mt7615_dev *dev, struct ieee80211_vif *vif,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ .rx_wtbl = {
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ .tag = cpu_to_le16(WTBL_RX),
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ .len = cpu_to_le16(sizeof(struct wtbl_rx)),
-ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ .rca1 = vif->type != NL80211_IFTYPE_AP,
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ .rca1 = vif->type == NL80211_IFTYPE_STATION,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ .rca2 = 1,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ .rv = 1,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ },
@@ -1042,6 +1043,7 @@ static void sta_rec_convert_vif_type(enum nl80211_iftype type, u32 *conn_type)
ÂÂ {
ÂÂÂÂÂÂ switch (type) {
ÂÂÂÂÂÂ case NL80211_IFTYPE_AP:
+ÂÂÂÂ case NL80211_IFTYPE_MESH_POINT:
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ if (conn_type)
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ *conn_type = CONNECTION_INFRA_STA;
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ break;
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.h b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.h
index e96efb13fa4d..0915cb735699 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.h
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.h
@@ -105,25 +105,19 @@ enum {
ÂÂ #define STA_TYPE_STAÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ BIT(0)
ÂÂ #define STA_TYPE_APÂÂÂÂÂÂÂÂ BIT(1)
ÂÂ #define STA_TYPE_ADHOCÂÂÂÂÂÂÂÂÂÂÂÂÂ BIT(2)
-#define STA_TYPE_TDLSÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ BIT(3)
ÂÂ #define STA_TYPE_WDSÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ BIT(4)
ÂÂ #define STA_TYPE_BCÂÂÂÂÂÂÂÂ BIT(5)
ÂÂ #define NETWORK_INFRAÂÂÂÂÂÂÂÂÂÂÂÂÂÂ BIT(16)
ÂÂ #define NETWORK_P2PÂÂÂÂÂÂÂÂ BIT(17)
ÂÂ #define NETWORK_IBSSÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ BIT(18)
-#define NETWORK_MESHÂÂÂÂÂÂÂÂ BIT(19)
-#define NETWORK_BOWÂÂÂÂÂÂÂÂÂ BIT(20)
ÂÂ #define NETWORK_WDSÂÂÂÂÂÂÂÂ BIT(21)
ÂÂ #define CONNECTION_INFRA_STAÂÂÂÂÂÂÂ (STA_TYPE_STA | NETWORK_INFRA)
ÂÂ #define CONNECTION_INFRA_AP (STA_TYPE_AP | NETWORK_INFRA)
ÂÂ #define CONNECTION_P2P_GCÂÂ (STA_TYPE_STA | NETWORK_P2P)
ÂÂ #define CONNECTION_P2P_GOÂÂ (STA_TYPE_AP | NETWORK_P2P)
-#define CONNECTION_MESH_STAÂ (STA_TYPE_STA | NETWORK_MESH)
-#define CONNECTION_MESH_APÂÂ (STA_TYPE_AP | NETWORK_MESH)
ÂÂ #define CONNECTION_IBSS_ADHOCÂÂÂÂÂÂ (STA_TYPE_ADHOC | NETWORK_IBSS)
-#define CONNECTION_TDLSÂÂÂÂÂÂÂÂÂÂÂÂÂ (STA_TYPE_STA | NETWORK_INFRA | STA_TYPE_TDLS)
ÂÂ #define CONNECTION_WDSÂÂÂÂÂÂÂÂÂÂÂÂÂ (STA_TYPE_WDS | NETWORK_WDS)
ÂÂ #define CONNECTION_INFRA_BC (STA_TYPE_BC | NETWORK_INFRA)