return usbtmc_ioctl_abort_bulk_in_tag(data, data->bTag_last_read);
 }
 
-static int usbtmc_ioctl_abort_bulk_out(struct usbtmc_device_data *data)
+static int usbtmc_ioctl_abort_bulk_out_tag(struct usbtmc_device_data *data,
+                                          u8 tag)
 {
        struct device *dev;
        u8 *buffer;
                             usb_rcvctrlpipe(data->usb_dev, 0),
                             USBTMC_REQUEST_INITIATE_ABORT_BULK_OUT,
                             USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_ENDPOINT,
-                            data->bTag_last_write, data->bulk_out,
-                            buffer, 2, USBTMC_TIMEOUT);
+                            tag, data->bulk_out,
+                            buffer, 2, USB_CTRL_GET_TIMEOUT);
 
        if (rv < 0) {
                dev_err(dev, "usb_control_msg returned %d\n", rv);
        n = 0;
 
 usbtmc_abort_bulk_out_check_status:
+       /* do not stress device with subsequent requests */
+       msleep(50);
        rv = usb_control_msg(data->usb_dev,
                             usb_rcvctrlpipe(data->usb_dev, 0),
                             USBTMC_REQUEST_CHECK_ABORT_BULK_OUT_STATUS,
                             USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_ENDPOINT,
                             0, data->bulk_out, buffer, 0x08,
-                            USBTMC_TIMEOUT);
+                            USB_CTRL_GET_TIMEOUT);
        n++;
        if (rv < 0) {
                dev_err(dev, "usb_control_msg returned %d\n", rv);
        return rv;
 }
 
+static int usbtmc_ioctl_abort_bulk_out(struct usbtmc_device_data *data)
+{
+       return usbtmc_ioctl_abort_bulk_out_tag(data, data->bTag_last_write);
+}
+
 static int usbtmc488_ioctl_read_stb(struct usbtmc_file_data *file_data,
                                void __user *arg)
 {