• Navdeep Parhar's avatar
    Merge r254336 from user/np/cxl_tuning. · 7127e6ac
    Navdeep Parhar authored
    Add a last-modified timestamp to each LRO entry and provide an interface
    to flush all inactive entries.  Drivers decide when to flush and what
    the inactivity threshold should be.
    Network drivers that process an rx queue to completion can enter a
    livelock type situation when the rate at which packets are received
    reaches equilibrium with the rate at which the rx thread is processing
    them.  When this happens the final LRO flush (normally when the rx
    routine is done) does not occur.  Pure ACKs and segments with total
    payload < 64K can get stuck in an LRO entry.  Symptoms are that TCP
    tx-mostly connections' performance falls off a cliff during heavy,
    unrelated rx on the interface.
    Flushing only inactive LRO entries works better than any of these
    alternates that I tried:
    - don't LRO pure ACKs
    - flush _all_ LRO entries periodically (every 'x' microseconds or every
      'y' descriptors)
    - stop rx processing in the driver periodically and schedule remaining
      work for later.
    Reviewed by:	andre