A Cross-Layer Approach To Increase Spatial Reuse And Throughput For Ad Hoc Networks