projects/linux·commit 0548740e

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net

0548740e · Linus Torvalds <[email protected]> · 2019-04-04 18:07:12 -10:00

Pull networking fixes from David Miller:

 1) Several hash table refcount fixes in batman-adv, from Sven
    Eckelmann.

 2) Use after free in bpf_evict_inode(), from Daniel Borkmann.

 3) Fix mdio bus registration in ixgbe, from Ivan Vecera.

 4) Unbounded loop in __skb_try_recv_datagram(), from Paolo Abeni.

 5) ila rhashtable corruption fix from Herbert Xu.

 6) Don't allow upper-devices to be added to vrf devices, from Sabrina
    Dubroca.

 7) Add qmi_wwan device ID for Olicard 600, from Bjørn Mork.

 8) Don't leave skb->next poisoned in __netif_receive_skb_list_ptype,
    from Alexander Lobakin.

 9) Missing IDR checks in mlx5 driver, from Aditya Pakki.

10) Fix false connection termination in ktls, from Jakub Kicinski.

11) Work around some ASPM issues with r8169 by disabling rx interrupt
    coalescing on certain chips. From Heiner Kallweit.

12) Properly use per-cpu qstat values on NOLOCK qdiscs, from Paolo
    Abeni.

13) Fully initialize sockaddr_in structures in SCTP, from Xin Long.

14) Various BPF flow dissector fixes from Stanislav Fomichev.

15) Divide by zero in act_sample, from Davide Caratti.

16) Fix bridging multicast regression introduced by rhashtable
    conversion, from Nikolay Aleksandrov.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (106 commits)
  ibmvnic: Fix completion structure initialization
  ipv6: sit: reset ip header pointer in ipip6_rcv
  net: bridge: always clear mcast matching struct on reports and leaves
  libcxgb: fix incorrect ppmax calculation
  vlan: conditional inclusion of FCoE hooks to match netdevice.h and bnx2x
  sch_cake: Make sure we can write the IP header before changing DSCP bits
  sch_cake: Use tc_skb_protocol() helper for getting packet protocol
  tcp: Ensure DCTCP reacts to losses
  net/sched: act_sample: fix divide by zero in the traffic path
  net: thunderx: fix NULL pointer dereference in nicvf_open/nicvf_stop
  net: hns: Fix sparse: some warnings in HNS drivers
  net: hns: Fix WARNING when remove HNS driver with SMMU enabled
  net: hns: fix ICMP6 neighbor solicitation messages discard problem
  net: hns: Fix probabilistic memory overwrite when HNS driver initialized
  net: hns: Use NAPI_POLL_WEIGHT for hns driver
  net: hns: fix KASAN: use-after-free in hns_nic_net_xmit_hw()
  flow_dissector: rst'ify documentation
  ipv6: Fix dangling pointer when ipv6 fragment
  net-gro: Fix GRO flush when receiving a GSO packet.
  flow_dissector: document BPF flow dissector environment
  ...
Commit
0548740e53e6fe674f850d36db51eccb0557d938
Parents
8e22ba96 · bbd669a8

Merge commit. Changes below are compared with the first parent: 8e22ba96.

Changes

122 files changed · +1096 −563

