source: branches/backfire/package/mac80211/patches/550-ath9k_tsf_fix.patch @ 22494

Last change on this file since 22494 was 22494, checked in by nbd, 6 years ago

mac80211: merge changes from latest trunk into backfire

File size: 1.6 KB
  • drivers/net/wireless/ath/ath9k/recv.c

    ath9k_rx_skb_preprocess nulls rxs and the mactime is never set again -
    mactime is always 0. This causes problems in IBSS mode.
    
    ieee80211_rx_bss_info uses mactime to decide if an IBSS merge is needed.
    Without this patch the merge is triggered by each beacon received.
    
    This can be recognized by the "beacon TSF higher than local TSF - IBSS
    merge with BSSID" log message accompanying each beacon.
    
    This problem was not completely fixed in commit
    a6d2055b02dde1067075795274672720baadd3ca and is not a stable kernel fix.
    It is solely intended for wireless-testing.
    
    Signed-off-by: Jan Friedrich <jft@dev2day.de>
    ---
     drivers/net/wireless/ath/ath9k/recv.c |   10 +++++-----
     1 files changed, 5 insertions(+), 5 deletions(-)
    
    a b int ath_rx_tasklet(struct ath_softc *sc, 
    11401140                if (flush) 
    11411141                        goto requeue; 
    11421142 
     1143                retval = ath9k_rx_skb_preprocess(common, hw, hdr, &rs, 
     1144                                                 rxs, &decrypt_error); 
     1145                if (retval) 
     1146                        goto requeue; 
     1147 
    11431148                rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp; 
    11441149                if (rs.rs_tstamp > tsf_lower && 
    11451150                    unlikely(rs.rs_tstamp - tsf_lower > 0x10000000)) 
    int ath_rx_tasklet(struct ath_softc *sc, 
    11491154                    unlikely(tsf_lower - rs.rs_tstamp > 0x10000000)) 
    11501155                        rxs->mactime += 0x100000000ULL; 
    11511156 
    1152                 retval = ath9k_rx_skb_preprocess(common, hw, hdr, &rs, 
    1153                                                  rxs, &decrypt_error); 
    1154                 if (retval) 
    1155                         goto requeue; 
    1156  
    11571157                /* Ensure we always have an skb to requeue once we are done 
    11581158                 * processing the current buffer's skb */ 
    11591159                requeue_skb = ath_rxbuf_alloc(common, common->rx_bufsize, GFP_ATOMIC); 
Note: See TracBrowser for help on using the repository browser.