On 14-09-26 02:42 PM, Darren Hart wrote:
This patch series has broken the kernel build. Multiple drivers and core
feature no longer even compile.

In the future, do not submit patches for inclusion that have not passed a
basic allyesconfig/allmodconfig test, if you are changing core features
that impact multiple architectures, then you must test them on other
architectures, particularly x86 as it's trivial to perform the test.

This is not a trivial error, this is a HUGE ISSUE. This breaks standard
and preempt-rt kernels for all Intel-common platforms and all tunnel creek
platforms. There is additional breakage in the 3.14 kernel which may or
may not be related to this.

Bruce, please revert this entire series and ask that the backport be
performed properly.

He Zhe, please build with an allyesconfig and an allmodconfig build. Find
where it breaks, use git log to find the changes in the impacted files up
to the latest patch you backported, and pull in the necessary changes.

So everyone knows, I'm doing the following reverts:

[standard/base 1ee3860f2090] Revert "net: Rename skb->hash to skb->rxhash"
 11 files changed, 46 insertions(+), 46 deletions(-)
[standard/base b5902acfc71a] Revert "net: e1000e calls skb_set_hash"
 1 file changed, 1 insertion(+), 1 deletion(-)
[standard/base 63d68c81fdff] Revert "net: ppp: use sk_unattached_filter api"
 1 file changed, 19 insertions(+), 41 deletions(-)
[standard/base 484aac0fbece] Revert "tracing: accelerate tracing filters with BPF"
 3 files changed, 286 insertions(+), 343 deletions(-)
[standard/base 036137911f4d] Revert "net: filter: x86: internal BPF JIT"
 4 files changed, 888 insertions(+), 981 deletions(-)
 rewrite arch/x86/net/bpf_jit_comp.c (78%)
[standard/base 41097326d2d7] Revert "net: filter: x86: split bpf_jit_compile()"
 1 file changed, 65 insertions(+), 92 deletions(-)
[standard/base 32449868690d] Revert "net: filter: Fix redefinition warnings on x86-64."
 1 file changed, 34 insertions(+), 37 deletions(-)
[standard/base adbef9b44d1a] Revert "net: filter: additional BPF tests"
 1 file changed, 322 insertions(+), 1546 deletions(-)
 rewrite lib/test_bpf.c (82%)
[standard/base c1c434c19b34] Revert "net: filter: BPF testsuite"
 4 files changed, 1 insertion(+), 343 deletions(-)
 delete mode 100644 lib/test_bpf.c
[standard/base 8e089bc6abb3] Revert "net: filter: make BPF conversion more readable"
 2 files changed, 92 insertions(+), 101 deletions(-)
[standard/base 12519022e53d] Revert "net: filter: misc/various cleanups"
 1 file changed, 8 insertions(+), 7 deletions(-)
[standard/base d886ab472049] Revert "net: filter: make register naming more comprehensible"
 2 files changed, 114 insertions(+), 145 deletions(-)
[standard/base eda92458c8bd] Revert "net: filter: simplify label names from jump-table"
 2 files changed, 154 insertions(+), 157 deletions(-)
[standard/base f238e0a766f2] Revert "bpf_dbg: fix wrong register usage"
 1 file changed, 1 insertion(+), 1 deletion(-)
[standard/base 3133a9d0ed99] Revert "sched, cls: check if we could overwrite actions when changing a filter"
 12 files changed, 41 insertions(+), 43 deletions(-)
[standard/base 9c2070d86fc9] Revert "net: filter: initialize A and X registers"
 1 file changed, 7 insertions(+), 9 deletions(-)
[standard/base c2946914196c] Revert "filter: added BPF random opcode"
 6 files changed, 2 insertions(+), 39 deletions(-)
[standard/base d1f2750e56b9] Revert "net: filter: seccomp: fix wrong decoding of BPF_S_ANC_SECCOMP_LD_W"
 2 files changed, 2 insertions(+)
