08 Mar, 2023
26 commits
-
Fixes: 499eab27dcfe ("virtio: trans: only kick backend when starving")
Signed-off-by: Hou Zhiqiang -
The FPE parameters should be configured once the fpe_configure() is
called. FPE will not enabled before preemption verification.Signed-off-by: Xiaoliang Yang
-
The preemption verification is not working when enabled lldp
verification. Make fpe_cfg->enable always enabled after configure the
preemption can fix this issue.Another issue is that preemption status can't be inactive after link
down. Disable the preemption once link is down.Signed-off-by: Xiaoliang Yang
-
The preemption will not be disabled when link down, this patch fix that
issue.Signed-off-by: Xiaoliang Yang
-
The preemption status may not equal to active status when preemption
verification enabled. This patch enable the status once preemption is
enabled even if it's not active.Signed-off-by: Xiaoliang Yang
-
Too much frontend to backend virtqueue notification impacts the
performance. To reduce the virtqueue notification, only kick
backend when starving.Signed-off-by: Hou Zhiqiang
-
Signed-off-by: Hou Zhiqiang
-
When not specified in device tree, rx phy-mac delay compensation value should be 0.
fixes: 9d00b3fe64f2c3774779860a84f06fd6631ff0e3
Signed-off-by: Marouen Ghodhbane
-
Reducing the RX and TX ring size was introduced to improve CPU load with avb module
loaded. But, this affects the best effort bandwidth when the module is not inserted
(especially TX bandwidth)iperf results with current ring sizes:
root@imx8mp-lpddr4-evk:~# iperf3 -c 192.168.1.60
Connecting to host 192.168.1.60, port 5201
[ 5] local 192.168.1.100 port 34108 connected to 192.168.1.60 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 14.7 MBytes 123 Mbits/sec 0 119 KBytes
[ 5] 1.00-2.00 sec 14.4 MBytes 121 Mbits/sec 0 119 KBytesiperf results with new parameters:
TX bandwidth:
root@imx8mp-lpddr4-evk:~# iperf3 -c 192.164.1.102 -t 5
Connecting to host 192.164.1.102, port 5201
[ 5] local 192.164.1.162 port 42646 connected to 192.164.1.102 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 112 MBytes 940 Mbits/sec 0 576 KBytes
[ 5] 1.00-2.00 sec 109 MBytes 914 Mbits/sec 0 576 KBytes
[ 5] 2.00-3.00 sec 110 MBytes 919 Mbits/sec 0 576 KBytes
[ 5] 3.00-4.00 sec 109 MBytes 919 Mbits/sec 0 576 KBytesRX bandwidth:
root@imx8mp-lpddr4-evk:~# iperf3 -c 192.164.1.102 -t 5 -R
Connecting to host 192.164.1.102, port 5201
Reverse mode, remote host 192.164.1.102 is sending
[ 5] local 192.164.1.162 port 44888 connected to 192.164.1.102 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 112 MBytes 941 Mbits/sec
[ 5] 1.00-2.00 sec 112 MBytes 941 Mbits/sec
[ 5] 2.00-3.00 sec 112 MBytes 942 Mbits/sec
[ 5] 3.00-4.00 sec 112 MBytes 941 Mbits/sec
[ 5] 4.00-5.00 sec 112 MBytes 941 Mbits/secAlso, the default coalescing settings were not adjusted to the new ring size: use
custom values for AVB_SUPPORT.fixes: "75267d9e net: fec: avb: Improve CPU load under heavy AVB network load"
Signed-off-by: Marouen Ghodhbane
-
Prior to the Fixes: commit, the initialization code went through the
same fec_enet_set_coalesce() function as used by ethtool, and that
function correctly checks whether the current variant has support for
irq coalescing.Now that the initialization code instead calls fec_enet_itr_coal_set()
directly, that call needs to be guarded by a check for the
FEC_QUIRK_HAS_COALESCE bit.Fixes: df727d4547de (net: fec: don't reset irq coalesce settings to defaults on "ip link up")
Reported-by: Greg Ungerer
Signed-off-by: Rasmus Villemoes
Reviewed-by: Florian Fainelli
Link: https://lore.kernel.org/r/20221205204604.869853-1-linux@rasmusvillemoes.dk
Signed-off-by: Jakub Kicinski -
Currently, when a FEC device is brought up, the irq coalesce settings
are reset to their default values (1000us, 200 frames). That's
unexpected, and breaks for example use of an appropriate .link file to
make systemd-udev apply the desired
settings (https://www.freedesktop.org/software/systemd/man/systemd.link.html),
or any other method that would do a one-time setup during early boot.Refactor the code so that fec_restart() instead uses
fec_enet_itr_coal_set(), which simply applies the settings that are
stored in the private data, and initialize that private data with the
default values.Signed-off-by: Rasmus Villemoes
Reviewed-by: Andrew Lunn
Signed-off-by: David S. Miller
(cherry picked from commit df727d4547de568302b0ed15b0d4e8a469bdb456) -
fec_main.c:3942:25: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
3942 | if (skb)
| ^~
fec_main.c:3947:33: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
3947 | txq->tx_skbuff[i] = NULL;
|Signed-off-by: Marouen Ghodhbane
-
Alternative short title: don't instruct the hardware to match on
EtherType with "protocol 802.1Q" flower filters. It doesn't work for the
reasons detailed below.With a command such as the following:
tc filter add dev $swp1 ingress chain $(IS1 2) pref 3 \
protocol 802.1Q flower skip_sw vlan_id 200 src_mac $h1_mac \
action vlan modify id 300 \
action goto chain $(IS2 0 0)the created filter is set by ocelot_flower_parse_key() to be of type
OCELOT_VCAP_KEY_ETYPE, and etype is set to {value=0x8100, mask=0xffff}.
This gets propagated all the way to is1_entry_set() which commits it to
hardware (the VCAP_IS1_HK_ETYPE field of the key). Compare this to the
case where src_mac isn't specified - the key type is OCELOT_VCAP_KEY_ANY,
and is1_entry_set() doesn't populate VCAP_IS1_HK_ETYPE.The problem is that for VLAN-tagged frames, the hardware interprets the
ETYPE field as holding the encapsulated VLAN protocol. So the above
filter will only match those packets which have an encapsulated protocol
of 0x8100, rather than all packets with VLAN ID 200 and the given src_mac.The reason why this is allowed to occur is because, although we have a
block of code in ocelot_flower_parse_key() which sets "match_protocol"
to false when VLAN keys are present, that code executes too late.
There is another block of code, which executes for Ethernet addresses,
and has a "goto finished_key_parsing" and skips the VLAN header parsing.
By skipping it, "match_protocol" remains with the value it was
initialized with, i.e. "true", and "proto" is set to f->common.protocol,
or 0x8100.The concept of ignoring some keys rather than erroring out when they are
present but can't be offloaded is dubious in itself, but is present
since the initial commit fe3490e6107e ("net: mscc: ocelot: Hardware
ofload for tc flower filter"), and it's outside of the scope of this
patch to change that.The problem was introduced when the driver started to interpret the
flower filter's protocol, and populate the VCAP filter's ETYPE field
based on it.To fix this, it is sufficient to move the code that parses the VLAN keys
earlier than the "goto finished_key_parsing" instruction. This will
ensure that if we have a flower filter with both VLAN and Ethernet
address keys, it won't match on ETYPE 0x8100, because the VLAN key
parsing sets "match_protocol = false".Fixes: 86b956de119c ("net: mscc: ocelot: support matching on EtherType")
Signed-off-by: Vladimir Oltean
Signed-off-by: Xiaoliang Yang -
Signed-off-by: Hou Zhiqiang
-
This fixes the following issue:
[ 24.802178] Unable to handle kernel access to user memory outside uaccess routines at virtual address 0000ffffd8fd8974
[ 24.802194] Mem abort info:
[ 24.802196] ESR = 0x9600000f
[ 24.802198] EC = 0x25: DABT (current EL), IL = 32 bits
[ 24.802202] SET = 0, FnV = 0
[ 24.802204] EA = 0, S1PTW = 0
[ 24.802205] FSC = 0x0f: level 3 permission fault
[ 24.802208] Data abort info:
[ 24.802209] ISV = 0, ISS = 0x0000000f
[ 24.802211] CM = 0, WnR = 0
......
[ 24.802243] Hardware name: NXP i.MX93 11X11 EVK board - Baremetal (DT)
[ 24.802246] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 24.802250] pc : ipi_baremetal_ioctl+0x4/0x28
[ 24.802263] lr : __arm64_sys_ioctl+0xac/0xf0
[ 24.802271] sp : ffff80000b6f3de0
[ 24.802272] x29: ffff80000b6f3de0 x28: ffff00001a47f000 x27: 0000000000000000
[ 24.802279] x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000
[ 24.802285] x23: 0000000000000004 x22: 0000ffffd8fd8974 x21: ffff00000587e780
[ 24.802291] x20: ffff00000587e780 x19: 0000000000000001 x18: 0000000000000000
[ 24.802297] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
[ 24.802302] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
[ 24.802308] x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000000
[ 24.802314] x8 : 0000000000000000 x7 : 0000000000000001 x6 : 0000000000000200
[ 24.802319] x5 : 0000000000000004 x4 : 0000000000000001 x3 : ffff80000854de28
[ 24.802325] x2 : 0000ffffd8fd8974 x1 : 0000000000000001 x0 : ffff00000587e780
[ 24.802332] Call trace:
[ 24.802334] ipi_baremetal_ioctl+0x4/0x28
[ 24.802338] invoke_syscall+0x44/0x100
[ 24.802345] el0_svc_common.constprop.3+0xcc/0xf0
[ 24.802350] do_el0_svc+0x24/0x88
[ 24.802354] el0_svc+0x20/0x60
[ 24.802360] el0t_64_sync_handler+0x90/0xb8
[ 24.802364] el0t_64_sync+0x180/0x184
[ 24.802373] Code: d2800000 d50323bf d65f03c0 7100043f (f9400040)
[ 24.802379] ---[ end trace 0000000000000002 ]---Signed-off-by: Tao Yang
-
Signed-off-by: Marouen Ghodhbane
-
- Multiply the numerator and denomerator of the fractional part of the audio pll to have
better granularity of audio pll adjustement when changing the numerator part on the fly.
- Keep mfd < 2**21 to avoid u32 value overflow on multiplication in recalc_rate() function while using do_div()Signed-off-by: Marouen Ghodhbane
-
Signed-off-by: Tao Yang
-
Signed-off-by: Biwen Li
Signed-off-by: Hou Zhiqiang
Signed-off-by: Chunguang Li -
Signed-off-by: Biwen Li
Signed-off-by: Hou Zhiqiang
Signed-off-by: Chunguang Li -
Signed-off-by: Chunguang Li
-
Change to each channel uses an individual status register.
Signed-off-by: Hou Zhiqiang
-
Add initialization of device specific DMA pool for hypervisor-less
case.Signed-off-by: Hou Zhiqiang
-
Signed-off-by: Hou Zhiqiang
Signed-off-by: Jiafei Pan -
Add virtio performance evaluation driver and userspace tools
Signed-off-by: Hou Zhiqiang
Signed-off-by: Jiafei Pan -
Add hypervisor-less backend support, so frontend notify backend by
using triggering some interrupt in case of mmio write operation.Signed-off-by: Hou Zhiqiang
Signed-off-by: Jiafei Pan
07 Mar, 2023
1 commit
-
As SGI is used as IPI in Linux, so let's replace SGI with some SPI irqs
which is not used by as hardware, SPI irq can also be triggered by
writing to SGI interrupt by CPU Core.Signed-off-by: Hou Zhiqiang
Signed-off-by: Jiafei Pan
08 Feb, 2023
13 commits
-
Add ICC_CMD_DUMP_TIME option mode for ipi_baremetal_handle
to support dump time interrupt from baremetal core.For this function add two option modes, one is
ICC_CMD_TX_DATA which used for data transfer, the other is
ICC_CMD_DUMP_TIME which used for print interrupt handle
information in receiver core.Signed-off-by: Chunguang Li
-
Signed-off-by: Alexandre Howard
-
The queue 0 is always preemption when preemption is enabled. This patch
modify the stmmac_get_preempt() function to display queue 0 as
preemption to ethtool application.Signed-off-by: Xiaoliang Yang
-
This patch doesn't enable the mac merge layer until the lldp application
verify the remote port supports preemption. The lldp verify feature can
be enabled or disabled by ethtool application.Signed-off-by: Xiaoliang Yang
-
Fix the issue that preemption reset not working.
Fixes: 40ed69f78("net: enetc: add lldp verify support")
Signed-off-by: Xiaoliang Yang -
This patch doesn't enable the mac merge layer until the lldp application
verify the remote port supports preemption. The lldp verify feature can
be enabled or disabled by ethtool application.Signed-off-by: Xiaoliang Yang
-
Based on "99.4.2 Determining that the link partner supports preemption"
of IEEE 802.3-2018, the felix driver need to support lldp verify
feature.Signed-off-by: Xiaoliang Yang
-
Mailbox may receive fake messages on a channel without binding to a
client, this can result in kernel crash.Signed-off-by: Hou Zhiqiang
-
The shared memory probably has random data, so clear the Status
register to avoid fake massages.Signed-off-by: Hou Zhiqiang
-
Signed-off-by: Hou Zhiqiang
-
This feature can be test in the following case:
TX-tool -----> swp0 -----> swp1 -----> RX-toolTest steps:
1.
ip link add dev br0 type bridge
ip link set dev swp0 master br0
ip link set dev swp1 master br0
2.
ip link set br0 type bridge vlan_filtering 1
bridge vlan add dev swp0 vid 222
bridge vlan add dev swp1 vid 222tc qdisc add dev swp1 clsact
tc filter add dev swp1 egress \
protocol 802.1Q flower skip_sw \
vlan_id 222 vlan_prio 2 \
action vlan push id 200 priority 1 protocol 802.1AD \
vlan push id 300 priority 3Result:
TX(tpid:8100 vid:222 pri:2) -> swp0 -> swp1 -> RX(STAG tpid:88A8 vid:200 \
pri:1, CTAG tpid:8100 vid:300 pri:3)Signed-off-by: hongbo.wang
Signed-off-by: Xiaoliang Yang -
The driver should ensure that same priority is not mapped to multiple
rx queues. Currently dwmac4_rx_queue_priority function is adding
priorities for a queue without clearing them from others.From DesignWare Cores Ethernet Quality-of-Service
Databook, section 17.1.29 MAC_RxQ_Ctrl2:
"[...]The software must ensure that the content of this field is
mutually exclusive to the PSRQ fields for other queues, that is,
the same priority is not mapped to multiple Rx queues[...]"After this patch, dwmac4_rx_queue_priority function will:
1. assign desired priorities to a queue, while keeping the other preconfigured priorities.
2. remove those priorities from all other queues
The write sequence of CTRL2 and CTRL3 registers is done in the way to
ensure this order.Also, the PSRQn field contains the mask of priorities and not only one
priority. Rename "prio" argument to "prio_mask".Signed-off-by: Piotr Wejman
Signed-off-by: Marouen Ghodhbane -
Preemption should be disabled by default and activated after enabled or
link partner verification.Signed-off-by: Xiaoliang Yang