Message ID | 1379094304-22041-7-git-send-email-Larry.Finger@lwfinger.net |
---|---|
State | Not Applicable, archived |
Delegated to: | David Miller |
Headers | show |
Hello. On 09/13/2013 09:45 PM, Larry Finger wrote: > Smatch displays the following: > CHECK drivers/net/wireless/rtlwifi/usb.c > drivers/net/wireless/rtlwifi/usb.c:458 _rtl_usb_rx_process_agg() warn: assigning (-98) to unsigned variable 'stats.noise' > drivers/net/wireless/rtlwifi/usb.c:503 _rtl_usb_rx_process_noagg() warn: assigning (-98) to unsigned variable 'stats.noise' > drivers/net/wireless/rtlwifi/usb.c:596 _rtl_rx_get_padding() info: ignoring unreachable code. > drivers/net/wireless/rtlwifi/usb.c:596 _rtl_rx_get_padding() info: ignoring unreachable code. > The negative number to an unsigned quantity is fixed by adding 256 to -98 > to get the equivalent negative number. > Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> > --- > drivers/net/wireless/rtlwifi/usb.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c > index e56778c..9f3dcb8 100644 > --- a/drivers/net/wireless/rtlwifi/usb.c > +++ b/drivers/net/wireless/rtlwifi/usb.c [...] > @@ -582,12 +582,15 @@ static void _rtl_rx_work(unsigned long param) > static unsigned int _rtl_rx_get_padding(struct ieee80211_hdr *hdr, > unsigned int len) > { > +#if NET_IP_ALIGN != 0 > unsigned int padding = 0; > +#endif > > /* make function no-op when possible */ > - if (NET_IP_ALIGN == 0 || len < sizeof(*hdr)) > + if (NET_IP_ALIGN == 0 || len < sizeof(struct ieee80211_hdr)) Why this collateral and undocumented change? What does it achieve? > return 0; WBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 09/14/2013 02:44 PM, Sergei Shtylyov wrote: > Hello. > > On 09/13/2013 09:45 PM, Larry Finger wrote: > >> Smatch displays the following: >> CHECK drivers/net/wireless/rtlwifi/usb.c >> drivers/net/wireless/rtlwifi/usb.c:458 _rtl_usb_rx_process_agg() warn: >> assigning (-98) to unsigned variable 'stats.noise' >> drivers/net/wireless/rtlwifi/usb.c:503 _rtl_usb_rx_process_noagg() warn: >> assigning (-98) to unsigned variable 'stats.noise' >> drivers/net/wireless/rtlwifi/usb.c:596 _rtl_rx_get_padding() info: ignoring >> unreachable code. >> drivers/net/wireless/rtlwifi/usb.c:596 _rtl_rx_get_padding() info: ignoring >> unreachable code. > >> The negative number to an unsigned quantity is fixed by adding 256 to -98 >> to get the equivalent negative number. > >> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> >> --- >> drivers/net/wireless/rtlwifi/usb.c | 10 +++++++--- >> 1 file changed, 7 insertions(+), 3 deletions(-) > >> diff --git a/drivers/net/wireless/rtlwifi/usb.c >> b/drivers/net/wireless/rtlwifi/usb.c >> index e56778c..9f3dcb8 100644 >> --- a/drivers/net/wireless/rtlwifi/usb.c >> +++ b/drivers/net/wireless/rtlwifi/usb.c > [...] >> @@ -582,12 +582,15 @@ static void _rtl_rx_work(unsigned long param) >> static unsigned int _rtl_rx_get_padding(struct ieee80211_hdr *hdr, >> unsigned int len) >> { >> +#if NET_IP_ALIGN != 0 >> unsigned int padding = 0; >> +#endif >> >> /* make function no-op when possible */ >> - if (NET_IP_ALIGN == 0 || len < sizeof(*hdr)) >> + if (NET_IP_ALIGN == 0 || len < sizeof(struct ieee80211_hdr)) > > Why this collateral and undocumented change? What does it achieve? > >> return 0; It does not change a thing. Further up the code is "struct ieee80211_hdr *hdr". This change was one I tried during the fixes, and I forgot to remove it. Larry -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c index e56778c..9f3dcb8 100644 --- a/drivers/net/wireless/rtlwifi/usb.c +++ b/drivers/net/wireless/rtlwifi/usb.c @@ -455,7 +455,7 @@ static void _rtl_usb_rx_process_agg(struct ieee80211_hw *hw, struct ieee80211_rx_status rx_status = {0}; struct rtl_stats stats = { .signal = 0, - .noise = -98, + .noise = 158, /* -98 dBm */ .rate = 0, }; @@ -498,7 +498,7 @@ static void _rtl_usb_rx_process_noagg(struct ieee80211_hw *hw, struct ieee80211_rx_status rx_status = {0}; struct rtl_stats stats = { .signal = 0, - .noise = -98, + .noise = 158, /* -98 dBm */ .rate = 0, }; @@ -582,12 +582,15 @@ static void _rtl_rx_work(unsigned long param) static unsigned int _rtl_rx_get_padding(struct ieee80211_hdr *hdr, unsigned int len) { +#if NET_IP_ALIGN != 0 unsigned int padding = 0; +#endif /* make function no-op when possible */ - if (NET_IP_ALIGN == 0 || len < sizeof(*hdr)) + if (NET_IP_ALIGN == 0 || len < sizeof(struct ieee80211_hdr)) return 0; +#if NET_IP_ALIGN != 0 /* alignment calculation as in lbtf_rx() / carl9170_rx_copy_data() */ /* TODO: deduplicate common code, define helper function instead? */ @@ -608,6 +611,7 @@ static unsigned int _rtl_rx_get_padding(struct ieee80211_hdr *hdr, padding ^= NET_IP_ALIGN; return padding; +#endif } #define __RADIO_TAP_SIZE_RSV 32
Smatch displays the following: CHECK drivers/net/wireless/rtlwifi/usb.c drivers/net/wireless/rtlwifi/usb.c:458 _rtl_usb_rx_process_agg() warn: assigning (-98) to unsigned variable 'stats.noise' drivers/net/wireless/rtlwifi/usb.c:503 _rtl_usb_rx_process_noagg() warn: assigning (-98) to unsigned variable 'stats.noise' drivers/net/wireless/rtlwifi/usb.c:596 _rtl_rx_get_padding() info: ignoring unreachable code. drivers/net/wireless/rtlwifi/usb.c:596 _rtl_rx_get_padding() info: ignoring unreachable code. The negative number to an unsigned quantity is fixed by adding 256 to -98 to get the equivalent negative number. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> --- drivers/net/wireless/rtlwifi/usb.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)