Your answer is a cabling issue, you proved it... Correctly functioning Linksys routers follow industry standards and will easily push 100 meters on a properly cabled and terminated good CAT5E cable run. Find a good cable tester (Fluke, Wavetek, or other REAL cable tester, not a cheap LAN or continuity tester) and have the run certified to make sure, there is no reason it shouldn't work at 100 feet, or 200, or even 300 feet perfectly!!! I also HIGHLY recommend NOT crimping RJ45 ends directly on the cable, terminate the cable properly with a quality jack (such as Panduit or Leviton) and the correct tools and use pre-terminated, molded patch cords, NEVER make your own patch cords, especially with voice and PoE devices. Any certified CAT5E cable should be fine, most are, even the Home Depot/Lowes stuff is although I question the quality control of the cable at times, we have had to repull more than one run because it was bad... now if was it the original installer or the cable itself that was the problem is unclear sometimes though.
One other possibility is your PoE injector is really weak or defective, is it on the router or phone end?
And although I wouldn't recommend it in production for just this reason, you could always put a cheap little 5-port 10/100 switch at the end of the cable run and plug the phone into that, it is essentially a "repeater" and will regenerate the signal, but then again if it is at 100 feet you are masking the problem, not fixing it.