<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 03/27/2019 02:57 PM, Michael R.
      Freedman via USRP-users wrote:<br>
    </div>
    <blockquote
      cite="mid:98c77d19-b9aa-1950-b5b5-cf612c447537@ll.mit.edu"
      type="cite">Hello,
      <br>
      <br>
           I have a need to have a separate tx_streamer for each channel
      in a multi_usrp using timed transmission.  I am seeing bizarre
      results that at this point I can't explain.  I have tried 3.10,
      3.13 and the latest release 3.14 all with different results.  I
      have attached some sample code that illustrates the issue.  It is
      a non-useable example and doesn't match the exact scenario that I
      am using, but it is however simple and displays the same behavior
      that I am seeing.
      <br>
      <br>
      <br>
    </blockquote>
    The thing is that a multi_usrp object is a container for a bunch of
    coherent channels, and those channels are contained in a single
    streamer.<br>
    <br>
    AFAIK, if you want multiple streamers, you need multiple multi_usrp
    objects to contain them, which breaks coherence.<br>
    <br>
    <br>
    <blockquote
      cite="mid:98c77d19-b9aa-1950-b5b5-cf612c447537@ll.mit.edu"
      type="cite">System Configuration :
      <br>
      <br>
      6 Ettus X310s rev6 with UBX-40 v2 boards
      <br>
      Ettus Octoclock with GPS antenna using internal pps and ref
      <br>
      Netgear XSM4324S-100NES 10GigE switch configured for 9000MTU
      <br>
      <br>
      <br>
      Tried both a :
      <br>
      Mellanox MT27710 dual 10GigE Card
      <br>
      On Board Intel X550 10GigE
      <br>
      <br>
      Tried both Fiberstore cables as well as Ettus Cables
      <br>
      <br>
      Server is a Supermicro X121DPX-T based system with dual Intel Xeon
      Gold 6154 18core processors
      <br>
      128GB memory
      <br>
      <br>
      Linux Mint 19.1 with 4.15.0-20-generic kernel
      <br>
      CPU governor is disabled.
      <br>
      <br>
      <br>
      ethtool -g enp24s0f0
      <br>
      Ring parameters for enp24s0f0:
      <br>
      Pre-set maximums:
      <br>
      RX:        8192
      <br>
      RX Mini:    0
      <br>
      RX Jumbo:    0
      <br>
      TX:        8192
      <br>
      Current hardware settings:
      <br>
      RX:        8192
      <br>
      RX Mini:    0
      <br>
      RX Jumbo:    0
      <br>
      TX:        8192
      <br>
      <br>
      <br>
      sysctl.conf file
      <br>
      et.ipv4.icmp_echo_ignore_broadcasts = 1
      <br>
      net.ipv4.conf.all.rp_filter = 1
      <br>
      net.ipv6.conf.all.disable_ipv6 = 1
      <br>
      fs.inotify.max_user_watches = 65536
      <br>
      net.ipv4.conf.default.promote_secondaries = 1
      <br>
      net.ipv4.conf.all.promote_secondaries = 1
      <br>
      net.core.rmem_default=2097152
      <br>
      net.core.rmem_max = 33554432
      <br>
      net.core.wmem_default = 1048576
      <br>
      net.core.wmem_max = 33554432
      <br>
      net.core.netdev_max_backlog = 100000
      <br>
      net.ipv4.ipfrag_high_threshold = 8388608
      <br>
      net.ipv4.ipfrag_high_thresh = 8388608
      <br>
      kernel.sem = 4096 1024000 4096 4096
      <br>
      kernel.shmmni = 8192
      <br>
      kernel.shmall = 3221225472
      <br>
      kernel.shmmax = 17179869184
      <br>
      kernel.msgmni = 16384
      <br>
      kernel.msgmax = 65536
      <br>
      kernel.msgmnb = 65536
      <br>
      fs.mqueue.msg_max = 512
      <br>
      fs.mqueue.queues_max = 256
      <br>
      <br>
      These particular results are from 3.14.0.0 :
      <br>
      <br>
      Successful :
      <br>
      ./bin/tx_timed_samples --args=addr0=192.168.40.100 --subdev="A:0"
      --channels="0" --nsamp 10000 --rate 2000000 --wire="sc16"
      <br>
      ./bin/tx_timed_samples --args=addr0=192.168.40.100 --subdev="A:0
      B:0" --channels="0" --nsamp 10000 --rate 2000000 --wire="sc16"
      <br>
      ./bin/tx_timed_samples
      --args=addr0=192.168.40.100,addr1=192.168.40.101 --subdev="A:0
      B:0" --channels="0" --nsamp 10000 --rate 2000000 --wire="sc16"
      <br>
      ./bin/tx_timed_samples
      --args=addr0=192.168.40.100,addr1=192.168.40.101 --subdev="A:0
      B:0" --channels="2" --nsamp 10000 --rate 2000000 --wire="sc16"
      <br>
      ./bin/tx_timed_samples
      --args=addr0=192.168.40.100,addr1=192.168.40.101,addr2=192.168.40.102
      --subdev="A:0 B:0" --channels="0" --nsamp 10000 --rate 2000000
      --wire="sc16"
      <br>
      ./bin/tx_timed_samples
      --args=addr0=192.168.40.100,addr1=192.168.40.101,addr2=192.168.40.102
      --subdev="A:0 B:0" --channels="4" --nsamp 10000 --rate 2000000
      --wire="sc16"
      <br>
      <br>
      Late packets but still says success :
      <br>
      ./bin/tx_timed_samples --args=addr0=192.168.40.100 --subdev="B:0"
      --channels="0" --nsamp 10000 --rate 2000000 --wire="sc16"
      <br>
      ./bin/tx_timed_samples --args=addr0=192.168.40.100 --subdev="A:0
      B:0" --channels="1" --nsamp 10000 --rate 2000000 --wire="sc16"
      <br>
      ./bin/tx_timed_samples
      --args=addr0=192.168.40.100,addr1=192.168.40.101,addr2=192.168.40.102
      --subdev="A:0 B:0" --channels="3" --nsamp 10000 --rate 2000000
      --wire="sc16"
      <br>
      <br>
      Fail : ( never gets acks )
      <br>
      ./bin/tx_timed_samples
      --args=addr0=192.168.40.100,addr1=192.168.40.101 --subdev="A:0
      B:0" --channels="1" --nsamp 10000 --rate 2000000 --wire="sc16"
      <br>
      ./bin/tx_timed_samples
      --args=addr0=192.168.40.100,addr1=192.168.40.101 --subdev="A:0
      B:0" --channels="3" --nsamp 10000 --rate 2000000 --wire="sc16"
      <br>
      ./bin/tx_timed_samples
      --args=addr0=192.168.40.100,addr1=192.168.40.101,addr2=192.168.40.102
      --subdev="A:0 B:0" --channels="1" --nsamp 10000 --rate 2000000
      --wire="sc16"
      <br>
      ./bin/tx_timed_samples
      --args=addr0=192.168.40.100,addr1=192.168.40.101,addr2=192.168.40.102
      --subdev="A:0 B:0" --channels="2" --nsamp 10000 --rate 2000000
      --wire="sc16"
      <br>
      ./bin/tx_timed_samples
      --args=addr0=192.168.40.100,addr1=192.168.40.101,addr2=192.168.40.102
      --subdev="A:0 B:0" --channels="5" --nsamp 10000 --rate 2000000
      --wire="sc16"
      <br>
      <br>
      Moving the address order moves the problem as expected.  While I
      haven't run this particular program on anything but 3.14.0.0, with
      the application that I am writing
      <br>
      I see this behavior on 3.14.  On 3.13 I can write to channel 0 but
      get Time_Code_Errors on channel 1 in a single USRP setup.  With
      multiple USRPs I never get ack messages
      <br>
      on channel 1.  On 3.10 I seem to get the ack messages but have
      underunns and late messages.  On 3.13 I have little success until
      I lower the MTU size down below 6000.
      <br>
      <br>
      <br>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
USRP-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:USRP-users@lists.ettus.com">USRP-users@lists.ettus.com</a>
<a class="moz-txt-link-freetext" href="http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com">http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>