

General:
--------

- Check what headers/parts should be included by user-mode programs
  (#ifdef KERNEL)
- Check all input data in ioctls/setsockopt for security bugs
- Document code with Doxygen standard
- Create a libvisdn for channel manipulation functions?
- Define in which contexts all the various functions may be called. For example
  ppp needs ppp_input() to not be called in hard-irq context and we either must
  force all vISDN xmit functions callers to not be in hard-irq context or queue
  frames in visdn-ppp.ko and use a tasklet to pass them to ppp
- What should we do when a frame is bigger than the FIFO size on hardware?

Build system:
-------------

- Avoid libtool to install chan_visdn.a, chan_visdn.la, run ldconfig and
  complain about non-standard directory location
- Conditionally build kfifo!

chan_visdn:
-----------

- Echo canceller produces some strange noise
- When the module fails initialization, forbid calls and report an error
- Record call failures and failure type in order to put an interface offline
  if not working.
- Make call parking feature enabling configurable
- Fix/complete Progress indicators to notify interworking with non-ISDN
- Asterisk's design makes difficult to implement some sort of parameter
  negotiation so it is impossible to know what bearer capabilities are
  accepted by a destination, if it supports overlap dialing and so on...
- User-mode call bumbing
- Complete sequence if the user is sending partial CLI
- When lapd module is removed the poll routine goes in infinite loop with
  DL-RELEASE-CONFIRM return codes
- When the remote party responds RELEASE COMPLETE with "User Busy" cause
  we respond to * "CHANUNAVAIL"
- Rewrite netlink code to use proper macros
- When path-enabling ioctl fails the call is not hung up
- When unloading module or rebooting the machine, send TEI_REMOVE to every 
  interface for every TEI


libq931:
--------

- ECT (explicit call transfer) (ETS 300 369-1) (367, 368, 369)
- Call bumbing
- Implement Called/Calling party subaddress IE
- Implement Congestion level IE
- Implement Keypad facility IE
- Implement More Data IE (?)
- Implement Network-specific facilities IE
- Implement Repeat Indicator IE
- Implement Segmented Message IE (?)
- Implement Signal IE
- Implement Transit Network Selection IE
- Implement User-User Information IE
- Implement ETS 300 125 Appendix III (Optional basic access deactivation
  procedures)
- Complete decoding of BC, HLC, LLC
- Make libq931 a daemon to which clients can connect.
  Invent a protocol (CAPI-ng :)) to use for such connection.
- When we receive a SETUP_ACK after having sent DISCONNECT what should we do?
  Send STATUS? Ignore it?

app_visdn_ppp:
--------------

timer:
------

- Add open/release functions to disable the timer when no users are using it

visdn_core:
-----------

- Use correct _IOR/_IOC/_IOW macros!!!
- Channel bundling
- Allocate a single major number for control devices?

lapd:
-----

- When the socket on a TE port is bound, do a TEI Verify?
- When the socket on a TE port is closed send a TEI Verify?

- When allmulti flag is changed while the interface is UP, Tei Mgmt entities
  are not released/allocated correctly. The interface needs to be put down and
  than up to make it work

- Implement SOCK_RAW sockets (?)

- Implement listen backlog maximum size

- Implement frame acknowledging throught outgoing i-frames instead of specific
  RR

- Add lapd_ptr to struct net_device. Currently we're using atalk_ptr and it is
  safe, since ISDN interfaces will never run AppleTalk, however it is an ugly
  hack and should be fixed.

- Add AF_LAPD to linux/include/linux/socket.h
- Add PF_LAPD to linux/include/linux/socket.h
- Add SOL_LAPD to linux/inclode/linx/socket.h ????

- Add ARPHRD_LAPD to linux/include/linux/if_arp.h
- Add ETH_P_LAPD to linux/include/linux/if_ether.h
- See ioctl-number.txt and mail <mec@shout.net> and register an IOCTL numbers

- The interface role (in the ISDN network) is determined by the IFF_ALLMULTI
  flag, a specific flag would be better.

- Implement ETS 300 125 Appendix III (Optional basic access deactivation
  procedures)

visdn-ec:
---------

- Add LEC disabler tone detection

visdn-netdev:
-------------

- Backlog frames dropped by netif_rx
- Reallocate channel ID from the beginning instead of incrementing every time

visdn-ppp:
----------

- Reallocate channel ID from the beginning instead of incrementing every time
- There is a race condition between interface creation and SuSE scripts bringing
  the interface up and down

visdn-streamport:
-----------------

- Reallocate channel ID from the beginning instead of incrementing every time
- Fix fifo jitter buffer

hfc-4s:
-------

- Finish PCM bus support (and remove workaround for too big kmalloc)
- Use memcpy_toio
- Reintegrate BERT support
- There may be some race condition between unload an state_change_work

hfc-pci:
-------

- FIX FIFO free calculation and queue handling
- Finish PCM bus support
- Reintegrate E-channel sniffing
- There may be some race condition between unload an state_change_work

hfc-e1:
-------

hfc-usb:
--------

- First received frame is dropped
- Finish implementing T1 and T3 timers

vgsm:
-----

- Handle hung micros by timing out writes/reads and resetting the board
- Implement CODEC write queueing and CODEC read waiting

chan_vgsm:
----------
- Implement network listing command
- Implement reconfiguration of operator selection on reload
- Should we hang-up on Congestion and Busy indications?!?
- Fix parsing of:

Oct 24 18:59:08 ERROR[16061]: module.c:3696 vgsm_update_smond: Cannot parse BER '^SMOND:410,07,0068,2B05,51,15,86,25,25,0,5,0,1,410,07,0068,2A81,50,10,86,410,07,0068,2A82,51,6,86,410,07,0068,2DB7,52,11,86,410,07,0068,2AF1,52,3,86,4107,0000,,55,13,86,410,07,0068,2B04,51,2,86,2,14,0'

Oct 24 18:58:53 ERROR[16053]: module.c:3556 vgsm_module_update_common_cell_info: Cannot parse LAC ''

Oct 24 20:05:11 ERROR[1580]: module.c:3167 vgsm_module_hangup: Error hanging up: NO CARRIER (2)
Oct 24 20:05:12 ERROR[23511]: module.c:3696 vgsm_update_smond: Cannot parse BER '^SMOND:410,07,0068,2B05,51,15,90,9,21,0,7,0,3,410,07,0068,2A81,50,10,90,,,,,,,90,,,,,,,90,,,,,,,90,,,,,,0,,,,,,,90,2,12,0'                                     
