In this paper, we present a generic plug-and-play controller that ensures fair and efficient operation of IEEE~802.11 infrastructure wireless local area networks with multiple co-channel access points, without any change to hardware/firmware of the network devices. Our controller addresses performance issues of 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 present an improved algorithm for adaptation of the service rate of the fair queuing scheduler and provide experimental results to illustrate its efficacy. We also present the changes that need to be incorporated to the proposed approach, to handle short-lived and interactive TCP flows. Finally, we report the results of experiments performed on a real testbed, demonstrating the efficacy of our controller.