net/virtio-user: add parameter to enable vectorized path
[dpdk.git] / drivers / net / tap / tap_bpf_program.c
index 848c50b..20c310e 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
- * Copyright 2017 Mellanox Technologies, Ltd.
+ * Copyright 2017 Mellanox Technologies, Ltd
  */
 
 #include <stdint.h>
                ((b) & 0xff))
 
 /*
- * The queue number is offset by 1, to distinguish packets that have
- * gone through this rule (skb->cb[1] != 0) from others.
+ * The queue number is offset by a unique QUEUE_OFFSET, to distinguish
+ * packets that have gone through this rule (skb->cb[1] != 0) from others.
  */
-#define QUEUE_OFFSET           1
+#define QUEUE_OFFSET           0x7cafe800
 #define PIN_GLOBAL_NS          2
 
 #define KEY_IDX                        0
@@ -63,6 +63,9 @@ match_q(struct __sk_buff *skb)
 
        if (queue != match_queue)
                return TC_ACT_OK;
+
+       /* queue match */
+       skb->cb[1] = 0;
        return TC_ACT_UNSPEC;
 }
 
@@ -72,16 +75,16 @@ struct ipv4_l3_l4_tuple {
        __u32    dst_addr;
        __u16    dport;
        __u16    sport;
-} __attribute__((packed));
+} __rte_packed;
 
 struct ipv6_l3_l4_tuple {
        __u8        src_addr[16];
        __u8        dst_addr[16];
        __u16       dport;
        __u16       sport;
-} __attribute__((packed));
+} __rte_packed;
 
-static const __u8 def_rss_key[] = {
+static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
        0xd1, 0x81, 0xc6, 0x2c,
        0xf7, 0xf4, 0xdb, 0x5b,
        0x19, 0x83, 0xa2, 0xfc,
@@ -103,7 +106,7 @@ rte_softrss_be(const __u32 *input_tuple, const uint8_t *rss_key,
        for (j = 0; j < input_len; j++) {
 #pragma unroll
                for (i = 0; i < 32; i++) {
-                       if (input_tuple[j] & (1 << (31 - i))) {
+                       if (input_tuple[j] & (1U << (31 - i))) {
                                hash ^= ((const __u32 *)def_rss_key)[j] << i |
                                (__u32)((uint64_t)
                                (((const __u32 *)def_rss_key)[j + 1])