|Release 6.1.2.007-PIM-2.6-1.9 incremental patch|
Another patch from Vincent Zweije that fixes issues with the diagnostic output
|Release 6.1.2.007-PIM-2.6-1.8 incremental patch|
Patches to get the driver to work in 2.6.26
(thanks again to Vincent Zweije for all this work!)
* Fix overflow check when incrementing counter (reprise)
Newer gcc looks through the earlier (shallow) fix for the overflow
problem. The new fix should really work (famous last words).
* Prevent compiler warning for uninitialized variable
Cosmetic. With all the inlining, gcc is getting too clever...
* Fix initialization of cnxtty_driver structure changed in linux-2.6.26
Tty operation function pointers were factored into a separate struct
tty_operations. Reflected the factorization in cnxtty_driver.
* Fix initialization of CnxAdslDebugQuery /proc entry
A field was removed from struct proc_dir_entry. Modified
initialization of CnxAdslProcEntry to be less sensitive to fields
Many patches to bring the driver up to date, it should now also work on SMP systems
(thanks again to Vincent Zweije for all this work!)
Use interrupt-safe spin locking:
Whoops! Must use irqsave/irqrestore when compiling for SMP, even when
actually running on UP. I had a nice spinlock bug inside an interrupt
routine because of this.
Reflect move from SA_SHIRQ to IRQF_SHARED in linux-2.6.18:
Reflect rename of IRQ flag. Saves a lot of warnings and is better
Update to reflect linux-2.6.20 termios->ktermios change:
At some places in the linux kernel, usage of struct termios was changed
to the similar struct ktermios. I don't think the change has any effect
on the cnxadsl module, but the compiler gives type errors, so I changed
the struct name where appropriate.
Check return status of pci_enable_device:
The return status of pci_enable_device should be checked. Doing so is
easy, so I implemented it.
Fix overflow check when incrementing counter:
Apparently, integer overflow in C is undefined, and gcc now optimises
|Release 6.1.2.007-PIM-2.6-1.6 incremental patch|
Thanks to Vincent Zweije the driver has been updated to work with linux kernel 2.6.20:
* In 2.6.18, the default calling sequence was changed to pass up to
three function parameters in registers.
This is a problem because:
- calls into dpcontroller.o now use the new calling sequence,
whereas dpcontroller.o expects the old, and
- calls out of dpcontroller.o still use the old calling sequence,
whereas the called functions expect the new.
I have fixed these by:
- setting explicit calling conventions on functions called from
- setting explicit calling conventions on functions exported by
- wrapping calls from dpcontroller.o to the kernel-provided
vsprintf with an auxiliary vsprintf_dpc, and
- making the memcpy inside dpcontroller.o a local symbol so
calls to memcpy from outside dpcontroller.o will link to the
* In 2.6.19, the deprecated linux/config.h was removed.
It was included in several places.
I have fixed this by including KernelModule/Version.h instead, and
in that file including either linux/version.h or linux/config.h,
depending on the kernel version.
* In 2.6.19, interrupt handlers lost their 3rd argument which
contained register contents.
I removed the argument from ChipALIsrHandler. It wasn't used anyway.
* In 2.6.20, INIT_WORK lost its third argument, which was a
context pointer to the thread to launch.
The thread to launch is now determined with some pointer arithmetic.
(The work structure is a member of the thread structure.) It appears
to be done that way in the kernel as well.
|Release 6.1.2.007-PIM-2.6-1.5 incremental patch|
Updated the driver so that it works with kernel 2.6.16+,
some changes were made to the kernel API (thanks to Vincent Zweije).
|Release 6.1.2.007-PIM-2.6-1.4 incremental patch|
Some trivial fixes (thanks to Armijn Hemel for noticing a spelling mistake in an error assertion).
Fixed a memory allocation problem which would almost certainly have caused some instability
(many thanks to Vincent Zweije for looking into and fixing this problem)
|Release 6.1.2.007-PIM-2.6-1.3 incremental patch|
Merged some fixes sent in by Andrew de Quincey (Thanks!):
Fix pci device enabling/disabling (15032005 patch only partially fixed the problem)
Remove some dead code
Fix kernel threads so that they daemonize correctly and hence do not stay in a Zombie state forever
Added code to trap kernel thread names that are too long
(someone reported they were too long but this does not appear to be the case!)
|Release 6.1.2.007-PIM-2.6-1.2 incremental patch|
Minor changes adding debug code and fixing a few bugs (tested on 22.214.171.124)
Updated the PCI device API to use pci_get_device instead of pci_find_device
|Release 6.1.2.007-PIM-2.6-1.1 incremental patch|
Applied a cleanup patch to remove all the compile time warnings
Thanks to Andrew Walrond for sending this to me
Upgraded to 2.6.x version, this will no longer work with older versions of the linux kernel.
Forked from release 6.1.2.007-PIM-2
Very many changes including:
Converted CDSL_ADAPTER_T (CardMgmt.h) structure variables that used the task queue to:
DSLInterruptQueStr to a tasklet
ARMInterruptQueStr to a tasklet
PGBkgndQueStr to a work queue
SITaskQueStr to a work queue
Converted kthread_t (KThread.h) structure variables that used the task queue to:
tq to a work queue
Upgraded the module build process (Makefile)
Upgarded the module init, exit and params (CardMgmt.c)
Upgraded the ISR (ChipALIsrHandler ChipALCdsl.c)
Changed a lot of the locking to remove globally disabling interrupts which is no longer possible
Code to be considered alpha, it works but problems include:
- Kernel threads stay in zombie state when module is unloaded, but who cares because of the next problem
- When a ppp session is started the module will no longer unload, even if we kill the ppp session. Some
ressource is not freed correctly
- I doubt this will work reliably on an SMP system
- I doubt this will work at all with two cards installed