Linear precoding for MIMO channels