I came across this post, and then further navigated to the documentation page explaining static and dynamic configuration
In the output of docker run traefik:v2.6 --help I see this commandline argument
--experimental.kubernetesgateway (Default: "false")
Allow the Kubernetes gateway api provider usage.
...
--providers.kubernetesgateway (Default: "false")
Enable Kubernetes gateway api provider with default settings.
So it seems like that's the only command line arguments you need to pass to enable the gateway api. The way I updated the configuration is by kubectl describe deploy traefik (reminding the reader that I'm using k3s) and I pasted the output to a new yaml file and deleted the status key entirely. Then I added the two keys above to the args section, and ran kubectl delete deploy traefik then kubectl apply -f <yamlfile>. Now the new traefik deployment runs with the two arguments.
However, this didn't solve the problem. 16 minutes after applying but still Message: Waiting for controller.