Larry, Thanks for your work. It seems the driver works with your dongle & platform. In your patch, the code changes are just refactor besides efuse reading part. I tried your patch, no luck. Any r/w operation to the card causes segment fault. For changing static const u32 wcid[2] = { 0xffffffff, 0x00ffffff }; to static const u32 wcid[2] = { 0xffffffff, cpu_to_le32(0x00ffffff) }; , my understanding is that rt2800_register_multiwrite always write data with assumption that the data is little-endian. I have no other big-endian platform to test the driver on with regular linux. So, i have to stick to Brcm6358 based wireless router and openwrt. On Thu, Sep 15, 2011 at 5:22 AM, Larry Finger <Larry.Finger@xxxxxxxxxxxx> wrote: > On 09/09/2011 12:30 PM, Semigod King wrote: >> >> I noticed two lines of code: >> static const u32 wcid[2] = { 0xffffffff, 0x00ffffff }; >> rt2800_register_multiwrite(rt2x00dev, MAC_WCID_ENTRY(i), >> wcid, sizeof(wcid)); >> >> Do you think the first line should be changed as below to eliminate >> platform difference? >> static const u32 wcid[2] = { 0xffffffff, >> cpu_to_le32(0x00ffffff) }; > > No, that kind of thing should not be done. Internal data that are not > specifically set to be little- or big-endian should be in cpu order. The > conversions need to be done when writing to or reading from the device when > the order differs from that of the cpu. > > The changes were minimal. Most of the time it took me were in getting Linux > running on my Powerbook G4 and getting the code to compile - I had to work > around a bug in gcc version 4.4.5 on the PowerMac platform. The patch I > needed is attached. The performance of rt2800usb is not great. With netperf, > I'm getting about 5 Mbps for the netperf MAERTS, STREAM, and SENDFILE tests. > > Larry > > > -- 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