On Thu, Aug 30, 2018 at 11:18:36AM +0200, Oliver Neukum wrote: > This reverts commit a81cf9799ad7299b03a4dff020d9685f9ac5f3e0. > > The patch causes a regression, which I cannot find the reason for. > So let's revert for now, as a revert hurts only performance. > > I was trying to resolve the problem with Oliver but we don't get any > conclusion > for 5 months, so I am now sending this to mail list and cdc_acm authors. > > I am using simple request-response protocol to obtain the boiller > parameters > in constant intervals. > > A simple one transaction is: > 1. opening the /dev/ttyACM0 > 2. sending the following 10-bytes request to the device: > unsigned char req[] = {0x02, 0xfe, 0x01, 0x05, 0x08, 0x02, 0x01, > 0x69, 0xab, 0x03}; > 3. reading response (frame of 74 bytes length). > 4. closing the descriptor > I am doing this transaction with 5 seconds intervals. > > Before the bad commit everything was working correctly: I've got a > requests and > a responses in a timely manner. > > After the bad commit more time I am using the kernel module, more > problems I have. > The graph [2] is showing the problem. > > As you can see after module load all seems fine but after about 30 > minutes I've got > a plenty of EAGAINs when doing read()'s and trying to read back the > data. > > When I rmmod and insmod the cdc_acm module again, then the situation is > starting > over again: running ok shortly after load, and more time it is running, > more EAGAINs > I have when calling read(). > > As a bonus I can see the problem on the device itself: > The device is configured as you can see here on this screen [3]. > It has two transmision LEDs: TX and RX. Blink duration is set for 100ms. > This is a recording before the bad commit when all is working fine: [4] > And this is with the bad commit: [5] > As you can see the TX led is blinking wrongly long (indicating > transmission?) > and I have problems doing read() calls (EAGAIN). > > Reported-by: manio <manio@xxxxxxxxxx> > Signed-off-by: Oliver Neukum <oneukum@xxxxxxxx> > Fixes: a81cf9799ad7 ("cdc-acm: implement put_char() and flush_chars()") > Cc: stable <stable@xxxxxxxxxxxxxxx> > --- > drivers/usb/class/cdc-acm.c | 92 --------------------------------------------- > drivers/usb/class/cdc-acm.h | 1 - > 2 files changed, 93 deletions(-) This does not apply to Linus's tree right now, can you refresh it and resend? thanks, greg k-h