Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Jul 2014 11:36:37 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Hans Petter Selasky <hselasky@freebsd.org>
Cc:        "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>
Subject:   Re: svn commit: r269127 - head/sys/dev/usb/wlan
Message-ID:  <CAJ-Vmo=gy99iyOwoeCBKKMTAba1CycJgQBO2ti2=eFR_9ht-UQ@mail.gmail.com>
In-Reply-To: <201407261606.s6QG61le092895@svn.freebsd.org>
References:  <201407261606.s6QG61le092895@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

We should likely review how the PLCP bits are being used and why it's
getting a rate of 0 in the first place.

So, why's it getting a rate of 0 passed into the transmit path?


-a


On 26 July 2014 09:06, Hans Petter Selasky <hselasky@freebsd.org> wrote:
> Author: hselasky
> Date: Sat Jul 26 16:06:01 2014
> New Revision: 269127
> URL: http://svnweb.freebsd.org/changeset/base/269127
>
> Log:
>   Fix for division by zero.
>
>   MFC after:    3 days
>
> Modified:
>   head/sys/dev/usb/wlan/if_rum.c
>   head/sys/dev/usb/wlan/if_ural.c
>   head/sys/dev/usb/wlan/if_zyd.c
>   head/sys/dev/usb/wlan/if_zydreg.h
>
> Modified: head/sys/dev/usb/wlan/if_rum.c
> ==============================================================================
> --- head/sys/dev/usb/wlan/if_rum.c      Sat Jul 26 15:46:41 2014        (r269126)
> +++ head/sys/dev/usb/wlan/if_rum.c      Sat Jul 26 16:06:01 2014        (r269127)
> @@ -1035,6 +1035,8 @@ rum_setup_tx_desc(struct rum_softc *sc,
>                 desc->plcp_length_hi = plcp_length >> 6;
>                 desc->plcp_length_lo = plcp_length & 0x3f;
>         } else {
> +               if (rate == 0)
> +                       rate = 2;       /* avoid division by zero */
>                 plcp_length = (16 * len + rate - 1) / rate;
>                 if (rate == 22) {
>                         remainder = (16 * len) % 22;
>
> Modified: head/sys/dev/usb/wlan/if_ural.c
> ==============================================================================
> --- head/sys/dev/usb/wlan/if_ural.c     Sat Jul 26 15:46:41 2014        (r269126)
> +++ head/sys/dev/usb/wlan/if_ural.c     Sat Jul 26 16:06:01 2014        (r269127)
> @@ -1038,6 +1038,8 @@ ural_setup_tx_desc(struct ural_softc *sc
>                 desc->plcp_length_hi = plcp_length >> 6;
>                 desc->plcp_length_lo = plcp_length & 0x3f;
>         } else {
> +               if (rate == 0)
> +                       rate = 2;       /* avoid division by zero */
>                 plcp_length = (16 * len + rate - 1) / rate;
>                 if (rate == 22) {
>                         remainder = (16 * len) % 22;
>
> Modified: head/sys/dev/usb/wlan/if_zyd.c
> ==============================================================================
> --- head/sys/dev/usb/wlan/if_zyd.c      Sat Jul 26 15:46:41 2014        (r269126)
> +++ head/sys/dev/usb/wlan/if_zyd.c      Sat Jul 26 16:06:01 2014        (r269127)
> @@ -2480,7 +2480,7 @@ zyd_tx_start(struct zyd_softc *sc, struc
>         const struct ieee80211_txparam *tp;
>         struct ieee80211_key *k;
>         int rate, totlen;
> -       static uint8_t ratediv[] = ZYD_TX_RATEDIV;
> +       static const uint8_t ratediv[] = ZYD_TX_RATEDIV;
>         uint8_t phy;
>         uint16_t pktlen;
>         uint32_t bits;
>
> Modified: head/sys/dev/usb/wlan/if_zydreg.h
> ==============================================================================
> --- head/sys/dev/usb/wlan/if_zydreg.h   Sat Jul 26 15:46:41 2014        (r269126)
> +++ head/sys/dev/usb/wlan/if_zydreg.h   Sat Jul 26 16:06:01 2014        (r269127)
> @@ -970,7 +970,7 @@
>
>  #define        ZYD_TX_RATEDIV                                                  \
>  {                                                                      \
> -       0x1, 0x2, 0xb, 0xb, 0x0, 0x0, 0x0, 0x0, 0x30, 0x18, 0xc, 0x6,   \
> +       0x1, 0x2, 0xb, 0xb, 0x1, 0x1, 0x1, 0x1, 0x30, 0x18, 0xc, 0x6,   \
>         0x36, 0x24, 0x12, 0x9                                           \
>  }
>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmo=gy99iyOwoeCBKKMTAba1CycJgQBO2ti2=eFR_9ht-UQ>