发现某些U盘不是所有的scsi指令集都支持,对于不支持的指令,U盘会产生一个端点halt(stall),usb host会clean halt标志。
譬如如下的ReadFormatCapacity指令
gadget要主动产生stall的话可调用gadget.h里面的接口:
static inline int gadget_is_stall_supported(struct usb_gadget *g)
{
return !g->quirk_stall_not_supp;
}
static inline int usb_ep_set_halt(struct usb_ep *ep)
{return ep->ops->set_halt(ep, 1);
}
static inline int usb_ep_clear_halt(struct usb_ep *ep)
{return ep->ops->set_halt(ep, 0);
}
参考https://bbs.csdn.net/topics/330091625
以及《USB Mass Storage Class bulk_10.pdf》