Search Linux Wireless

Re: Commit 741b4fbc44 (mac80211: fix TX sequence numbers) breaks rtl8187

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Larry, please tidy the tx seq no patch up and submit to wireless-testing..
I think it is more appropriate to copy the actual comments in rt2000
from Johannes?
instead of or in addtion to: "XXX: This sequence is an attempt to
match what happens in r2x00"

... and feel free to add ack-by/tested-by me.

I am wondering about Herton's problem with power saving (which I had
reproduced).
I think one way to move forward is to enable MAC80211_PS_DEBUG(?) and
see what happens
to the tx queues, now that we have a reliable way of reproducing the problem.

I also wonder how Herton encountered the problem :-). Older
wireless-testing simply
say "unimplemented" or something if one tries to set power-saving.
Maybe Herton has
a few devices which he routinely tries out every part of iwconfig?

Hin-Tak


On Wed, Jul 23, 2008 at 4:32 PM, Larry Finger <Larry.Finger@xxxxxxxxxxxx> wrote:
<snipped>
>
> I tried something like that, but it didn't work. Maybe you can see what is
> wrong here:
>
>
> Index: wireless-testing/drivers/net/wireless/rtl8187.h
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/rtl8187.h
> +++ wireless-testing/drivers/net/wireless/rtl8187.h
> @@ -100,6 +100,7 @@ struct rtl8187_priv {
>        struct usb_device *udev;
>        u32 rx_conf;
>        u16 txpwr_base;
> +       u16 seqno;
>        u8 asic_rev;
>        u8 is_rtl8187b;
>        enum {
> Index: wireless-testing/drivers/net/wireless/rtl8187_dev.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/rtl8187_dev.c
> +++ wireless-testing/drivers/net/wireless/rtl8187_dev.c
> @@ -169,6 +169,7 @@ static int rtl8187_tx(struct ieee80211_h
>  {
>        struct rtl8187_priv *priv = dev->priv;
>        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
> +       struct ieee80211_hdr *ieee80211hdr = (struct ieee80211_hdr
> *)skb->data;
>        unsigned int ep;
>        void *buf;
>        struct urb *urb;
> @@ -198,6 +199,14 @@ static int rtl8187_tx(struct ieee80211_h
>                flags |= ieee80211_get_rts_cts_rate(dev, info)->hw_value <<
> 19;
>        }
>
> +       /* XXX: This sequence is an attempt to match what happens in r2x00.
> */
> +       if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ) {
> +               if (info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT)
> +                       priv->seqno += 0x10;
> +               ieee80211hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG);
> +               ieee80211hdr->seq_ctrl |= cpu_to_le16(priv->seqno);
> +       }
> +
>        if (!priv->is_rtl8187b) {
>                struct rtl8187_tx_hdr *hdr =
>                        (struct rtl8187_tx_hdr *)skb_push(skb, sizeof(*hdr));
>
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux