Tennis: Birthday boy Federer beats Ferrer for semi-final spot