code: func (e *endpoint) updateSndBufferUsage(v int) {
  	e.sndBufMu.Lock()
  	notify := e.sndBufUsed >= e.sndBufSize>>1
  	e.sndBufUsed -= v
  	// We only notify when there is half the sndBufSize available after
  	// a full buffer event occurs. This ensures that we don't wake up
  	// writers to queue just 1-2 segments and go back to sleep.
  	notify = notify && e.sndBufUsed < e.sndBufSize>>1
  	e.sndBufMu.Unlock()
  
  	if notify {
  		e.waiterQueue.Notify(waiter.EventOut)
  	}
  }
docs: // updateSndBufferUsage is called by the protocol goroutine when room opens up
  // in the send buffer. The number of newly available bytes is v.