diff options
author | Jakub Kicinski <kuba@kernel.org> | 2023-10-16 19:16:40 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2023-10-18 02:50:55 +0200 |
commit | 73b24e7ce8f1f47e2b73c9b6724188898f4ca6fd (patch) | |
tree | 0bf185ef67dd5d38ae4112805065a70dad9474cd /Documentation/networking/sfp-phylink.rst | |
parent | Merge branch 'bridge-add-a-limit-on-learned-fdb-entries' (diff) | |
download | linux-73b24e7ce8f1f47e2b73c9b6724188898f4ca6fd.tar.xz linux-73b24e7ce8f1f47e2b73c9b6724188898f4ca6fd.zip |
eth: bnxt: fix backward compatibility with older devices
Recent FW interface update bumped the size of struct hwrm_func_cfg_input
above 128B which is the max some devices support.
Probe on Stratus (BCM957452) with FW 20.8.3.11 fails with:
bnxt_en ...: Unable to reserve tx rings
bnxt_en ...: 2nd rings reservation failed.
bnxt_en ...: Not enough rings available.
Once probe is fixed other errors pop up:
bnxt_en ...: Failed to set async event completion ring.
This is because __hwrm_send() rejects requests larger than
bp->hwrm_max_ext_req_len with -E2BIG. Since the driver doesn't
actually access any of the new fields, yet, trim the length.
It should be safe.
Similar workaround exists for backing_store_cfg_input.
Although that one mins() to a constant of 256, not 128
we'll effectively use here. Michael explains: "the backing
store cfg command is supported by relatively newer firmware
that will accept 256 bytes at least."
To make debugging easier in the future add a warning
for oversized requests.
Fixes: 754fbf604ff6 ("bnxt_en: Update firmware interface to 1.10.2.171")
Reviewed-by: Michael Chan <michael.chan@broadcom.com>
Link: https://lore.kernel.org/r/20231016171640.1481493-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'Documentation/networking/sfp-phylink.rst')
0 files changed, 0 insertions, 0 deletions