I've been looking at this problem on the Beaglebone board as we spotted exactly the same issue under faily low transients ( a fan switching ). It is a weakness in the BB design which we are trying to find a work around for. One thing that we're struggling to understand is the fall time of the transient injected into the D- line. We believe that the mechanism is a SE1 state being detected which the BB then handles by restarting the link.
When we look at the D- line transient event using a HS scope with suitable transient precautions for a true measurement we see the decay time looking exponential (repeated 50% decay time is constant).If we assume the drivers are disabled at this point or just after then it should be a simple RC decay and we can calculate the capacitance (or RC) on the line. When we do this and add capacitance then the decay time changes in a way that suggests the pull down is 150k or more. But if we add parallel resistance it suggests that the capacitance is actually several hundred pF. We added 20pF to evaluate the resistance so the two substitution tests suggest to me that there is another driver on the bus. We only have a cable with a 1k5 pullup on the D+ to fool BB into trying to start a link. Can anyone shed any light on this? Our original thought was that the static protection diodes on the bus were rectifying the transients and causing the problem, so we need to understand how the energy is removed to try to best resolve this design problem.