Thread (7 messages) flat view 7 messages, 4 authors, 2020-02-24

RE: [EXT] Re: bnx2x: Latest firmware requirement breaks no regression policy

From: Sudarsana Reddy Kalluru <skalluru@marvell.com>
Date: 2020-02-20 09:17:33
Also in: lkml

Hi Paul,
    Bnx2x driver and the storm FW are tightly coupled, and the info is exchanged between them via shmem (i.e., common structures which might change between the releases). Also, FW provides some offset addresses to the driver which could change between the FW releases, following is one such commit,
	https://www.spinics.net/lists/netdev/msg609889.html
Hence it's not very straight forward to provide the backward compatibility i.e., newer (updated) kernel driver with the older FW.
Currently we don’t have plans to implement the new model mentioned below.

Thanks,
Sudarsana
-----Original Message-----
From: Paul Menzel <redacted>
Sent: Wednesday, February 19, 2020 6:14 PM
To: Sudarsana Reddy Kalluru <skalluru@marvell.com>; Ariel Elior
[off-list ref]; GR-everest-linux-l2 <GR-everest-linux-
l2@marvell.com>
Cc: netdev@vger.kernel.org; LKML <redacted>; it+linux-
netdev@molgen.mpg.de; David S. Miller [off-list ref]
Subject: [EXT] Re: bnx2x: Latest firmware requirement breaks no regression
policy

External Email

----------------------------------------------------------------------
Dear Sudarsana,


Thank you for your reply.


On 2020-02-19 09:49, Sudarsana Reddy Kalluru wrote:
quoted
The firmware file referred below (i.e., storm FW) should be present
on the host (i.e., /lib/firmware/bnx2x/ path), not the device. Driver
must require this version of the FW to initialize the device, and
hence provide the network functionality. Also, the driver is not
backward compatible with older FW versions.

So it's not possible to handle the below error scenario in the driver,

	>     bnx2x 0000:41:00.0: Direct firmware load for bnx2x/bnx2x-e1h-
7.13.11.0.fw failed with error -2
quoted
	>     bnx2x: [bnx2x_init_firmware:13557(net02)]Can't load firmware file
bnx2x/bnx2x-e1h-7.13.11.0.fw
quoted
At the most, we can validate the existence of FW file on the host
during the kernel build or installation.
That is what I thought about the current state. But why was this
design decision made? It’s not user-friendly, and as written breaks
the no regression policy. Users can update the Linux kernel without
any regressions, and everything working as before. Dave, what is
your opinion?

Where are the driver requirements/implementation short-comings
documented?

If an older Linux kernel works with a certain firmware version, why
shouldn’t a newer Linux kernel work with that firmware version.
Maybe some features are missing, but at least I should get the same
state as with the older version.

Do you have plans to switch the driver to a model, where the
features/requirements of the firmware are queried by the driver, so
older versions can be supported?
quoted
FW image name from driver sources:
	drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:
	#define FW_FILE_NAME_E1         "bnx2x/bnx2x-e1-" FW_FILE_VERSION
".fw"
quoted
	#define FW_FILE_NAME_E1H        "bnx2x/bnx2x-e1h-"
FW_FILE_VERSION ".fw"
quoted
	#define FW_FILE_NAME_E2         "bnx2x/bnx2x-e2-" FW_FILE_VERSION
".fw"
quoted
FW image path on the host:
	/lib/firmware/bnx2x/bnx2x-e1h-7.13.11.0.fw
Yes, that is what I found in my original research, and that is how
we fixed it, but with the non-working interface it was more work
than necessary.


Kind regards,

Paul
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help