1. 14 3月, 2016 21 次提交
  2. 13 3月, 2016 1 次提交
  3. 12 3月, 2016 17 次提交
  4. 11 3月, 2016 1 次提交
    • D
      Merge branch 'flower-offload' · e8ab563f
      David S. Miller 提交于
      Amir Vadai says:
      
      ====================
      cls_flower hardware offload support
      
      Please see changes from V2 at the bottom.
      
      This patchset introduces cls_flower hardware offload support over ConnectX-4
      driver, more hardware vendors are welcome to use it too.
      
      This patchset is based on John's infrastructure for tc offloading [2] to add
      hardware offload support to the flower filter. It also extends the support to
      an additional tc action - skbedit mark operation.
      NIC driver that was used is ConnectX-4. Feature is off by default and could be
      turned on using ethtool.
      
      Some commands to use this code:
      
      export TC=../iproute2/tc/tc
      export ETH=ens9
      
      ethtool  -K ens9 hw-tc-offload on
      
      $TC qdisc add dev $ETH ingress
      
      $TC filter add dev $ETH protocol ip prio 20 parent ffff: \
      	flower ip_proto 1 \
      	dst_mac 7c:fe:90:69:81:62 \
      	src_mac 7c:fe:90:69:81:56 \
      	dst_ip 11.11.11.11 \
      	src_ip 11.11.11.12 \
      	indev $ETH \
      	action drop
      
      $TC filter add dev $ETH protocol ip prio 30 parent ffff: \
      	flower ip_proto 6 \
      	indev $ETH \
      	action skbedit mark 0x1234
      
      $TC filter add dev $ETH protocol ip prio 10 parent ffff: \
      	handle 0x1234 fw action pass
      
      The code was tested and applied on top of commit 3ebeac1d ("Merge branch
      'cxgb4-next'")
      
      Changes from V2:
      - patch 1/10 ("net/flower: Introduce hardware offload support")
        - Remove unused variable [Dave]
        - Don't fail command when HW can't offload filter [John]
      - patch 3/10 ("net/sched: Macro instead of CONFIG_NET_CLS_ACT ifdef")
        - Mention in changelog that struct tc_action is now exposed out of the ifdef.
      - patch 4/10 ("net/act_skbedit: Utility functions for mark action")
        - Document clearly that is_tcf_skbedit_mark() is returning true if and only
          if the only action is mark [Dave]
      - patch 8/10 ("net/mlx5e: Introduce tc offload support")
        - make mlx5e_tc_add_flow() static
      
      Changes from V1:
      - patch 3/10 ("net/sched: Macro instead of CONFIG_NET_CLS_ACT ifdef")
        - fixed return value of tc_no_actions
      
      Changes from V0:
      - Use tc_no_actions and tc_for_each_action instead of ifdef CONFIG_NET_CLS_ACT
      - Replace ENOTSUPP (and some EINVAL) with EOPNOTSUPP
      - Name the flower command enum
      - fl_hw_destroy_filter() to return void - nobody uses the return value
      - mlx5e_tc_init() and mlx5e_tc_cleanup() to be called from the right places.
      - When adding HW rule fails - fail the command
      - Rules are added to be processed both by HW and SW unless SKIP_HW is given
      - Adding patch 6/10 ("net/mlx5e: Relax ndo_setup_tc handle restriction")
      
      Main changes from the RFC [1]:
      - API
        - Using ndo_setup_tc() instead of switchdev
      - act_skbedit, act_gact
        - Actions are not serialized to NIC driver, instead using access functions.
      - cls_flower
        - prevent double classification by software by not adding
          successfuly offloaded filters to the hashtable
        - Fixed some bugs in original RFC with rule delete
      - mlx5
        - Adding flow table to kernel namespace instead of a new namespace
        - s/offload/tc/ in many places
        - no need for a special kconfig since switchdev is not used
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e8ab563f