Joint Channel Allocation, Interface Assignment and MAC Design for Multi-Channel Wireless Mesh Networks