On 2/8/2017 7:59 AM, Sowmini Varadhan wrote:
On (02/07/17 14:12), Shannon Nelson wrote:+ + /* we don't expect any other bits */ + BUG_ON(port->rx_event & ~(LDC_EVENT_DATA_READY | + LDC_EVENT_RESET | + LDC_EVENT_UP)); + + /* RESET takes precedent over any other event */ + if (port->rx_event & LDC_EVENT_RESET) {:port->rx_event = 0; return 0; } + if (port->rx_event & LDC_EVENT_UP) { + vio_link_state_change(vio, LDC_EVENT_UP); + port->rx_event = 0; + return 0; + }err = 0; tx_wakeup = 0;IIRC there were timing-related situations where you can get woken up with both UP and DATA_READY, and if my reading of your patch is correct, we would ignore the DATA_READY, and return, right? --Sowmini
The existing code does this as well - if it first finds a RESET, it handles it then hits the return 0. Next if it finds the UP, it does the goto back to the ldc_ctrl: to process, and hits the same return 0. Only if neither of these bits have been seen does the code move on to process the DATA_READY event.
If we're seeing cases of both UP and DATA_READY, then yes we'll wnat to look at changing this logic. I think that should be a separate patch.
sln
