• Daniel Halperin's avatar
    iwlwifi: cleanup and bugfix tx aggregation code · d0eb6334
    Daniel Halperin authored
    Since the driver split, there's no need for no_agg_framecnt_info since
    all devices have this set to false. Secondly, the compressed block ack
    handling code was broken. Fix this.
    
    (1) A shift less than zero simply implies that the buffer wrapped, this
    is expected. Remove the incorrect comment.
    
    (2) The (agg->frame_count > (64-sh)) condition can happen if the last
    frame is dropped. E.g., if I send 7 frames and the 6th is received but
    the 7th is lost, the other side may only shift the window 6, not 7
    frames since the last bit is a 0. This is perfectly fine behavior and
    doesn't invalidate the feedback.
    
    (3) Store the feedback from a Compressed BA in the first newly received
    frame, rather than the start of the window. This way it will get
    processed by the rate selection code. Feedback stored in a non-received
    frame is likely to get overwritten by the retransmission.
        This is based on the approach taken by minstrel_ht.
    Signed-off-by: default avatarDaniel Halperin <dhalperi@cs.washington.edu>
    Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
    d0eb6334
iwl-agn-tx.c 43.1 KB