1. 01 5月, 2023 1 次提交
    • H
      r8152: fix flow control issue of RTL8156A · 8ceda6d5
      Hayes Wang 提交于
      The feature of flow control becomes abnormal, if the device sends a
      pause frame and the tx/rx is disabled before sending a release frame. It
      causes the lost of packets.
      
      Set PLA_RX_FIFO_FULL and PLA_RX_FIFO_EMPTY to zeros before disabling the
      tx/rx. And, toggle FC_PATCH_TASK before enabling tx/rx to reset the flow
      control patch and timer. Then, the hardware could clear the state and
      the flow control becomes normal after enabling tx/rx.
      
      Besides, remove inline for fc_pause_on_auto() and fc_pause_off_auto().
      
      Fixes: 195aae32 ("r8152: support new chips")
      Signed-off-by: NHayes Wang <hayeswang@realtek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8ceda6d5
  2. 28 4月, 2023 1 次提交
  3. 27 4月, 2023 10 次提交
    • S
      octeontx2-pf: mcs: Do not reset PN while updating secy · 3c99bace
      Subbaraya Sundeep 提交于
      After creating SecYs, SCs and SAs a SecY can be modified
      to change attributes like validation mode, protect frames
      mode etc. During this SecY update, packet number is reset to
      initial user given value by mistake. Hence do not reset
      PN when updating SecY parameters.
      
      Fixes: c54ffc73 ("octeontx2-pf: mcs: Introduce MACSEC hardware offloading")
      Signed-off-by: NSubbaraya Sundeep <sbhatta@marvell.com>
      Signed-off-by: NSunil Goutham <sgoutham@marvell.com>
      Signed-off-by: NGeetha sowjanya <gakula@marvell.com>
      Reviewed-by: NLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      3c99bace
    • S
      octeontx2-pf: mcs: Fix shared counters logic · 9bdfe610
      Subbaraya Sundeep 提交于
      Macsec stats like InPktsLate and InPktsDelayed share
      same counter in hardware. If SecY replay_protect is true
      then counter represents InPktsLate otherwise InPktsDelayed.
      This mode change was tracked based on protect_frames
      instead of replay_protect mistakenly. Similarly InPktsUnchecked
      and InPktsOk share same counter and mode change was tracked
      based on validate_check instead of validate_disabled.
      This patch fixes those problems.
      
      Fixes: c54ffc73 ("octeontx2-pf: mcs: Introduce MACSEC hardware offloading")
      Signed-off-by: NSubbaraya Sundeep <sbhatta@marvell.com>
      Signed-off-by: NSunil Goutham <sgoutham@marvell.com>
      Signed-off-by: NGeetha sowjanya <gakula@marvell.com>
      Reviewed-by: NLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      9bdfe610
    • S
      octeontx2-pf: mcs: Clear stats before freeing resource · 815debbb
      Subbaraya Sundeep 提交于
      When freeing MCS hardware resources like SecY, SC and
      SA the corresponding stats needs to be cleared. Otherwise
      previous stats are shown in newly created macsec interfaces.
      
      Fixes: c54ffc73 ("octeontx2-pf: mcs: Introduce MACSEC hardware offloading")
      Signed-off-by: NSubbaraya Sundeep <sbhatta@marvell.com>
      Signed-off-by: NSunil Goutham <sgoutham@marvell.com>
      Signed-off-by: NGeetha sowjanya <gakula@marvell.com>
      Reviewed-by: NLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      815debbb
    • S
      octeontx2-pf: mcs: Match macsec ethertype along with DMAC · 57d00d43
      Subbaraya Sundeep 提交于
      On CN10KB silicon a single hardware macsec block is
      present and offloads macsec operations for all the
      ethernet LMACs. TCAM match with macsec ethertype 0x88e5
      alone at RX side is not sufficient to distinguish all the
      macsec interfaces created on top of netdevs. Hence append
      the DMAC of the macsec interface too. Otherwise the first
      created macsec interface only receives all the macsec traffic.
      
      Fixes: c54ffc73 ("octeontx2-pf: mcs: Introduce MACSEC hardware offloading")
      Signed-off-by: NSubbaraya Sundeep <sbhatta@marvell.com>
      Signed-off-by: NSunil Goutham <sgoutham@marvell.com>
      Signed-off-by: NGeetha sowjanya <gakula@marvell.com>
      Reviewed-by: NLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      57d00d43
    • S
      octeontx2-pf: mcs: Fix NULL pointer dereferences · 699af748
      Subbaraya Sundeep 提交于
      When system is rebooted after creating macsec interface
      below NULL pointer dereference crashes occurred. This
      patch fixes those crashes by using correct order of teardown
      
      [ 3324.406942] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
      [ 3324.415726] Mem abort info:
      [ 3324.418510]   ESR = 0x96000006
      [ 3324.421557]   EC = 0x25: DABT (current EL), IL = 32 bits
      [ 3324.426865]   SET = 0, FnV = 0
      [ 3324.429913]   EA = 0, S1PTW = 0
      [ 3324.433047] Data abort info:
      [ 3324.435921]   ISV = 0, ISS = 0x00000006
      [ 3324.439748]   CM = 0, WnR = 0
      ....
      [ 3324.575915] Call trace:
      [ 3324.578353]  cn10k_mdo_del_secy+0x24/0x180
      [ 3324.582440]  macsec_common_dellink+0xec/0x120
      [ 3324.586788]  macsec_notify+0x17c/0x1c0
      [ 3324.590529]  raw_notifier_call_chain+0x50/0x70
      [ 3324.594965]  call_netdevice_notifiers_info+0x34/0x7c
      [ 3324.599921]  rollback_registered_many+0x354/0x5bc
      [ 3324.604616]  unregister_netdevice_queue+0x88/0x10c
      [ 3324.609399]  unregister_netdev+0x20/0x30
      [ 3324.613313]  otx2_remove+0x8c/0x310
      [ 3324.616794]  pci_device_shutdown+0x30/0x70
      [ 3324.620882]  device_shutdown+0x11c/0x204
      
      [  966.664930] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
      [  966.673712] Mem abort info:
      [  966.676497]   ESR = 0x96000006
      [  966.679543]   EC = 0x25: DABT (current EL), IL = 32 bits
      [  966.684848]   SET = 0, FnV = 0
      [  966.687895]   EA = 0, S1PTW = 0
      [  966.691028] Data abort info:
      [  966.693900]   ISV = 0, ISS = 0x00000006
      [  966.697729]   CM = 0, WnR = 0
      [  966.833467] Call trace:
      [  966.835904]  cn10k_mdo_stop+0x20/0xa0
      [  966.839557]  macsec_dev_stop+0xe8/0x11c
      [  966.843384]  __dev_close_many+0xbc/0x140
      [  966.847298]  dev_close_many+0x84/0x120
      [  966.851039]  rollback_registered_many+0x114/0x5bc
      [  966.855735]  unregister_netdevice_many.part.0+0x14/0xa0
      [  966.860952]  unregister_netdevice_many+0x18/0x24
      [  966.865560]  macsec_notify+0x1ac/0x1c0
      [  966.869303]  raw_notifier_call_chain+0x50/0x70
      [  966.873738]  call_netdevice_notifiers_info+0x34/0x7c
      [  966.878694]  rollback_registered_many+0x354/0x5bc
      [  966.883390]  unregister_netdevice_queue+0x88/0x10c
      [  966.888173]  unregister_netdev+0x20/0x30
      [  966.892090]  otx2_remove+0x8c/0x310
      [  966.895571]  pci_device_shutdown+0x30/0x70
      [  966.899660]  device_shutdown+0x11c/0x204
      [  966.903574]  __do_sys_reboot+0x208/0x290
      [  966.907487]  __arm64_sys_reboot+0x20/0x30
      [  966.911489]  el0_svc_handler+0x80/0x1c0
      [  966.915316]  el0_svc+0x8/0x180
      [  966.918362] Code: f9400000 f9400a64 91220014 f94b3403 (f9400060)
      [  966.924448] ---[ end trace 341778e799c3d8d7 ]---
      
      Fixes: c54ffc73 ("octeontx2-pf: mcs: Introduce MACSEC hardware offloading")
      Signed-off-by: NSubbaraya Sundeep <sbhatta@marvell.com>
      Signed-off-by: NSunil Goutham <sgoutham@marvell.com>
      Signed-off-by: NGeetha sowjanya <gakula@marvell.com>
      Reviewed-by: NLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      699af748
    • G
      octeontx2-af: mcs: Fix MCS block interrupt · b8aebeaa
      Geetha sowjanya 提交于
      On CN10KB, MCS IP vector number, BBE and PAB interrupt mask
      got changed to support more block level interrupts.
      To address this changes, this patch fixes the bbe and pab
      interrupt handlers.
      
      Fixes: 6c635f78 ("octeontx2-af: cn10k: mcs: Handle MCS block interrupts")
      Signed-off-by: NSunil Goutham <sgoutham@marvell.com>
      Signed-off-by: NGeetha sowjanya <gakula@marvell.com>
      Reviewed-by: NLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      b8aebeaa
    • G
      octeontx2-af: mcs: Config parser to skip 8B header · 65cdc2b6
      Geetha sowjanya 提交于
      When ptp timestamp is enabled in RPM, RPM will append 8B
      timestamp header for all RX traffic. MCS need to skip these
      8 bytes header while parsing the packet header, so that
      correct tcam key is created for lookup.
      This patch fixes the mcs parser configuration to skip this
      8B header for ptp packets.
      
      Fixes: ca7f49ff ("octeontx2-af: cn10k: Introduce driver for macsec block.")
      Signed-off-by: NSunil Goutham <sgoutham@marvell.com>
      Signed-off-by: NGeetha sowjanya <gakula@marvell.com>
      Reviewed-by: NLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      65cdc2b6
    • S
      octeontx2-af: mcs: Write TCAM_DATA and TCAM_MASK registers at once · b5161219
      Subbaraya Sundeep 提交于
      As per hardware errata on CN10KB, all the four TCAM_DATA
      and TCAM_MASK registers has to be written at once otherwise
      write to individual registers will fail. Hence write to all
      TCAM_DATA registers and then to all TCAM_MASK registers.
      
      Fixes: cfc14181 ("octeontx2-af: cn10k: mcs: Manage the MCS block hardware resources")
      Signed-off-by: NSubbaraya Sundeep <sbhatta@marvell.com>
      Signed-off-by: NSunil Kovvuri Goutham <sgoutham@marvell.com>
      Signed-off-by: NGeetha sowjanya <gakula@marvell.com>
      Reviewed-by: NLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      b5161219
    • G
      octeonxt2-af: mcs: Fix per port bypass config · c222b292
      Geetha sowjanya 提交于
      For each lmac port, MCS has two MCS_TOP_SLAVE_CHANNEL_CONFIGX
      registers. For CN10KB both register need to be configured for the
      port level mcs bypass to work. This patch also sets bitmap
      of flowid/secy entry reserved for default bypass so that these
      entries can be shown in debugfs.
      
      Fixes: bd69476e ("octeontx2-af: cn10k: mcs: Install a default TCAM for normal traffic")
      Signed-off-by: NGeetha sowjanya <gakula@marvell.com>
      Signed-off-by: NSunil Goutham <sgoutham@marvell.com>
      Reviewed-by: NLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      c222b292
    • J
      ixgbe: Fix panic during XDP_TX with > 64 CPUs · c23ae509
      John Hickey 提交于
      Commit 4fe81585 ("ixgbe: let the xdpdrv work with more than 64 cpus")
      adds support to allow XDP programs to run on systems with more than
      64 CPUs by locking the XDP TX rings and indexing them using cpu % 64
      (IXGBE_MAX_XDP_QS).
      
      Upon trying this out patch on a system with more than 64 cores,
      the kernel paniced with an array-index-out-of-bounds at the return in
      ixgbe_determine_xdp_ring in ixgbe.h, which means ixgbe_determine_xdp_q_idx
      was just returning the cpu instead of cpu % IXGBE_MAX_XDP_QS.  An example
      splat:
      
       ==========================================================================
       UBSAN: array-index-out-of-bounds in
       /var/lib/dkms/ixgbe/5.18.6+focal-1/build/src/ixgbe.h:1147:26
       index 65 is out of range for type 'ixgbe_ring *[64]'
       ==========================================================================
       BUG: kernel NULL pointer dereference, address: 0000000000000058
       #PF: supervisor read access in kernel mode
       #PF: error_code(0x0000) - not-present page
       PGD 0 P4D 0
       Oops: 0000 [#1] SMP NOPTI
       CPU: 65 PID: 408 Comm: ksoftirqd/65
       Tainted: G          IOE     5.15.0-48-generic #54~20.04.1-Ubuntu
       Hardware name: Dell Inc. PowerEdge R640/0W23H8, BIOS 2.5.4 01/13/2020
       RIP: 0010:ixgbe_xmit_xdp_ring+0x1b/0x1c0 [ixgbe]
       Code: 3b 52 d4 cf e9 42 f2 ff ff 66 0f 1f 44 00 00 0f 1f 44 00 00 55 b9
       00 00 00 00 48 89 e5 41 57 41 56 41 55 41 54 53 48 83 ec 08 <44> 0f b7
       47 58 0f b7 47 5a 0f b7 57 54 44 0f b7 76 08 66 41 39 c0
       RSP: 0018:ffffbc3fcd88fcb0 EFLAGS: 00010282
       RAX: ffff92a253260980 RBX: ffffbc3fe68b00a0 RCX: 0000000000000000
       RDX: ffff928b5f659000 RSI: ffff928b5f659000 RDI: 0000000000000000
       RBP: ffffbc3fcd88fce0 R08: ffff92b9dfc20580 R09: 0000000000000001
       R10: 3d3d3d3d3d3d3d3d R11: 3d3d3d3d3d3d3d3d R12: 0000000000000000
       R13: ffff928b2f0fa8c0 R14: ffff928b9be20050 R15: 000000000000003c
       FS:  0000000000000000(0000) GS:ffff92b9dfc00000(0000)
       knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: 0000000000000058 CR3: 000000011dd6a002 CR4: 00000000007706e0
       DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
       PKRU: 55555554
       Call Trace:
        <TASK>
        ixgbe_poll+0x103e/0x1280 [ixgbe]
        ? sched_clock_cpu+0x12/0xe0
        __napi_poll+0x30/0x160
        net_rx_action+0x11c/0x270
        __do_softirq+0xda/0x2ee
        run_ksoftirqd+0x2f/0x50
        smpboot_thread_fn+0xb7/0x150
        ? sort_range+0x30/0x30
        kthread+0x127/0x150
        ? set_kthread_struct+0x50/0x50
        ret_from_fork+0x1f/0x30
        </TASK>
      
      I think this is how it happens:
      
      Upon loading the first XDP program on a system with more than 64 CPUs,
      ixgbe_xdp_locking_key is incremented in ixgbe_xdp_setup.  However,
      immediately after this, the rings are reconfigured by ixgbe_setup_tc.
      ixgbe_setup_tc calls ixgbe_clear_interrupt_scheme which calls
      ixgbe_free_q_vectors which calls ixgbe_free_q_vector in a loop.
      ixgbe_free_q_vector decrements ixgbe_xdp_locking_key once per call if
      it is non-zero.  Commenting out the decrement in ixgbe_free_q_vector
      stopped my system from panicing.
      
      I suspect to make the original patch work, I would need to load an XDP
      program and then replace it in order to get ixgbe_xdp_locking_key back
      above 0 since ixgbe_setup_tc is only called when transitioning between
      XDP and non-XDP ring configurations, while ixgbe_xdp_locking_key is
      incremented every time ixgbe_xdp_setup is called.
      
      Also, ixgbe_setup_tc can be called via ethtool --set-channels, so this
      becomes another path to decrement ixgbe_xdp_locking_key to 0 on systems
      with more than 64 CPUs.
      
      Since ixgbe_xdp_locking_key only protects the XDP_TX path and is tied
      to the number of CPUs present, there is no reason to disable it upon
      unloading an XDP program.  To avoid confusion, I have moved enabling
      ixgbe_xdp_locking_key into ixgbe_sw_init, which is part of the probe path.
      
      Fixes: 4fe81585 ("ixgbe: let the xdpdrv work with more than 64 cpus")
      Signed-off-by: NJohn Hickey <jjh@daedalian.us>
      Reviewed-by: NMaciej Fijalkowski <maciej.fijalkowski@intel.com>
      Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
      Signed-off-by: NTony Nguyen <anthony.l.nguyen@intel.com>
      Link: https://lore.kernel.org/r/20230425170308.2522429-1-anthony.l.nguyen@intel.comSigned-off-by: NPaolo Abeni <pabeni@redhat.com>
      c23ae509
  4. 26 4月, 2023 1 次提交
  5. 25 4月, 2023 17 次提交
  6. 23 4月, 2023 5 次提交
  7. 22 4月, 2023 5 次提交