1. 21 Jul, 2020 30 commits
    • Vladimir Oltean's avatar
      testptp: add new options for perout phase and pulse width · 7570ebe0
      Vladimir Oltean authored
      Extend the example program for PTP ancillary functionality with the
      ability to configure not only the periodic output's period (frequency),
      but also the phase and duty cycle (pulse width) which were newly
      introduced.
      
      The ioctl level also needs to be updated to the new PTP_PEROUT_REQUEST2,
      since the original PTP_PEROUT_REQUEST doesn't support this
      functionality. For an in-tree testing program, not having explicit
      backwards compatibility is fine, as it should always be tested with the
      current kernel headers and sources.
      
      Tested with an oscilloscope on the felix switch PHC:
      
      echo '2 0' > /sys/class/ptp/ptp1/pins/switch_1588_dat0
      ./testptp -d /dev/ptp1 -p 1000000000 -w 100000000 -H 1000 -i 0
      Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7570ebe0
    • Vladimir Oltean's avatar
      testptp: promote 'perout' variable to int64_t · 4a09a981
      Vladimir Oltean authored
      Since 'perout' holds the nanosecond value of the signal's period, it
      should be a 64-bit value. Current assumption is that it cannot be larger
      than 1 second.
      Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4a09a981
    • Vaibhav Gupta's avatar
      ethernet: myri10ge: use generic power management · 0c17ac54
      Vaibhav Gupta authored
      Drivers using legacy PM have to manage PCI states and device's PM states
      themselves. They also need to take care of configuration registers.
      
      With improved and powerful support of generic PM, PCI Core takes care of
      above mentioned, device-independent, jobs.
      
      This driver makes use of PCI helper functions like
      pci_save/restore_state(), pci_enable/disable_device(),
      pci_set_power_state() and pci_set_master() to do required operations. In
      generic mode, they are no longer needed.
      
      Change function parameter in both .suspend() and .resume() to
      "struct device*" type. Use to_pci_dev() and dev_get_drvdata() to get
      "struct pci_dev*" variable and drv data.
      
      Compile-tested only.
      Signed-off-by: default avatarVaibhav Gupta <vaibhavgupta40@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0c17ac54
    • David S. Miller's avatar
      Merge branch 'qed-qede-add-support-for-new-operating-modes' · f43995bd
      David S. Miller authored
      Alexander Lobakin says:
      
      ====================
      qed, qede: add support for new operating modes
      
      This series covers the support for the following:
       - new port modes;
       - loopback modes, previously missing;
       - new speed/link modes;
       - several FEC modes;
       - multi-rate transceivers;
      
      and also cleans up and optimizes several related parts of code.
      
      v3 (from [2]):
       - dropped custom link mode declaration; qed, qede and qedf switched to
         Ethtool link modes and definitions (#0001, #0002, per Andrew Lunn's
         suggestion);
       - exchange more .text size to .initconst and .ro_after_init in qede
         (#0003).
      
      v2 (from [1]):
       - added a patch (#0010) that drops discussed dead struct member;
       - addressed checkpatch complaints on #0014 (former #0013);
       - rebased on top of latest net-next;
       - no other changes.
      
      [1] https://lore.kernel.org/netdev/20200716115446.994-1-alobakin@marvell.com/
      [2] https://lore.kernel.org/netdev/20200719201453.3648-1-alobakin@marvell.com/
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f43995bd
    • Alexander Lobakin's avatar
      qed: add support for the extended speed and FEC modes · 99785a87
      Alexander Lobakin authored
      Add all necessary code (NVM parsing, MFW and Ethtool reports etc.) to
      support extended speed and FEC modes.
      These new modes are supported by the new boards revisions and newer
      MFW versions.
      
      Misc: correct port type for MEDIA_KR.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      99785a87
    • Alexander Lobakin's avatar
      qed: populate supported link modes maps on module init · 097818fc
      Alexander Lobakin authored
      Simplify and lighten qed_set_link() by declaring static link modes maps
      and populating them on module init. This way we save plenty of text size
      at the low expense of __ro_after_init and __initconst data (the latter
      will be purged after module init is done).
      
      Misc: sanitize exit callback.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      097818fc
    • Alexander Lobakin's avatar
      qed: add missing loopback modes · 98e675ec
      Alexander Lobakin authored
      These modes are relevant only for several boards, but may be reported by
      MFW as well as the others.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      98e675ec
    • Alexander Lobakin's avatar
      qed: add support for new port modes · a396818c
      Alexander Lobakin authored
      These ports ship on new boards revisions and are supported by newer
      firmware versions.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a396818c
    • Alexander Lobakin's avatar
      qed: remove unused qed_hw_info::port_mode and QED_PORT_MODE · e9a5eb85
      Alexander Lobakin authored
      Struct field qed_hw_info::port_mode isn't used anywhere in the code, so
      can be safely removed to prevent possible dead code addition.
      Also remove the enumeration QED_PORT_MODE orphaned after this deletion.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e9a5eb85
    • Alexander Lobakin's avatar
      qed: reformat several structures a bit · 5d4193c6
      Alexander Lobakin authored
      Reformat a few nvm_cfg* structures (and partly qed_dev) prior to adding
      new fields and definitions.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5d4193c6
    • Alexander Lobakin's avatar
      qede: introduce support for FEC control · 9bdca14a
      Alexander Lobakin authored
      Add Ethtool callbacks for querying and setting FEC parameters if it's
      supported by the underlying qed module and MFW version running on the
      device.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9bdca14a
    • Alexander Lobakin's avatar
      qede: format qede{,_vf}_ethtool_ops · 46076157
      Alexander Lobakin authored
      Prior to adding new callbacks, format qede ethtool_ops structs to make
      declarations more fancy and readable.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      46076157
    • Alexander Lobakin's avatar
      qed: add support for Forward Error Correction · ae7e6937
      Alexander Lobakin authored
      Add all necessary routines for reading supported FEC modes from NVM and
      querying FEC control to the MFW (if the running version supports it).
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ae7e6937
    • Alexander Lobakin's avatar
      qed: reformat several structures a bit · 37237b5b
      Alexander Lobakin authored
      Prior to adding new fields and bitfields, reformat the related
      structures according to the Linux style (spaces to tabs,
      lowercase hex, indentation etc.).
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      37237b5b
    • Alexander Lobakin's avatar
      qed: use transceiver data to fill link partner's advertising speeds · 3c41486e
      Alexander Lobakin authored
      Currently qed driver does not take into consideration transceiver's
      capabilities when generating link partner's speed advertisement. This
      leads to e.g. incorrect ethtool link info on 10GbaseT modules.
      Use transceiver info not only for advertisement and support arrays, but
      also for link partner's abilities to fix it.
      
      Misc: fix a couple of comments nearby.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3c41486e
    • Alexander Lobakin's avatar
      qed: add support for multi-rate transceivers · 9228b7c1
      Alexander Lobakin authored
      Set the corresponding advertised and supported link modes according
      to the detected transceiver type and device capabilities.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9228b7c1
    • Alexander Lobakin's avatar
      qed: reformat public_port::transceiver_data a bit · d47839f3
      Alexander Lobakin authored
      Prior to adding new bitfields, reformat the existing ones from spaces
      to tabs, and unify all hex values to lowercase.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d47839f3
    • Alexander Lobakin's avatar
      qede: populate supported link modes maps on module init · 1d4e4ecc
      Alexander Lobakin authored
      Simplify and lighten qede_set_link_ksettings() by declaring static link
      modes maps and populating them on module init. This way we save plenty
      of text size at the low expense of __ro_after_init and __initconst data
      (the latter will be purged after module init is done).
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1d4e4ecc
    • Alexander Lobakin's avatar
      qed, qede, qedf: convert link mode from u32 to ETHTOOL_LINK_MODE · bdb5d8ec
      Alexander Lobakin authored
      Currently qed driver already ran out of 32 bits to store link modes,
      and this doesn't allow to add and support more speeds.
      Convert custom link mode to generic Ethtool bitmap and definitions
      (convenient Phylink shorthands are used for elegance and readability).
      This allowed us to drop all conversions/mappings between the driver
      and Ethtool.
      
      This involves changes in qede and qedf as well, as they used definitions
      from shared "qed_if.h".
      Suggested-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bdb5d8ec
    • Alexander Lobakin's avatar
      linkmode: introduce linkmode_intersects() · e812916d
      Alexander Lobakin authored
      Add a new helper to find intersections between Ethtool link modes,
      linkmode_intersects(), similar to the other linkmode helpers.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@marvell.com>
      Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e812916d
    • David S. Miller's avatar
      Merge tag 'wireless-drivers-next-2020-07-20' of... · cfd69201
      David S. Miller authored
      Merge tag 'wireless-drivers-next-2020-07-20' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
      
      Kalle Valo says:
      
      ====================
      wireless-drivers-next patches for v5.9
      
      First set of patches for v5.9. This comes later than usual as I was
      offline for two weeks. The biggest change here is moving Microchip
      wilc1000 driver from staging. There was an immutable topic branch with
      one commit moving the whole driver and the topic branch was pulled
      both to staging-next and wireless-drivers-next. At the moment the only
      reported conflict is in MAINTAINERS file, so I'm hoping the move
      should go smoothly.
      
      Other notable changes are ath11k getting 6 GHz band support and rtw88
      supporting RTL8821CE. And there's also the usual fixes, API changes
      and cleanups all over.
      
      Major changes:
      
      wilc1000
      
      * move from drivers/staging to drivers/net/wireless/microchip
      
      ath11k
      
      * add 6G band support
      
      * add spectral scan support
      
      iwlwifi
      
      * make FW reconfiguration quieter by not using warn level
      
      rtw88
      
      * add support for RTL8821CE
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cfd69201
    • Christophe JAILLET's avatar
      sis: switch from 'pci_' to 'dma_' API · 256ca744
      Christophe JAILLET authored
      The wrappers in include/linux/pci-dma-compat.h should go away.
      
      The patch has been generated with the coccinelle script below and has been
      hand modified to replace GFP_ with a correct flag.
      It has been compile tested.
      
      When memory is allocated in 'epic_init_one()' (sis190.c), GFP_KERNEL can be
      used because this is a net_device_ops' 'ndo_open' function. This function
      is protected by the rtnl_lock() semaphore. So only a mutex is used and no
      spin_lock is acquired.
      
      When memory is allocated in 'sis900_probe()' (sis900.c), GFP_KERNEL can be
      used because it is a probe function and no spin_lock is acquired.
      
      @@
      @@
      -    PCI_DMA_BIDIRECTIONAL
      +    DMA_BIDIRECTIONAL
      
      @@
      @@
      -    PCI_DMA_TODEVICE
      +    DMA_TO_DEVICE
      
      @@
      @@
      -    PCI_DMA_FROMDEVICE
      +    DMA_FROM_DEVICE
      
      @@
      @@
      -    PCI_DMA_NONE
      +    DMA_NONE
      
      @@
      expression e1, e2, e3;
      @@
      -    pci_alloc_consistent(e1, e2, e3)
      +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
      
      @@
      expression e1, e2, e3;
      @@
      -    pci_zalloc_consistent(e1, e2, e3)
      +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_free_consistent(e1, e2, e3, e4)
      +    dma_free_coherent(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_map_single(e1, e2, e3, e4)
      +    dma_map_single(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_single(e1, e2, e3, e4)
      +    dma_unmap_single(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4, e5;
      @@
      -    pci_map_page(e1, e2, e3, e4, e5)
      +    dma_map_page(&e1->dev, e2, e3, e4, e5)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_page(e1, e2, e3, e4)
      +    dma_unmap_page(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_map_sg(e1, e2, e3, e4)
      +    dma_map_sg(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_sg(e1, e2, e3, e4)
      +    dma_unmap_sg(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
      +    dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_single_for_device(e1, e2, e3, e4)
      +    dma_sync_single_for_device(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
      +    dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_sg_for_device(e1, e2, e3, e4)
      +    dma_sync_sg_for_device(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2;
      @@
      -    pci_dma_mapping_error(e1, e2)
      +    dma_mapping_error(&e1->dev, e2)
      
      @@
      expression e1, e2;
      @@
      -    pci_set_dma_mask(e1, e2)
      +    dma_set_mask(&e1->dev, e2)
      
      @@
      expression e1, e2;
      @@
      -    pci_set_consistent_dma_mask(e1, e2)
      +    dma_set_coherent_mask(&e1->dev, e2)
      Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      256ca744
    • Christophe JAILLET's avatar
      r6040: switch from 'pci_' to 'dma_' API · 0b0edb99
      Christophe JAILLET authored
      The wrappers in include/linux/pci-dma-compat.h should go away.
      
      The patch has been generated with the coccinelle script below and has been
      hand modified to replace GFP_ with a correct flag.
      It has been compile tested.
      
      When memory is allocated in 'r6040_open()', GFP_KERNEL can be used because
      this is a net_device_ops' 'ndo_open' function. This function is protected
      by the rtnl_lock() semaphore. So only a mutex is used and no spin_lock is
      acquired.
      
      @@
      @@
      -    PCI_DMA_BIDIRECTIONAL
      +    DMA_BIDIRECTIONAL
      
      @@
      @@
      -    PCI_DMA_TODEVICE
      +    DMA_TO_DEVICE
      
      @@
      @@
      -    PCI_DMA_FROMDEVICE
      +    DMA_FROM_DEVICE
      
      @@
      @@
      -    PCI_DMA_NONE
      +    DMA_NONE
      
      @@
      expression e1, e2, e3;
      @@
      -    pci_alloc_consistent(e1, e2, e3)
      +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
      
      @@
      expression e1, e2, e3;
      @@
      -    pci_zalloc_consistent(e1, e2, e3)
      +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_free_consistent(e1, e2, e3, e4)
      +    dma_free_coherent(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_map_single(e1, e2, e3, e4)
      +    dma_map_single(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_single(e1, e2, e3, e4)
      +    dma_unmap_single(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4, e5;
      @@
      -    pci_map_page(e1, e2, e3, e4, e5)
      +    dma_map_page(&e1->dev, e2, e3, e4, e5)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_page(e1, e2, e3, e4)
      +    dma_unmap_page(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_map_sg(e1, e2, e3, e4)
      +    dma_map_sg(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_sg(e1, e2, e3, e4)
      +    dma_unmap_sg(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
      +    dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_single_for_device(e1, e2, e3, e4)
      +    dma_sync_single_for_device(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
      +    dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_sg_for_device(e1, e2, e3, e4)
      +    dma_sync_sg_for_device(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2;
      @@
      -    pci_dma_mapping_error(e1, e2)
      +    dma_mapping_error(&e1->dev, e2)
      
      @@
      expression e1, e2;
      @@
      -    pci_set_dma_mask(e1, e2)
      +    dma_set_mask(&e1->dev, e2)
      
      @@
      expression e1, e2;
      @@
      -    pci_set_consistent_dma_mask(e1, e2)
      +    dma_set_coherent_mask(&e1->dev, e2)
      Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0b0edb99
    • Christophe JAILLET's avatar
      net: packetengines: switch from 'pci_' to 'dma_' API · 73e283df
      Christophe JAILLET authored
      The wrappers in include/linux/pci-dma-compat.h should go away.
      
      The patch has been generated with the coccinelle script below and has been
      hand modified to replace GFP_ with a correct flag.
      It has been compile tested.
      
      When memory is allocated in 'hamachi_init_one()' (hamachi.c), GFP_KERNEL
      can be used because it is a probe function and no lock is acquired.
      
      When memory is allocated in 'yellowfin_init_one()' (yellowfin.c),
      GFP_KERNEL can be used because it is a probe function and no lock is
      acquired.
      
      @@
      @@
      -    PCI_DMA_BIDIRECTIONAL
      +    DMA_BIDIRECTIONAL
      
      @@
      @@
      -    PCI_DMA_TODEVICE
      +    DMA_TO_DEVICE
      
      @@
      @@
      -    PCI_DMA_FROMDEVICE
      +    DMA_FROM_DEVICE
      
      @@
      @@
      -    PCI_DMA_NONE
      +    DMA_NONE
      
      @@
      expression e1, e2, e3;
      @@
      -    pci_alloc_consistent(e1, e2, e3)
      +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
      
      @@
      expression e1, e2, e3;
      @@
      -    pci_zalloc_consistent(e1, e2, e3)
      +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_free_consistent(e1, e2, e3, e4)
      +    dma_free_coherent(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_map_single(e1, e2, e3, e4)
      +    dma_map_single(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_single(e1, e2, e3, e4)
      +    dma_unmap_single(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4, e5;
      @@
      -    pci_map_page(e1, e2, e3, e4, e5)
      +    dma_map_page(&e1->dev, e2, e3, e4, e5)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_page(e1, e2, e3, e4)
      +    dma_unmap_page(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_map_sg(e1, e2, e3, e4)
      +    dma_map_sg(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_sg(e1, e2, e3, e4)
      +    dma_unmap_sg(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
      +    dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_single_for_device(e1, e2, e3, e4)
      +    dma_sync_single_for_device(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
      +    dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_sg_for_device(e1, e2, e3, e4)
      +    dma_sync_sg_for_device(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2;
      @@
      -    pci_dma_mapping_error(e1, e2)
      +    dma_mapping_error(&e1->dev, e2)
      
      @@
      expression e1, e2;
      @@
      -    pci_set_dma_mask(e1, e2)
      +    dma_set_mask(&e1->dev, e2)
      
      @@
      expression e1, e2;
      @@
      -    pci_set_consistent_dma_mask(e1, e2)
      +    dma_set_coherent_mask(&e1->dev, e2)
      Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      73e283df
    • Christoph Hellwig's avatar
      arch, net: remove the last csum_partial_copy() leftovers · f1bfd71c
      Christoph Hellwig authored
      Most of the tree only uses and implements csum_partial_copy_nocheck,
      but the c6x and lib/checksum.c implement a csum_partial_copy that
      isn't used anywere except to define csum_partial_copy.  Get rid of
      this pointless alias.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f1bfd71c
    • Zhang Changzhong's avatar
      net: fs_enet: remove redundant null check · cebd2cac
      Zhang Changzhong authored
      Because clk_prepare_enable and clk_disable_unprepare already
      checked NULL clock parameter, so the additional checks are
      unnecessary, just remove them.
      Signed-off-by: default avatarZhang Changzhong <zhangchangzhong@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cebd2cac
    • David S. Miller's avatar
      Merge branch 'net-macb-Wake-on-Lan-magic-packet-GEM-and-MACB-handling' · 87c831ce
      David S. Miller authored
      Nicolas Ferre says:
      
      ====================
      net: macb: Wake-on-Lan magic packet GEM and MACB handling
      
      Here is the second part of support for WoL magic-packet on the current macb
      driver. This one
      is addressing the bulk of the feature and is based on current net-next/master.
      
      MACB and GEM code must co-exist and as they don't share exactly the same
      register layout, I had to specialize a bit the suspend/resume paths and plug a
      specific IRQ handler in order to avoid overloading the "normal" IRQ hot path.
      
      These changes were tested on both sam9x60 which embeds a MACB+FIFO controller
      and sama5d2 which has a GEM+packet buffer type of controller.
      
      Best regards,
        Nicolas
      
      Changes in v7:
      - Release the spinlock before exiting macb_suspend/resume in case of error
        changing IRQ handler
      
      Changes in v6:
      - rebase on net-next/master now that the "fixes" patches of the series are
        merged in both net and net-next.
      - GEM addition and MACB update to finish the support of WoL magic-packet on the
        two revisions of the controller.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      87c831ce
    • Nicolas Ferre's avatar
      net: macb: Add WoL interrupt support for MACB type of Ethernet controller · 9d45c8e8
      Nicolas Ferre authored
      Handle the Wake-on-Lan interrupt for the Cadence MACB Ethernet
      controller.
      As we do for the GEM version, we handle of WoL interrupt in a
      specialized interrupt handler for MACB version that is positionned
      just between suspend() and resume() calls.
      
      Cc: Claudiu Beznea <claudiu.beznea@microchip.com>
      Cc: Harini Katakam <harini.katakam@xilinx.com>
      Signed-off-by: default avatarNicolas Ferre <nicolas.ferre@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9d45c8e8
    • Nicolas Ferre's avatar
      net: macb: WoL support for GEM type of Ethernet controller · 558e35cc
      Nicolas Ferre authored
      Adapt the Wake-on-Lan feature to the Cadence GEM Ethernet controller.
      This controller has different register layout and cannot be handled by
      previous code.
      We disable completely interrupts on all the queues but the queue 0.
      Handling of WoL interrupt is done in another interrupt handler
      positioned depending on the controller version used, just between
      suspend() and resume() calls.
      It allows to lower pressure on the generic interrupt hot path by
      removing the need to handle 2 tests for each IRQ: the first figuring out
      the controller revision, the second for actually knowing if the WoL bit
      is set.
      
      Queue management in suspend()/resume() functions inspired from RFC patch
      by Harini Katakam <harinik@xilinx.com>, thanks!
      
      Cc: Claudiu Beznea <claudiu.beznea@microchip.com>
      Cc: Harini Katakam <harini.katakam@xilinx.com>
      Signed-off-by: default avatarNicolas Ferre <nicolas.ferre@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      558e35cc
    • Jiri Pirko's avatar
      sched: sch_api: add missing rcu read lock to silence the warning · a8b7b2d0
      Jiri Pirko authored
      In case the qdisc_match_from_root function() is called from non-rcu path
      with rtnl mutex held, a suspiciout rcu usage warning appears:
      
      [  241.504354] =============================
      [  241.504358] WARNING: suspicious RCU usage
      [  241.504366] 5.8.0-rc4-custom-01521-g72a7c7d549c3 #32 Not tainted
      [  241.504370] -----------------------------
      [  241.504378] net/sched/sch_api.c:270 RCU-list traversed in non-reader section!!
      [  241.504382]
                     other info that might help us debug this:
      [  241.504388]
                     rcu_scheduler_active = 2, debug_locks = 1
      [  241.504394] 1 lock held by tc/1391:
      [  241.504398]  #0: ffffffff85a27850 (rtnl_mutex){+.+.}-{3:3}, at: rtnetlink_rcv_msg+0x49a/0xbd0
      [  241.504431]
                     stack backtrace:
      [  241.504440] CPU: 0 PID: 1391 Comm: tc Not tainted 5.8.0-rc4-custom-01521-g72a7c7d549c3 #32
      [  241.504446] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-2.fc32 04/01/2014
      [  241.504453] Call Trace:
      [  241.504465]  dump_stack+0x100/0x184
      [  241.504482]  lockdep_rcu_suspicious+0x153/0x15d
      [  241.504499]  qdisc_match_from_root+0x293/0x350
      
      Fix this by passing the rtnl held lockdep condition down to
      hlist_for_each_entry_rcu()
      Reported-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a8b7b2d0
  2. 20 Jul, 2020 10 commits