Cameron,

Andrea Arcangeli suggested the original patch, which Dag's then
cleaned up with his patch that was submitted and accepted by Linus.

Since the patch went in, I've used IrDA successfully with my
Ericsson R520m. However, I've just tried using an Ericsson T39
with a 2.4.12 based kernel and found that it doesn't work -- the
very similar R520 works fine.

The T39 is correctly discovered:

 > cat /proc/net/irda/discovery 
 IrLMP: Discovery log:

 nickname: T39, hint: 0x9124, saddr: 0xa9cc55f3, daddr: 0x34e89d79

However, if "dip" is used to set up an ircomm connection, there's
no character echo from the phone, and the phone doesn't respond
to commands. The phone also disappears from /proc/net/irda/discovery

Furthermore, "dip" can't be exited cleanly -- a kill -9 is
required.

The symptoms are identical to the flow control problems that were
the original problem with the R520.

I've appended the output of dmesg with irda debug enabled.

I'd appreciate any suggestions as to where to look to track this
down. Andrea developed and tested his patch on a T39, so I wander
whether Dag's patch was not quite correct, and works with the
R520 but not the T39. I wander if Andrea has had any luck with
Dag's patch on his T39? It might be that our T39's have newer
firmware versions and hence behave differently to Anrea's T39 and
my R520.

Thanks,
Ian

----

nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=2, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_recv_discovery_xid_rsp()
irlap_recv_discovery_xid_rsp(), daddr=34e89d79
EXTENSION
irlap_do_event(), event = RECV_DISCOVERY_XID_RSP, state = LAP_QUERY
irlap_state_query(), daddr=34e89d79
hashbin_insert_R0bbf1ddb()
enqueue_first()
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=3, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=4, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=5, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=255, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size -1 ; 32 sent of 40
next LAP state = LAP_NDM
irda_device_set_media_busy_R7238750c(FALSE)
irlmp_link_discovery_confirm()
irlmp_add_discovery_log()
hashbin_remove_R1938d18d()
dequeue_general()
hashbin_remove_this_R557000a7()
dequeue_general()
hashbin_insert_R0bbf1ddb()
enqueue_first()
dequeue_first()
dequeue_first()
dequeue_first()
dequeue_first()
dequeue_first()
dequeue_first()
dequeue_first()
dequeue_first()
irlmp_discovery_confirm()
irlmp_notify_client()
nsc_ircc_pio_write()
nsc_ircc_pio_write(), warning, FIFO not empty yet!
nsc_ircc_pio_write(), fifo_size 6 ; 8 sent of 8
irlmp_discovery_timer_expired()
irlmp_expire_discoveries()
irlmp_do_lap_event(), EVENT = LM_LAP_DISCOVERY_REQUEST, STATE = LAP_STANDBY
irlmp_state_standby()
irlap_discovery_request(), nslots = 6
irlap_do_event(), event = DISCOVERY_REQUEST, state = LAP_NDM
irlap_send_discovery_xid_frame(), s=0, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=1, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=2, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=3, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=4, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_recv_discovery_xid_rsp()
irlap_recv_discovery_xid_rsp(), daddr=34e89d79
EXTENSION
irlap_do_event(), event = RECV_DISCOVERY_XID_RSP, state = LAP_QUERY
irlap_state_query(), daddr=34e89d79
hashbin_insert_R0bbf1ddb()
enqueue_first()
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=5, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size 1 ; 30 sent of 30
next LAP state = LAP_QUERY
irlap_do_event(), event = SLOT_TIMER_EXPIRED, state = LAP_QUERY
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
irlap_send_discovery_xid_frame(), s=255, S=6, command=1
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size -1 ; 32 sent of 40
next LAP state = LAP_NDM
irda_device_set_media_busy_R7238750c(FALSE)
irlmp_link_discovery_confirm()
irlmp_add_discovery_log()
hashbin_remove_R1938d18d()
dequeue_general()
hashbin_remove_this_R557000a7()
dequeue_general()
hashbin_insert_R0bbf1ddb()
enqueue_first()
dequeue_first()
dequeue_first()
dequeue_first()
dequeue_first()
dequeue_first()
dequeue_first()
dequeue_first()
dequeue_first()
irlmp_discovery_confirm()
irlmp_notify_client()
nsc_ircc_pio_write()
nsc_ircc_pio_write(), warning, FIFO not empty yet!
nsc_ircc_pio_write(), fifo_size 6 ; 8 sent of 8
ircomm_tty_open()
hashbin_find()
ircomm_tty_open(), ircomm%d0, count = 1
ircomm_tty_open(), IrCOMM device
ircomm_tty_startup()
ircomm_open(), service_type=0x06
ircomm_open_tsap()
irlmp_slsap_inuse()
irlmp_find_free_slsap(), next free lsap_sel=1b
irlmp_next_lsap_state(), LMP LSAP = LSAP_DISCONNECTED
hashbin_insert_R0bbf1ddb()
enqueue_first()
irttp_open_tsap_Ra3e747d1(), stsap_sel=1b
hashbin_insert_R0bbf1ddb()
enqueue_first()
hashbin_insert_R0bbf1ddb()
enqueue_first()
ircomm_next_state: next state=IRCOMM_IDLE, service type=6
ircomm_tty_attach_cable()
ircomm_tty_ias_register()
irias_new_object_R5e5f0101()
hashbin_insert_R0bbf1ddb()
enqueue_first()
hashbin_insert_R0bbf1ddb()
enqueue_first()
hashbin_insert_R0bbf1ddb()
enqueue_first()
irlmp_register_service_Re6fe6c31(), hints = 0480
hashbin_find()
hashbin_insert_R0bbf1ddb()
enqueue_first()
irlmp_register_client_R17f18bfb()
hashbin_find()
hashbin_insert_R0bbf1ddb()
enqueue_first()
ircomm_tty_do_event: state=IRCOMM_TTY_IDLE, event=IRCOMM_TTY_ATTACH_CABLE
ircomm_tty_state_idle: state=IRCOMM_TTY_IDLE, event=IRCOMM_TTY_ATTACH_CABLE
ircomm_tty_next_state: next state=IRCOMM_TTY_SEARCH, service type=6
irlmp_discovery_confirm()
irlmp_notify_client()
irlmp_notify_client()
discovery->daddr = 0x34e89d79
ircomm_tty_discovery_indication()
ircomm_tty_do_event: state=IRCOMM_TTY_SEARCH, event=IRCOMM_TTY_DISCOVERY_INDICATION
ircomm_tty_state_search: state=IRCOMM_TTY_SEARCH, event=IRCOMM_TTY_DISCOVERY_INDICATION
iriap_open_R23819d7f()
iriap_register_lsap()
irlmp_slsap_inuse()
irlmp_find_free_slsap(), next free lsap_sel=1c
irlmp_next_lsap_state(), LMP LSAP = LSAP_DISCONNECTED
hashbin_insert_R0bbf1ddb()
enqueue_first()
hashbin_insert_R0bbf1ddb()
enqueue_first()
irlmp_connect_request_R506d665b(), slsap_sel=1c, dlsap_sel=00, saddr=a9cc55f3, 
daddr=34e89d79
hashbin_find()
hashbin_remove_R1938d18d()
dequeue_general()
hashbin_insert_R0bbf1ddb()
enqueue_first()
irlmp_do_lsap_event(), EVENT = LM_CONNECT_REQUEST, STATE = LSAP_DISCONNECTED
irlmp_state_disconnected()
irlmp_state_disconnected(), LM_CONNECT_REQUEST
irlmp_next_lsap_state(), LMP LSAP = LSAP_SETUP_PEND
irlmp_do_lap_event(), EVENT = LM_LAP_CONNECT_REQUEST, STATE = LAP_STANDBY
irlmp_state_standby()
irlmp_state_standby() LS_CONNECT_REQUEST
irlmp_next_lap_state(), LMP LAP = LAP_U_CONNECT
irlap_connect_request(), daddr=0x34e89d79
irlap_do_event(), event = CONNECT_REQUEST, state = LAP_NDM
irlap_param_baud_rate(), baud rate = 0x1fe
irda_insert_integer(), using 2 bytes
irda_insert_integer(), pi=0x1, pl=2, pi=510
irda_insert_integer(), pi=0x82, pl=1, pi=1
irda_insert_integer(), pi=0x83, pl=1, pi=63
irda_insert_integer(), pi=0x84, pl=1, pi=127
irda_insert_integer(), pi=0x85, pl=1, pi=255
irda_insert_integer(), pi=0x86, pl=1, pi=7
irda_insert_integer(), pi=0x8, pl=1, pi=7
async_wrap_skb_R6cd9cf2b(), xbofs=12
nsc_ircc_pio_write()
nsc_ircc_pio_write(), fifo_size -1 ; 32 sent of 49
next LAP state = LAP_SETUP
ircomm_tty_next_state: next state=IRCOMM_TTY_QUERY_PARAMETERS, service type=6
ircomm_tty_block_til_ready()
ircomm_tty_block_til_ready(), O_NONBLOCK requested!
ircomm_tty_ioctl()
ircomm_tty_ioctl()
ircomm_tty_set_termios()
nsc_ircc_pio_write()
nsc_ircc_pio_write(), warning, FIFO not empty yet!
nsc_ircc_pio_write(), fifo_size -1 ; 15 sent of 17
nsc_ircc_pio_write()
nsc_ircc_pio_write(), warning, FIFO not empty yet!
nsc_ircc_pio_write(), fifo_size 12 ; 2 sent of 2
irlap_do_event(), event = RECV_UA_RSP, state = LAP_SETUP
irlap_state_setup()
irlap_initiate_connection_state()
irda_param_extract_Rde51e33e(), pi=[0,1], type=0
Requested BAUD_RATE: 0x00fe
Final BAUD_RATE: 0x00fe
irda_param_extract_Rde51e33e(), pi=[1,2], type=1
irda_param_extract_Rde51e33e(), pi=[1,3], type=1
irda_param_extract_Rde51e33e(), pi=[1,4], type=1
irda_param_extract_Rde51e33e(), pi=[1,5], type=1
irda_param_extract_Rde51e33e(), pi=[1,6], type=1
irda_param_extract_Rde51e33e(), pi=[0,8], type=1
LINK_DISC: 07
Final LINK_DISC: 07
irlap_adjust_qos_settings()
irlap_max_line_capacity(), speed=1152000, max_turn_time=500
irlap_max_line_capacity(), line capacity=57600 bytes
Setting BAUD_RATE to 1152000 bps.
Setting DATA_SIZE to 256 bytes
Setting WINDOW_SIZE to 3
Setting XBOFS to 0
Setting MAX_TURN_TIME to 500 ms.
Setting MIN_TURN_TIME to 0 usecs.
Setting LINK_DISC to 12 secs.
irlap_apply_connection_parameters()
irlap_change_speed(), setting speed to 1152000
nsc_ircc_change_speed(), speed=1152000
nsc_ircc_change_speed(), handling baud of 1152000
irlap_max_line_capacity(), speed=1152000, max_turn_time=500
irlap_max_line_capacity(), line capacity=57600 bytes
Setting N1 = 6
Setting N2 = 24
nsc_ircc_dma_xmit_complete()
next LAP state = LAP_NRM_P
irlap_connect_confirm()
irlmp_link_connect_confirm()
irlmp_do_lap_event(), EVENT = LM_LAP_CONNECT_CONFIRM, STATE = LAP_U_CONNECT
irlmp_state_u_connect(), event=LM_LAP_CONNECT_CONFIRM
irlmp_next_lap_state(), LMP LAP = LAP_ACTIVE
irlmp_do_lsap_event(), EVENT = LM_LAP_CONNECT_CONFIRM, STATE = LSAP_SETUP_PEND
irlmp_state_setup_pend()
irlmp_send_lcf_pdu()
irlap_data_request()
irlmp_next_lsap_state(), LMP LSAP = LSAP_SETUP
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=1
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=2
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=3
irlmp_discovery_timer_expired()
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=4
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=5
ircomm_tty_write(), count=1, hw_stopped=1
ircomm_tty_do_softint()
ircomm_tty_write(), count=1, hw_stopped=1
ircomm_tty_do_softint()
ircomm_tty_write(), count=1, hw_stopped=1
ircomm_tty_do_softint()
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=6
ircomm_tty_watchdog_timer_expired()
ircomm_tty_do_event: state=IRCOMM_TTY_QUERY_PARAMETERS, 
event=IRCOMM_TTY_WD_TIMER_EXPIRED
ircomm_tty_state_query_parameters: state=IRCOMM_TTY_QUERY_PARAMETERS, 
event=IRCOMM_TTY_WD_TIMER_EXPIRED
ircomm_tty_next_state: next state=IRCOMM_TTY_SEARCH, service type=6
ircomm_tty_write(), count=1, hw_stopped=1
ircomm_tty_do_softint()
ircomm_tty_write(), count=1, hw_stopped=1
ircomm_tty_do_softint()
ircomm_tty_write(), count=1, hw_stopped=1
ircomm_tty_do_softint()
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
IrLAP, no activity on link!
irlmp_status_indication(), no handler
nsc_ircc_dma_xmit_complete()
retry count = N1; retry_count=7
ircomm_tty_write(), count=1, hw_stopped=1
ircomm_tty_do_softint()
ircomm_tty_write(), count=1, hw_stopped=1
ircomm_tty_do_softint()
ircomm_tty_write(), count=1, hw_stopped=1
ircomm_tty_do_softint()
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=8
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=9
irlmp_discovery_timer_expired()
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=10
irlmp_watchdog_timer_expired()
irlmp_do_lsap_event(), EVENT = LM_WATCHDOG_TIMEOUT, STATE = LSAP_SETUP
irlmp_state_setup()
irlmp_state_setup() WATCHDOG_TIMEOUT!
irlmp_do_lap_event(), EVENT = LM_LAP_DISCONNECT_REQUEST, STATE = LAP_ACTIVE
irlmp_state_active()
irlmp_next_lsap_state(), LMP LSAP = LSAP_DISCONNECTED
irlmp_disconnect_indication(), reason=LM_CONNECT_FAILURE
irlmp_disconnect_indication(), slsap_sel=1c, dlsap_sel=00
hashbin_remove_R1938d18d()
dequeue_general()
hashbin_insert_R0bbf1ddb()
enqueue_first()
iriap_disconnect_indication(), reason=LM_CONNECT_FAILURE
iriap_disconnect_indication(), disconnect as client
ircomm_tty_getvalue_confirm()
iriap_close_R377c1a93()
hashbin_remove_R1938d18d()
dequeue_general()
__irlmp_close_lsap()
hashbin_remove_R1938d18d()
dequeue_general()
__iriap_close()
ircomm_tty_getvalue_confirm(), got NULL value!
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=11
irlap_do_event(), event = FINAL_TIMER_EXPIRED, state = LAP_NRM_P
irda_device_is_receiving()
nsc_ircc_net_ioctl(), irda0, (cmd=0x89F5)
nsc_ircc_dma_xmit_complete()
irlap_state_nrm_p: FINAL_TIMER_EXPIRED: retry_count=12

_______________________________________________
Linux-IrDA mailing list  -  [EMAIL PROTECTED]
http://www.pasta.cs.UiT.No/mailman/listinfo/linux-irda

Reply via email to