Thread (29 messages) 29 messages, 4 authors, 2017-08-14

Re: [PATCH 1/6] [net-next]net: sched: act_mirred: Extend redirect action to accept a traffic class

flat view

From: Jamal Hadi Salim <jhs@mojatatu.com>
Date: 2017-08-01 10:22:18
Also in: intel-wired-lan

On 17-07-31 08:37 PM, Amritha Nambiar wrote:
quoted hunk ↗ jump to hunk
The Mirred/redirect action is extended to forward to a traffic
class on the device. The traffic class index needs to be
provided in addition to the device's ifindex.

Example:
# tc filter add dev eth0 protocol ip parent ffff: prio 1 flower\
   dst_ip 192.168.1.1/32 ip_proto udp dst_port 22\
   skip_sw indev eth0 action mirred ingress redirect dev eth0 tc 1

Signed-off-by: Amritha Nambiar <redacted>
---
  include/net/tc_act/tc_mirred.h        |    7 +++++++
  include/uapi/linux/tc_act/tc_mirred.h |    5 +++++
  net/sched/act_mirred.c                |   17 +++++++++++++++++
  3 files changed, 29 insertions(+)
diff --git a/include/net/tc_act/tc_mirred.h b/include/net/tc_act/tc_mirred.h
index 604bc31..60058c4 100644
--- a/include/net/tc_act/tc_mirred.h
+++ b/include/net/tc_act/tc_mirred.h
@@ -9,6 +9,8 @@ struct tcf_mirred {
  	int			tcfm_eaction;
  	int			tcfm_ifindex;
  	bool			tcfm_mac_header_xmit;
+	u8			tcfm_tc;
+	u32			flags;
  	struct net_device __rcu	*tcfm_dev;
  	struct list_head	tcfm_list;
  };
@@ -37,4 +39,9 @@ static inline int tcf_mirred_ifindex(const struct tc_action *a)
  	return to_mirred(a)->tcfm_ifindex;
  }
  
+static inline int tcf_mirred_tc(const struct tc_action *a)
+{
+	return to_mirred(a)->tcfm_tc;
+}
+
  #endif /* __NET_TC_MIR_H */
diff --git a/include/uapi/linux/tc_act/tc_mirred.h b/include/uapi/linux/tc_act/tc_mirred.h
index 3d7a2b3..8ff4d76 100644
--- a/include/uapi/linux/tc_act/tc_mirred.h
+++ b/include/uapi/linux/tc_act/tc_mirred.h
@@ -9,6 +9,10 @@
  #define TCA_EGRESS_MIRROR 2 /* mirror packet to EGRESS */
  #define TCA_INGRESS_REDIR 3  /* packet redirect to INGRESS*/
  #define TCA_INGRESS_MIRROR 4 /* mirror packet to INGRESS */
+
+#define MIRRED_F_TC_MAP		0x1
+#define MIRRED_TC_MAP_MAX	0x10
Assuming this is the max number of queues?
Where does this upper bound come from? Is it a spec
or an intel thing? If spec - mentioning which
spec and section would be useful.

cheers,
jamal
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help