PPP over usb ceases modem function pinging with large packet


#1

Modem Model: SL5011/SL809x
Operating System: Linux 2.6.37
Processor: DM8148 - ARM Core

I am using the sierra driver ( 1.7.40 ).

Below are the steps followed.

  1. Establish a ppp connection using the modem interface.
  2. Ping with packets less than or equal to MTU
    No issues, modem works fine, responds to AT commands after stopping the pppd
  3. Ping with packets greater than MTU.
    Modem stops sending packets when TX-RX > 64. Does not respond to AT commands

ppp0 Link encap:Point-to-Point Protocol
inet addr:107.27.3.33 P-t-P:66.1.32.193 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:89 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:72 (72.0 B) TX bytes:106386 (103.8 KiB)

When ping is performed with greater sized packets, the modem ceases to function.

Log Information:
[ 982.060000] sierra ttyUSB0: sierra_write: write (1506 bytes)
[ 982.060000] sierra ttyUSB0: sierra_write: write (1505 bytes)
[ 982.060000] sierra ttyUSB0: sierra_write - write limit hit



[ 1161.100000] sierra ttyUSB0: sierra_write: write (29 bytes)
[ 1161.100000] sierra ttyUSB0: sierra_write - write limit hit
[ 1161.100000] sierra ttyUSB0: sierra_write: write (29 bytes)
[ 1161.100000] sierra ttyUSB0: sierra_write - write limit hit
[ 1161.100000] sierra ttyUSB0: sierra_write: write (29 bytes)
[ 1161.100000] sierra ttyUSB0: sierra_write - write limit hit
[ 1161.100000] sierra ttyUSB0: sierra_write: write (29 bytes)
[ 1161.100000] sierra ttyUSB0: sierra_write - write limit hit
[ 1161.230000] sierra ttyUSB0: sierra_send_setup
[ 1162.230000] sierra ttyUSB0: sierra_set_termios
[ 1162.230000] sierra ttyUSB0: sierra_send_setup
[ 1162.230000] sierra ttyUSB0: sierra_send_setup
[ 1162.230000] sierra ttyUSB0: sierra_close
[ 1162.230000] sierra ttyUSB0: sierra_send_setup
[ 1162.230000] sierra ttyUSB0: sierra_indat_callback: d1d7a680
[ 1162.230000] sierra ttyUSB0: sierra_indat_callback: nonzero status: -2 on endpoint 02
[ 1162.230000] sierra ttyUSB0: sierra_indat_callback: d1d7a700


[ 1162.230000] usb_rx_ch_teardown 1057: teardown Desc not found
[ 1162.230000] sierra ttyUSB0: sierra_indat_callback: d1d7ab80
[ 1162.230000] sierra ttyUSB0: sierra_indat_callback: nonzero status: -2 on endpoint 02
[ 1162.490000] usb_rx_ch_teardown 1057: teardown Desc not found
[ 1162.490000] sierra ttyUSB0: sierra_instat_callback: d14f1700
[ 1162.490000] sierra ttyUSB0: sierra_instat_callback: error -2
[ 1162.740000] sierra ttyUSB0: sierra_release_urb: d1d7a680
[ 1162.740000] sierra ttyUSB0: sierra_release_urb: d1d7a700
[ 1162.740000] sierra ttyUSB0: sierra_release_urb: d1d7a900
[ 1162.740000] sierra ttyUSB0: sierra_release_urb: d1d7a800
[ 1162.740000] sierra ttyUSB0: sierra_release_urb: d1d7aa00
[ 1162.740000] sierra ttyUSB0: sierra_release_urb: d1d7a880
[ 1162.740000] sierra ttyUSB0: sierra_release_urb: d1d7aa80
[ 1162.740000] sierra ttyUSB0: sierra_release_urb: d1d7ab80
[ 1163.240000] sierra ttyUSB0: sierra_outdat_callback - port 0
[ 1163.240000] sierra ttyUSB0: sierra_outdat_callback - nonzero write bulk status received: -2


#2

Hi,

I ran the similar test using SL8090 FW 1.0.0.8 with Linux desktop PC (driver 1.7.40), PPPD on /dev/ttyUSB3 (AT port) but I cannot see the problem.

I tried to ping destination with size up to 2000, whereas I still can get the return from destination server.
The dialup connection and SL8090 is working normally after that.

Still, when packet size (ICMP + overhead) over the MTU limit, ICMP packet will be separated into smaller packet to transmit, that is expected and OS/ping should be able to handle that.
Network packet sniffing is able to capture that and we can prevent the fragmentation using -M switch for ping in Linux.

Are you testing only on your ARM platform? can you repeat the same on Desktop PC environment?
What’s the MTU size and the ICMP size causing the issue?

Thx