Remaining Problems: 1. Serialization of access to variables in the llc structure by mac_data_indicate(), timer expired functions, and data_request() . There is not serialization of any kind right now. While testing, I have not seen any problems that stem from this lack of serialization, but it wories me... 2. The code is currently able to handle one connection only, there is more work in register_cl2llc_client() to make a chain of llc structures and in mac_data_indicate() to find back the llc structure addressed by an incoming frame. According to IEEE, connections are identified by (remote mac + local mac + dsap + ssap). dsap and ssap do not seem important: existing applications always use the same dsap/ssap. Its probably sufficient to index on the remote mac only. 3. There is no test to see if the transmit window is full in data_request() as described in the doc p73, "7.5.1 Sending I PDUs" 3th alinea. The pdus presented to data_request() could probably go on the awaiting-transmit-queue (atq). The real difficulty is coding a test to see if the transmit window is used up and to send the queue when space in the window becomes available. As I have no network layer that can generate a continous flow of pdus it is difficult to simulate a remote busy condition and hence to test the code to handle it. 4. A simple flow control algorithm, steering the size of the transmit window would be nice to have.