• Alejandro Lucero's avatar
    sfc: disable softirqs for ptp TX · 67c3b611
    Alejandro Lucero authored
    Sending a PTP packet can imply to use the normal TX driver datapath but
    invoked from the driver's ptp worker. The kernel generic TX code
    disables softirqs and preemption before calling specific driver TX code,
    but the ptp worker does not. Although current ptp driver functionality
    does not require it, there are several reasons for doing so:
    
       1) The invoked code is always executed with softirqs disabled for non
          PTP packets.
       2) Better if a ptp packet transmission is not interrupted by softirq
          handling which could lead to high latencies.
       3) netdev_xmit_more used by the TX code requires preemption to be
          disabled.
    
    Indeed a solution for dealing with kernel preemption state based on static
    kernel configuration is not possible since the introduction of dynamic
    preemption level configuration at boot time using the static calls
    functionality.
    
    Fixes: f79c957a ("drivers: net: sfc: use netdev_xmit_more helper")
    Signed-off-by: default avatarAlejandro Lucero <alejandro.lucero-palau@amd.com>
    Link: https://lore.kernel.org/r/20220726064504.49613-1-alejandro.lucero-palau@amd.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    67c3b611
ptp.c 66.4 KB