u32 uninitialized_var(macstat);
        u16 chanid;
        u16 phytype;
-       int padding;
+       int padding, rate_idx;
 
        memset(&status, 0, sizeof(status));
 
        }
 
        if (phystat0 & B43_RX_PHYST0_OFDM)
-               status.rate_idx = b43_plcp_get_bitrate_idx_ofdm(plcp,
+               rate_idx = b43_plcp_get_bitrate_idx_ofdm(plcp,
                                                phytype == B43_PHYTYPE_A);
        else
-               status.rate_idx = b43_plcp_get_bitrate_idx_cck(plcp);
-       if (unlikely(status.rate_idx == -1)) {
+               rate_idx = b43_plcp_get_bitrate_idx_cck(plcp);
+       if (unlikely(rate_idx == -1)) {
                /* PLCP seems to be corrupted.
                 * Drop the frame, if we are not interested in corrupted frames. */
                if (!(dev->wl->filter_flags & FIF_PLCPFAIL))
                        goto drop;
        }
+       status.rate_idx = rate_idx;
        status.antenna = !!(phystat0 & B43_RX_PHYST0_ANT);
 
        /*