In this paper, we present a generic controller that ensures fair and efficient operation of IEEE 802.11 infrastructure wireless local area networks (WLANs) with multiple co-channel access points. Our controller addresses performance issues of long-lived TCP transfers in multi-AP WLANs, by overlaying a coarse time-slicing scheduler on top of a cascaded fair queuing scheduler. The time slices and queue weights, used in our controller, are obtained from the solution of a constrained utility optimization formulation. A study of the impact of coarse time-slicing on TCP is also presented in this paper. We also present a methodology to improve the performance of co-existing short-lived and interactive TCP flows. Finally, we report the results of experiments performed on a real testbed, demonstrating the efficacy of our controller.