Only a few months since MHDDK 2.0 released and Linux has already changed something! I guess thats not a big surprise.
Changes to Linux Kernel 2.6.39 include the removal of the big kernel lock completely. Since the ioctl of the MHDDK kernel component used the lock, things obviously broke. Moving forward, drivers are encouraged to use their own locks instead of relying on the big kernel lock. We made the changes and tested them without any weird side-effects. The following changes should be made to nirlpk.c.
1. Remove linux/smp_lock.h
// Base module includes
2. Declare a new driver lock
3. Use the new lock instead of the big kernel lock, if the system kernel has an unlocked ioctl.
#define nNIRLP_LOCK() down(&nNIRLP_IOCTL_lock);
#define nNIRLP_UNLOCK() up(&nNIRLP_IOCTL_lock);
This new lock gives us the same protection that we had from the big kernel lock in MHDDK 2.0.