FileStatusAddDelContent
Documentation/bpf/btf.rstmodified+4−4View file
Documentation/networking/bpf_flow_dissector.rstadded+126−0View file
Documentation/networking/index.rstmodified+1−0View file
MAINTAINERSmodified+2−2View file
drivers/net/bonding/bond_sysfs_slave.cmodified+3−1View file
drivers/net/dsa/mv88e6xxx/port.cmodified+16−8View file
drivers/net/ethernet/cavium/thunder/nicvf_main.cmodified+12−8View file
drivers/net/ethernet/cavium/thunder/nicvf_queues.cmodified+14−16View file
drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.cmodified+8−1View file
drivers/net/ethernet/hisilicon/hns/hnae.cmodified+3−1View file
drivers/net/ethernet/hisilicon/hns/hnae.hmodified+1−1View file
drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.cmodified+1−1View file
drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.hmodified+2−2View file
drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.cmodified+33−20View file
drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.hmodified+2−0View file
drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.cmodified+1−1View file
drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.cmodified+3−3View file
drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.hmodified+2−2View file
drivers/net/ethernet/hisilicon/hns/hns_dsaf_rcb.cmodified+2−2View file
drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.hmodified+6−6View file
drivers/net/ethernet/hisilicon/hns/hns_dsaf_xgmac.cmodified+1−1View file
drivers/net/ethernet/hisilicon/hns/hns_enet.cmodified+5−7View file
drivers/net/ethernet/hisilicon/hns3/hns3pf/Makefilemodified+1−1View file
drivers/net/ethernet/hisilicon/hns3/hns3vf/Makefilemodified+1−1View file
drivers/net/ethernet/hisilicon/hns_mdio.cmodified+7−11View file
drivers/net/ethernet/ibm/ibmvnic.cmodified+3−2View file
drivers/net/ethernet/intel/fm10k/fm10k_main.cmodified+2−0View file
drivers/net/ethernet/intel/i40e/i40e.hmodified+2−14View file
drivers/net/ethernet/intel/i40e/i40e_ethtool.cmodified+1−2View file
drivers/net/ethernet/intel/i40e/i40e_main.cmodified+28−0View file
drivers/net/ethernet/intel/i40e/i40e_ptp.cmodified+3−2View file
drivers/net/ethernet/intel/i40e/i40e_xsk.cmodified+3−0View file
drivers/net/ethernet/intel/igb/e1000_defines.hmodified+2−0View file
drivers/net/ethernet/intel/igb/igb_main.cmodified+8−49View file
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.cmodified+9−7View file
drivers/net/ethernet/mellanox/mlx5/core/en/port.cmodified+0−3View file
drivers/net/ethernet/mellanox/mlx5/core/en/port_buffer.cmodified+22−17View file
drivers/net/ethernet/mellanox/mlx5/core/en_common.cmodified+11−2View file
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.cmodified+34−18View file
drivers/net/ethernet/mellanox/mlx5/core/en_tc.cmodified+68−14View file
drivers/net/ethernet/mellanox/mlx5/core/eswitch.cmodified+5−4View file
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.cmodified+1−0View file
drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.cmodified+11−3View file
drivers/net/ethernet/mellanox/mlx5/core/main.cmodified+0−20View file
drivers/net/ethernet/netronome/nfp/flower/action.cmodified+1−2View file
drivers/net/ethernet/netronome/nfp/flower/cmsg.hmodified+1−2View file
drivers/net/ethernet/netronome/nfp/flower/match.cmodified+13−14View file
drivers/net/ethernet/netronome/nfp/nfp_net_repr.cmodified+2−2View file
drivers/net/ethernet/realtek/r8169.cmodified+1−1View file
drivers/net/ethernet/stmicro/stmmac/descs_com.hmodified+14−8View file
drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.cmodified+1−1View file
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_descs.cmodified+1−1View file
drivers/net/ethernet/stmicro/stmmac/enh_desc.cmodified+16−6View file
drivers/net/ethernet/stmicro/stmmac/hwif.hmodified+1−1View file
drivers/net/ethernet/stmicro/stmmac/norm_desc.cmodified+7−5View file
drivers/net/ethernet/stmicro/stmmac/stmmac_main.cmodified+19−15View file
drivers/net/hyperv/hyperv_net.hmodified+1−0View file
drivers/net/hyperv/netvsc.cmodified+4−2View file
drivers/net/hyperv/netvsc_drv.cmodified+26−6View file
drivers/net/usb/qmi_wwan.cmodified+1−0View file
drivers/net/vrf.cmodified+1−0View file
include/linux/mii.hmodified+1−1View file
include/linux/mlx5/driver.hmodified+2−0View file
include/net/ip.hmodified+1−1View file
include/net/net_namespace.hmodified+1−0View file
include/net/netns/hash.hmodified+2−8View file
include/net/sch_generic.hmodified+37−7View file
kernel/bpf/cpumap.cmodified+10−3View file
kernel/bpf/inode.cmodified+18−14View file
kernel/bpf/verifier.cmodified+3−2View file
net/8021q/vlan_dev.cmodified+15−11View file
net/batman-adv/bat_v_elp.cmodified+4−2View file
net/batman-adv/bridge_loop_avoidance.cmodified+13−3View file
net/batman-adv/sysfs.cmodified+5−2View file
net/batman-adv/translation-table.cmodified+24−8View file
net/bridge/br_multicast.cmodified+3−0View file
net/core/datagram.cmodified+1−1View file
net/core/dev.cmodified+3−1View file
net/core/ethtool.cmodified+30−16View file
net/core/filter.cmodified+3−13View file
net/core/flow_dissector.cmodified+3−1View file
net/core/net_namespace.cmodified+1−0View file
net/core/skbuff.cmodified+1−1View file
net/dccp/feat.cmodified+6−1View file
net/dsa/tag_qca.cmodified+10−0View file
net/ipv4/ip_input.cmodified+3−4View file
net/ipv4/ip_options.cmodified+2−2View file
net/ipv4/tcp_dctcp.cmodified+18−18View file
net/ipv4/tcp_ipv4.cmodified+2−1View file
net/ipv6/ila/ila_xlat.cmodified+1−0View file
net/ipv6/ip6_output.cmodified+3−1View file
net/ipv6/ip6_tunnel.cmodified+2−2View file
net/ipv6/sit.cmodified+4−0View file
net/kcm/kcmsock.cmodified+8−8View file
net/openvswitch/flow_netlink.cmodified+2−2View file
net/rds/tcp.cmodified+1−1View file
net/sched/act_sample.cmodified+8−2View file
net/sched/cls_matchall.cmodified+5−0View file
net/sched/sch_cake.cmodified+12−1View file
net/sched/sch_cbq.cmodified+4−6View file
net/sched/sch_drr.cmodified+4−12View file
net/sched/sch_hfsc.cmodified+5−14View file
net/sched/sch_htb.cmodified+6−16View file
net/sched/sch_mq.cmodified+1−1View file
net/sched/sch_mqprio.cmodified+1−2View file
net/sched/sch_multiq.cmodified+4−6View file
net/sched/sch_prio.cmodified+3−7View file
net/sched/sch_qfq.cmodified+2−12View file
net/sched/sch_red.cmodified+1−2View file
net/sched/sch_sfb.cmodified+1−2View file
net/sched/sch_taprio.cmodified+1−1View file
net/sched/sch_tbf.cmodified+1−2View file
net/sctp/protocol.cmodified+1−0View file
net/tipc/netlink_compat.cmodified+20−4View file
net/tls/tls_sw.cmodified+2−0View file
tools/lib/bpf/Makefilemodified+4−3View file
tools/lib/bpf/btf.cmodified+3−0View file
tools/testing/selftests/bpf/prog_tests/flow_dissector.cmodified+68−0View file
tools/testing/selftests/bpf/progs/bpf_flow.cmodified+7−12View file
tools/testing/selftests/bpf/test_btf.cmodified+47−0View file
tools/testing/selftests/bpf/verifier/calls.cmodified+38−0View file
tools/testing/selftests/tc-testing/tc-tests/actions/sample.jsonmodified+24−0View file