[standard/base 8e2fe546d54a] Revert "filter: prevent nla extensions to peek beyond the end of the message"
 1 file changed, 1 insertion(+), 7 deletions(-)
[standard/base 830931d7bce8] Revert "net: filter: be more defensive on div/mod by X==0"
 1 file changed, 16 insertions(+), 16 deletions(-)
[standard/base 7e98e152e12e] Revert "net: filter: minor: fix kdoc in __sk_run_filter"
 1 file changed, 2 insertions(+), 2 deletions(-)
[standard/base e61518fba8bb] Revert "net: filter: rework/optimize internal BPF interpreter's instruction set"
 4 files changed, 1038 insertions(+), 1941 deletions(-)
 rewrite net/core/filter.c (61%)
[standard/base 1b4e3fa12f25] Revert "net: filter: move filter accounting to filter core"
 3 files changed, 42 insertions(+), 42 deletions(-)
[standard/base da2929334728] Revert "net: filter: keep original BPF program around"
 3 files changed, 31 insertions(+), 93 deletions(-)
[standard/base 6dd27fe68c7b] Revert "net: filter: add jited flag to indicate jit compiled filters"
 7 files changed, 6 insertions(+), 15 deletions(-)
[standard/base 43a65911b7a4] Revert "net: Rename skb->rxhash to skb->hash"
 12 files changed, 49 insertions(+), 49 deletions(-)
[standard/base 0ca8f6b51728] Revert "tools: bpf_dbg: various misc code cleanups"
 1 file changed, 64 insertions(+), 55 deletions(-)


Yell if I've missed anything, I'm doing the builds now.

Bruce


For example, at least the following two are required even to get pch_gbe
to compile (and it still doesn't link):
164d8c6 net: ptp: do not reimplement PTP/BPF classifier
e62d2df net: ptp: use sk_unattached_filter_create() for BPF


I've seen build failures in isdn_ppp, pch_gbe, ti/cpts.c, ixp4xx_eth.c,
crypto, aufs fs, etc.

Again, this is completely unacceptable. Submitting patches for inclusion
in a Linux kernel tree requires that the resulting tree compiles for all
drivers and all architectures. This goes triple for standard/base and
standard/preempt-rt/base which every BSP depends on.

--
Darren Hart

On 9/10/14, 18:41, "He Zhe" <zhe...@windriver.com> wrote:

On 09/10/2014 10:06 PM, Bruce Ashfield wrote:
On 14-09-10 03:17 AM, He Zhe wrote:
On 09/10/2014 02:41 PM, Bruce Ashfield wrote:
On 14-09-09 10:56 PM, zhe...@windriver.com wrote:
From: He Zhe <zhe...@windriver.com>

Revert unnecessary renaming for BPF. Build will fail if related
drivers are
enabled but do not get updated accordingly.
Did you actually perform a git revert on this commit on
linux-yocto-3.14
standard/base branch ?

This didn't revert cleanly for me.

So please double check, and make sure you've cloned the latest tree
from the
git servers.

I can apply the patch successfully as follow. Could you please send me
your process?

1) Clone and pull on this repo
git://git.yoctoproject.org/linux-yocto-3.14

2) Switch to standard/base

3) Apply the patch
git am ~/0001-Revert-net-Rename-skb-rxhash-to-skb-hash.patch
Applying: Revert "net: Rename skb->rxhash to skb->hash"
Right here. If a patch is a pure revert of the original, you do not
apply a patch .. you revert it.

Find the git commit and issue "git revert <hash>", if it fails, there
are other stacked patches that have changed context to adapt to the
first one.

In that case, we are not doing a clean revert, and your patch is also
implicitly fixing up those other patches. So we can't call it a
revert in the commit header, and you need to document/explain those
other fixes as well.

Yes, some details were omitted. I'll send V2 and explain them.Thanks.

Zhe

Bruce

