Skip to contentSkip to conversation

gpib: Suppress setting END on error from NI_USB dongle

PATCH New Dave Penkler 1 participant 1 message Apr 22

Subsystems (2)
lore
Share & tools
lore

Dave Penkler

author maintainer
#0 lore raw

PATCH 1/1 gpib: Suppress setting END on error from NI_USB dongle

The NI USB adapter sets the END bit in the status word when an error occurs such as a read being interrupted by the setting of ATN. This happens for example when a device clear is received from the controller in charge during a read.

The common driver changes the error return to 0 whenever the END bit is set in order to avoid errors such as timeout or interrupt to be reported after the full message has actually been read. The behaviour of the NI USB adapter in setting the END bit on errors was causing actual errors (-EINTR, -ETIMEDOUT) not to be reported.

We avoid setting the END bit in the ni_usb_gpib driver when an error is reported in error_code of the status from the adaptor.

---
 drivers/gpib/ni_usb/ni_usb_gpib.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpib/ni_usb/ni_usb_gpib.c +1 -1
index a24cd6521362..b1f63c81c259 100644
@@ -720,7 +720,7 @@ static int ni_usb_read(struct gpib_board *board, u8 *buffer, size_t length,
 		break;
 	}
 	ni_usb_soft_update_status(board, status.ibsta, 0);
-	if (status.ibsta & END)
+	if ((status.ibsta & END) && (status.error_code == NIUSB_NO_ERROR))
 		*end = 1;
 	else
 		*end = 0;
Signature · 1 line
2.53.0