A Distributed Channel Allocation Algorithm for Multi-channel Wireless Networks