|
|
@@ -796,6 +796,31 @@ struct ethtool_rx_flow_spec {
|
|
|
__u32 location;
|
|
|
};
|
|
|
|
|
|
+/* How rings are layed out when accessing virtual functions or
|
|
|
+ * offloaded queues is device specific. To allow users to do flow
|
|
|
+ * steering and specify these queues the ring cookie is partitioned
|
|
|
+ * into a 32bit queue index with an 8 bit virtual function id.
|
|
|
+ * This also leaves the 3bytes for further specifiers. It is possible
|
|
|
+ * future devices may support more than 256 virtual functions if
|
|
|
+ * devices start supporting PCIe w/ARI. However at the moment I
|
|
|
+ * do not know of any devices that support this so I do not reserve
|
|
|
+ * space for this at this time. If a future patch consumes the next
|
|
|
+ * byte it should be aware of this possiblity.
|
|
|
+ */
|
|
|
+#define ETHTOOL_RX_FLOW_SPEC_RING 0x00000000FFFFFFFFLL
|
|
|
+#define ETHTOOL_RX_FLOW_SPEC_RING_VF 0x000000FF00000000LL
|
|
|
+#define ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF 32
|
|
|
+static inline __u64 ethtool_get_flow_spec_ring(__u64 ring_cookie)
|
|
|
+{
|
|
|
+ return ETHTOOL_RX_FLOW_SPEC_RING & ring_cookie;
|
|
|
+};
|
|
|
+
|
|
|
+static inline __u64 ethtool_get_flow_spec_ring_vf(__u64 ring_cookie)
|
|
|
+{
|
|
|
+ return (ETHTOOL_RX_FLOW_SPEC_RING_VF & ring_cookie) >>
|
|
|
+ ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF;
|
|
|
+};
|
|
|
+
|
|
|
/**
|
|
|
* struct ethtool_rxnfc - command to get or set RX flow classification rules
|
|
|
* @cmd: Specific command number - %ETHTOOL_GRXFH, %ETHTOOL_SRXFH,
|