Both of these functions depend on the function rf_set_sens, which is declared but never defined. Hence calling this function will cause an oops. Because there is no definition of the function, priv->rf_set_sens will always be NULL. As a result rtl8192_wx_set_sens and rtl8192_wx_get_sens will always return -1. Hence, * Removed function definition rf_set_sens * Removed usage of variable priv->rf_set_sens * Removed functions rtl8192_wx_get_sens and rtl8192_wx_set_sens * Cleaned up the variables sens and max_sens used in these functions Suggested-by: Philipp Hortmann <philipp.g.hortmann@xxxxxxxxx> Signed-off-by: Yogesh Hegde <yogi.kernel@xxxxxxxxx> --- drivers/staging/rtl8192u/r8192U.h | 3 --- drivers/staging/rtl8192u/r8192U_wx.c | 40 ++-------------------------- 2 files changed, 2 insertions(+), 41 deletions(-) diff --git a/drivers/staging/rtl8192u/r8192U.h b/drivers/staging/rtl8192u/r8192U.h index ff0ada00bf41..7da15b03519c 100644 --- a/drivers/staging/rtl8192u/r8192U.h +++ b/drivers/staging/rtl8192u/r8192U.h @@ -842,8 +842,6 @@ typedef struct r8192_priv { u16 irq_mask; short chan; - short sens; - short max_sens; short up; /* If 1, allow bad crc frame, reception in monitor mode */ @@ -854,7 +852,6 @@ typedef struct r8192_priv { enum rt_rf_type rf_type; /* 0: 1T2R, 1: 2T4R */ RT_RF_TYPE_819xU rf_chip; - short (*rf_set_sens)(struct net_device *dev, short sens); u8 (*rf_set_chan)(struct net_device *dev, u8 ch); void (*rf_close)(struct net_device *dev); void (*rf_init)(struct net_device *dev); diff --git a/drivers/staging/rtl8192u/r8192U_wx.c b/drivers/staging/rtl8192u/r8192U_wx.c index 203ea3bfc843..2852f79204c0 100644 --- a/drivers/staging/rtl8192u/r8192U_wx.c +++ b/drivers/staging/rtl8192u/r8192U_wx.c @@ -250,8 +250,6 @@ static int rtl8180_wx_get_range(struct net_device *dev, /* range->old_num_channels; */ /* range->old_num_frequency; */ /* range->old_freq[6]; */ /* Filler to keep "version" at the same offset */ - if (priv->rf_set_sens) - range->sensitivity = priv->max_sens; /* signal level threshold range */ range->max_qual.qual = 100; /* TODO: Find real max RSSI and stick here */ @@ -662,40 +660,6 @@ static int r8192_wx_get_retry(struct net_device *dev, return 0; } -static int r8192_wx_get_sens(struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) -{ - struct r8192_priv *priv = ieee80211_priv(dev); - - if (!priv->rf_set_sens) - return -1; /* we have not this support for this radio */ - wrqu->sens.value = priv->sens; - return 0; -} - -static int r8192_wx_set_sens(struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) -{ - struct r8192_priv *priv = ieee80211_priv(dev); - short err = 0; - - mutex_lock(&priv->wx_mutex); - if (!priv->rf_set_sens) { - err = -1; /* we have not this support for this radio */ - goto exit; - } - if (priv->rf_set_sens(dev, wrqu->sens.value) == 0) - priv->sens = wrqu->sens.value; - else - err = -EINVAL; - -exit: - mutex_unlock(&priv->wx_mutex); - - return err; -} /* hw security need to reorganized. */ static int r8192_wx_set_enc_ext(struct net_device *dev, @@ -825,8 +789,8 @@ static iw_handler r8192_wx_handlers[] = { r8192_wx_get_freq, /* SIOCGIWFREQ */ r8192_wx_set_mode, /* SIOCSIWMODE */ r8192_wx_get_mode, /* SIOCGIWMODE */ - r8192_wx_set_sens, /* SIOCSIWSENS */ - r8192_wx_get_sens, /* SIOCGIWSENS */ + NULL, /* SIOCSIWSENS */ + NULL, /* SIOCGIWSENS */ NULL, /* SIOCSIWRANGE */ rtl8180_wx_get_range, /* SIOCGIWRANGE */ NULL, /* SIOCSIWPRIV */ -- 2.34.1