• Daniel Halperin's avatar
    mac80211: fix aggregation frame release during timeout · 499fe9a4
    Daniel Halperin authored
    Suppose the aggregation reorder buffer looks like this:
    
    x-T-R1-y-R2,
    
    where x and y are frames that have not been received, T is a received
    frame that has timed out, and R1,R2 are received frames that have not
    yet timed out. The proper behavior in this scenario is to move the
    window past x (skipping it), release T and R1, and leave the window at y
    until y is received or R2 times out.
    
    As written, this code will instead leave the window at R1, because it
    has not yet timed out. Fix this by exiting the reorder loop only when
    the frame that has not timed out AND there are skipped frames earlier in
    the current valid window.
    Signed-off-by: default avatarDaniel Halperin <dhalperi@cs.washington.edu>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    499fe9a4
rx.c 81.3 KB