• Baowen Zheng's avatar
    nfp: flow_offload: move flow_indr_dev_register from app init to app start · 60d950f4
    Baowen Zheng authored
    In commit 74fc4f82 ("net: Fix offloading indirect devices dependency
    on qdisc order creation"), it adds a process to trigger the callback to
    setup the bo callback when the driver regists a callback.
    
    In our current implement, we are not ready to run the callback when nfp
    call the function flow_indr_dev_register, then there will be error
    message as:
    
    kernel: Oops: 0000 [#1] SMP PTI
    kernel: CPU: 0 PID: 14119 Comm: kworker/0:0 Tainted: G
    kernel: Workqueue: events work_for_cpu_fn
    kernel: RIP: 0010:nfp_flower_indr_setup_tc_cb+0x258/0x410
    kernel: RSP: 0018:ffffbc1e02c57bf8 EFLAGS: 00010286
    kernel: RAX: 0000000000000000 RBX: ffff9c761fabc000 RCX: 0000000000000001
    kernel: RDX: 0000000000000001 RSI: fffffffffffffff0 RDI: ffffffffc0be9ef1
    kernel: RBP: ffffbc1e02c57c58 R08: ffffffffc08f33aa R09: ffff9c6db7478800
    kernel: R10: 0000009c003f6e00 R11: ffffbc1e02800000 R12: ffffbc1e000d9000
    kernel: R13: ffffbc1e000db428 R14: ffff9c6db7478800 R15: ffff9c761e884e80
    kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    kernel: CR2: fffffffffffffff0 CR3: 00000009e260a004 CR4: 00000000007706f0
    kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    kernel: PKRU: 55555554
    kernel: Call Trace:
    kernel: ? flow_indr_dev_register+0xab/0x210
    kernel: ? __cond_resched+0x15/0x30
    kernel: ? kmem_cache_alloc_trace+0x44/0x4b0
    kernel: ? nfp_flower_setup_tc+0x1d0/0x1d0 [nfp]
    kernel: flow_indr_dev_register+0x158/0x210
    kernel: ? tcf_block_unbind+0xe0/0xe0
    kernel: nfp_flower_init+0x40b/0x650 [nfp]
    kernel: nfp_net_pci_probe+0x25f/0x960 [nfp]
    kernel: ? nfp_rtsym_read_le+0x76/0x130 [nfp]
    kernel: nfp_pci_probe+0x6a9/0x820 [nfp]
    kernel: local_pci_probe+0x45/0x80
    
    So we need to call flow_indr_dev_register in app start process instead of
    init stage.
    
    Fixes: 74fc4f82
    
     ("net: Fix offloading indirect devices dependency on qdisc order creation")
    Signed-off-by: default avatarBaowen Zheng <baowen.zheng@corigine.com>
    Signed-off-by: default avatarSimon Horman <simon.horman@corigine.com>
    Signed-off-by: default avatarLouis Peens <louis.peens@corigine.com>
    Link: https://lore.kernel.org/r/20211012124850.13025-1-louis.peens@corigine.com
    
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    60d950f4
main.c 24.4 KB