Cross-layer design optimizations in wireless protocol stacks