As a manager, it is your duty and responsibility to produce with the people you have, motivate them, and understand their problems both inside and outside of the workplace, without getting too personal (unless he wants to, and I would still raise some warnings, you are his boss, not his friend) or interested in details that have no relation with the job. Yearly assessment meetings are also for this, but you can call an assessment meeting any time, with the important point that it's not for productivity assessment, rather a "mood assessment". Don't be an inquisitor. Use a relaxed setup: an afterwork, or a beer break, but still keep the fact between you and him, and at the workplace, not in a pub. Behave friendly, but without being a friend.
If the guy is in a bad period, firing him is not the solution. Firing is for people that effectively damage the company. Firing someone from a company is like killing brain cells: a fired person will bring all his knowledge with him, leaving none to you, and worst of all it will bring it to a competitor.
Allocate him to simpler tasks for a while, or propose him a part-time. Work is not the only part of life. Marriages go bust, health can go bust, parents can die or be sick, children can be troublesome. If the guy is smart and at the senior level, he is not a slacker. He probably has troubles. Unless he really hinders your productivity, I'm sure you can still have him productive somehow. Also, never underestimate that little ugly sickness called depression. It's one of the major diseases today. Having a good company shrink can be a good idea sometimes (if he is a qualified person), but remember that depression is a health issue, not a mental state, so a psychological counselor can help in recognizing the problem and providing suggestions to him, not fix it. That's something a doctor has to do.
How much should you wait? in order to obtain results, it depends on his problem. In order to act, I think you shouldn't wait for the situation to adjusts by itself. You should (must) do something, as it's your responsibility. Lower the pressure on him, have a chat, check how he behaves, and then decide how to proceed, eventually adjusting your decision as time passes. But never let him feel guilty unless he is acting in a consciously disruptive way.
A good idea could be to have him pair program with someone else. You will still keep him active (in terms of experience and suggestions) without too heavy involvement in the project. If he stumbles, there's the pair programmer who can help him out.
And another important point, keep other employees oblivious of this treatment. You must be ready to properly take decision for everybody, without being too transparent on why/how you take them, otherwise you could be accused of favoritism. If your company is new to pair programming, say to the others you are trying an experiment, and potentially also with top managers (and be ready to justify it, eventually putting some force into it). You are the interface of your team, you should protect them, defend them, keep the "upper floors" heat from distracting or disgruntling them, and direct them so that they can give the best they can. You should not let top managers mess with the private parts of your team, unless there's a real need to.