4) git log --pretty=oneline -40 | grep -v ^:
c33f98897774024687745f6d0f4a651e98031b13 Revert "net: Rename
skb->rxhash
to skb->hash"                       ---- the revert
b85edae6fd61ceadfc08099608e8ac90aa4c5c33 net: e1000e calls
skb_set_hash ---- last
one of BPF set
b45e6dec1972bc70ceba882da17a043b7a9b58bc net: ppp: use
sk_unattached_filter api
d310945fb6d8729cfd538bfcf28d348a863ff486 tracing: accelerate tracing
filters with BPF
6742a0d5e218809106b107a58378811201445fd8 net: filter: x86: internal
BPF JIT
66f2b151dd096f2e531ffa6985115b5ad850e3f5 net: filter: x86: split
bpf_jit_compile()
3c82c5d1fc493f1240e689020790777351b8f9f3 net: filter: Fix redefinition
warnings on x86-64.
5ad74ef546a4b453277d66bb40d0605f6a95be2b net: filter: additional BPF
tests
f097814fc3051b37918ac496dd16fc70215d836e net: filter: BPF testsuite
1bcefe39e229c4cd4ef81e62ee8c7016077ce709 net: filter: make BPF
conversion more readable
e75a3abd0c6f56c0e368e66dd1a9040edb3bed3b net: filter: misc/various
cleanups
f5cd96317979c402ba9e10ead36f6baef66bfd29 net: filter: make register
naming more comprehensible
2f485870e68b5dacfb49cd36b92e8110f7eb2274 net: filter: simplify label
names from jump-table
d381512d96f085353e96dec245d6045c8b7cd27e bpf_dbg: fix wrong register
usage
d99d91c2c5a95a6764b30be63aa5b9cfc3936c85 sched, cls: check if we could
overwrite actions when changing a filter
8a03c23319dc747b76924f43be37e7554dfffea2 net: filter: initialize A and
X
registers
77a8a3fb86cb81d92892f09fa7e9075a9165d7fb filter: added BPF random
opcode
a9bb9bcd5a0485ec4b95b0212b3b442e2298b581 net: filter: seccomp: fix
wrong
decoding of BPF_S_ANC_SECCOMP_LD_W
724096236a6836581ea4d46a9a3631ad8bf3b20c filter: prevent nla extensions
to peek beyond the end of the message
41bdf9a8c75f62d49138df4aaff09553b8675a29 net: filter: be more defensive
on div/mod by X==0
2f908136e31125fd28004c95c7921e693d3e3673 net: filter: minor: fix kdoc
in
__sk_run_filter
2c733311d285a7222823a8b342d76a2ee1c13fa2 net: filter: rework/optimize
internal BPF interpreter's instruction set
40155402aff6eb09a013935e7e75d4bf5b79e96a net: filter: move filter
accounting to filter core
2635af59e1b6f03f87632bdedb437b18a117b3f6 net: filter: keep original BPF
program around
97147dbf46f8316e5c67b921970a5996cd930c01 net: filter: add jited flag to
indicate jit compiled filters
676d895e105a4cb69461ab313ef1851493af6018 net: Rename skb->rxhash to
skb->hash
1e4f73c1430777626f65834599eb6ace3998ee80 tools: bpf_dbg: various misc
code cleanups                                ---- first one of BPF set
......


Zhe

Bruce

Signed-off-by: He Zhe <zhe...@windriver.com>
---
   arch/arm/net/bpf_jit_32.c       |  4 ++--
   arch/powerpc/net/bpf_jit_comp.c |  4 ++--
   arch/s390/net/bpf_jit_comp.c    |  8 ++++----
   arch/sparc/net/bpf_jit_comp.c   |  2 +-
   include/linux/skbuff.h          | 28 ++++++++++++++--------------
   include/net/sock.h              |  4 ++--
   include/trace/events/net.h      | 12 ++++++------
   net/core/dev.c                  | 13 ++++++-------
   net/core/filter.c               |  4 ++--
   net/core/flow_dissector.c       | 10 +++++-----
   net/packet/af_packet.c          |  3 ++-
   11 files changed, 46 insertions(+), 46 deletions(-)

