• Zumeng Chen's avatar
    gianfar: fix a flooded alignment reports because of padding issue. · 58117672
    Zumeng Chen authored
    According to LS1021A RM, the value of PAL can be set so that the start of the
    IP header in the receive data buffer is aligned to a 32-bit boundary. Normally,
    setting PAL = 2 provides minimal padding to ensure such alignment of the IP
    header.
    
    However every incoming packet's 8-byte time stamp will be inserted into the
    packet data buffer as padding alignment bytes when hardware time stamping is
    enabled.
    
    So we set the padding 8+2 here to avoid the flooded alignment faults:
    
    root@128:~# cat /proc/cpu/alignment
    User:           0
    System:         17539 (inet_gro_receive+0x114/0x2c0)
    Skipped:        0
    Half:           0
    Word:           0
    DWord:          0
    Multi:          17539
    User faults:    2 (fixup)
    
    Also shown when exception report enablement
    
    CPU: 0 PID: 161 Comm: irq/66-eth1_g0_ Not tainted 4.1.21-rt13-WR8.0.0.0_preempt-rt #16
    Hardware name: Freescale LS1021A
    [<8001b420>] (unwind_backtrace) from [<8001476c>] (show_stack+0x20/0x24)
    [<8001476c>] (show_stack) from [<807cfb48>] (dump_stack+0x94/0xac)
    [<807cfb48>] (dump_stack) from [<80025d70>] (do_alignment+0x720/0x958)
    [<80025d70>] (do_alignment) from [<80009224>] (do_DataAbort+0x40/0xbc)
    [<80009224>] (do_DataAbort) from [<80015398>] (__dabt_svc+0x38/0x60)
    Exception stack(0x86ad1cc0 to 0x86ad1d08)
    1cc0: f9b3e080 86b3d072 2d78d287 00000000 866816c0 86b3d05e 86e785d0 00000000
    1ce0: 00000011 0000000e 80840ab0 86ad1d3c 86ad1d08 86ad1d08 806d7fc0 806d806c
    1d00: 40070013 ffffffff
    [<80015398>] (__dabt_svc) from [<806d806c>] (inet_gro_receive+0x114/0x2c0)
    [<806d806c>] (inet_gro_receive) from [<80660eec>] (dev_gro_receive+0x21c/0x3c0)
    [<80660eec>] (dev_gro_receive) from [<8066133c>] (napi_gro_receive+0x44/0x17c)
    [<8066133c>] (napi_gro_receive) from [<804f0538>] (gfar_clean_rx_ring+0x39c/0x7d4)
    [<804f0538>] (gfar_clean_rx_ring) from [<804f0bf4>] (gfar_poll_rx_sq+0x58/0xe0)
    [<804f0bf4>] (gfar_poll_rx_sq) from [<80660b10>] (net_rx_action+0x27c/0x43c)
    [<80660b10>] (net_rx_action) from [<80033638>] (do_current_softirqs+0x1e0/0x3dc)
    [<80033638>] (do_current_softirqs) from [<800338c4>] (__local_bh_enable+0x90/0xa8)
    [<800338c4>] (__local_bh_enable) from [<8008025c>] (irq_forced_thread_fn+0x70/0x84)
    [<8008025c>] (irq_forced_thread_fn) from [<800805e8>] (irq_thread+0x16c/0x244)
    [<800805e8>] (irq_thread) from [<8004e490>] (kthread+0xe8/0x104)
    [<8004e490>] (kthread) from [<8000fda8>] (ret_from_fork+0x14/0x2c)
    Signed-off-by: default avatarZumeng Chen <zumeng.chen@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    58117672
gianfar.c 97.7 KB