A good place to start would be getting a subscription to the Linux Journal. http://www.linuxjournal.com. They have informative articles on driver programming and kernel hacking. Also you should by a book on C, not C++. All the code I've seen for the kernel is C and assembly. Also you really shouldn't have to know too much assembly to write a driver for your modem. I seriously doubt that IBM is going to give you too much info about the modem, but best of luck.