Hi,
Sorry, but 9Mbit/s is less than poor on a cabled 100Mbit-Network. I just copied a dvd imag file of 4.3 Gig in 9.30 mins. So now let’s calculate:
4.3gig = 4.3 x 1024 x 8 Mbit = 35,225.6 Mbit
35,255.6Mbit / 570 s = 61.85 Mbit/s
That’s the average netto data rate of that transmission. And that’s what you should reach on a cabled 100Mbit-Network. It’s about 1/3 of the brutto data rate what we need for headers and network managment. So in the best case you can reach 2/3 of the brutto data rate as netto data rate which means 66Mbit/s on a cabled 100Mbit-Network.
To go back to the original problem: It is for sure not the smb protocol which is fast and stable (not everything that comes from M$ is bad ;)). I did this transmission with samba from Suse 9.3 to Suse 11.1. No problem with this. So the reason for the problem must be placed on the layers under the samba protocol.
So I think the best thing to resolve it is first to check the hardware like cable, switch, nics. A problem like this that the network connection to one port works fine (in this case the internet connection which is faster than the local one) and to another lames can be caused by a broken port in the switch, a bad cable from the station that lames and the switch etc.
The first thing I would do is to use ping in various ways to make sure that the connection really works. All pings you should do from the linux machine cause I use the linux parameters:
ping ip_of_the_win_box
A normal ping. You should get round trip times less than 0.4ms. If it is like this go on.
ping -s 60000 ip_of_the_win_box
That pings the windows box with 60,000 bytes. That should give you a result of about 11 ms. For the next steps you must be root.
ping -f ip_of_the_win_box
This does a flood ping which means that the pings are sent out as fast as possible. Let it run for a while. You don’t see anything but one (or more dots). Well, on local network you should see only one. After some minutes hit ctrl-c to stop the pings. You should get an average of about 0.2 ms. So the last step is to do a flood ping with big package size.
ping -fs 60000 ip_of_the_win_box
Average should be about 11ms. If this all works fine you can be quite sure that it is not the cabling or the IP-Stack. If not you have to measure cable and perhaps reinstall or reconfigurate your IP installation.
Next step would be to play around with TCP window settings. Also it could be a wrong configured firewall software or a thing like windows defender or any other security software. To make sure that it is not switch all that stuff off and test again.
Ok, enough to try for the moment. If this doesn’t help we go on. 
Greetings
Erik