lkml.org 
[lkml]   [2008]   [Jul]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [PATCH v2] rc80211_pid: Fix fast_start parameter handling
    From
    Date
    This removes the fast_start parameter from the rc_pid parameters information
    and instead uses the parameter macro when initializing the rc_pid state. Since
    the parameter is only used on initialization, there is no point of making
    exporting it via debugfs. This also fixes uninitialized memory references to
    the fast_start and norm_offset parameters detected by the kmemcheck utility.
    Thanks to Vegard Nossum for reporting the bug.

    Signed-off-by: Mattias Nissler <mattias.nissler@gmx.de>
    ---

    Updated patch description. Any more comments? Stefano? John?

    Mattias


    net/mac80211/rc80211_pid.h | 5 -----
    net/mac80211/rc80211_pid_algo.c | 31 +++++++++++++------------------
    2 files changed, 13 insertions(+), 23 deletions(-)

    diff --git a/net/mac80211/rc80211_pid.h b/net/mac80211/rc80211_pid.h
    index 04afc13..4ea7b97 100644
    --- a/net/mac80211/rc80211_pid.h
    +++ b/net/mac80211/rc80211_pid.h
    @@ -141,7 +141,6 @@ struct rc_pid_events_file_info {
    * rate behaviour values (lower means we should trust more what we learnt
    * about behaviour of rates, higher means we should trust more the natural
    * ordering of rates)
    - * @fast_start: if Y, push high rates right after initialization
    */
    struct rc_pid_debugfs_entries {
    struct dentry *dir;
    @@ -154,7 +153,6 @@ struct rc_pid_debugfs_entries {
    struct dentry *sharpen_factor;
    struct dentry *sharpen_duration;
    struct dentry *norm_offset;
    - struct dentry *fast_start;
    };

    void rate_control_pid_event_tx_status(struct rc_pid_event_buffer *buf,
    @@ -267,9 +265,6 @@ struct rc_pid_info {
    /* Normalization offset. */
    unsigned int norm_offset;

    - /* Fast starst parameter. */
    - unsigned int fast_start;
    -
    /* Rates information. */
    struct rc_pid_rateinfo *rinfo;

    diff --git a/net/mac80211/rc80211_pid_algo.c b/net/mac80211/rc80211_pid_algo.c
    index a849b74..bcd27c1 100644
    --- a/net/mac80211/rc80211_pid_algo.c
    +++ b/net/mac80211/rc80211_pid_algo.c
    @@ -398,13 +398,25 @@ static void *rate_control_pid_alloc(struct ieee80211_local *local)
    return NULL;
    }

    + pinfo->target = RC_PID_TARGET_PF;
    + pinfo->sampling_period = RC_PID_INTERVAL;
    + pinfo->coeff_p = RC_PID_COEFF_P;
    + pinfo->coeff_i = RC_PID_COEFF_I;
    + pinfo->coeff_d = RC_PID_COEFF_D;
    + pinfo->smoothing_shift = RC_PID_SMOOTHING_SHIFT;
    + pinfo->sharpen_factor = RC_PID_SHARPENING_FACTOR;
    + pinfo->sharpen_duration = RC_PID_SHARPENING_DURATION;
    + pinfo->norm_offset = RC_PID_NORM_OFFSET;
    + pinfo->rinfo = rinfo;
    + pinfo->oldrate = 0;
    +
    /* Sort the rates. This is optimized for the most common case (i.e.
    * almost-sorted CCK+OFDM rates). Kind of bubble-sort with reversed
    * mapping too. */
    for (i = 0; i < sband->n_bitrates; i++) {
    rinfo[i].index = i;
    rinfo[i].rev_index = i;
    - if (pinfo->fast_start)
    + if (RC_PID_FAST_START)
    rinfo[i].diff = 0;
    else
    rinfo[i].diff = i * pinfo->norm_offset;
    @@ -425,19 +437,6 @@ static void *rate_control_pid_alloc(struct ieee80211_local *local)
    break;
    }

    - pinfo->target = RC_PID_TARGET_PF;
    - pinfo->sampling_period = RC_PID_INTERVAL;
    - pinfo->coeff_p = RC_PID_COEFF_P;
    - pinfo->coeff_i = RC_PID_COEFF_I;
    - pinfo->coeff_d = RC_PID_COEFF_D;
    - pinfo->smoothing_shift = RC_PID_SMOOTHING_SHIFT;
    - pinfo->sharpen_factor = RC_PID_SHARPENING_FACTOR;
    - pinfo->sharpen_duration = RC_PID_SHARPENING_DURATION;
    - pinfo->norm_offset = RC_PID_NORM_OFFSET;
    - pinfo->fast_start = RC_PID_FAST_START;
    - pinfo->rinfo = rinfo;
    - pinfo->oldrate = 0;
    -
    #ifdef CONFIG_MAC80211_DEBUGFS
    de = &pinfo->dentries;
    de->dir = debugfs_create_dir("rc80211_pid",
    @@ -465,9 +464,6 @@ static void *rate_control_pid_alloc(struct ieee80211_local *local)
    de->norm_offset = debugfs_create_u32("norm_offset",
    S_IRUSR | S_IWUSR, de->dir,
    &pinfo->norm_offset);
    - de->fast_start = debugfs_create_bool("fast_start",
    - S_IRUSR | S_IWUSR, de->dir,
    - &pinfo->fast_start);
    #endif

    return pinfo;
    @@ -479,7 +475,6 @@ static void rate_control_pid_free(void *priv)
    #ifdef CONFIG_MAC80211_DEBUGFS
    struct rc_pid_debugfs_entries *de = &pinfo->dentries;

    - debugfs_remove(de->fast_start);
    debugfs_remove(de->norm_offset);
    debugfs_remove(de->sharpen_duration);
    debugfs_remove(de->sharpen_factor);
    --
    1.5.6.1


    \
     
     \ /
      Last update: 2008-07-07 23:11    [W:0.033 / U:2.164 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site