rt2x00: Fix RF offset
authorIvo van Doorn <ivdoorn@gmail.com>
Tue, 17 Feb 2009 13:04:29 +0000 (14:04 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 27 Feb 2009 19:52:40 +0000 (14:52 -0500)
The word_base is in bytes instead of word index number,
this means that when using it, it should be transformed into
a word index first.

Otherwise RF register reading will fail through debugfs since
we would start reading 4 words starting with word 4 (which is the last
valid word for RF).

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2x00debug.c

index dcdce7f746b5eb5db8d83abba464cd8e2de90f7b..8d47389d88747e01eae23df4c7fdc16dd167948f 100644 (file)
@@ -435,11 +435,12 @@ static ssize_t rt2x00debug_read_##__name(struct file *file,       \
        if (index >= debug->__name.word_count)                  \
                return -EINVAL;                                 \
                                                                \
+       index += (debug->__name.word_base /                     \
+                 debug->__name.word_size);                     \
+                                                               \
        if (debug->__name.flags & RT2X00DEBUGFS_OFFSET)         \
                index *= debug->__name.word_size;               \
                                                                \
-       index += debug->__name.word_base;                       \
-                                                               \
        debug->__name.read(intf->rt2x00dev, index, &value);     \
                                                                \
        size = sprintf(line, __format, value);                  \
@@ -476,11 +477,12 @@ static ssize_t rt2x00debug_write_##__name(struct file *file,      \
        size = strlen(line);                                    \
        value = simple_strtoul(line, NULL, 0);                  \
                                                                \
+       index += (debug->__name.word_base /                     \
+                 debug->__name.word_size);                     \
+                                                               \
        if (debug->__name.flags & RT2X00DEBUGFS_OFFSET)         \
                index *= debug->__name.word_size;               \
                                                                \
-       index += debug->__name.word_base;                       \
-                                                               \
        debug->__name.write(intf->rt2x00dev, index, value);     \
                                                                \
        *offset += size;                                        \