Date: Fri, 23 Nov 2018 15:59:49 +0000 (UTC) From: Andrew Rybchenko <arybchik@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r340837 - head/sys/dev/sfxge/common Message-ID: <201811231559.wANFxn66010141@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: arybchik Date: Fri Nov 23 15:59:49 2018 New Revision: 340837 URL: https://svnweb.freebsd.org/changeset/base/340837 Log: sfxge(4): ignore error in completion event on MCDIv2 HW With MCDIv2, the reponse length can be to big to fit into the CMDDONE_DATALEN field in the MCDI completion event. But rather that the length being truncated, it can overflow into the CMDDONE_ERRNO field (this is a longstanding firmware bug). Hence the CMDDONE_ERRNO field may not be valid. It isn't necessary to use the value in the CMDDONE_ERRNO field though, so it can be ignored. The actual error code is already read from the response header on MCDIv2 capable hardware and stored in emr_rc, so that can be used instead. Submitted by: Mark Spender <mspender at solarflare.com> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18104 Modified: head/sys/dev/sfxge/common/efx_mcdi.c Modified: head/sys/dev/sfxge/common/efx_mcdi.c ============================================================================== --- head/sys/dev/sfxge/common/efx_mcdi.c Fri Nov 23 15:59:37 2018 (r340836) +++ head/sys/dev/sfxge/common/efx_mcdi.c Fri Nov 23 15:59:49 2018 (r340837) @@ -798,9 +798,8 @@ efx_mcdi_ev_cpl( emrp->emr_rc = 0; } } - if (errcode == 0) { + if (emrp->emr_rc == 0) efx_mcdi_finish_response(enp, emrp); - } emtp->emt_ev_cpl(emtp->emt_context); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201811231559.wANFxn66010141>