1. Apr 24, 2020
  2. Apr 23, 2020
    • David S. Miller's avatar
      Merge branch 'dpaa2-eth-add-support-for-xdp-bulk-enqueue' · 30685b2a
      David S. Miller authored
      
      
      Ioana Ciornei says:
      
      ====================
      dpaa2-eth: add support for xdp bulk enqueue
      
      The first patch moves the DEV_MAP_BULK_SIZE macro into the xdp.h header
      file so that drivers can take advantage of it and use it.
      
      The following 3 patches are there to setup the scene for using the bulk
      enqueue feature.  First of all, the prototype of the enqueue function is
      changed so that it returns the number of enqueued frames. Second, the
      bulk enqueue interface is used but without any functional changes, still
      one frame at a time is enqueued.  Third, the .ndo_xdp_xmit callback is
      split into two stages, create all FDs for the xdp_frames received and
      then enqueue them.
      
      The last patch of the series builds on top of the others and instead of
      issuing an enqueue operation for each FD it issues a bulk enqueue call
      for as many frames as possible. This is repeated until all frames are
      enqueued or the maximum number of retries is hit. We do not use the
      XDP_XMIT_FLUSH flag since the architecture is not capable to store all
      frames dequeued in a NAPI cycle, instead we send out right away all
      frames received in a .ndo_xdp_xmit call.
      
      Changes in v2:
       - statically allocate an array of dpaa2_fd by frame queue
       - use the DEV_MAP_BULK_SIZE as the maximum number of xdp_frames
         received in .ndo_xdp_xmit()
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      30685b2a
    • Ioana Ciornei's avatar
      dpaa2-eth: use bulk enqueue in .ndo_xdp_xmit · 8665d978
      Ioana Ciornei authored
      
      
      Take advantage of the bulk enqueue feature in .ndo_xdp_xmit.
      We cannot use the XDP_XMIT_FLUSH since the architecture is not capable
      to store all the frames dequeued in a NAPI cycle so we instead are
      enqueueing all the frames received in a ndo_xdp_xmit call right away.
      
      After setting up all FDs for the xdp_frames received, enqueue multiple
      frames at a time until all are sent or the maximum number of retries is
      hit.
      
      Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
      Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8665d978
    • Ioana Ciornei's avatar
      dpaa2-eth: split the .ndo_xdp_xmit callback into two stages · 6aa40b9e
      Ioana Ciornei authored
      
      
      Instead of having a function that both creates a frame descriptor from
      an xdp_frame and enqueues it, split this into two stages.
      Add the dpaa2_eth_xdp_create_fd that just transforms an xdp_frame into a
      FD while the actual enqueue callback is called directly from the ndo for
      each frame.
      This is particulary useful in conjunction with bulk enqueue.
      
      Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
      Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6aa40b9e
    • Ioana Ciornei's avatar
      dpaa2-eth: use the bulk ring mode enqueue interface · 6ff80447
      Ioana Ciornei authored
      
      
      Update the dpaa2-eth driver to use the bulk enqueue function introduced
      with the change to QBMAN ring mode. At the moment, no functional changes
      are made but rather the driver just transitions to the new interface
      while still enqueuing just one frame at a time.
      
      Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6ff80447
    • Ioana Ciornei's avatar
      dpaa2-eth: return num_enqueued frames from enqueue callback · 48c0481e
      Ioana Ciornei authored
      
      
      The enqueue dpaa2-eth callback now returns the number of successfully
      enqueued frames. This is a preliminary patch necessary for adding
      support for bulk ring mode enqueue.
      
      Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      48c0481e