1. 03 4月, 2009 4 次提交
  2. 14 3月, 2009 1 次提交
    • Y
      [SCSI] libfc: add support of large receive offload by ddp in fc_fcp · b277d2aa
      Yi Zou 提交于
      When LLD supports direct data placement (ddp) for large receive of an scsi
      i/o coming into fc_fcp, we call into libfc_function_template's ddp_setup()
      to prepare for a ddp of large receive for this read I/O. When I/O is complete,
      we call the corresponding ddp_done() to get the length of data ddped as well
      as to let LLD do clean up.
      
      fc_fcp_ddp_setup()/fc_fcp_ddp_done() are added to setup and complete a ddped
      read I/O described by the given fc_fcp_pkt. They would call into corresponding
      ddp_setup/ddp_done implemented by the fcoe layer. Eventually, fcoe layer calls
      into LLD's ddp_setup/ddp_done provided through net_device
      Signed-off-by: NYi Zou <yi.zou@intel.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      b277d2aa
  3. 10 3月, 2009 2 次提交
    • V
      [SCSI] fcoe: Out of order tx frames was causing several check condition SCSI status · c826a314
      Vasu Dev 提交于
      frames followed by these errors in log.
      
      	[sdp] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
      	[sdp] Sense Key : Aborted Command [current]
      	[sdp] Add. Sense: Data phase error
      
      This was causing some test apps to exit due to write failure under heavy
      load.
      
      This was due to a race around adding and removing tx frame skb in
      fcoe_pending_queue, Chris Leech helped me to find that brief unlocking
      period when pulling skb from fcoe_pending_queue in various contexts
      (fcoe_watchdog and fcoe_xmit) and then adding skb back into fcoe_pending_queue
      up on a failed fcoe_start_io could change skb/tx frame order in
      fcoe_pending_queue. Thanks Chris.
      
      This patch allows only single context to pull skb from fcoe_pending_queue
      at any time to prevent above described ordering issue/race by use of
      fcoe_pending_queue_active flag.
      
      This patch simplified fcoe_watchdog with modified fcoe_check_wait_queue by
      use of FCOE_LOW_QUEUE_DEPTH instead previously used several conditionals
      to clear and set lp->qfull.
      
      I think FCOE_MAX_QUEUE_DEPTH with FCOE_LOW_QUEUE_DEPTH  will work better
      in re/setting lp->qfull and these could be fine tuned for performance.
      Signed-off-by: NVasu Dev <vasu.dev@intel.com>
      Signed-off-by: NRobert Love <robert.w.love@intel.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      c826a314
    • R
      [SCSI] libfc, fcoe: Remove unnecessary cast by removing inline wrapper · fc47ff6b
      Robert Love 提交于
      Comment from "Andrew Morton <akpm@linux-foundation.org>"
      
      > +{
      > +     return (struct fcoe_softc *)lport_priv(lp);
      
      unneeded/undesirable cast of void*.  There are probably zillions of
      instances of this - there always are.
      
      This whole inline function was unnecessary. The FCoE layer knows
      that it's data structure is stored in the lport private data, it
      can just access it from lport_priv().
      Signed-off-by: NRobert Love <robert.w.love@intel.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      fc47ff6b
  4. 30 12月, 2008 1 次提交