[linux-yocto] Please revert this entire series: Re: [PATCH 1/1] Revert "net: Rename skb->rxhash to skb->hash"

Bruce Ashfield bruce.ashfield at windriver.com
Fri Sep 26 12:34:54 PDT 2014


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.he at 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.he at windriver.com wrote:
>>>>>> From: He Zhe <zhe.he at 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.he at 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 at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/linux-yocto
>>
>



More information about the linux-yocto mailing list