There's always the option of changing the link speed over DRP too.
And I'm trying to figure out how I can make the transceiver work using the QPLL by default, but still have the option to configure the CPLL. I see a control signal that looks like it does what I want but I can't get the the Vivado IP wrapper to let me actually see it.
Maybe I should just instantiate the raw GTXE2_CHANNEL primitive (which honestly I probably should have been doing all along).