]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'mlxsw-Add-extended-ACK-for-EMADs'
authorDavid S. Miller <davem@davemloft.net>
Tue, 12 Nov 2019 18:54:02 +0000 (10:54 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 12 Nov 2019 18:54:02 +0000 (10:54 -0800)
commit1cf93347a6f6c12937fef301b8010ed3e2ee575c
treed95184c450b06a3ba16438472af7375cb45f4327
parente975a8fb7a761c668e9dca5af67256382040c7f9
parentd22460b593f8d6d28bb382837fb5dfe9e219f202
Merge branch 'mlxsw-Add-extended-ACK-for-EMADs'

Ido Schimmel says:

====================
mlxsw: Add extended ACK for EMADs

Shalom says:

Ethernet Management Datagrams (EMADs) are Ethernet packets sent between
the driver and device's firmware. They are used to pass various
configurations to the device, but also to get events (e.g., port up)
from it. After the Ethernet header, these packets are built in a TLV
format.

Up until now, whenever the driver issued an erroneous register access it
only got an error code indicating a bad parameter was used. This patch
set adds a new TLV (string TLV) that can be used by the firmware to
encode a 128 character string describing the error. The new TLV is
allocated by the driver and set to zeros. In case of error, the driver
will check the length of the string in the response and report it using
devlink hwerr tracepoint.

Example:

$ perf record -a -q -e devlink:devlink_hwerr &

$ pkill -2 perf

$ perf script -F trace:event,trace | grep hwerr
devlink:devlink_hwerr: bus_name=pci dev_name=0000:03:00.0 driver_name=mlxsw_spectrum err=7 (tid=9913892d00001593,reg_id=8018(rauhtd)) bad parameter (inside er_rauhtd_write_query(), num_rec=32 is over the maximum  number of records supported)

Patch #1 parses the offsets of the different TLVs in incoming EMADs and
stores them in the skb's control block. This makes it easier to later
add new TLVs.

Patches #2-#3 remove deprecated TLVs and add string TLV definition.

Patches #4-#7 gradually add support for the new string TLV.

v2:
* Use existing devlink hwerr tracepoint to report the error string,
  instead of printing it to kernel log
====================

Signed-off-by: David S. Miller <davem@davemloft.net>