Wikipedia on the SMB version 2 protocol that RMerlin has already incorporated via Samba 3.6 into Asus WiFi router firmware:
It also introduces the notion of "durable file handles": these allow a connection to an SMB server to survive brief network outages, as are typical in a wireless network, without having to incur the overhead of re-negotiating a new session.
Thanks RMerlin, come to think of it your new Samba 3.6 update has the most important Samba v2.0 feature we need. Which is merely that it works a whole lot better.
SMB 2.0 is disabled by default however, as it can quite drastically reduce performance on some routers where the CPU is the bottleneck. On my RT-AC87U for example, SMB performance dropped from 65 MB/s to 55 MB/s if I enabled SMB 2.0 support.
I kept an (undocumented) nvram setting for people who still want to enable it.
Code:
nvram set smbd_enable_smb2=1
nvram commit
service restart_samba
That works starting with 376.48 Beta 1.
Samba 3.6.24 supports up to SMB 2.02.
For the curious minded, if you run Windows 8, the following Powershell cmdlet will tell you which SMB dialect you are using with each SMB connections:
If you change the supported dialect on the router, you must restart your PC's Workstation service to force it to re-negotiate the dialect used:
Code:
Restart-Service -Force Workstation
You can also use the Services console.
Fun to realize that you are not simply adding new code, but also efficiently scooping up (usefully working and debugged) parts of other open-source WiFi firmware projects and folding them into the Merlin projects.
There is a lot of code moving between various firmware projects out there. The Asuswrt family tree is a quite interesting one. Asuswrt was forked from TomatoUSB, which came from Tomato, which came from HyperWRT (if I remember correctly), which came from the original Linksys FW for the WRT54G.
Asuswrt also borrowed code from DD-WRT (the PPTP support) OpenWRT (I forgot which parts), the original WL500G firmware by Oleg, Asuswrt-Merlin (OpenVPN code which I had taken from TomatoVPN).
Personally, I've taken code from OpenWRT (Samba 3.6), WL500G (various kernel patches, part of ipset support), Tomato (IPTraffic and OpenVPN). I also keep an eye on the development of DD-WRT and Padavan's FW - not likely that I'll get any code from either of these as they are quite different from mine, but they allow me to see what's going on out there. Padavan's changelog is a good way for me to quickly discover if a new Dropbear or miniupnpd version was released, for example.
This is a pretty good example of what Open Source can bring to the table when done right: lots of code moving between various projects.