Re: [PATCH v3 1/2] mt76: mt7615: enable support for mesh

2019-06-09 Thread Sebastian Gottschall
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 without
encryption. both did not work. the devices are connecting, but no data
connection is possible

Hi Sebastian,

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 
---
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(>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_STABIT(0)
   #define STA_TYPE_AP BIT(1)
   #define STA_TYPE_ADHOC  BIT(2)
-#define STA_TYPE_TDLSBIT(3)
   #define STA_TYPE_WDSBIT(4)
   #define STA_TYPE_BC BIT(5)

   #define NETWORK_INFRA   BIT(16)
   #define NETWORK_P2P BIT(17)
   #define NETWORK_IBSSBIT(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)
  

Re: [PATCH v3 1/2] mt76: mt7615: enable support for mesh

2019-06-07 Thread Sebastian Gottschall



Am 06.06.2019 um 18:19 schrieb Lorenzo Bianconi:

i tested your patch against a qca 9984 chipset using SAE and without
encryption. both did not work. the devices are connecting, but no data
connection is possible

Hi Sebastian,

I tested Ryder's patch using mt76x2 as mesh peer and it works fine for me.
Could you please provide some more info?


the peer was a QCA9984 chipset running ath10k. the following wpa 
supplicant config was used
and encryption clearly cannot work since mt76_wcid_key_setup does 
trigger a bug  since i_get_key_rx_seq does not accept tid as 
argument != 0 for aes_cmac (which is used for sae)
consider the same setup works with ath5k, 9k and 10k perfect with no 
issues. in my test setup i also connected now 3 devices. 2 9984 and 1 
mt7615 to ensure that all is working. the qca 9984 devices can ping each 
other, only the mt7615 does not work. the setups are all identical 
(except for ips)


fast_reauth=1
eapol_version=1
sae_groups=19 20 21
network={
    disable_ht40=1
    ssid="mt7615-24"
    mode=5
    frequency=2452
    htmode=HT20
    scan_ssid=1
    key_mgmt=SAE
    ieee80211w=2
    noscan=1
    pairwise=CCMP
    group=CCMP
    proto=RSN
    sae_password="12345678"
}

and the bug again

WARNING: CPU: 2 PID: 22086 at 
/home/seg/DEV/mt7621/src/router/private/compat-wireless-2017-09-03/net/mac80211/key.c:1096 
mt76_wcid_key_setup+0x58/0x9c [mt76]
Modules linked in: shortcut_fe gcm ghash_generic ctr gf128mul mt7615e 
mt76 mac80211 compat

CPU: 2 PID: 22086 Comm: wpa_supplicant Tainted: G    W 4.14.123 #106
Stack :  87c2d000  8007d8b4 8048 80482b9c 8061 
805a4390
    8057e2b4 87c4b99c 870a59dc 805e4767 80578288 0001 87c4b940 
805e9f78
      8064  81147bb8 06ce 0007 

     8065 8065 20202020 8000  8061 
872b9fe0
    872a2b14 0448  87c2d000 0010 8022d660 0008 
80640008

    ...
Call Trace:
[<800153e0>] show_stack+0x58/0x100
[<8042e83c>] dump_stack+0x9c/0xe0
[<800349f0>] __warn+0xe4/0x144
[<8003468c>] warn_slowpath_null+0x1c/0x30
[<872b9fe0>] mt76_wcid_key_setup+0x58/0x9c [mt76]
[<87611690>] mt7615_eeprom_init+0x7b4/0xe9c [mt7615e]
---[ end trace e24aeb4b542e0df9 ]---




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 
---
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(>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;

Re: [PATCH v3 1/2] mt76: mt7615: enable support for mesh

2019-06-06 Thread Lorenzo Bianconi
>
> i tested your patch against a qca 9984 chipset using SAE and without
> encryption. both did not work. the devices are connecting, but no data
> connection is possible

Hi Sebastian,

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 
> > ---
> > 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(>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_STABIT(0)
> >   #define STA_TYPE_AP BIT(1)
> >   #define STA_TYPE_ADHOC  BIT(2)
> > -#define STA_TYPE_TDLSBIT(3)
> >   #define STA_TYPE_WDSBIT(4)
> >   #define STA_TYPE_BC BIT(5)
> >
> >   #define NETWORK_INFRA   BIT(16)
> >   #define NETWORK_P2P BIT(17)
> >   #define NETWORK_IBSSBIT(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 

Re: [PATCH v3 1/2] mt76: mt7615: enable support for mesh

2019-06-06 Thread Ryder Lee
On Thu, 2019-06-06 at 12:14 +0200, Sebastian Gottschall wrote:
> in addition you should take care about this problem which is raised up 
> if SAE is used. since AES-CMAC required tid to be non zero
> 
> WARNING: CPU: 2 PID: 15324 at 
> /home/seg/DEV/mt7621/src/router/private/compat-wireless-2017-09-03/net/mac80211/key.c:1096
>  
> mt76_wcid_key_setup+0x58/0x9c [mt76]
> Modules linked in: shortcut_fe gcm ghash_generic ctr gf128mul mt7615e 
> mt76 mac80211 compat
> CPU: 2 PID: 15324 Comm: wpa_supplicant Tainted: GW 4.14.123 #106
> Stack :  87c2d000  8007d8b4 8048 80482b9c 8061 
> 805a4390
>  8057e2b4 854fb99c 87ed045c 805e4767 80578288 0001 854fb940 
> 805e9f78
>    8064  81147bb8 0584 0007 
> 
>   8065 8065 20202020 8000  8061 
> 872b9fe0
>  872a2b14 0448  87c2d000 0010 8022d660 0008 
> 80640008
>  ...
> Call Trace:
> [<800153e0>] show_stack+0x58/0x100
> [<8042e83c>] dump_stack+0x9c/0xe0
> [<800349f0>] __warn+0xe4/0x144
> [<8003468c>] warn_slowpath_null+0x1c/0x30
> [<872b9fe0>] mt76_wcid_key_setup+0x58/0x9c [mt76]
> [<87611690>] mt7615_eeprom_init+0x7b4/0xe9c [mt7615e]
> ---[ end trace e24aeb4b542e0dea ]---

This is fixed by Lorenzo's patch -
https://patchwork.kernel.org/patch/10976191/

Thanks.
Ryder



Re: [PATCH v3 1/2] mt76: mt7615: enable support for mesh

2019-06-06 Thread Sebastian Gottschall
in addition you should take care about this problem which is raised up 
if SAE is used. since AES-CMAC required tid to be non zero


WARNING: CPU: 2 PID: 15324 at 
/home/seg/DEV/mt7621/src/router/private/compat-wireless-2017-09-03/net/mac80211/key.c:1096 
mt76_wcid_key_setup+0x58/0x9c [mt76]
Modules linked in: shortcut_fe gcm ghash_generic ctr gf128mul mt7615e 
mt76 mac80211 compat

CPU: 2 PID: 15324 Comm: wpa_supplicant Tainted: G    W 4.14.123 #106
Stack :  87c2d000  8007d8b4 8048 80482b9c 8061 
805a4390
    8057e2b4 854fb99c 87ed045c 805e4767 80578288 0001 854fb940 
805e9f78
      8064  81147bb8 0584 0007 

     8065 8065 20202020 8000  8061 
872b9fe0
    872a2b14 0448  87c2d000 0010 8022d660 0008 
80640008

    ...
Call Trace:
[<800153e0>] show_stack+0x58/0x100
[<8042e83c>] dump_stack+0x9c/0xe0
[<800349f0>] __warn+0xe4/0x144
[<8003468c>] warn_slowpath_null+0x1c/0x30
[<872b9fe0>] mt76_wcid_key_setup+0x58/0x9c [mt76]
[<87611690>] mt7615_eeprom_init+0x7b4/0xe9c [mt7615e]
---[ end trace e24aeb4b542e0dea ]---

Am 03.06.2019 um 08:08 schrieb Ryder Lee:

Enable NL80211_IFTYPE_MESH_POINT and update its path.

Signed-off-by: Ryder Lee 
---
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(>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 

Re: [PATCH v3 1/2] mt76: mt7615: enable support for mesh

2019-06-06 Thread Sebastian Gottschall
i tested your patch against a qca 9984 chipset using SAE and without 
encryption. both did not work. the devices are connecting, but no data 
connection is possible



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 
---
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(>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_ADHOCBIT(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_BOWBIT(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