diff --git a/arch/arm/net/bpf_jit_32.c b/arch/arm/net/bpf_jit_32.c
index 6f879c3..e72ff51 100644
--- a/arch/arm/net/bpf_jit_32.c
+++ b/arch/arm/net/bpf_jit_32.c
@@ -825,8 +825,8 @@ b_epilogue:
               break;
           case BPF_S_ANC_RXHASH:
               ctx->seen |= SEEN_SKB;
-            BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, hash) != 4);
-            off = offsetof(struct sk_buff, hash);
+            BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, rxhash) != 4);
+            off = offsetof(struct sk_buff, rxhash);
               emit(ARM_LDR_I(r_A, r_skb, off), ctx);
               break;
           case BPF_S_ANC_VLAN_TAG:
diff --git a/arch/powerpc/net/bpf_jit_comp.c
b/arch/powerpc/net/bpf_jit_comp.c
index 808ce1c..c0c5fcb 100644
--- a/arch/powerpc/net/bpf_jit_comp.c
+++ b/arch/powerpc/net/bpf_jit_comp.c
@@ -390,9 +390,9 @@ static int bpf_jit_build_body(struct sk_filter
*fp, u32 *image,
                                 mark));
               break;
           case BPF_S_ANC_RXHASH:
-            BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, hash) != 4);
+            BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, rxhash) != 4);
               PPC_LWZ_OFFS(r_A, r_skb, offsetof(struct sk_buff,
-                              hash));
+                              rxhash));
               break;
           case BPF_S_ANC_VLAN_TAG:
           case BPF_S_ANC_VLAN_TAG_PRESENT:
diff --git a/arch/s390/net/bpf_jit_comp.c
b/arch/s390/net/bpf_jit_comp.c
index e9f8fa9..44f224b 100644
--- a/arch/s390/net/bpf_jit_comp.c
+++ b/arch/s390/net/bpf_jit_comp.c
@@ -736,10 +736,10 @@ call_fn:    /* lg %r1,<d(function)>(%r13) */
           /* icm    %r5,3,<d(type)>(%r1) */
           EMIT4_DISP(0xbf531000, offsetof(struct net_device, type));
           break;
-    case BPF_S_ANC_RXHASH: /* A = skb->hash */
-        BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, hash) != 4);
-        /* l %r5,<d(hash)>(%r2) */
-        EMIT4_DISP(0x58502000, offsetof(struct sk_buff, hash));
+    case BPF_S_ANC_RXHASH: /* A = skb->rxhash */
+        BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, rxhash) != 4);
+        /* l %r5,<d(rxhash)>(%r2) */
+        EMIT4_DISP(0x58502000, offsetof(struct sk_buff, rxhash));
           break;
       case BPF_S_ANC_VLAN_TAG:
       case BPF_S_ANC_VLAN_TAG_PRESENT:
diff --git a/arch/sparc/net/bpf_jit_comp.c
b/arch/sparc/net/bpf_jit_comp.c
index 49cee4a..b85e223 100644
--- a/arch/sparc/net/bpf_jit_comp.c
+++ b/arch/sparc/net/bpf_jit_comp.c
@@ -618,7 +618,7 @@ void bpf_jit_compile(struct sk_filter *fp)
                   emit_load16(r_A, struct net_device, type, r_A);
                   break;
               case BPF_S_ANC_RXHASH:
-                emit_skb_load32(hash, r_A);
+                emit_skb_load32(rxhash, r_A);
                   break;
               case BPF_S_ANC_VLAN_TAG:
               case BPF_S_ANC_VLAN_TAG_PRESENT:
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 69d3749..15ede6a 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -392,11 +392,11 @@ typedef unsigned char *sk_buff_data_t;
    *    @skb_iif: ifindex of device we arrived on
    *    @tc_index: Traffic control index
    *    @tc_verd: traffic control verdict
