1. 27 9月, 2017 2 次提交
    • D
      bpf, nfp: add meta data support · 65d88fd0
      Daniel Borkmann 提交于
      Implement support for transferring XDP meta data into skb for
      nfp driver; before calling into the program, xdp.data_meta points
      to xdp.data, where on program return with pass verdict, we call
      into skb_metadata_set().
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: NAlexei Starovoitov <ast@kernel.org>
      Acked-by: NJohn Fastabend <john.fastabend@gmail.com>
      Reviewed-by: NJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      65d88fd0
    • D
      bpf: add meta pointer for direct access · de8f3a83
      Daniel Borkmann 提交于
      This work enables generic transfer of metadata from XDP into skb. The
      basic idea is that we can make use of the fact that the resulting skb
      must be linear and already comes with a larger headroom for supporting
      bpf_xdp_adjust_head(), which mangles xdp->data. Here, we base our work
      on a similar principle and introduce a small helper bpf_xdp_adjust_meta()
      for adjusting a new pointer called xdp->data_meta. Thus, the packet has
      a flexible and programmable room for meta data, followed by the actual
      packet data. struct xdp_buff is therefore laid out that we first point
      to data_hard_start, then data_meta directly prepended to data followed
      by data_end marking the end of packet. bpf_xdp_adjust_head() takes into
      account whether we have meta data already prepended and if so, memmove()s
      this along with the given offset provided there's enough room.
      
      xdp->data_meta is optional and programs are not required to use it. The
      rationale is that when we process the packet in XDP (e.g. as DoS filter),
      we can push further meta data along with it for the XDP_PASS case, and
      give the guarantee that a clsact ingress BPF program on the same device
      can pick this up for further post-processing. Since we work with skb
      there, we can also set skb->mark, skb->priority or other skb meta data
      out of BPF, thus having this scratch space generic and programmable
      allows for more flexibility than defining a direct 1:1 transfer of
      potentially new XDP members into skb (it's also more efficient as we
      don't need to initialize/handle each of such new members). The facility
      also works together with GRO aggregation. The scratch space at the head
      of the packet can be multiple of 4 byte up to 32 byte large. Drivers not
      yet supporting xdp->data_meta can simply be set up with xdp->data_meta
      as xdp->data + 1 as bpf_xdp_adjust_meta() will detect this and bail out,
      such that the subsequent match against xdp->data for later access is
      guaranteed to fail.
      
      The verifier treats xdp->data_meta/xdp->data the same way as we treat
      xdp->data/xdp->data_end pointer comparisons. The requirement for doing
      the compare against xdp->data is that it hasn't been modified from it's
      original address we got from ctx access. It may have a range marking
      already from prior successful xdp->data/xdp->data_end pointer comparisons
      though.
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: NAlexei Starovoitov <ast@kernel.org>
      Acked-by: NJohn Fastabend <john.fastabend@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      de8f3a83
  2. 04 9月, 2017 1 次提交
  3. 26 8月, 2017 1 次提交
  4. 24 8月, 2017 2 次提交
  5. 19 8月, 2017 1 次提交
  6. 02 8月, 2017 1 次提交
  7. 26 7月, 2017 1 次提交
  8. 05 7月, 2017 1 次提交
    • J
      nfp: default to chained metadata prepend format · 64a919a9
      Jakub Kicinski 提交于
      ABI 4.x introduced the chained metadata format and made it the
      only one possible.  There are cases, however, where the old
      format is preferred - mostly to make interoperation with VFs
      using ABI 3.x easier for the datapath.  In ABI 5.x we allowed
      for more flexibility by selecting the metadata format based
      on capabilities.  The default was left to non-chained.
      
      In case of fallback traffic, there is no capability telling the
      driver there may be chained metadata.  With a very stripped-
      -down FW the default old metadata format would be selected
      making the driver drop all fallback traffic.
      
      This patch changes the default selection in the driver. It
      should not hurt with old firmwares, because if they don't
      advertise RSS they will not produce metadata anyway.  New
      firmwares advertising ABI 5.x, however, can depend on the
      driver defaulting to chained format.
      
      Fixes: f9380629 ("nfp: advertise support for NFD ABI 0.5")
      Suggested-by: NMichael Rapson <michael.rapson@netronome.com>
      Signed-off-by: NJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      64a919a9
  9. 01 7月, 2017 2 次提交
  10. 25 6月, 2017 1 次提交
  11. 24 6月, 2017 5 次提交
  12. 19 6月, 2017 1 次提交
  13. 16 6月, 2017 1 次提交
  14. 08 6月, 2017 9 次提交
  15. 01 6月, 2017 3 次提交
  16. 30 5月, 2017 3 次提交
  17. 23 5月, 2017 3 次提交
  18. 17 5月, 2017 2 次提交