mt76x0 usb driver
Hi
I would like to announce mt76x0 driver for MT7610U USB dongles:
https://github.com/sgruszka/mt76x0
mt76x0 is based on Jakub's mt7601u mac80211 driver and is intended to be integrated in the linux kernel.
Currently only Linksys AE6000 (ID 13b1:003e) in on USB id's list and 5GHz does not work.
I would like to integrate the driver to kernel via mt76 driver, i.e. add USB hooks and mt76x0 mac/phy code to mt76. This will open possibility to develop support for mt76x2 USB devices as well as mt76x0 PCIe devices in mt76.
I would also like to establish some better collaboration with Mediatek in order to having their present and future wireless hardware be supported in the mainline kernel.
Thanks
Stanislaw
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 1 line
Hi
Hi Stanislaw,
Quoted 8 lines
I would like to announce mt76x0 driver for MT7610U USB dongles:
https://github.com/sgruszka/mt76x0
mt76x0 is based on Jakub's mt7601u mac80211 driver and is intended to be integrated in the linux kernel.
Thx, very cool work :)
Quoted 8 lines
Currently only Linksys AE6000 (ID 13b1:003e) in on USB id's list and 5GHz does not work.
I would like to integrate the driver to kernel via mt76 driver, i.e. add USB hooks and mt76x0 mac/phy code to mt76. This will open possibility to develop support for mt76x2 USB devices as well as mt76x0 PCIe devices in mt76.
I have already started supporting mt76x2 USB devices in mt76 since register map is pretty similar to PCIe devices:
https://github.com/LorenzoBianconi/wireless-drivers-next/tree/mt76x2u
I added some usb utility routines so I think we can integrate mt76x0 in mt76 as well
Quoted 6 lines
I would also like to establish some better collaboration with Mediatek in order to having their present and future wireless hardware be supported in the mainline kernel.
Thanks
Stanislaw
Regards,
Lorenzo
A message that is not in the archive (sent off-list or not yet received): 20180409142640.GA5680-bi+AKbBUZKY6gyzm1THtWbp2dZbC/[email protected]
Quoted 11 lines · Lorenzo Bianconi
Quoted 5 lines
I would like to integrate the driver to kernel via mt76 driver, i.e. add USB hooks and mt76x0 mac/phy code to mt76. This will open possibility to develop support for mt76x2 USB devices as well as mt76x0 PCIe devices in mt76.
I have already started supporting mt76x2 USB devices in mt76 since register map is pretty similar to PCIe devices:
https://github.com/LorenzoBianconi/wireless-drivers-next/tree/mt76x2u
I added some usb utility routines so I think we can integrate mt76x0 in mt76 as well
Great, I'll start to integrate mt76x0 on top of your tree.
Thanks
Stanislaw
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 7 lines · Stanislaw Gruszka
Quoted 6 lines · Lorenzo Bianconi
Quoted 5 lines
I would like to integrate the driver to kernel via mt76 driver, i.e. add USB hooks and mt76x0 mac/phy code to mt76. This will open possibility to develop support for mt76x2 USB devices as well as mt76x0 PCIe devices in mt76.
Quoted 7 lines
Quoted 5 lines
I have already started supporting mt76x2 USB devices in mt76 since register map is pretty similar to PCIe devices:
https://github.com/LorenzoBianconi/wireless-drivers-next/tree/mt76x2u
I added some usb utility routines so I think we can integrate mt76x0 in mt76 as wellGreat, I'll start to integrate mt76x0 on top of your tree.
Cool :) actually this branch is in under development but what is really changing day by day is mt7612u part not usb one so I guess we can use it as common ground for mt76x2u and mt76x0.
Maybe even the mcu code is in common with mt76x2, isn't it?
Regards,
Lorenzo
Quoted 3 lines
Thanks
Stanislaw
A message that is not in the archive (sent off-list or not yet received): 20180409145342.GB5680-bi+AKbBUZKY6gyzm1THtWbp2dZbC/[email protected]
Hi
Quoted 14 lines · Lorenzo Bianconi
Quoted 13 lines · Stanislaw Gruszka
Quoted 11 lines · Lorenzo Bianconi
Quoted 5 lines
I would like to integrate the driver to kernel via mt76 driver, i.e. add USB hooks and mt76x0 mac/phy code to mt76. This will open possibility to develop support for mt76x2 USB devices as well as mt76x0 PCIe devices in mt76.
I have already started supporting mt76x2 USB devices in mt76 since register map is pretty similar to PCIe devices:
https://github.com/LorenzoBianconi/wireless-drivers-next/tree/mt76x2u
I added some usb utility routines so I think we can integrate mt76x0 in mt76 as well
Quoted 7 lines
Quoted 1 line
Great, I'll start to integrate mt76x0 on top of your tree.
Cool :) actually this branch is in under development but what is really changing day by day is mt7612u part not usb one so I guess we can use it as common ground for mt76x2u and mt76x0.
Maybe even the mcu code is in common with mt76x2, isn't it?
from my POV for "general" commands the MCU on mt76x0 and mt76x2 (doesn't matter if USB or PCIe) are almost the same i.e. CMD_FUN_SET_OP
The only difference is CMD_CALIBRATION_OP, they are for mt76x0 and mt76x2 different calibrate id's.
How about the LED on mt76x2 ?
Greetings
Hans
Quoted 14 lines · Lorenzo Bianconi
Quoted 13 lines · Stanislaw Gruszka
Quoted 11 lines · Lorenzo Bianconi
Quoted 5 lines
I would like to integrate the driver to kernel via mt76 driver, i.e. add USB hooks and mt76x0 mac/phy code to mt76. This will open possibility to develop support for mt76x2 USB devices as well as mt76x0 PCIe devices in mt76.
I have already started supporting mt76x2 USB devices in mt76 since register map is pretty similar to PCIe devices:
https://github.com/LorenzoBianconi/wireless-drivers-next/tree/mt76x2u
I added some usb utility routines so I think we can integrate mt76x0 in mt76 as well
Quoted 6 lines
Quoted 1 line
Great, I'll start to integrate mt76x0 on top of your tree.
Cool :) actually this branch is in under development but what is really changing day by day is mt7612u part not usb one so I guess we can use it as common ground for mt76x2u and mt76x0.
Maybe even the mcu code is in common with mt76x2, isn't it?
There are some new bits in mcu/mcu_and.c in Mediatek MT7612U driver, compared to MT7610U driver, but most of the code there looks pretty much the same :-)
Regards
Stanislaw
Hi all,
Quoted 7 lines · Stanislaw Gruszka
Quoted 6 lines · Lorenzo Bianconi
Quoted 5 lines
I would like to integrate the driver to kernel via mt76 driver, i.e. add USB hooks and mt76x0 mac/phy code to mt76. This will open possibility to develop support for mt76x2 USB devices as well as mt76x0 PCIe devices in mt76.
Quoted 7 lines
Quoted 5 lines
I have already started supporting mt76x2 USB devices in mt76 since register map is pretty similar to PCIe devices:
https://github.com/LorenzoBianconi/wireless-drivers-next/tree/mt76x2u
I added some usb utility routines so I think we can integrate mt76x0 in mt76 as wellGreat, I'll start to integrate mt76x0 on top of your tree.
So I started to do integration here:
https://github.com/sgruszka/wireless-drivers-next/commits/mt76x0-draft
However since driver is self containging, I think better would be just submit the driver into mt76/mt76x0/ dir upstream and do code merging work as follow-up patches posted on the mailing list. Patches then could be reviewed on regular basic. This will provide support for new mt76x0 devices in kernel quicker. Conflicts with mt76x2u and not yet upstreamed mt7603 could be resolved on the fly.
Another issue is firmware submission, how it was done for mt7601u and mt76x2 ?
Thanks
Stanislaw
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 2 lines
Hi all,
Hi Stanislaw,
Quoted 20 lines · Stanislaw Gruszka
Quoted 7 lines · Lorenzo Bianconi
Quoted 6 lines
Quoted 5 lines
I would like to integrate the driver to kernel via mt76 driver, i.e. add USB hooks and mt76x0 mac/phy code to mt76. This will open possibility to develop support for mt76x2 USB devices as well as mt76x0 PCIe devices in mt76.
Quoted 7 lines
Quoted 5 lines
I have already started supporting mt76x2 USB devices in mt76 since register map is pretty similar to PCIe devices:
https://github.com/LorenzoBianconi/wireless-drivers-next/tree/mt76x2u
I added some usb utility routines so I think we can integrate mt76x0 in mt76 as wellGreat, I'll start to integrate mt76x0 on top of your tree.
So I started to do integration here:
https://github.com/sgruszka/wireless-drivers-next/commits/mt76x0-draft
Quoted 6 lines
However since driver is self containging, I think better would be just submit the driver into mt76/mt76x0/ dir upstream and do code merging work as follow-up patches posted on the mailing list. Patches then could be reviewed on regular basic. This will provide support for new mt76x0 devices in kernel quicker. Conflicts with mt76x2u and not yet upstreamed mt7603 could be resolved on the fly.
I did a quick review of the code and it seems (please correct me if I am wrong) there is
a lot of duplicated code with mt76/mt76x2u and mt7601u drivers (i.e:
mcu/eeprom/mac code
is quite the same of the ones used in mt76x2u). Moreover mt76/mt76x2u has been refactored in order to expose usb and mt76x2_common modules where you can use better
802.11 aggregation (using mac80211 per-sta queuing) and A-MSDU support (using tx/rx usb scatter-gather). Moreover mt76x2u has been tested/used by various users till now.
So since mt76x0 will be deeply modified I guess it would be better to start integrating the driver with
mt76/mt76x2u before been merged upstream otherwise will end-up with a lot of integration commits.
What do you think?
Quoted 3 lines
Another issue is firmware submission, how it was done for mt7601u and mt76x2 ?
I guess the fw submission has to be approved by mtk before been pushed to linux-firmware
Quoted 2 lines
Thanks
Stanislaw
Regards,
Lorenzo
Signature · 3 lines
UNIX is Sexy: who | grep -i blonde | talk; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; gasp; mount; fsck; more; yes; gasp; umount; make clean; sleep
A message that is not in the archive (sent off-list or not yet received): CAA2SeNJjHCrO5NyznK+EJt5K6SRVRr_FPZA2i53Z-FnqzkKz_g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org
Quoted 32 lines · Lorenzo Bianconi
Quoted 2 lines
Hi all,
Hi Stanislaw,
Quoted 20 lines · Stanislaw Gruszka
Quoted 7 lines · Lorenzo Bianconi
Quoted 6 lines
Quoted 5 lines
I would like to integrate the driver to kernel via mt76 driver, i.e. add USB hooks and mt76x0 mac/phy code to mt76. This will open possibility to develop support for mt76x2 USB devices as well as mt76x0 PCIe devices in mt76.
Quoted 7 lines
Quoted 5 lines
I have already started supporting mt76x2 USB devices in mt76 since register map is pretty similar to PCIe devices:
https://github.com/LorenzoBianconi/wireless-drivers-next/tree/mt76x2u
I added some usb utility routines so I think we can integrate mt76x0 in mt76 as wellGreat, I'll start to integrate mt76x0 on top of your tree.
So I started to do integration here:
https://github.com/sgruszka/wireless-drivers-next/commits/mt76x0-draftQuoted 6 lines
However since driver is self containging, I think better would be just submit the driver into mt76/mt76x0/ dir upstream and do code merging work as follow-up patches posted on the mailing list. Patches then could be reviewed on regular basic. This will provide support for new mt76x0 devices in kernel quicker. Conflicts with mt76x2u and not yet upstreamed mt7603 could be resolved on the fly.
Quoted 4 lines
I did a quick review of the code and it seems (please correct me if I am wrong) there is
a lot of duplicated code with mt76/mt76x2u and mt7601u drivers (i.e:
mcu/eeprom/mac code
Yes, however there are some subtle differences too.
Quoted 10 lines
is quite the same of the ones used in mt76x2u). Moreover mt76/mt76x2u has been refactored in order to expose usb and
mt76x2_commonmodules where you can use better
802.11 aggregation (using mac80211 per-sta queuing) and A-MSDU support (using tx/rx usb scatter-gather). Moreover mt76x2u has been tested/used by various users till now.
So since mt76x0 will be deeply modified I guess it would be better to start integrating the driver with
mt76/mt76x2u before been merged upstream otherwise will end-up with a lot of integration commits.
Not sure why many integration commits in upstream is a problem. I think having patches posted on mailing list is better than doing them in my "private" tree without any review.
Quoted 1 line
What do you think?
I was thinking about posting mt76x0 driver in a subdir (there is sill some cleanup work need to be done there), wait for upstream mt76x2u integration, then post patches that remove duplication between mt76x2 and mt76x0 and add support for mt76x0e on the way.
Thanks
Stanislaw
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 56 lines · Lorenzo Bianconi
Quoted 32 lines
Quoted 2 lines
Hi all,
Hi Stanislaw,
Quoted 20 lines · Stanislaw Gruszka
Quoted 7 lines · Lorenzo Bianconi
Quoted 6 lines
Quoted 5 lines
I would like to integrate the driver to kernel via mt76 driver, i.e. add USB hooks and mt76x0 mac/phy code to mt76. This will open possibility to develop support for mt76x2 USB devices as well as mt76x0 PCIe devices in mt76.
Quoted 7 lines
Quoted 5 lines
I have already started supporting mt76x2 USB devices in mt76 since register map is pretty similar to PCIe devices:
https://github.com/LorenzoBianconi/wireless-drivers-next/tree/mt76x2u
I added some usb utility routines so I think we can integrate mt76x0 in mt76 as wellGreat, I'll start to integrate mt76x0 on top of your tree.
So I started to do integration here:
https://github.com/sgruszka/wireless-drivers-next/commits/mt76x0-draftQuoted 6 lines
However since driver is self containging, I think better would be just submit the driver into mt76/mt76x0/ dir upstream and do code merging work as follow-up patches posted on the mailing list. Patches then could be reviewed on regular basic. This will provide support for new mt76x0 devices in kernel quicker. Conflicts with mt76x2u and not yet upstreamed mt7603 could be resolved on the fly.
Quoted 4 lines
I did a quick review of the code and it seems (please correct me if I am wrong) there is
a lot of duplicated code with mt76/mt76x2u and mt7601u drivers (i.e:
mcu/eeprom/mac codeYes, however there are some subtle differences too.
Quoted 10 lines
is quite the same of the ones used in mt76x2u). Moreover mt76/mt76x2u has been refactored in order to expose usb and
mt76x2_commonmodules where you can use better
802.11 aggregation (using mac80211 per-sta queuing) and A-MSDU support (using tx/rx usb scatter-gather). Moreover mt76x2u has been tested/used by various users till now.
So since mt76x0 will be deeply modified I guess it would be better to start integrating the driver with
mt76/mt76x2u before been merged upstream otherwise will end-up with a lot of integration commits.Not sure why many integration commits in upstream is a problem. I think having patches posted on mailing list is better than doing them in my "private" tree without any review.
Quoted 7 lines
Quoted 1 line
What do you think?
I was thinking about posting mt76x0 driver in a subdir (there is sill some cleanup work need to be done there), wait for upstream mt76x2u integration, then post patches that remove duplication between mt76x2 and mt76x0 and add support for mt76x0e on the way.
Ack, fine. I modified a little bit mt76x2u/usb architecture moving some parts in common with mt76x0u
in mt76-usb module (e.g. mt76_queue management in tx_status data path, tx_stats workqueue,
some mcu utility routines). In this way the integration will be easier I guess
Regards,
Lorenzo
Quoted 2 lines
Thanks
Stanislaw
Hi
Quoted 15 lines · Lorenzo Bianconi
Quoted 5 lines
Not sure why many integration commits in upstream is a problem. I think having patches posted on mailing list is better than doing them in my "private" tree without any review.
Quoted 7 lines
Quoted 1 line
What do you think?
I was thinking about posting mt76x0 driver in a subdir (there is sill some cleanup work need to be done there), wait for upstream mt76x2u integration, then post patches that remove duplication between mt76x2 and mt76x0 and add support for mt76x0e on the way.
Quoted 12 lines
Ack, fine. I modified a little bit mt76x2u/usb architecture moving some parts in common with mt76x0u
in mt76-usb module (e.g.mt76_queuemanagement intx_statusdata path,tx_statsworkqueue,
some mcu utility routines). In this way the integration will be easier I guessRegards,
LorenzoQuoted 2 lines
Thanks
Stanislaw
I'm currrently working mt76x0u on top of Lorenzo's mt76x2u driver.
Ulli
Hi
Quoted 20 lines · Hans Ulli Kroll
Quoted 20 lines · Lorenzo Bianconi
Quoted 5 lines
Not sure why many integration commits in upstream is a problem. I think having patches posted on mailing list is better than doing them in my "private" tree without any review.
Quoted 7 lines
Quoted 1 line
What do you think?
I was thinking about posting mt76x0 driver in a subdir (there is sill some cleanup work need to be done there), wait for upstream mt76x2u integration, then post patches that remove duplication between mt76x2 and mt76x0 and add support for mt76x0e on the way.
Ack, fine. I modified a little bit mt76x2u/usb architecture moving some parts in common with mt76x0u
in mt76-usb module (e.g.mt76_queuemanagement intx_statusdata path,tx_statsworkqueue,
some mcu utility routines). In this way the integration will be easier I guess
Quoted 8 lines
Quoted 6 lines
Regards,
LorenzoQuoted 2 lines
Thanks
StanislawI'm currrently working mt76x0u on top of Lorenzo's mt76x2u driver.
Hmm, I think efforts should be somehow synchronized here.
I have almost ready for post patches adding mt76x0 driver to the kernel. Some cleanup work is probably needed, but I think they can be reviewed and merged. They do not conflict with patches currently posted Lorenzo except small changes in mt76.h and Makefile files, what can be easy to resolve.
Thanks
Stanislaw
Hi
Quoted 4 lines · Stanislaw Gruszka
Hi
I would like to announce mt76x0 driver for MT7610U USB dongles:
Quoted 8 lines
https://github.com/sgruszka/mt76x0
mt76x0 is based on Jakub's mt7601u mac80211 driver and is intended to be integrated in the linux kernel.
Currently only Linksys AE6000 (ID 13b1:003e) in on USB id's list and 5GHz does not work.
here are my changes for working 5Ghz band and more USB ID's form my side
phy.c +2 -1
@@ -350,7 +350,7 @@ mt76x0_phy_set_band(struct mt76x0_dev *dev, enum nl80211_band band)static void mt76x0_phy_set_chan_rf_params (struct mt76x0_dev *dev,u8 channel,u16 rf_bw_band) { -u16 rf_band = rf_bw_band &0xff00 ; +u16 rf_band;u16 rf_bw = rf_bw_band &0x00ff ;u32 mac_reg;u8 rf_val;
@@ -367,6 +367,7 @@ mt76x0_phy_set_chan_rf_params(struct mt76x0_dev *dev, u8 channel, u16 rf_bw_bandfor (i =0 ; i <ARRAY_SIZE (mt76x0_frequency_plan); i++) {if (channel == mt76x0_frequency_plan[i].channel) { + rf_band = mt76x0_frequency_plan[i].band;if (bSDM) freq_item = &(mt76x0_sdm_frequency_plan[i]);
usb.c +23 -1
@@ -20,7 +20,29 @@#include "trace.h" static struct usb_device_id mt76x0_device_table[] = { - {USB_DEVICE (0x13b1 ,0x003e ) }, + {USB_DEVICE (0x148F ,0x7610 ) },/* MT7610U */ + {USB_DEVICE (0x13B1 ,0x003E ) },/* Linksys AE6000 */ + {USB_DEVICE (0x0E8D ,0x7610 ) },/* Sabrent NTWLAC */ + {USB_DEVICE (0x7392 ,0xa711 ) },/* Edimax 7711mac */ + {USB_DEVICE (0x7392 ,0xb711 ) },/* Edimax / Elecom */ + {USB_DEVICE (0x148f ,0x761a ) },/* TP-Link TL-WDN5200 */ + {USB_DEVICE (0x148f ,0x760a ) },/* TP-Link unknown */ + {USB_DEVICE (0x0b05 ,0x17d1 ) },/* Asus USB-AC51 */ + {USB_DEVICE (0x0b05 ,0x17db ) },/* Asus USB-AC50 */ + {USB_DEVICE (0x0df6 ,0x0075 ) },/* Sitecom WLA-3100 */ + {USB_DEVICE (0x2019 ,0xab31 ) },/* Planex GW-450D */ + {USB_DEVICE (0x2001 ,0x3d02 ) },/* D-LINK DWA-171 rev B1 */ + {USB_DEVICE (0x0586 ,0x3425 ) },/* Zyxel NWD6505 */ + {USB_DEVICE (0x07b8 ,0x7610 ) },/* AboCom AU7212 */ + {USB_DEVICE (0x04bb ,0x0951 ) },/* I-O DATA WN-AC433UK */ + {USB_DEVICE (0x057c ,0x8502 ) },/* AVM FRITZ!WLAN USB Stick AC 430 */ + {USB_DEVICE (0x293c ,0x5702 ) },/* Comcast Xfinity KXW02AAA */ + {USB_DEVICE (0x20f4 ,0x806b ) },/* TRENDnet TEW-806UBH */ + {USB_DEVICE (0x7392 ,0xc711 ) },/* Devolo Wifi ac Stick */ + {USB_DEVICE (0x0df6 ,0x0079 ) },/* Sitecom Europe B.V. ac Stick */ + {USB_DEVICE (0x2357 ,0x0105 ) },/* TP-LINK Archer T1U */ + {USB_DEVICE_AND_INTERFACE_INFO (0x0E8D ,0x7630 ,0xff ,0x2 ,0xff )},/* MT7630U */ + {USB_DEVICE_AND_INTERFACE_INFO (0x0E8D ,0x7650 ,0xff ,0x2 ,0xff )},/* MT7650U */ {0 , } };
Greetings
Hans
Stanislaw Gruszka
AppliedHi
Quoted 1 line · Hans Ulli Kroll
here are my changes for working 5Ghz band and more USB ID's form my side
I applied the changes and pushed to github repo.
Thanks
Stanislaw
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 9 lines · Stanislaw Gruszka
Hi
Quoted 1 line · Hans Ulli Kroll
here are my changes for working 5Ghz band and more USB ID's form my side
I applied the changes and pushed to github repo.
Thanks
Stanislaw
Hi all,
brief update on mt76x2u support in mt76 driver: I added the support for tx/rx data channels and I am able to successfully connect to an unencrypted AP.
I extended the usb utility layer that can be used to support mt76x0 in mt76 driver. Moreover I reused as mach as I can mt76x2 routines since the register map is pretty similar with the one used by mt7612u and similar chipsets (for the moment I just exported requested symbols). Next steps are add encryption support and improve driver stability.
Regards,
Lorenzo