Only the first 600 diff lines are shown. Download the complete patch.

Documentation/bpf/btf.rst

View file
diff --git a/Documentation/bpf/btf.rst b/Documentation/bpf/btf.rst
index 9a60a5d..7313d35 100644
--- a/Documentation/bpf/btf.rst
+++ b/Documentation/bpf/btf.rst
@@ -148,16 +148,16 @@ The ``btf_type.size * 8`` must be equal to or greater than ``BTF_INT_BITS()``
for the type. The maximum value of ``BTF_INT_BITS()`` is 128.
The ``BTF_INT_OFFSET()`` specifies the starting bit offset to calculate values
-for this int. For example, a bitfield struct member has: * btf member bit
-offset 100 from the start of the structure, * btf member pointing to an int
-type, * the int type has ``BTF_INT_OFFSET() = 2`` and ``BTF_INT_BITS() = 4``
+for this int. For example, a bitfield struct member has:
+ * btf member bit offset 100 from the start of the structure,
+ * btf member pointing to an int type,
+ * the int type has ``BTF_INT_OFFSET() = 2`` and ``BTF_INT_BITS() = 4``
Then in the struct memory layout, this member will occupy ``4`` bits starting
from bits ``100 + 2 = 102``.
Alternatively, the bitfield struct member can be the following to access the
same bits as the above:
-
* btf member bit offset 102,
* btf member pointing to an int type,
* the int type has ``BTF_INT_OFFSET() = 0`` and ``BTF_INT_BITS() = 4``

Documentation/networking/bpf_flow_dissector.rst

View file
diff --git a/Documentation/networking/bpf_flow_dissector.rst b/Documentation/networking/bpf_flow_dissector.rst
new file mode 100644
index 0000000..b375ae2
--- /dev/null
+++ b/Documentation/networking/bpf_flow_dissector.rst
@@ -0,0 +1,126 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+==================
+BPF Flow Dissector
+==================
+
+Overview
+========
+
+Flow dissector is a routine that parses metadata out of the packets. It's
+used in the various places in the networking subsystem (RFS, flow hash, etc).
+
+BPF flow dissector is an attempt to reimplement C-based flow dissector logic
+in BPF to gain all the benefits of BPF verifier (namely, limits on the
+number of instructions and tail calls).
+
+API
+===
+
+BPF flow dissector programs operate on an ``__sk_buff``. However, only the
+limited set of fields is allowed: ``data``, ``data_end`` and ``flow_keys``.
+``flow_keys`` is ``struct bpf_flow_keys`` and contains flow dissector input
+and output arguments.
+
+The inputs are:
+ * ``nhoff`` - initial offset of the networking header
+ * ``thoff`` - initial offset of the transport header, initialized to nhoff
+ * ``n_proto`` - L3 protocol type, parsed out of L2 header
+
+Flow dissector BPF program should fill out the rest of the ``struct
+bpf_flow_keys`` fields. Input arguments ``nhoff/thoff/n_proto`` should be
+also adjusted accordingly.
+
+The return code of the BPF program is either BPF_OK to indicate successful
+dissection, or BPF_DROP to indicate parsing error.
+
+__sk_buff->data
+===============
+
+In the VLAN-less case, this is what the initial state of the BPF flow
+dissector looks like::
+
+ +------+------+------------+-----------+
+ | DMAC | SMAC | ETHER_TYPE | L3_HEADER |
+ +------+------+------------+-----------+
+ ^
+ |
+ +-- flow dissector starts here
+
+
+.. code:: c
+
+ skb->data + flow_keys->nhoff point to the first byte of L3_HEADER
+ flow_keys->thoff = nhoff
+ flow_keys->n_proto = ETHER_TYPE
+
+In case of VLAN, flow dissector can be called with the two different states.
+
+Pre-VLAN parsing::
+
+ +------+------+------+-----+-----------+-----------+
+ | DMAC | SMAC | TPID | TCI |ETHER_TYPE | L3_HEADER |
+ +------+------+------+-----+-----------+-----------+
+ ^
+ |
+ +-- flow dissector starts here
+
+.. code:: c
+
+ skb->data + flow_keys->nhoff point the to first byte of TCI
+ flow_keys->thoff = nhoff
+ flow_keys->n_proto = TPID
+
+Please note that TPID can be 802.1AD and, hence, BPF program would
+have to parse VLAN information twice for double tagged packets.
+
+
+Post-VLAN parsing::
+
+ +------+------+------+-----+-----------+-----------+
+ | DMAC | SMAC | TPID | TCI |ETHER_TYPE | L3_HEADER |
+ +------+------+------+-----+-----------+-----------+
+ ^
+ |
+ +-- flow dissector starts here
+
+.. code:: c
+
+ skb->data + flow_keys->nhoff point the to first byte of L3_HEADER
+ flow_keys->thoff = nhoff
+ flow_keys->n_proto = ETHER_TYPE
+
+In this case VLAN information has been processed before the flow dissector
+and BPF flow dissector is not required to handle it.
+
+
+The takeaway here is as follows: BPF flow dissector program can be called with
+the optional VLAN header and should gracefully handle both cases: when single
+or double VLAN is present and when it is not present. The same program
+can be called for both cases and would have to be written carefully to
+handle both cases.
+
+
+Reference Implementation
+========================
+
+See ``tools/testing/selftests/bpf/progs/bpf_flow.c`` for the reference
+implementation and ``tools/testing/selftests/bpf/flow_dissector_load.[hc]``
+for the loader. bpftool can be used to load BPF flow dissector program as well.
+
+The reference implementation is organized as follows:
+ * ``jmp_table`` map that contains sub-programs for each supported L3 protocol
+ * ``_dissect`` routine - entry point; it does input ``n_proto`` parsing and
+ does ``bpf_tail_call`` to the appropriate L3 handler
+
+Since BPF at this point doesn't support looping (or any jumping back),
+jmp_table is used instead to handle multiple levels of encapsulation (and
+IPv6 options).
+
+
+Current Limitations
+===================
+BPF flow dissector doesn't support exporting all the metadata that in-kernel
+C-based implementation can export. Notable example is single VLAN (802.1Q)
+and double VLAN (802.1AD) tags. Please refer to the ``struct bpf_flow_keys``
+for a set of information that's currently can be exported from the BPF context.

