1. 20 2月, 2022 9 次提交
    • R
      dpaa2-eth: Update SINGLE_STEP register access · c4680c97
      Radu Bulie 提交于
      DPAA2 MAC supports 1588 one step timestamping.
      If this option is enabled then for each transmitted PTP event packet,
      the 1588 SINGLE_STEP register is accessed to modify the following fields:
      
      -offset of the correction field inside the PTP packet
      -UDP checksum update bit,  in case the PTP event packet has
       UDP encapsulation
      
      These values can change any time, because there may be multiple
      PTP clients connected, that receive various 1588 frame types:
      - L2 only frame
      - UDP / Ipv4
      - UDP / Ipv6
      - other
      
      The current implementation uses dpni_set_single_step_cfg to update the
      SINLGE_STEP register.
      Using an MC command  on the Tx datapath for each transmitted 1588 message
      introduces high delays, leading to low throughput and consequently to a
      small number of supported PTP clients. Besides these, the nanosecond
      correction field from the PTP packet will contain the high delay from the
      driver which together with the originTimestamp will render timestamp
      values that are unacceptable in a GM clock implementation.
      
      This patch updates the Tx datapath for 1588 messages when single step
      timestamp is enabled and provides direct access to SINGLE_STEP register,
      eliminating the  overhead caused by the dpni_set_single_step_cfg
      MC command. MC version >= 10.32 implements this functionality.
      If the MC version does not have support for returning the
      single step register base address, the driver will use
      dpni_set_single_step_cfg command for updates operations.
      
      All the delay introduced by dpni_set_single_step_cfg
      function will be eliminated (if MC version has support for returning the
      base address of the single step register), improving the egress driver
      performance for PTP packets when single step timestamping is enabled.
      
      Before these changes the maximum throughput for 1588 messages with
      single step hardware timestamp enabled was around 2000pps.
      After the updates the throughput increased up to 32.82 Mbps / 46631.02 pps.
      Signed-off-by: NRadu Bulie <radu-andrei.bulie@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c4680c97
    • R
      dpaa2-eth: Update dpni_get_single_step_cfg command · 9572594e
      Radu Bulie 提交于
      dpni_get_single_step_cfg is an MC firmware command used for
      retrieving the contents of SINGLE_STEP 1588 register available
      in a DPMAC.
      
      This patch adds a new version of this command that returns as an extra
      argument the physical base address of the aforementioned register.
      The address will be used to directly modify the contents of the
      SINGLE_STEP register instead of invoking the MC command
      dpni_set_single_step_cgf. The former approach introduced huge delays on
      the TX datapath when one step PTP events were transmitted. This led to low
      throughput and high latencies observed in the PTP correction field.
      Signed-off-by: NRadu Bulie <radu-andrei.bulie@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9572594e
    • E
      net: get rid of rtnl_lock_unregistering() · 8a4fc54b
      Eric Dumazet 提交于
      After recent patches, and in particular commits
       faab39f6 ("net: allow out-of-order netdev unregistration") and
       e5f80fcf ("ipv6: give an IPv6 dev to blackhole_netdev")
      we no longer need the barrier implemented in rtnl_lock_unregistering().
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8a4fc54b
    • V
      net: prestera: flower: fix destroy tmpl in chain · b3ae2d35
      Volodymyr Mytnyk 提交于
      Fix flower destroy template callback to release template
      only for specific tc chain instead of all chain tempaltes.
      
      The issue was intruduced by previous commit that introduced
      multi-chain support.
      
      Fixes: fa5d824c ("net: prestera: acl: add multi-chain support offload")
      Signed-off-by: NVolodymyr Mytnyk <vmytnyk@marvell.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b3ae2d35
    • E
      bridge: switch br_net_exit to batch mode · 36a29fb6
      Eric Dumazet 提交于
      cleanup_net() is competing with other rtnl users.
      
      Instead of calling br_net_exit() for each netns,
      call br_net_exit_batch() once.
      
      This gives cleanup_net() ability to group more devices
      and call unregister_netdevice_many() only once for all bridge devices.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Roopa Prabhu <roopa@nvidia.com>
      Cc: Nikolay Aleksandrov <razor@blackwall.org>
      Acked-by: NNikolay Aleksandrov <razor@blackwall.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      36a29fb6
    • D
      Merge branch 'mctp-i2c' · a7cc3464
      David S. Miller 提交于
      Matt Johnston says:
      
      ====================
      MCTP I2C driver
      
      This patch series adds a netdev driver providing MCTP transport over
      I2C.
      
      I think I've addressed all the points raised in v5. It now has
      mctp_i2c_unregister() to run things in the correct order, waiting for
      the worker thread and I2C rx to complete.
      
      Cheers,
      Matt
      
      --
      
      v6:
       - Changed netdev register/unregister/free to avoid races. Ensure that
         netif functions are not used by irq handler/threads after unregister.
       - Fix incoming I2C hwaddr that was previously incorrect (left
         shifted 1 bit)
       - Add a check that byte_count wire header matches the length received
       - Renamed I2C driver to mctp-i2c-interface
       - Removed __func__ from print messages, added missing newlines
       - Removed sysfs mctp_current_mux file which was used for debug
       - Renamed curr_lock to sel_lock
       - Tidied comment formatting
       - Fix newline in Kconfig
      v5:
       - Fix incorrect format string
      v4:
       - Switch to __i2c_transfer() rather than __i2c_smbus_xfer(), drop 255 byte
         smbus patches
       - Use wait_event_idle() for the sleeping TX thread
       - Use dev_addr_set()
      v3:
       - Added Reviewed-bys for npcm7xx
       - Resend with net-next open
      v2:
       - Simpler Kconfig condition for i2c-mux dependency, from Randy Dunlap
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a7cc3464
    • M
      mctp i2c: MCTP I2C binding driver · f5b8abf9
      Matt Johnston 提交于
      Provides MCTP network transport over an I2C bus, as specified in
      DMTF DSP0237. All messages between nodes are sent as SMBus Block Writes.
      
      Each I2C bus to be used for MCTP is flagged in devicetree by a
      'mctp-controller' property on the bus node. Each flagged bus gets a
      mctpi2cX net device created based on the bus number. A
      'mctp-i2c-controller' I2C client needs to be added under the adapter. In
      an I2C mux situation the mctp-i2c-controller node must be attached only
      to the root I2C bus. The I2C client will handle incoming I2C slave block
      write data for subordinate busses as well as its own bus.
      
      In configurations without devicetree a driver instance can be attached
      to a bus using the I2C slave new_device mechanism.
      
      The MCTP core will hold/release the MCTP I2C device while responses
      are pending (a 6 second timeout or once a socket is closed, response
      received etc). While held the MCTP I2C driver will lock the I2C bus so
      that the correct I2C mux remains selected while responses are received.
      
      (Ideally we would just lock the mux to keep the current bus selected for
      the response rather than a full I2C bus lock, but that isn't exposed in
      the I2C mux API)
      Signed-off-by: NMatt Johnston <matt@codeconstruct.com.au>
      Signed-off-by: NJeremy Kerr <jk@codeconstruct.com.au>
      Reviewed-by: Wolfram Sang <wsa@kernel.org> # I2C transport parts
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f5b8abf9
    • M
      dt-bindings: net: New binding mctp-i2c-controller · 6881e493
      Matt Johnston 提交于
      Used to define a local endpoint to communicate with MCTP peripherals
      attached to an I2C bus. This I2C endpoint can communicate with remote
      MCTP devices on the I2C bus.
      
      In the example I2C topology below (matching the second yaml example) we
      have MCTP devices on busses i2c1 and i2c6. MCTP-supporting busses are
      indicated by the 'mctp-controller' DT property on an I2C bus node.
      
      A mctp-i2c-controller I2C client DT node is placed at the top of the
      mux topology, since only the root I2C adapter will support I2C slave
      functionality.
                                                     .-------.
                                                     |eeprom |
          .------------.     .------.               /'-------'
          | adapter    |     | mux  --@0,i2c5------'
          | i2c1       ----.*|      --@1,i2c6--.--.
          |............|    \'------'           \  \  .........
          | mctp-i2c-  |     \                   \  \ .mctpB  .
          | controller |      \                   \  '.0x30   .
          |            |       \  .........        \  '.......'
          | 0x50       |        \ .mctpA  .         \ .........
          '------------'         '.0x1d   .          '.mctpC  .
                                  '.......'          '.0x31   .
                                                      '.......'
      (mctpX boxes above are remote MCTP devices not included in the DT at
      present, they can be hotplugged/probed at runtime. A DT binding for
      specific fixed MCTP devices could be added later if required)
      Signed-off-by: NMatt Johnston <matt@codeconstruct.com.au>
      Reviewed-by: NRob Herring <robh@kernel.org>
      Acked-by: NWolfram Sang <wsa@kernel.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6881e493
    • M
      net: ip6mr: add support for passing full packet on wrong mif · 4b340a5a
      Mobashshera Rasool 提交于
      This patch adds support for MRT6MSG_WRMIFWHOLE which is used to pass
      full packet and real vif id when the incoming interface is wrong.
      While the RP and FHR are setting up state we need to be sending the
      registers encapsulated with all the data inside otherwise we lose it.
      The RP then decapsulates it and forwards it to the interested parties.
      Currently with WRONGMIF we can only be sending empty register packets
      and will lose that data.
      This behaviour can be enabled by using MRT_PIM with
      val == MRT6MSG_WRMIFWHOLE. This doesn't prevent MRT6MSG_WRONGMIF from
      happening, it happens in addition to it, also it is controlled by the same
      throttling parameters as WRONGMIF (i.e. 1 packet per 3 seconds currently).
      Both messages are generated to keep backwards compatibily and avoid
      breaking someone who was enabling MRT_PIM with val == 4, since any
      positive val is accepted and treated the same.
      Signed-off-by: NMobashshera Rasool <mobash.rasool.linux@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4b340a5a
  2. 19 2月, 2022 10 次提交
  3. 18 2月, 2022 21 次提交