- *    @hash: the packet hash
+ *    @rxhash: the packet hash computed on receive
    *    @queue_mapping: Queue mapping for multiqueue devices
    *    @ndisc_nodetype: router type (from link layer)
    *    @ooo_okay: allow the mapping of a socket to a queue to be
changed
- *    @l4_hash: indicate hash is a canonical 4-tuple hash over
transport
+ *    @l4_rxhash: indicate rxhash is a canonical 4-tuple hash over
transport
    *        ports.
    *    @wifi_acked_valid: wifi_acked was set
    *    @wifi_acked: whether frame was acked on wifi or not
@@ -482,7 +482,7 @@ struct sk_buff {

       int            skb_iif;

-    __u32            hash;
+    __u32            rxhash;

       __be16            vlan_proto;
       __u16            vlan_tci;
@@ -501,7 +501,7 @@ struct sk_buff {
   #endif
       __u8            pfmemalloc:1;
       __u8            ooo_okay:1;
-    __u8            l4_hash:1;
+    __u8            l4_rxhash:1;
       __u8            wifi_acked_valid:1;
       __u8            wifi_acked:1;
       __u8            no_fcs:1;
@@ -758,40 +758,40 @@ enum pkt_hash_types {
   static inline void
   skb_set_hash(struct sk_buff *skb, __u32 hash, enum pkt_hash_types
type)
   {
-    skb->l4_hash = (type == PKT_HASH_TYPE_L4);
-    skb->hash = hash;
+    skb->l4_rxhash = (type == PKT_HASH_TYPE_L4);
+    skb->rxhash = hash;
   }

   void __skb_get_hash(struct sk_buff *skb);
   static inline __u32 skb_get_hash(struct sk_buff *skb)
   {
-    if (!skb->l4_hash)
+    if (!skb->l4_rxhash)
           __skb_get_hash(skb);

-    return skb->hash;
+    return skb->rxhash;
   }

   static inline __u32 skb_get_hash_raw(const struct sk_buff *skb)
   {
-    return skb->hash;
+    return skb->rxhash;
   }

   static inline void skb_clear_hash(struct sk_buff *skb)
   {
-    skb->hash = 0;
-    skb->l4_hash = 0;
+    skb->rxhash = 0;
+    skb->l4_rxhash = 0;
   }

   static inline void skb_clear_hash_if_not_l4(struct sk_buff *skb)
   {
-    if (!skb->l4_hash)
+    if (!skb->l4_rxhash)
           skb_clear_hash(skb);
   }

   static inline void skb_copy_hash(struct sk_buff *to, const struct
sk_buff *from)
   {
-    to->hash = from->hash;
-    to->l4_hash = from->l4_hash;
+    to->rxhash = from->rxhash;
+    to->l4_rxhash = from->l4_rxhash;
   };

   #ifdef NET_SKBUFF_DATA_USES_OFFSET
diff --git a/include/net/sock.h b/include/net/sock.h
index 547e4e5..e2a51ab 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -862,9 +862,9 @@ static inline void sock_rps_save_rxhash(struct
sock *sk,
                       const struct sk_buff *skb)
   {
   #ifdef CONFIG_RPS
-    if (unlikely(sk->sk_rxhash != skb->hash)) {
+    if (unlikely(sk->sk_rxhash != skb->rxhash)) {
           sock_rps_reset_flow(sk);
-        sk->sk_rxhash = skb->hash;
+        sk->sk_rxhash = skb->rxhash;
       }
   #endif
   }
diff --git a/include/trace/events/net.h b/include/trace/events/net.h
index 1de256b..a34f27b 100644
--- a/include/trace/events/net.h
+++ b/include/trace/events/net.h
@@ -153,8 +153,8 @@ DECLARE_EVENT_CLASS(net_dev_rx_verbose_template,
           __field(    u16,            vlan_tci    )
           __field(    u16,            protocol    )
           __field(    u8,            ip_summed    )
-        __field(    u32,            hash        )
-        __field(    bool,            l4_hash        )
+        __field(    u32,            rxhash        )
+        __field(    bool,            l4_rxhash    )
           __field(    unsigned int,        len        )
           __field(    unsigned int,        data_len    )
           __field(    unsigned int,        truesize    )
@@ -179,8 +179,8 @@ DECLARE_EVENT_CLASS(net_dev_rx_verbose_template,
           __entry->vlan_tci = vlan_tx_tag_get(skb);
           __entry->protocol = ntohs(skb->protocol);
           __entry->ip_summed = skb->ip_summed;
-        __entry->hash = skb->hash;
-        __entry->l4_hash = skb->l4_hash;
+        __entry->rxhash = skb->rxhash;
+        __entry->l4_rxhash = skb->l4_rxhash;
           __entry->len = skb->len;
           __entry->data_len = skb->data_len;
           __entry->truesize = skb->truesize;
@@ -191,11 +191,11 @@
DECLARE_EVENT_CLASS(net_dev_rx_verbose_template,
           __entry->gso_type = skb_shinfo(skb)->gso_type;
       ),

-    TP_printk("dev=%s napi_id=%#x queue_mapping=%u skbaddr=%p
vlan_tagged=%d vlan_proto=0x%04x vlan_tci=0x%04x protocol=0x%04x
ip_summed=%d hash=0x%08x l4_hash=%d len=%u data_len=%u truesize=%u
mac_header_valid=%d mac_header=%d nr_frags=%d gso_size=%d
gso_type=%#x",
+    TP_printk("dev=%s napi_id=%#x queue_mapping=%u skbaddr=%p
vlan_tagged=%d vlan_proto=0x%04x vlan_tci=0x%04x protocol=0x%04x
ip_summed=%d rxhash=0x%08x l4_rxhash=%d len=%u data_len=%u
truesize=%u mac_header_valid=%d mac_header=%d nr_frags=%d gso_size=%d
gso_type=%#x",
             __get_str(name), __entry->napi_id,
__entry->queue_mapping,
             __entry->skbaddr, __entry->vlan_tagged,
__entry->vlan_proto,
             __entry->vlan_tci, __entry->protocol, __entry->ip_summed,
-          __entry->hash, __entry->l4_hash, __entry->len,
+          __entry->rxhash, __entry->l4_rxhash, __entry->len,
             __entry->data_len, __entry->truesize,
             __entry->mac_header_valid, __entry->mac_header,
             __entry->nr_frags, __entry->gso_size, __entry->gso_type)
diff --git a/net/core/dev.c b/net/core/dev.c
index 20247e5..37bddf7 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2964,7 +2964,7 @@ set_rps_cpu(struct net_device *dev, struct
sk_buff *skb,
           flow_table = rcu_dereference(rxqueue->rps_flow_table);
           if (!flow_table)
               goto out;
-        flow_id = skb_get_hash(skb) & flow_table->mask;
+        flow_id = skb->rxhash & flow_table->mask;
           rc = dev->netdev_ops->ndo_rx_flow_steer(dev, skb,
                               rxq_index, flow_id);
           if (rc < 0)
@@ -2998,7 +2998,6 @@ static int get_rps_cpu(struct net_device *dev,
struct sk_buff *skb,
       struct rps_sock_flow_table *sock_flow_table;
       int cpu = -1;
       u16 tcpu;
-    u32 hash;

       if (skb_rx_queue_recorded(skb)) {
           u16 index = skb_get_rx_queue(skb);
@@ -3027,8 +3026,7 @@ static int get_rps_cpu(struct net_device *dev,
struct sk_buff *skb,
       }

       skb_reset_network_header(skb);
-    hash = skb_get_hash(skb);
-    if (!hash)
+    if (!skb_get_hash(skb))
           goto done;

       flow_table = rcu_dereference(rxqueue->rps_flow_table);
@@ -3037,10 +3035,11 @@ static int get_rps_cpu(struct net_device
*dev, struct sk_buff *skb,
           u16 next_cpu;
           struct rps_dev_flow *rflow;

-        rflow = &flow_table->flows[hash & flow_table->mask];
+        rflow = &flow_table->flows[skb->rxhash & flow_table->mask];
           tcpu = rflow->cpu;

-        next_cpu = sock_flow_table->ents[hash &
sock_flow_table->mask];
+        next_cpu = sock_flow_table->ents[skb->rxhash &
+            sock_flow_table->mask];

           /*
            * If the desired CPU (where last recvmsg was done) is
@@ -3069,7 +3068,7 @@ static int get_rps_cpu(struct net_device *dev,
struct sk_buff *skb,
       }

       if (map) {
-        tcpu = map->cpus[((u64) hash * map->len) >> 32];
+        tcpu = map->cpus[((u64) skb->rxhash * map->len) >> 32];

           if (cpu_online(tcpu)) {
               cpu = tcpu;
diff --git a/net/core/filter.c b/net/core/filter.c
index 32c5b44..ac88686 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -729,10 +729,10 @@ static bool convert_bpf_extensions(struct
sock_filter *fp,
           break;

       case SKF_AD_OFF + SKF_AD_RXHASH:
-        BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, hash) != 4);
+        BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, rxhash) != 4);

           *insn = BPF_LDX_MEM(BPF_W, BPF_REG_A, BPF_REG_CTX,
-                    offsetof(struct sk_buff, hash));
+                    offsetof(struct sk_buff, rxhash));
           break;

       case SKF_AD_OFF + SKF_AD_QUEUE:
diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c
index 8808dcd..e29e810 100644
--- a/net/core/flow_dissector.c
+++ b/net/core/flow_dissector.c
@@ -203,8 +203,8 @@ static __always_inline u32
__flow_hash_1word(u32 a)

   /*
    * __skb_get_hash: calculate a flow hash based on src/dst addresses
- * and src/dst port numbers.  Sets hash in skb to non-zero hash
value
- * on success, zero indicates no valid hash.  Also, sets l4_hash
in skb
+ * and src/dst port numbers.  Sets rxhash in skb to non-zero hash
value
+ * on success, zero indicates no valid hash.  Also, sets l4_rxhash
in skb
    * if hash is a canonical 4-tuple hash over transport ports.
    */
   void __skb_get_hash(struct sk_buff *skb)
@@ -216,7 +216,7 @@ void __skb_get_hash(struct sk_buff *skb)
           return;

       if (keys.ports)
-        skb->l4_hash = 1;
+        skb->l4_rxhash = 1;

       /* get a consistent hash (same value on both flow directions)
*/
       if (((__force u32)keys.dst < (__force u32)keys.src) ||
@@ -232,7 +232,7 @@ void __skb_get_hash(struct sk_buff *skb)
       if (!hash)
           hash = 1;

-    skb->hash = hash;
+    skb->rxhash = hash;
   }
   EXPORT_SYMBOL(__skb_get_hash);

@@ -344,7 +344,7 @@ static inline int get_xps_queue(struct net_device
*dev, struct sk_buff *skb)
                       hash = skb->sk->sk_hash;
                   else
                       hash = (__force u16) skb->protocol ^
-                        skb->hash;
+                        skb->rxhash;
                   hash = __flow_hash_1word(hash);
                   queue_index = map->queues[
                       ((u64)hash * map->len) >> 32];
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 3a1521f..48a6a93 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -1277,7 +1277,7 @@ static unsigned int fanout_demux_hash(struct
packet_fanout *f,
                         struct sk_buff *skb,
                         unsigned int num)
   {
-    return reciprocal_scale(skb_get_hash(skb), num);
+    return reciprocal_scale(skb->rxhash, num);
   }

   static unsigned int fanout_demux_lb(struct packet_fanout *f,
@@ -1362,6 +1362,7 @@ static int packet_rcv_fanout(struct sk_buff
*skb, struct net_device *dev,
               if (!skb)
                   return 0;
           }
+        skb_get_hash(skb);
           idx = fanout_demux_hash(f, skb, num);
           break;
       case PACKET_FANOUT_LB:

--
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto



--
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to