Documentation/networking/index.rst

View file
diff --git a/Documentation/networking/index.rst b/Documentation/networking/index.rst
index 5449149..984e68f 100644
--- a/Documentation/networking/index.rst
+++ b/Documentation/networking/index.rst
@@ -9,6 +9,7 @@ Contents:
netdev-FAQ
af_xdp
batman-adv
+ bpf_flow_dissector
can
can_ucan_protocol
device_drivers/freescale/dpaa2/index

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index 3914050..6771bd7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -5833,7 +5833,7 @@ L: [email protected]
S: Maintained
F: Documentation/ABI/testing/sysfs-bus-mdio
F: Documentation/devicetree/bindings/net/mdio*
-F: Documentation/networking/phy.txt
+F: Documentation/networking/phy.rst
F: drivers/net/phy/
F: drivers/of/of_mdio.c
F: drivers/of/of_net.c
@@ -13981,7 +13981,7 @@ F: drivers/media/rc/serial_ir.c
SFC NETWORK DRIVER
M: Solarflare linux maintainers <[email protected]>
M: Edward Cree <[email protected]>
-M: Bert Kenward <[email protected]>
+M: Martin Habets <[email protected]>
S: Supported
F: drivers/net/ethernet/sfc/

drivers/net/bonding/bond_sysfs_slave.c

View file
diff --git a/drivers/net/bonding/bond_sysfs_slave.c b/drivers/net/bonding/bond_sysfs_slave.c
index 2f120b2..4985268 100644
--- a/drivers/net/bonding/bond_sysfs_slave.c
+++ b/drivers/net/bonding/bond_sysfs_slave.c
@@ -55,7 +55,9 @@ static SLAVE_ATTR_RO(link_failure_count);
static ssize_t perm_hwaddr_show(struct slave *slave, char *buf)
{
- return sprintf(buf, "%pM\n", slave->perm_hwaddr);
+ return sprintf(buf, "%*phC\n",
+ slave->dev->addr_len,
+ slave->perm_hwaddr);
}
static SLAVE_ATTR_RO(perm_hwaddr);

drivers/net/dsa/mv88e6xxx/port.c

