1. 23 7月, 2011 11 次提交
    • R
      bna: Add HW Semaphore Unlock Logic · d4e16d42
      Rasesh Mody 提交于
      Change details:
       - Added logic to unlock hw semaphore if the previos FW boot was from boot
         code (flash based) and the current FW initialization attempt is from OS
         driver.
      Signed-off-by: NRasesh Mody <rmody@brocade.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d4e16d42
    • R
      bna: IOC Event Name Change · f374b361
      Rasesh Mody 提交于
      Change details:
       - Changed event name IOC_E_PFAILED to IOC_E_PFFAILED
      Signed-off-by: NRasesh Mody <rmody@brocade.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f374b361
    • R
      bna: Mboxq Flush When IOC Disabled · fdad400f
      Rasesh Mody 提交于
      Change details:
       - If there is a command pending in the mailbox, bfa_ioc_mbox_queue() enqueues
         the mailbox command to a pending command queue. Entries in this queue are
         not flushed when IOC is disabled. As a result, when IOC is re-enabled again,
         the stale entries in the pending command queue are posted to the mailbox.
         When these mailbox commands are processed by the FW and responses are sent,
         unexpected  events are received by other modules' FSMs (f.e. bfa_msgq) which
         have not posted any mailbox commands after IOC was enabled.
       - Flush the pending mailbox command queue when IOC is disabled. Rename
         bfa_ioc_mbox_hbfail to bfa_ioc_mbox_flush. Call bfa_ioc_mbox_flush
         from bfa_iocpf_sm_disabled_entry()
      Signed-off-by: NRasesh Mody <rmody@brocade.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fdad400f
    • R
      bna: Minor IRQ Index and Definition Change · 8811e267
      Rasesh Mody 提交于
      Change details:
       - Always set mbox irq index to zero and make corresponding changes in mbox
         irq alloc/sync function and txrx irq index calculation. Add definition of
         BNAD_INTX_TX_IB_BITMASK & BNAD_INTX_RX_IB_BITMASK and update
         bnad_txrx_irq_alloc accordingly.
      Signed-off-by: NRasesh Mody <rmody@brocade.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8811e267
    • R
      bna: State Machine Fault Handling Cleanup · ac51f60f
      Rasesh Mody 提交于
      Chnage details:
       - The module name is not used in case of state machine fault, hence no longer
         passing the module name to the fault handler.
      Signed-off-by: NRasesh Mody <rmody@brocade.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ac51f60f
    • R
      bna: IOC Event Notification Enhancement · bd5a92e9
      Rasesh Mody 提交于
      Change details:
       - Replace IOC HB failure event notification with a more generic mechanism
         that is capable of sending enble, disable, and failed events to registered
         modules. As a result, cee  module event handling callback bfa_cee_hbfail()
         is replaced with bfa_cee_notify() so that it can receive and handle
         different events from IOC.
      Signed-off-by: NRasesh Mody <rmody@brocade.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bd5a92e9
    • R
      bna: CheckPatch Cleanup · 0120b99c
      Rasesh Mody 提交于
      Change details:
       - Driver cleanup as per new checkpatch v0.31
      Signed-off-by: NRasesh Mody <rmody@brocade.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0120b99c
    • R
      bna: Print Driver Version · 5aad0011
      Rasesh Mody 提交于
      Change details:
       - Print the dirver version when module is loaded.
      Signed-off-by: NRasesh Mody <rmody@brocade.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5aad0011
    • S
      sbni: use pci_dev->subsystem_device · 781223a1
      Sergei Shtylyov 提交于
      The driver reads PCI subsystem ID from the PCI configuration register while it's
      already stored by the PCI subsystem in the 'subsystem_device' field of 'struct
      pci_dev'...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      781223a1
    • S
      r8169: use pci_dev->subsystem_{vendor|device} · ccbae55e
      Sergei Shtylyov 提交于
      The driver reads PCI subsystem IDs from the PCI configuration registers while
      they are already stored by the PCI subsystem in the 'subsystem_{vendor|device}'
      fields of 'struct pci_dev'...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ccbae55e
    • M
      IB/qib: Defer HCA error events to tasklet · e67306a3
      Mike Marciniszyn 提交于
      With ib_qib options:
      
          options ib_qib krcvqs=1 pcie_caps=0x51 rcvhdrcnt=4096 singleport=1 ibmtu=4
      
      a run of ib_write_bw -a yields the following:
      
          ------------------------------------------------------------------
           #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]
           1048576   5000           2910.64            229.80
          ------------------------------------------------------------------
      
      The top cpu use in a profile is:
      
          CPU: Intel Architectural Perfmon, speed 2400.15 MHz (estimated)
          Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask
          of 0x00 (No unit mask) count 1002300
          Counted LLC_MISSES events (Last level cache demand requests from this core that
          missed the LLC) with a unit mask of 0x41 (No unit mask) count 10000
          samples  %        samples  %        app name                 symbol name
          15237    29.2642  964      17.1195  ib_qib.ko                qib_7322intr
          12320    23.6618  1040     18.4692  ib_qib.ko                handle_7322_errors
          4106      7.8860  0              0  vmlinux                  vsnprintf
      
      
      Analysis of the stats, profile, the code, and the annotated profile indicate:
       - All of the overflow interrupts (one per packet overflow) are
         serviced on CPU0 with no mitigation on the frequency.
       - All of the receive interrupts are being serviced by CPU0.  (That is
         the way truescale.cmds statically allocates the kctx IRQs to CPU)
       - The code is spending all of its time servicing QIB_I_C_ERROR
         RcvEgrFullErr interrupts on CPU0, starving the packet receive
         processing.
       - The decode_err routine is very inefficient, using a printf variant
         to format a "%s" and continues to loop when the errs mask has been
         cleared.
       - Both qib_7322intr and handle_7322_errors read pci registers, which
         is very inefficient.
      
      The fix does the following:
       - Adds a tasklet to service QIB_I_C_ERROR
       - Replaces the very inefficient scnprintf() with a memcpy().  A field
         is added to qib_hwerror_msgs to save the sizeof("string") at
         compile time so that a strlen is not needed during err_decode().
       - The most frequent errors (Overflows) are serviced first to exit the
         loop as early as possible.
       - The loop now exits as soon as the errs mask is clear rather than
         fruitlessly looping through the msp array.
      
      With this fix the performance changes to:
      
          ------------------------------------------------------------------
           #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]
           1048576   5000           2990.64            2941.35
          ------------------------------------------------------------------
      
      During testing of the error handling overflow patch, it was determined
      that some CPU's were slower when servicing both overflow and receive
      interrupts on CPU0 with different MSI interrupt vectors.
      
      This patch adds an option (krcvq01_no_msi) to not use a dedicated MSI
      interrupt for kctx's < 2 and to service them on the default interrupt.
      For some CPUs, the cost of the interrupt enter/exit is more costly
      than then the additional PCI read in the default handler.
      Signed-off-by: NMike Marciniszyn <mike.marciniszyn@qlogic.com>
      Signed-off-by: NRoland Dreier <roland@purestorage.com>
      e67306a3
  2. 22 7月, 2011 29 次提交