1. 04 6月, 2007 1 次提交
    • M
      [TG3]: Fix link problem on Dell's onboard 5906. · 007a880d
      Michael Chan 提交于
      The bug is caused by code that always set
      (TG3_FLAG_USE_MI_INTERRUPT | TG3_FLAG_USE_LINKCHG_REG) on all Dell's
      onboard devices.  With these 2 flags set, the link status is polled
      by tg3_timer() and will only work when the PHY is set up to interrupt
      the MAC on link changes.  This breaks 5906 because the 5906 PHY does
      not support TG3_FLAG_USE_MI_INTERRUPT the same as other PHYs.
      
      For correctness, only Dell's onboard 5701 needs these 2 flags to be
      set.  This change will fix the 5906 problem and will change other
      Dell devices except 5700 and 5701 to use the more efficient
      interrupt-driven link changes.
      
      Update version to 3.77.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      007a880d
  2. 03 6月, 2007 1 次提交
  3. 10 5月, 2007 2 次提交
  4. 07 5月, 2007 3 次提交
  5. 06 5月, 2007 8 次提交
  6. 26 4月, 2007 8 次提交
  7. 07 4月, 2007 1 次提交
  8. 26 3月, 2007 3 次提交
  9. 03 3月, 2007 1 次提交
  10. 27 2月, 2007 1 次提交
    • M
      [TG3]: TSO workaround fixes. · 7f62ad5d
      Michael Chan 提交于
      1.  Add race condition check after netif_stop_queue().  tg3_tx() runs
          without netif_tx_lock and can race with tg3_start_xmit_dma_bug() ->
          tg3_tso_bug().
      
      2.  Firmware TSO in 5703/5704/5705 also have the same TSO limitation,
          i.e. they cannot handle TSO headers bigger than 80 bytes.  Rename
          TG3_FL2_HW_TSO_1_BUG to TG3_FL2_TSO_BUG and set this flag on
          these chips as well.
      
      3.  Update version to 3.74.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7f62ad5d
  11. 14 2月, 2007 8 次提交
  12. 09 2月, 2007 1 次提交
    • E
      [TG3]: Avoid an expensive divide. · 6b31a515
      Eric Dumazet 提交于
      During an oprofile session of linux-2.6.20 on a dual opteron system, I noticed
      an expensive divide was done in tg3_poll().
      
      I am using gcc-4.1.1, so the following comment from drivers/net/tg3.c seems
      over-optimistic :
      
      /* Do not place this n-ring entries value into the tp struct itself,
        * we really want to expose these constants to GCC so that modulo et
        * al.  operations are done with shifts and masks instead of with
        * hw multiply/modulo instructions.  Another solution would be to
        * replace things like '% foo' with '& (foo - 1)'.
        */
      #define TG3_RX_RCB_RING_SIZE(tp)        \
               ((tp->tg3_flags2 & TG3_FLG2_5705_PLUS) ?  512 : 1024)
      
      Assembly code before patch :
      (oprofile results included)
         6434  0.0088 :ffffffff803684b9:       mov    0x6f0(%r15),%eax
          587 8.0e-04 :ffffffff803684c0:       and    $0x40000,%eax
         2170  0.0030 :ffffffff803684c5:       cmp    $0x1,%eax
                      :ffffffff803684c8:       lea    0x1(%r13),%eax
                      :ffffffff803684cc:       sbb    %ecx,%ecx
         2051  0.0028 :ffffffff803684ce:       xor    %edx,%edx
                      :ffffffff803684d0:       and    $0x200,%ecx
           20 2.7e-05 :ffffffff803684d6:       add    $0x200,%ecx
         1986  0.0027 :ffffffff803684dc:       div    %ecx
      103427  0.1410 :ffffffff803684de:       cmp    %edx,0xffffffffffffff7c(%rbp)
      
      Assembly code after the suggested patch :
      
      ffffffff803684b9:           mov    0x6f0(%r15),%eax
      ffffffff803684c0:           and    $0x40000,%eax
      ffffffff803684c5:           cmp    $0x1,%eax
      ffffffff803684c8:           sbb    %eax,%eax
      ffffffff803684ca:           inc    %r13d
      ffffffff803684cd:           and    $0x200,%eax
      ffffffff803684d2:           add    $0x1ff,%eax
      ffffffff803684d7:           and    %eax,%r13d
      ffffffff803684da:           cmp    %r13d,0xffffffffffffff7c(%rbp)
      Signed-off-by: NEric Dumazet <dada1@cosmosbay.com>
      Acked-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6b31a515
  13. 06 2月, 2007 1 次提交
  14. 09 1月, 2007 1 次提交