View file
diff --git a/drivers/net/dsa/mv88e6xxx/port.c b/drivers/net/dsa/mv88e6xxx/port.c
index dce84a2..c44b282 100644
--- a/drivers/net/dsa/mv88e6xxx/port.c
+++ b/drivers/net/dsa/mv88e6xxx/port.c
@@ -427,18 +427,22 @@ int mv88e6390x_port_set_cmode(struct mv88e6xxx_chip *chip, int port,
return 0;
lane = mv88e6390x_serdes_get_lane(chip, port);
- if (lane < 0)
+ if (lane < 0 && lane != -ENODEV)
return lane;
- if (chip->ports[port].serdes_irq) {
- err = mv88e6390_serdes_irq_disable(chip, port, lane);
+ if (lane >= 0) {
+ if (chip->ports[port].serdes_irq) {
+ err = mv88e6390_serdes_irq_disable(chip, port, lane);
+ if (err)
+ return err;
+ }
+
+ err = mv88e6390x_serdes_power(chip, port, false);
if (err)
return err;
}
- err = mv88e6390x_serdes_power(chip, port, false);
- if (err)
- return err;
+ chip->ports[port].cmode = 0;
if (cmode) {
err = mv88e6xxx_port_read(chip, port, MV88E6XXX_PORT_STS, &reg);
@@ -452,6 +456,12 @@ int mv88e6390x_port_set_cmode(struct mv88e6xxx_chip *chip, int port,
if (err)
return err;
+ chip->ports[port].cmode = cmode;
+
+ lane = mv88e6390x_serdes_get_lane(chip, port);
+ if (lane < 0)
+ return lane;
+
err = mv88e6390x_serdes_power(chip, port, true);
if (err)
return err;
@@ -463,8 +473,6 @@ int mv88e6390x_port_set_cmode(struct mv88e6xxx_chip *chip, int port,
}
}
- chip->ports[port].cmode = cmode;
-
return 0;
}

drivers/net/ethernet/cavium/thunder/nicvf_main.c

View file
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
index aa2be48..28eac90 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
@@ -1328,10 +1328,11 @@ int nicvf_stop(struct net_device *netdev)
struct nicvf_cq_poll *cq_poll = NULL;
union nic_mbx mbx = {};
- cancel_delayed_work_sync(&nic->link_change_work);
-
/* wait till all queued set_rx_mode tasks completes */
- drain_workqueue(nic->nicvf_rx_mode_wq);
+ if (nic->nicvf_rx_mode_wq) {
+ cancel_delayed_work_sync(&nic->link_change_work);
+ drain_workqueue(nic->nicvf_rx_mode_wq);
+ }
mbx.msg.msg = NIC_MBOX_MSG_SHUTDOWN;
nicvf_send_msg_to_pf(nic, &mbx);
@@ -1452,7 +1453,8 @@ int nicvf_open(struct net_device *netdev)
struct nicvf_cq_poll *cq_poll = NULL;
/* wait till all queued set_rx_mode tasks completes if any */
- drain_workqueue(nic->nicvf_rx_mode_wq);
+ if (nic->nicvf_rx_mode_wq)
+ drain_workqueue(nic->nicvf_rx_mode_wq);
netif_carrier_off(netdev);
@@ -1550,10 +1552,12 @@ int nicvf_open(struct net_device *netdev)
/* Send VF config done msg to PF */
nicvf_send_cfg_done(nic);
- INIT_DELAYED_WORK(&nic->link_change_work,
- nicvf_link_status_check_task);
- queue_delayed_work(nic->nicvf_rx_mode_wq,
- &nic->link_change_work, 0);
+ if (nic->nicvf_rx_mode_wq) {
+ INIT_DELAYED_WORK(&nic->link_change_work,
+ nicvf_link_status_check_task);
+ queue_delayed_work(nic->nicvf_rx_mode_wq,
+ &nic->link_change_work, 0);
+ }
return 0;
cleanup:

drivers/net/ethernet/cavium/thunder/nicvf_queues.c

View file
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
index 5b4d3ba..e246f97 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
@@ -105,20 +105,19 @@ static inline struct pgcache *nicvf_alloc_page(struct nicvf *nic,
/* Check if page can be recycled */
if (page) {
ref_count = page_ref_count(page);
- /* Check if this page has been used once i.e 'put_page'
- * called after packet transmission i.e internal ref_count
- * and page's ref_count are equal i.e page can be recycled.
+ /* This page can be recycled if internal ref_count and page's
+ * ref_count are equal, indicating that the page has been used
+ * once for packet transmission. For non-XDP mode, internal
+ * ref_count is always '1'.
*/
- if (rbdr->is_xdp && (ref_count == pgcache->ref_count))
- pgcache->ref_count--;
- else
- page = NULL;
-
- /* In non-XDP mode, page's ref_count needs to be '1' for it
- * to be recycled.
- */
- if (!rbdr->is_xdp && (ref_count != 1))
+ if (rbdr->is_xdp) {
+ if (ref_count == pgcache->ref_count)
+ pgcache->ref_count--;
+ else
+ page = NULL;
+ } else if (ref_count != 1) {
page = NULL;
+ }
}
if (!page) {
@@ -365,11 +364,10 @@ static void nicvf_free_rbdr(struct nicvf *nic, struct rbdr *rbdr)
while (head < rbdr->pgcnt) {
pgcache = &rbdr->pgcache[head];
if (pgcache->page && page_ref_count(pgcache->page) != 0) {
- if (!rbdr->is_xdp) {
- put_page(pgcache->page);
- continue;
+ if (rbdr->is_xdp) {
+ page_ref_sub(pgcache->page,
+ pgcache->ref_count - 1);
}
- page_ref_sub(pgcache->page, pgcache->ref_count - 1);
put_page(pgcache->page);
}
head++;

drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c

View file
diff --git a/drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c b/drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c
index 74849be..e291900 100644
--- a/drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c
+++ b/drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c
@@ -354,7 +354,10 @@ static struct cxgbi_ppm_pool *ppm_alloc_cpu_pool(unsigned int *total,
ppmax = max;
/* pool size must be multiple of unsigned long */
- bmap = BITS_TO_LONGS(ppmax);
+ bmap = ppmax / BITS_PER_TYPE(unsigned long);
+ if (!bmap)
+ return NULL;
+
ppmax = (bmap * sizeof(unsigned long)) << 3;
alloc_sz = sizeof(*pools) + sizeof(unsigned long) * bmap;
@@ -402,6 +405,10 @@ int cxgbi_ppm_init(void **ppm_pp, struct net_device *ndev,
if (reserve_factor) {
ppmax_pool = ppmax / reserve_factor;
pool = ppm_alloc_cpu_pool(&ppmax_pool, &pool_index_max);
+ if (!pool) {
+ ppmax_pool = 0;
+ reserve_factor = 0;
+ }
pr_debug("%s: ppmax %u, cpu total %u, per cpu %u.\n",
ndev->name, ppmax, ppmax_pool, pool_index_max);

drivers/net/ethernet/hisilicon/hns/hnae.c

View file
diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.c b/drivers/net/ethernet/hisilicon/hns/hnae.c
index 79d03f8..c7fa97a 100644
--- a/drivers/net/ethernet/hisilicon/hns/hnae.c
+++ b/drivers/net/ethernet/hisilicon/hns/hnae.c
@@ -150,7 +150,6 @@ out_buffer_fail:
/* free desc along with its attached buffer */
static void hnae_free_desc(struct hnae_ring *ring)
{
- hnae_free_buffers(ring);
dma_unmap_single(ring_to_dev(ring), ring->desc_dma_addr,
ring->desc_num * sizeof(ring->desc[0]),
ring_to_dma_dir(ring));
@@ -183,6 +182,9 @@ static int hnae_alloc_desc(struct hnae_ring *ring)
/* fini ring, also free the buffer for the ring */
static void hnae_fini_ring(struct hnae_ring *ring)
{
+ if (is_rx_ring(ring))
+ hnae_free_buffers(ring);
+
hnae_free_desc(ring);
kfree(ring->desc_cb);
ring->desc_cb = NULL;

drivers/net/ethernet/hisilicon/hns/hnae.h

View file
diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.h b/drivers/net/ethernet/hisilicon/hns/hnae.h
index 08a750f..d6fb834 100644
--- a/drivers/net/ethernet/hisilicon/hns/hnae.h
+++ b/drivers/net/ethernet/hisilicon/hns/hnae.h
@@ -357,7 +357,7 @@ struct hnae_buf_ops {
};
struct hnae_queue {
- void __iomem *io_base;
+ u8 __iomem *io_base;
phys_addr_t phy_base;
struct hnae_ae_dev *dev; /* the device who use this queue */
struct hnae_ring rx_ring ____cacheline_internodealigned_in_smp;

drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c

View file
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
index a97228c..6c05079 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
@@ -370,7 +370,7 @@ int hns_mac_clr_multicast(struct hns_mac_cb *mac_cb, int vfn)
static void hns_mac_param_get(struct mac_params *param,
struct hns_mac_cb *mac_cb)
{
- param->vaddr = (void *)mac_cb->vaddr;
+ param->vaddr = mac_cb->vaddr;
param->mac_mode = hns_get_enet_interface(mac_cb);
ether_addr_copy(param->addr, mac_cb->addr_entry_idx[0].addr);
param->mac_id = mac_cb->mac_id;

drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.h

View file
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.h b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.h
index fbc7534..2258979 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.h
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.h
@@ -187,7 +187,7 @@ struct mac_statistics {
/*mac para struct ,mac get param from nic or dsaf when initialize*/
struct mac_params {
char addr[ETH_ALEN];
- void *vaddr; /*virtual address*/
+ u8 __iomem *vaddr; /*virtual address*/
struct device *dev;
u8 mac_id;
/**< Ethernet operation mode (MAC-PHY interface and speed) */
@@ -402,7 +402,7 @@ struct mac_driver {
enum mac_mode mac_mode;
u8 mac_id;
struct hns_mac_cb *mac_cb;
- void __iomem *io_base;
+ u8 __iomem *io_base;
unsigned int mac_en_flg;/*you'd better don't enable mac twice*/
unsigned int virt_dev_num;
struct device *dev;

drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c

View file
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
index ac55db0..61eea6a 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
@@ -1602,8 +1602,6 @@ static void hns_dsaf_set_mac_key(
DSAF_TBL_TCAM_KEY_VLAN_S, vlan_id);
dsaf_set_field(mac_key->low.bits.port_vlan, DSAF_TBL_TCAM_KEY_PORT_M,
DSAF_TBL_TCAM_KEY_PORT_S, port);
-
- mac_key->low.bits.port_vlan = le16_to_cpu(mac_key->low.bits.port_vlan);
}
/**
@@ -1663,8 +1661,8 @@ int hns_dsaf_set_mac_uc_entry(
/* default config dvc to 0 */
mac_data.tbl_ucast_dvc = 0;
mac_data.tbl_ucast_out_port = mac_entry->port_num;
- tcam_data.tbl_tcam_data_high = cpu_to_le32(mac_key.high.val);
- tcam_data.tbl_tcam_data_low = cpu_to_le32(mac_key.low.val);
+ tcam_data.tbl_tcam_data_high = mac_key.high.val;
+ tcam_data.tbl_tcam_data_low = mac_key.low.val;
hns_dsaf_tcam_uc_cfg(dsaf_dev, entry_index, &tcam_data, &mac_data);
@@ -1786,9 +1784,6 @@ int hns_dsaf_add_mac_mc_port(struct dsaf_device *dsaf_dev,
0xff,
mc_mask);
- mask_key.high.val = le32_to_cpu(mask_key.high.val);
- mask_key.low.val = le32_to_cpu(mask_key.low.val);
-
pmask_key = (struct dsaf_tbl_tcam_data *)(&mask_key);
}
@@ -1840,8 +1835,8 @@ int hns_dsaf_add_mac_mc_port(struct dsaf_device *dsaf_dev,
dsaf_dev->ae_dev.name, mac_key.high.val,
mac_key.low.val, entry_index);
- tcam_data.tbl_tcam_data_high = cpu_to_le32(mac_key.high.val);
- tcam_data.tbl_tcam_data_low = cpu_to_le32(mac_key.low.val);
+ tcam_data.tbl_tcam_data_high = mac_key.high.val;
+ tcam_data.tbl_tcam_data_low = mac_key.low.val;
/* config mc entry with mask */
hns_dsaf_tcam_mc_cfg(dsaf_dev, entry_index, &tcam_data,
@@ -1956,9 +1951,6 @@ int hns_dsaf_del_mac_mc_port(struct dsaf_device *dsaf_dev,
/* config key mask */
hns_dsaf_set_mac_key(dsaf_dev, &mask_key, 0x00, 0xff, mc_mask);
- mask_key.high.val = le32_to_cpu(mask_key.high.val);
- mask_key.low.val = le32_to_cpu(mask_key.low.val);
-
pmask_key = (struct dsaf_tbl_tcam_data *)(&mask_key);
}
@@ -2012,8 +2004,8 @@ int hns_dsaf_del_mac_mc_port(struct dsaf_device *dsaf_dev,
soft_mac_entry += entry_index;
soft_mac_entry->index = DSAF_INVALID_ENTRY_IDX;
} else { /* not zero, just del port, update */
- tcam_data.tbl_tcam_data_high = cpu_to_le32(mac_key.high.val);
- tcam_data.tbl_tcam_data_low = cpu_to_le32(mac_key.low.val);
+ tcam_data.tbl_tcam_data_high = mac_key.high.val;
+ tcam_data.tbl_tcam_data_low = mac_key.low.val;
hns_dsaf_tcam_mc_cfg(dsaf_dev, entry_index,
&tcam_data,
@@ -2750,6 +2742,17 @@ int hns_dsaf_get_regs_count(void)
return DSAF_DUMP_REGS_NUM;
}
+static int hns_dsaf_get_port_id(u8 port)
+{
+ if (port < DSAF_SERVICE_NW_NUM)
+ return port;
+
+ if (port >= DSAF_BASE_INNER_PORT_NUM)
+ return port - DSAF_BASE_INNER_PORT_NUM + DSAF_SERVICE_NW_NUM;
+
+ return -EINVAL;
+}
+
static void set_promisc_tcam_enable(struct dsaf_device *dsaf_dev, u32 port)
{
struct dsaf_tbl_tcam_ucast_cfg tbl_tcam_ucast = {0, 1, 0, 0, 0x80};
@@ -2815,23 +2818,33 @@ static void set_promisc_tcam_enable(struct dsaf_device *dsaf_dev, u32 port)
memset(&temp_key, 0x0, sizeof(temp_key));
mask_entry.addr[0] = 0x01;
hns_dsaf_set_mac_key(dsaf_dev, &mask_key, mask_entry.in_vlan_id,
- port, mask_entry.addr);
+ 0xf, mask_entry.addr);
tbl_tcam_mcast.tbl_mcast_item_vld = 1;
tbl_tcam_mcast.tbl_mcast_old_en = 0;
- if (port < DSAF_SERVICE_NW_NUM) {
- mskid = port;
- } else if (port >= DSAF_BASE_INNER_PORT_NUM) {
- mskid = port - DSAF_BASE_INNER_PORT_NUM + DSAF_SERVICE_NW_NUM;
- } else {
+ /* set MAC port to handle multicast */
+ mskid = hns_dsaf_get_port_id(port);
+ if (mskid == -EINVAL) {
dev_err(dsaf_dev->dev, "%s,pnum(%d)error,key(%#x:%#x)\n",
dsaf_dev->ae_dev.name, port,
mask_key.high.val, mask_key.low.val);
return;
}
+ dsaf_set_bit(tbl_tcam_mcast.tbl_mcast_port_msk[mskid / 32],
+ mskid % 32, 1);
+ /* set pool bit map to handle multicast */
+ mskid = hns_dsaf_get_port_id(port_num);
+ if (mskid == -EINVAL) {
+ dev_err(dsaf_dev->dev,
+ "%s, pool bit map pnum(%d)error,key(%#x:%#x)\n",
+ dsaf_dev->ae_dev.name, port_num,
+ mask_key.high.val, mask_key.low.val);
+ return;
+ }
dsaf_set_bit(tbl_tcam_mcast.tbl_mcast_port_msk[mskid / 32],
mskid % 32, 1);
+
memcpy(&temp_key, &mask_key, sizeof(mask_key));
hns_dsaf_tcam_mc_cfg_vague(dsaf_dev, entry_index, &tbl_tcam_data_mc,
(struct dsaf_tbl_tcam_data *)(&mask_key),

drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h

View file
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h
index 0e1cd99..76cc888 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h
@@ -467,4 +467,6 @@ int hns_dsaf_clr_mac_mc_port(struct dsaf_device *dsaf_dev,
u8 mac_id, u8 port_num);
int hns_dsaf_wait_pkt_clean(struct dsaf_device *dsaf_dev, int port);
+int hns_dsaf_roce_reset(struct fwnode_handle *dsaf_fwnode, bool dereset);
+
#endif /* __HNS_DSAF_MAIN_H__ */

drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c

View file
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
index 16294cd..19b9487 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
@@ -670,7 +670,7 @@ static int hns_mac_config_sds_loopback(struct hns_mac_cb *mac_cb, bool en)
dsaf_set_field(origin, 1ull << 10, 10, en);
dsaf_write_syscon(mac_cb->serdes_ctrl, reg_offset, origin);
} else {
- u8 *base_addr = (u8 *)mac_cb->serdes_vaddr +
+ u8 __iomem *base_addr = mac_cb->serdes_vaddr +

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/hisilicon/hns/hns_dsaf_rcb.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/hisilicon/hns/hns_dsaf_xgmac.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/hisilicon/hns/hns_enet.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/hisilicon/hns3/hns3pf/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/hisilicon/hns3/hns3vf/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/hisilicon/hns_mdio.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/ibm/ibmvnic.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/intel/fm10k/fm10k_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/intel/i40e/i40e.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/intel/i40e/i40e_ethtool.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/intel/i40e/i40e_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/intel/i40e/i40e_ptp.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/intel/i40e/i40e_xsk.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/intel/igb/e1000_defines.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/intel/igb/igb_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/en/port.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/en/port_buffer.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/en_common.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/en_tc.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/eswitch.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/main.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/netronome/nfp/flower/action.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/netronome/nfp/flower/cmsg.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/netronome/nfp/flower/match.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/netronome/nfp/nfp_net_repr.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/realtek/r8169.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/stmicro/stmmac/descs_com.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/stmicro/stmmac/dwxgmac2_descs.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/stmicro/stmmac/enh_desc.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/stmicro/stmmac/hwif.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/stmicro/stmmac/norm_desc.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/hyperv/hyperv_net.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/hyperv/netvsc.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/hyperv/netvsc_drv.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/usb/qmi_wwan.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/vrf.c

View file

This diff is incomplete. Download the complete patch.

include/linux/mii.h

View file

This diff is incomplete. Download the complete patch.

include/linux/mlx5/driver.h

View file

This diff is incomplete. Download the complete patch.

include/net/ip.h

View file

This diff is incomplete. Download the complete patch.

include/net/net_namespace.h

View file

This diff is incomplete. Download the complete patch.

include/net/netns/hash.h

View file

This diff is incomplete. Download the complete patch.

include/net/sch_generic.h

View file

This diff is incomplete. Download the complete patch.

kernel/bpf/cpumap.c

View file

This diff is incomplete. Download the complete patch.

kernel/bpf/inode.c

View file

This diff is incomplete. Download the complete patch.

kernel/bpf/verifier.c

View file

This diff is incomplete. Download the complete patch.

net/8021q/vlan_dev.c

View file

This diff is incomplete. Download the complete patch.

net/batman-adv/bat_v_elp.c

View file

This diff is incomplete. Download the complete patch.

net/batman-adv/bridge_loop_avoidance.c

View file

This diff is incomplete. Download the complete patch.

net/batman-adv/sysfs.c

View file

This diff is incomplete. Download the complete patch.

net/batman-adv/translation-table.c

View file

This diff is incomplete. Download the complete patch.

net/bridge/br_multicast.c

View file

This diff is incomplete. Download the complete patch.

net/core/datagram.c

View file

This diff is incomplete. Download the complete patch.

net/core/dev.c

View file

This diff is incomplete. Download the complete patch.

net/core/ethtool.c

View file

This diff is incomplete. Download the complete patch.

net/core/filter.c

View file

This diff is incomplete. Download the complete patch.

net/core/flow_dissector.c

View file

This diff is incomplete. Download the complete patch.

net/core/net_namespace.c

View file

This diff is incomplete. Download the complete patch.

net/core/skbuff.c

View file

This diff is incomplete. Download the complete patch.

net/dccp/feat.c

View file

This diff is incomplete. Download the complete patch.

net/dsa/tag_qca.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/ip_input.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/ip_options.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/tcp_dctcp.c

View file

This diff is incomplete. Download the complete patch.

net/ipv4/tcp_ipv4.c

View file

This diff is incomplete. Download the complete patch.

net/ipv6/ila/ila_xlat.c

View file

This diff is incomplete. Download the complete patch.

net/ipv6/ip6_output.c

View file

This diff is incomplete. Download the complete patch.

net/ipv6/ip6_tunnel.c

View file

This diff is incomplete. Download the complete patch.

net/ipv6/sit.c

View file

This diff is incomplete. Download the complete patch.

net/kcm/kcmsock.c

View file

This diff is incomplete. Download the complete patch.

net/openvswitch/flow_netlink.c

View file

This diff is incomplete. Download the complete patch.

net/rds/tcp.c

View file

This diff is incomplete. Download the complete patch.

net/sched/act_sample.c

View file

This diff is incomplete. Download the complete patch.

net/sched/cls_matchall.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_cake.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_cbq.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_drr.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_hfsc.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_htb.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_mq.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_mqprio.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_multiq.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_prio.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_qfq.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_red.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_sfb.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_taprio.c

View file

This diff is incomplete. Download the complete patch.

net/sched/sch_tbf.c

View file

This diff is incomplete. Download the complete patch.

net/sctp/protocol.c

View file

This diff is incomplete. Download the complete patch.

net/tipc/netlink_compat.c

View file

This diff is incomplete. Download the complete patch.

net/tls/tls_sw.c

View file

This diff is incomplete. Download the complete patch.

tools/lib/bpf/Makefile

View file

This diff is incomplete. Download the complete patch.

tools/lib/bpf/btf.c

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/bpf/prog_tests/flow_dissector.c

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/bpf/progs/bpf_flow.c

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/bpf/test_btf.c

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/bpf/verifier/calls.c

View file

This diff is incomplete. Download the complete patch.

tools/testing/selftests/tc-testing/tc-tests/actions/sample.json

View file

This diff is incomplete. Download the complete patch.