1. 07 3月, 2012 1 次提交
  2. 23 2月, 2012 1 次提交
    • B
      sfc: Correct validation of peer_page_count in efx_vfdi_set_status_page() · 01cb543d
      Ben Hutchings 提交于
      efx_vfdi_set_status_page() validates the peer page count by
      calculating the size of a request containing that many addresses and
      comparing that with the maximum valid request size (4KB).  The
      calculation involves a multiplication that may overflow on a 32-bit
      system.
      
      We use kcalloc() to allocate memory to store the addresses; that also
      does a multiplication and it does check for integer overflow, so any
      values larger than 0x1fffffff will be rejected.  However, values in
      the range [0x1fffffffc, 0x1fffffff] pass boh tests and result in an
      attempt to allocate nearly 4GB on the heap.  This should be rejected
      rather quickly as it's obviously impossible on a 32-bit system, and
      indeed the maximum possible heap allocation is 32MB.  Still, let's
      make absolutely sure by fixing the initial validation.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      01cb543d
  3. 16 2月, 2012 1 次提交
    • B
      sfc: Add SR-IOV back-end support for SFC9000 family · cd2d5b52
      Ben Hutchings 提交于
      On the SFC9000 family, each port has 1024 Virtual Interfaces (VIs),
      each with an RX queue, a TX queue, an event queue and a mailbox
      register.  These may be assigned to up to 127 SR-IOV virtual functions
      per port, with up to 64 VIs per VF.
      
      We allocate an extra channel (IRQ and event queue only) to receive
      requests from VF drivers.
      
      There is a per-port limit of 4 concurrent RX queue flushes, and queue
      flushes may be initiated by the MC in response to a Function Level
      Reset (FLR) of a VF.  Therefore, when SR-IOV is in use, we submit all
      flush requests via the MC.
      
      The RSS indirection table is shared with VFs, so the number of RX
      queues used in the PF is limited to the number of VIs per VF.
      
      This is almost entirely the work of Steve Hodgson, formerly
      shodgson@solarflare.com.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      cd2d5b52