I ran into the same problem several revs back, and resorted to adding bandwidth statements to each of the 3020 interfaces:
int gi x/x
That took care of it for me.
We are somewhat a slave to the information from the device. Check your device for the values of:
These are the OIDs we are checking for the declared speed. If your device is responding incorrectly, then you may want to alert Cisco. If we do not seem to be reporting the data correctly, please let me know.
What IOS version are you running on those switches? I ran into the same problem (as well as a few others) with the IOS that came loaded on the switch. In my case it was 12.2(25)SEF1 and the problems were resolved when I upgraded to 12.2(40)SE2.
I ran into this the other day... I was running 12.2.(25)SEF1 on one out of 8 switches... and the others were running 12.2(27)... I upgrade the switch and it is working now.