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);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to