Michal-Wilczyn…
Commits on Sep 15, 2022
-
ice: Prevent ADQ, DCB and RDMA coexistence with Custom Tx scheduler
ADQ, DCB and RDMA might interfere with Custom Tx Scheduler changes that user might introduce using devlink-rate API. Check if ADQ, DCB or RDMA is active, when user tries to change any setting in exported Tx scheduler tree. Signed-off-by: Michal Wilczynski <michal.wilczynski@intel.com>
-
ice: Export Tx scheduler configuration to devlink-rate
There is a need to export Tx scheduler configuration to devlink-rate kernel mechanism. We also need a complete list of queues in the scheduling topology. Unfortunately, when the reset happens ice_sched_node objects that represents queues are re-created. This forces us to re-initialize devlink-rate representation of the driver Tx scheduler tree. Signed-off-by: Michal Wilczynski <michal.wilczynski@intel.com>
-
ice: Implement devlink-rate API
There is a need to support modification of Tx scheduler topology, in the ice driver. This will allow user to control Tx settings of each node in the internal hierarchy of nodes. A number of parameters is supported per each node: tx_max, tx_share, tx_priority and tx_weight. Signed-off-by: Michal Wilczynski <michal.wilczynski@intel.com>
-
ice: Introduce new parameters in ice_sched_node
To support new devlink-rate API ice_sched_node struct needs to store a number of additional parameters. This includes txq_id, tx_max, tx_priority, tx_weight, and tx_priority. Also new function needs to be added to configure the hardware with new parameters. Signed-off-by: Michal Wilczynski <michal.wilczynski@intel.com>
-
devlink: Extend devlink-rate api with queues and new parameters
Currently devlink-rate only have two types of objects: nodes and leafs. There is a need to extend this interface to account for a third type of scheduling elements - queues. In our use case customer is sending different types of traffic on each queue, which requires an ability to assign rate parameters to individual queues. Also, besides two basic parameters provided currently: tx_share and tx_max we also need two additional parameters to utilize the WFQ (Weighted Fair Queueing) algorithm. tx_priority - priority among siblings (0-7) tx_weight - weights for the WFQ algorithm (1-200) The whole lifecycle of the queue is being managed from the driver. User using the 'devlink' utility might reconfigure the queue parent to a different node, or change it's parameters. Example: devlink port function rate set pci/0000:4b:00.0/queue/91 parent node_custom Rename the current 'leaf' node to 'vport', since the old name doesn't make any sense anymore. And the only use case for the leaf nodes so far seem to be a 'vport' or 'VF'. Allow creation of the node elements from the driver. This is needed, since in our use case it makes sense that the driver first exports it's initial TX topology. Rearrange elements in devlink_rate struct to remove holes. Signed-off-by: Michal Wilczynski <michal.wilczynski@intel.com>
-
ice: Add function for move/reconfigure TxQ AQ command
Currently there is no way to reconfigure queues in ice driver Tx scheduler topology. Add a function that will allow us to do so. This will enable us to allow user to change this manually using devlink-rate interface. Signed-off-by: Ben Shelton <benjamin.h.shelton@intel.com> Co-developed-by: Michal Wilczynski <michal.wilczynski@intel.com> Signed-off-by: Michal Wilczynski <michal.wilczynski@intel.com>
-
Merge branch 'net-ftgmac100-support-fixed-link'
Tao Ren says: ==================== net: ftgmac100: support fixed link The patch series adds fixed link support to ftgmac100 driver. Patch #1 adds fixed link logic into ftgmac100 driver. Patch #2 enables mac3 controller in Elbert dts: Elbert mac3 is connected to the onboard switch BCM53134P's IMP_RGMII port directly (no PHY between BMC MAC and BCM53134P). ==================== Link: https://lore.kernel.org/r/20220907054453.20016-1-rentao.bupt@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Paolo Abeni committedSep 15, 2022 -
ARM: dts: aspeed: elbert: Enable mac3 controller
Enable mac3 controller in Elbert dts: Elbert MAC3 is connected to the BCM53134P onboard switch's IMP_RGMII port directly (fixed link, no PHY between BMC MAC and BCM53134P). Note: BMC's mdio0 controller is connected to BCM53134P's MDIO interface, and the MDIO channel will be enabled later, when BCM53134 is added to "bcm53xx" DSA driver. Signed-off-by: Tao Ren <rentao.bupt@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-
net: ftgmac100: support fixed link
Support fixed link in ftgmac100 driver. Fixed link is used on several Meta OpenBMC platforms, such as Elbert (AST2620) and Wedge400 (AST2520). Signed-off-by: Tao Ren <rentao.bupt@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-
Merge branch 'mptcp-allow-privileged-operations-from-user-ns-cleanup'
Matthieu Baerts says: ==================== mptcp: allow privileged operations from user ns & cleanup This series allows privileged Netlink operations from user namespaces. When a non-root user configures MPTCP endpoints, the memory allocation is now accounted to this user. See patches 4 and 5. Apart from that, there are some cleanup: - Patch 1 adds a macro to improve code readability - Patch 2 regroups similar checks all together - Patch 3 uses an explicit boolean instead of a counter to do one more check ==================== Link: https://lore.kernel.org/r/20220906205545.1623193-1-matthieu.baerts@tessares.net Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Paolo Abeni committedSep 15, 2022 -
mptcp: account memory allocation in mptcp_nl_cmd_add_addr() to user
Now that non-root users can configure MPTCP endpoints, account the memory allocation to the user. Signed-off-by: Thomas Haller <thaller@redhat.com> Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-
mptcp: allow privileged operations from user namespaces
GENL_ADMIN_PERM checks that the user has CAP_NET_ADMIN in the initial namespace by calling netlink_capable(). Instead, use GENL_UNS_ADMIN_PERM which uses netlink_ns_capable(). This checks that the caller has CAP_NET_ADMIN in the current user namespace. See also commit 4a92602 ("openvswitch: allow management from inside user namespaces") which introduced this mechanism. See also commit 5617c6c ("nl80211: Allow privileged operations from user namespaces") which introduced this for nl80211. Signed-off-by: Thomas Haller <thaller@redhat.com> Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-
mptcp: add do_check_data_fin to replace copied
This patch adds a new bool variable 'do_check_data_fin' to replace the original int variable 'copied' in __mptcp_push_pending(), check it to determine whether to call __mptcp_check_send_data_fin(). Suggested-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: Geliang Tang <geliang.tang@suse.com> Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-
selftests: mptcp: move prefix tests of addr_nr_ns2 together
Move the fullmesh prefix test of addr_nr_ns2 together with its other prefix tests. Signed-off-by: Geliang Tang <geliang.tang@suse.com> Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-
mptcp: add mptcp_for_each_subflow_safe helper
Similar to mptcp_for_each_subflow(): this is clearer now that the _safe version is used in multiple places. Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-
net: phy: spi_ks8895: switch to using gpiod API
This patch switches the driver away from legacy gpio/of_gpio API to gpiod API, and removes use of of_get_named_gpio_flags() which I want to make private to gpiolib. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20220906204922.3789922-3-dmitry.torokhov@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-
net: ks8851: switch to using gpiod API
This patch switches the driver away from legacy gpio/of_gpio API to gpiod API, and removes use of of_get_named_gpio_flags() which I want to make private to gpiolib. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20220906204922.3789922-2-dmitry.torokhov@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-
net: davicom: dm9000: switch to using gpiod API
This patch switches the driver away from legacy gpio/of_gpio API to gpiod API, and removes use of of_get_named_gpio_flags() which I want to make private to gpiolib. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20220906204922.3789922-1-dmitry.torokhov@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Commits on Sep 13, 2022
-
r8169: remove rtl_wol_shutdown_quirk()
Since f658b90 ("r8169: fix DMA being used after buffer free if WoL is enabled") it has been redundant to disable PCI bus mastering in rtl_wol_shutdown_quirk(). And since 1200684 ("r8169: fix failing WoL") CmdRxEnb is still enabled when we get here. So we can remove the function. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Link: https://lore.kernel.org/r/2391ada0-eac5-ac43-f061-a7a44b0e7f33@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-
sfc: introduce shutdown entry point in efx pci driver
Make the device inactive when the system shutdown callback has been invoked. This is achieved by freezing the driver and disabling the PCI bus mastering. Co-developed-by: Martin Habets <habetsm.xilinx@gmail.com> Signed-off-by: Martin Habets <habetsm.xilinx@gmail.com> Signed-off-by: Pieter Jansen van Vuuren <pieter.jansen-van-vuuren@amd.com> Acked-by: Edward Cree <ecree.xilinx@gmail.com> Link: https://lore.kernel.org/r/20220906105620.26179-1-pieter.jansen-van-vuuren@amd.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Pieter Jansen van Vuuren authored and Paolo Abeni committedSep 13, 2022
Commits on Sep 9, 2022
-
net: openvswitch: fix repeated words in comments
Delete the redundant word 'is'. Signed-off-by: Jilin Yuan <yuanjilin@cdjrlc.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-
Alex Elder says: ==================== net: ipa: don't use lists for transaction state This is the last series of patches to convert the IPA code so integer IDs are used rather than lists to track the state of transactions. A first series of patches added ID fields to track the state of transactions: https://lore.kernel.org/netdev/20220831224017.377745-1-elder@linaro.org The second series started transitioning code to use these IDs rather than lists to manage state: https://lore.kernel.org/netdev/20220902210218.745873-1-elder@linaro.org This final series finishes the transition, to always use IDs instead of the lists to manage transaction state. As a result, the list fields, links, and a spinlock to protect updates are no longer needed, so they are removed. This permits a few other improvements to be implemented. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: ipa: don't have gsi_channel_update() return a value
If it finds no completed transactions, gsi_channel_trans_complete() calls gsi_channel_update() to check hardware. If new transactions have completed, gsi_channel_update() records that, then calls gsi_channel_trans_complete() to return the first of those found. This recursion won't go any further, but can be avoided if we have gsi_channel_update() only be responsible for updating state after accessing hardware. Change gsi_channel_update() so it simply checks for and handles new completions, without returning a value. If it needs to call that function, have gsi_channel_trans_complete() determine whether there are new transactions available after the update. Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: ipa: update channel in gsi_channel_trans_complete()
Have gsi_channel_trans_complete() update the known state from hardware rather than doing so in gsi_channel_poll_one(). Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: ipa: kill all other transaction lists
None of the transaction lists are actually needed any more, because transaction IDs (which have been shown to be equivalent) are used instead. So we can remove all of them, as well as the spinlock that protects updates to them. Not requiring a lock simplifies gsi_trans_free() as well; we only need to check the reference count once to decide whether we've hit the last reference. This makes the links field in the gsi_trans structure unused, so get rid of that as well. Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: ipa: kill the allocated transaction list
The only place the trans_info->alloc list is used is when initializing it, when adding a transaction to it when allocation finishes, and when moving a transaction from that list to the committed list. We can just skip putting a transaction on the allocated list, and add it (rather than move it) to the committed list when it is committed. On additional caveat is that an allocated transaction that's committed without any TREs added will be immediately freed. Because we aren't adding allocated transactions to a list any more, the list links need to be initialized to ensure they're valid at the time list_del() is called for the transaction. Then we can safely eliminate the allocated transaction list. Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: ipa: always use transaction IDs instead of lists
In gsi_channel_trans_complete(), use the completed and pending IDs to determine whether there are any transactions in completed state. Similarly, in gsi_channel_trans_cancel_pending(), use the pending and committed IDs to mark pending transactions cancelled. Rearrange the logic a bit there for a simpler result. This removes the only user of list_last_entry_or_null(), so get rid of that macro. Remove the temporary warnings added by the previous commit. Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-
Merge branch 'felix-dsa-ethtool-stats'
Vladimir Oltean says: ==================== Standardized ethtool counters for Felix DSA driver The main purpose of this change set is to add reporting of structured ethtool statistics counters to the felix DSA driver (see patch 11/14 for details), as a prerequisite for extending these counters to the eMAC/pMAC defined by the IEEE MAC Merge layer. Along the way, the main purpose has diverged into multiple sub-purposes which are also tackled: - A bug fix patch submitted to "net" has made ocelot->stats_lock a spin lock, which is not an issue currently (all Ocelot switches are MMIO), but will be an issue for Colin Foster who is working on a SPI controlled Ocelot switch. We restore the hardware access to port stats to be sleepable. - PSFP (tc-gate, tc-police) tc-flower stats on Felix use a non-converged procedure to access the hardware counters, although the interface is very similar to what is used for the port counters. Benefit from the logic used for the port counters, which gains us 64-bit tc-flower stats that are resistant to overflows. - Also export the ndo_get_stats64 method used by the ocelot switchdev driver to Felix, so that ifconfig sees something hardware-based as well (but not 100% up to date). - Create a new ocelot_stats.c file which groups everything stats-related together. Along with this, also move some other topic-specific code, like FDB and PTP, out of the main ocelot.c. - Minimize the lines of code for the stats layout definitions. These changes alone cause the patch set to have an overall reduction of lines of code in the driver, even though we are adding new functionality as well. Tested the port counters with lockdep and friends, with some garden-variety traffic (ping, iperf3) and the PSFP counters with tools/testing/selftests/drivers/net/ocelot/psfp.sh. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: mscc: ocelot: share the common stat definitions between all drivers
All switch families supported by the ocelot lib (ocelot, felix, seville) export the same registers so far. But for example felix also has TSN counters, while the others don't. To reduce the bloat even further, create an OCELOT_COMMON_STATS() macro which just lists all stats that are common between switches. The array elements are still replicated among all of vsc9959_stats_layout, vsc9953_stats_layout and ocelot_stats_layout. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: mscc: ocelot: minimize definitions for stats
The current definition of struct ocelot_stat_layout is long-winded (4 lines per entry, and we have hundreds of entries), so we could make an effort to use the C preprocessor and reduce the line count. Create an implicit correspondence between enum ocelot_reg, which tells us the register address (SYS_COUNT_RX_OCTETS etc) and enum ocelot_stat which allows us to index the ocelot->stats array (OCELOT_STAT_RX_OCTETS etc), and don't require us to specify both when we define what stats each switch family has. Create an OCELOT_STAT() macro that pairs only an enum ocelot_stat to an enum ocelot_reg, and an OCELOT_STAT_ETHTOOL() macro which also contains a name exported to the unstructured ethtool -S stringset API. For now, we define all counters as having the OCELOT_STAT_ETHTOOL() kind, but we will add more counters in the future which are not exported to the unstructured ethtool -S. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: mscc: ocelot: harmonize names of SYS_COUNT_TX_AGING and OCELOT_S…
…TAT_TX_AGED The hardware counter is called C_TX_AGED, so rename SYS_COUNT_TX_AGING to SYS_COUNT_TX_AGED. This will become important since we want to minimize the way in which we declare struct ocelot_stat_layout elements, using the C preprocessor. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: mscc: ocelot: add support for all sorts of standardized counters…
… present in DSA DSA is integrated with the new standardized ethtool -S --groups option, but the felix driver only exports unstructured statistics. Reuse the array of 64-bit statistics collected by ocelot_check_stats_work(), but just export select values from it. Since ocelot_check_stats_work() runs periodically to avoid 32-bit overflow, and the ethtool calling context is sleepable, we update the 64-bit stats one more time, to provide up-to-date values. The locking scheme with a mutex followed by a spinlock is a bit hard to digest, so we create and use a ocelot_port_stats_run() helper with a callback that populates the ethool stats group the caller is interested in. The exported stats are: ethtool -S swp0 --groups eth-phy ethtool -S swp0 --groups eth-mac ethtool -S swp0 --groups eth-ctrl ethtool -S swp0 --groups rmon ethtool --include-statistics --show-pause swp0 Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: mscc: ocelot: exclude stats from bulk regions based on reg, not …
…name We want to introduce elements kept in ocelot->stats that aren't exposed to the unstructured ethtool -S (so they won't have their name populated), but are otherwise checked for 32-bit wraparounds by ocelot_port_update_stats(). This isn't possible today because ocelot_prepare_stats_regions() skips over ocelot_stat_layout elements with no name. Now that we've changed struct ocelot_stat_layout to keep the absolute register address rather than the offset relative to SYS_CNT, we can make use of the unpopulated "reg" value of 0 to mean that the counter isn't present on the current switch revision, and skip it from the preparation of bulk regions. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: dsa: felix: use ocelot's ndo_get_stats64 method
Move the logic from the ocelot switchdev driver's ocelot_get_stats64() method to the common switch lib and reuse it for the DSA driver. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-
net: mscc: ocelot: move more PTP code from the lib to ocelot_ptp.c
Decongest ocelot.c a bit more by moving all PTP related logic (including timestamp processing and PTP packet traps) to ocelot_ptp.c. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>