This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP L138 OHCI USB1.1 performance issue

Other Parts Discussed in Thread: OMAPL138

Hi,

I am using OMAPL138 based hardware board and Linux kernel version 2.6.33-rc4 for our product., where third party smart card reader is connected to OHCI (USB 1.1) port.

With the help of libusb our application talk to smart card reader.

I have done following experiments on two different platform 1) OMAPL138 EVM and 2) Linux X86 PC to find out performance issue.

case (a) - connect single USB smart card reader to OHCI USB1.1 port.

case (b) - connect four USB smart card readers with help of external USB hub to OHCI USB1.1 port.

Observation:  On OMAPL138 EVM -  in case (a), I got less performance compare to case (b). In case (b), I got 60%-70% performance improvements.

                         On Linux X86 PC - I got same performance in both cases.

 
As per our product requirement, we have to connect single reader on USB OHCI port. We would like to  know, is there any issue/configuration with OMAPL138 Linux OHCI driver which causes performance difference?

Can you help us to find out root cause?

 

Regards,

Dilip

  • Dilip,

    what are details of smart card reader ? Is it USB2.0 or only USB1.1 card reader? Whats the observation if you conneted single smart card reader through a hub?

    Regards,
    Ajay

  • Hi Ajay,

    Thanks for prompt reply.

    I am using USB 2.0 based card reader and it is also compliant with USB 1.1.


    I am  using card reader specific commands (reader manufacturer's proprietary command) to transfer 
    the data to/from smart card.

    I am sending an authenticate command to the smart card reader to authenticate the smart card. Following are my observations regarding this command for various scenarios:-

    1. Single Reader connected to USB 2.0:-

          On USB2.0 port, we get good performance (~20 msec time to complete authenticate command) compare to USB 1.1 port 
          where it takes ~64 msec.  But performance is not consistent and sometimes same command takes ~300 msec 
          time USB 2.0 port. 
       
    2. Single Reader connected to USB 1.1 without hub:-
       
          On this port, the authenticate command takes ~64 msec time and this performance is consistent.
               
    3. Single Reader connected to USB 1.1 with hub:-
       
        Same as observation #2.
                   
    4. 4 Readers connected to USB 1.1 with hub:-

          If we connect 4 readers on USB1.1 port using hub then autneticate command takes ~30-35 msec time consistently.

    I am using USB2.0 port as OTG, so I cann't use this port to interface smart card reader.


    Regards,
    Dilip

  • Dilip,

    When you say four readers then does it mean four different physical card readers and you read data only from one of them ? Please provide the details of "four readers"?

    Regards,

    Ajay

  • Hi Ajay,

    I have connected four physical smart card readers of same type using USB hub. At a time, I am sending/reading data from one of them only.

    Regards,

    Dilip

  • This observation is strange. There  should not be any difference either you connect 1 or 4 card to USB1.1 port. Do you use third patrty driver also for this or is uses standard MSC drivers ?If it's third party driver then probably something in this driver causing this behavior.

    Regards,

    AJAY

  • Hi Ajay,

    There is no any linux kerenl class (third party) driver is involved, we are using libusb API on top of USB 1.1 (host) for accessing the card reader.

    Regards,

    Dilip

     

  • Ok fine, I missed it in your first post. As I said, it is still strange. Do you have bus analyzer to see what happens on the bus? You said it takes 64 mili second (== 64 frames) for authetication data transfer with one card reader and 30 ms with four card readers. what is the length of this data ?

  • Hi Ajay,

    I am sending 16 bytes of data and then waiting for response from smart card reader.

    I have ellisys USB analyzer. Please let me know what information do you required from USB analyzer.

    Regards,

    Dilip

  • 16 byte is small data and would get transferred within one frame (1ms) but after that it's all on smart card to verify and respond back.You can look into the trace and see if host is not sending the IN token intime to receive response from card reader and thus delaying the completion. The same thing you can capture with x86 PC where is works fine. IF possible then share the two traces here for further analysis.

    Regards,
    Ajay

  • followup on this thread at http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/p/104137/366507.aspx#366507

    Ajay