2018-11-06 22:49:22

by Lorenzo Bianconi

[permalink] [raw]
Subject: [PATCH] mt76: introduce mt76x02_config_mac_addr_list routine

Add mt76x02_config_mac_addr_list routine in order to set
the mac address list supported by the driver. Initialize
wiphy->addresses/n_addresses for mt76x0e driver

Signed-off-by: Lorenzo Bianconi <[email protected]>
---
.../net/wireless/mediatek/mt76/mt76x0/init.c | 2 ++
drivers/net/wireless/mediatek/mt76/mt76x02.h | 1 +
.../net/wireless/mediatek/mt76/mt76x02_util.c | 22 +++++++++++++++++++
.../wireless/mediatek/mt76/mt76x2/pci_init.c | 17 ++------------
4 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/init.c b/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
index e74d476eca24..87b575fe1c74 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
@@ -289,6 +289,8 @@ int mt76x0_register_device(struct mt76x02_dev *dev)
int ret;

mt76x02_init_device(dev);
+ mt76x02_config_mac_addr_list(dev);
+
ret = mt76_register_device(&dev->mt76, true, mt76x02_rates,
ARRAY_SIZE(mt76x02_rates));
if (ret)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02.h b/drivers/net/wireless/mediatek/mt76/mt76x02.h
index a8c5fdd903b9..65daa3d3c289 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02.h
@@ -115,6 +115,7 @@ int mt76x02_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
int mt76x02_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct ieee80211_sta *sta);

+void mt76x02_config_mac_addr_list(struct mt76x02_dev *dev);
void mt76x02_vif_init(struct mt76x02_dev *dev, struct ieee80211_vif *vif,
unsigned int idx);
int mt76x02_add_interface(struct ieee80211_hw *hw,
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
index 87ce6a51fb05..a52db63c3c68 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
@@ -700,4 +700,26 @@ void mt76x02_bss_info_changed(struct ieee80211_hw *hw,
}
EXPORT_SYMBOL_GPL(mt76x02_bss_info_changed);

+void mt76x02_config_mac_addr_list(struct mt76x02_dev *dev)
+{
+ struct ieee80211_hw *hw = mt76_hw(dev);
+ struct wiphy *wiphy = hw->wiphy;
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(dev->macaddr_list); i++) {
+ u8 *addr = dev->macaddr_list[i].addr;
+
+ memcpy(addr, dev->mt76.macaddr, ETH_ALEN);
+
+ if (!i)
+ continue;
+
+ addr[0] |= BIT(1);
+ addr[0] ^= ((i - 1) << 2);
+ }
+ wiphy->addresses = dev->macaddr_list;
+ wiphy->n_addresses = ARRAY_SIZE(dev->macaddr_list);
+}
+EXPORT_SYMBOL_GPL(mt76x02_config_mac_addr_list);
+
MODULE_LICENSE("Dual BSD/GPL");
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
index 076b7479ba99..80b4e11ea28e 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
@@ -390,7 +390,7 @@ int mt76x2_register_device(struct mt76x02_dev *dev)
{
struct ieee80211_hw *hw = mt76_hw(dev);
struct wiphy *wiphy = hw->wiphy;
- int i, ret;
+ int ret;

INIT_DELAYED_WORK(&dev->cal_work, mt76x2_phy_calibrate);

@@ -400,20 +400,7 @@ int mt76x2_register_device(struct mt76x02_dev *dev)
if (ret)
return ret;

- for (i = 0; i < ARRAY_SIZE(dev->macaddr_list); i++) {
- u8 *addr = dev->macaddr_list[i].addr;
-
- memcpy(addr, dev->mt76.macaddr, ETH_ALEN);
-
- if (!i)
- continue;
-
- addr[0] |= BIT(1);
- addr[0] ^= ((i - 1) << 2);
- }
- wiphy->addresses = dev->macaddr_list;
- wiphy->n_addresses = ARRAY_SIZE(dev->macaddr_list);
-
+ mt76x02_config_mac_addr_list(dev);
wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_VHT_IBSS);

/* init led callbacks */
--
2.19.1



2018-11-07 08:27:10

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [PATCH] mt76: introduce mt76x02_config_mac_addr_list routine

On Tue, Nov 06, 2018 at 11:49:12PM +0100, Lorenzo Bianconi wrote:
> Add mt76x02_config_mac_addr_list routine in order to set
> the mac address list supported by the driver. Initialize
> wiphy->addresses/n_addresses for mt76x0e driver
>
> Signed-off-by: Lorenzo Bianconi <[email protected]>
> ---
> .../net/wireless/mediatek/mt76/mt76x0/init.c | 2 ++
> drivers/net/wireless/mediatek/mt76/mt76x02.h | 1 +
> .../net/wireless/mediatek/mt76/mt76x02_util.c | 22 +++++++++++++++++++
> .../wireless/mediatek/mt76/mt76x2/pci_init.c | 17 ++------------
> 4 files changed, 27 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/init.c b/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
> index e74d476eca24..87b575fe1c74 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
> @@ -289,6 +289,8 @@ int mt76x0_register_device(struct mt76x02_dev *dev)
> int ret;
>
> mt76x02_init_device(dev);
> + mt76x02_config_mac_addr_list(dev);
> +

Does this work for USB devices ?

Thanks
Stanislaw

2018-11-07 09:07:56

by Lorenzo Bianconi

[permalink] [raw]
Subject: Re: [PATCH] mt76: introduce mt76x02_config_mac_addr_list routine

> On Tue, Nov 06, 2018 at 11:49:12PM +0100, Lorenzo Bianconi wrote:
> > Add mt76x02_config_mac_addr_list routine in order to set
> > the mac address list supported by the driver. Initialize
> > wiphy->addresses/n_addresses for mt76x0e driver
> >
> > Signed-off-by: Lorenzo Bianconi <[email protected]>
> > ---
> > .../net/wireless/mediatek/mt76/mt76x0/init.c | 2 ++
> > drivers/net/wireless/mediatek/mt76/mt76x02.h | 1 +
> > .../net/wireless/mediatek/mt76/mt76x02_util.c | 22 +++++++++++++++++++
> > .../wireless/mediatek/mt76/mt76x2/pci_init.c | 17 ++------------
> > 4 files changed, 27 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/init.c b/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
> > index e74d476eca24..87b575fe1c74 100644
> > --- a/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
> > +++ b/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
> > @@ -289,6 +289,8 @@ int mt76x0_register_device(struct mt76x02_dev *dev)
> > int ret;
> >
> > mt76x02_init_device(dev);
> > + mt76x02_config_mac_addr_list(dev);
> > +
>
> Does this work for USB devices ?

Hi Stanislaw,

for usb devices we have just one interface so it does not make any difference I
guess.

Regards,
Lorenzo

>
> Thanks
> Stanislaw

2018-11-13 19:50:31

by Felix Fietkau

[permalink] [raw]
Subject: Re: [PATCH] mt76: introduce mt76x02_config_mac_addr_list routine

On 2018-11-06 23:49, Lorenzo Bianconi wrote:
> Add mt76x02_config_mac_addr_list routine in order to set
> the mac address list supported by the driver. Initialize
> wiphy->addresses/n_addresses for mt76x0e driver
>
> Signed-off-by: Lorenzo Bianconi <[email protected]>
Applied, thanks.

- Felix