After doing some research, I've just used Broadcom's own driver. It's not ideal, it taints the kernel with non-GPL stuff, but it's working (kernel-tainting is just a philosophical problem, it just has to do with licenses and has no effect whatsoever in how the driver works). I'll just have to recompile the module every time I update the kernel... oh well.
So, I got the driver from http://www.broadcom.com/support/802.11/linux_sta.php, untarred it and tried to compile it (running
make in the same directory where the file was uncompressed).
After a bunch of errors I've edited the file at
src/wl/sys/wl_cfg80211.c (which came with the tar file), replacing every occurrence of
KERNEL_VERSION(2, 6, **) with
0 (zero). After compiling the wl.ko module, I ran
modprobe lib80211 and then
insmod wl ; modprobe wl, and voilà, problem solved.
To make it simpler, the commands below install the 64 bits module:
tar -xvzf hybrid-portsrc_x86_64-v5_100_82_112.tar.gz -C wldir
sed -e 's/KERNEL_VERSION(2, 6, ..)/0/g' src/wl/sys/wl_cfg80211.c -i
For the 32 bits one, just replace