Interference in wireless ad hoc networks not only causes packet loss and delay, but also leads to excessive energy consumption. It is necessary to mitigate interference in order to improve transmission and energy efficiencies. To achieve this objective, a cross-layer routing (XLR) protocol for performance optimization is proposed. Unlike existing routing protocol, the XLR protocol employs introduced interference level and energy level to make routing decision based on a route selection scheme. Interference level is computed based on received request-to-send (RTS), clear-to-send (CTS) and acknowledgment (ACK) packets, and energy level of a node is calculated based on its initial and residual energy in order to prolong network lifetime. Finally, simulation results show that the XLR protocol achieves higher energy efficiency and better performances than both dynamic codeword routing (DCR) and ad hoc on-demand distance vector routing (AODV) protocols in terms of throughput, packet delivery ratio and delay.