<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi,&nbsp;&nbsp;&nbsp; <br>
    &nbsp;&nbsp; Can tdb_lock be converted from spinlock to rwlock?<br>
    <br>
    &nbsp;&nbsp;&nbsp; From what i know, tdb_lock is used to protect sa.&nbsp; <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; ipsec_xmit.c &amp;&nbsp; ipsec_rcv.c
    just uses them for reading(get) sa. <br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
    &nbsp;&nbsp;&nbsp;&nbsp; While experimenting with KLIPS, i converted this tdb_lock to
    rwlock_t and performed the below given test. <br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp; I got desired results but i am not sure about any side-effects
    of this conversion.&nbsp; Please provide your valuable input.<br>
    <br>
    <i><br>
      &nbsp;&nbsp;&nbsp; Test setup details:<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; LAN1 ----------<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Test Machine
      ----------(Ipsec tunnel)---------------- Road warrior &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; LAN2 ----------<br>
      <br>
      <br>
      &nbsp;&nbsp;&nbsp; &nbsp; Test Machine has 8 cores, I&nbsp; have binded interrupts to only
      3 of them: <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; LAN1 -- cpu1 <br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; LAN2 -- cpu2<br>
      &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Roadwarrior -- cpu3<br>
      <br>
      &nbsp;&nbsp;&nbsp; &nbsp; Traffic flows from LAN1 and LAN2 to Road warrior. (I used
      iperf to generate traffic: iperf server is at road warrior and
      clients in LAN1 and LAN2).<br>
      &nbsp;
      <br>
      &nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; Changes done:<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; 1) in ipsec_tunnel.c<br>
      &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dev-&gt;tx_queue_len&nbsp;&nbsp; = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* No
      qdisc */&nbsp;&nbsp; (Earlier it was 10)<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; dev-&gt;features |= NETIF_F_LLTX; /* No
      tx lock */<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2)Converted tdb_lock from spinlock_t to rwlock_t<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; Instead of spin_lock_bh used <br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; read_lock_bh in
      ipsec_xmit.c and ipsec_rcv.c<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; write_lock_bh elsewhere<br>
      &nbsp; &nbsp;&nbsp; &nbsp; Got throughput:<br>
      &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Before Change: 225 Mbps &nbsp;&nbsp; (cpu1 and cpu2&nbsp; are&nbsp; not being
      100% utilized)&nbsp; <br>
      &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; After Change:&nbsp;&nbsp;&nbsp; 350 Mbps&nbsp;&nbsp;&nbsp; (both cpus1 and cpu2 are
      being 100% utilized)<br>
    </i><br>
    <br>
    &nbsp;&nbsp;&nbsp; Also, One more question: Is there any know side effect of
    dev-&gt;tx_queue_len=0? Why is it 10&nbsp; by default? <br>
    <br>
    Regards,<br>
    Jagdish Motwani <br>
    Software Engineer<br>
    Elitecore Technologies Pvt. Ltd.
  </body>
</html>