Btw, I must admit I like the idea...
Just hard to track it, and do you update the data source as well? If so, we need to update the rrdtool file, which currently does not happen.
Ok, since you're interested, let's think about this.
So, we allow |query_ifSpeed| as an upper limit. We add a second option, a checkbox, "Upper Limit Never Changes". If checked, that addresses all the above and we ignore a new upper limit if it changes. There are practical reasons for this.
If that box is unchecked, then we will have a few choices.
1) If the ifSpeed decreases, we may want to consider keeping upper limit where it is for historical graphing purposes. We can give the user this option somewhere in a configuration.
2) If the ifSpeed increases, we can increase the upper limit. Yeah, you'd have to change it in the RRD. It's been a while so I'm not sure if this can be done or not. If not, your workaround is to dump to XML, make changes to the XML file, then pull your XML file into a "new" RRD. I used to have an algorithm to accomplish the above, albeit in perl, but it's long-gone. It's simple enough to do though.
3) Maybe go a step further and note that if the ifSpeed changes X times in Y amount of time (3 changes in 2 months maybe), we just dump the upper limit altogether. Of course, make this user-configurable.
I dunno, I'm just thinking of things off the top of my head at this point.