Hi, and welcome to LQ.
Your problem is not that dmesg isn't working (it is doing its
job) ... the problem is that your wlan card must be set-up
incorrectly, and keeps filling the kernels ring-buffer with
warnings ... dmesg reads that buffer (which has a limited
size) and prints the contents.
Have a look at the wlan cards set-up. Once the errors are
gone your dmesg will display what you expect.