|
@@ -946,6 +946,12 @@ static unsigned int rt2800_hw_beacon_base(struct rt2x00_dev *rt2x00dev,
|
|
|
return HW_BEACON_BASE(index);
|
|
|
}
|
|
|
|
|
|
+static inline u8 rt2800_get_beacon_offset(struct rt2x00_dev *rt2x00dev,
|
|
|
+ unsigned int index)
|
|
|
+{
|
|
|
+ return BEACON_BASE_TO_OFFSET(rt2800_hw_beacon_base(rt2x00dev, index));
|
|
|
+}
|
|
|
+
|
|
|
void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc)
|
|
|
{
|
|
|
struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
|
@@ -4474,17 +4480,25 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
|
|
|
return ret;
|
|
|
|
|
|
rt2800_register_read(rt2x00dev, BCN_OFFSET0, ®);
|
|
|
- rt2x00_set_field32(®, BCN_OFFSET0_BCN0, 0xe0); /* 0x3800 */
|
|
|
- rt2x00_set_field32(®, BCN_OFFSET0_BCN1, 0xe8); /* 0x3a00 */
|
|
|
- rt2x00_set_field32(®, BCN_OFFSET0_BCN2, 0xf0); /* 0x3c00 */
|
|
|
- rt2x00_set_field32(®, BCN_OFFSET0_BCN3, 0xf8); /* 0x3e00 */
|
|
|
+ rt2x00_set_field32(®, BCN_OFFSET0_BCN0,
|
|
|
+ rt2800_get_beacon_offset(rt2x00dev, 0));
|
|
|
+ rt2x00_set_field32(®, BCN_OFFSET0_BCN1,
|
|
|
+ rt2800_get_beacon_offset(rt2x00dev, 1));
|
|
|
+ rt2x00_set_field32(®, BCN_OFFSET0_BCN2,
|
|
|
+ rt2800_get_beacon_offset(rt2x00dev, 2));
|
|
|
+ rt2x00_set_field32(®, BCN_OFFSET0_BCN3,
|
|
|
+ rt2800_get_beacon_offset(rt2x00dev, 3));
|
|
|
rt2800_register_write(rt2x00dev, BCN_OFFSET0, reg);
|
|
|
|
|
|
rt2800_register_read(rt2x00dev, BCN_OFFSET1, ®);
|
|
|
- rt2x00_set_field32(®, BCN_OFFSET1_BCN4, 0xc8); /* 0x3200 */
|
|
|
- rt2x00_set_field32(®, BCN_OFFSET1_BCN5, 0xd0); /* 0x3400 */
|
|
|
- rt2x00_set_field32(®, BCN_OFFSET1_BCN6, 0x77); /* 0x1dc0 */
|
|
|
- rt2x00_set_field32(®, BCN_OFFSET1_BCN7, 0x6f); /* 0x1bc0 */
|
|
|
+ rt2x00_set_field32(®, BCN_OFFSET1_BCN4,
|
|
|
+ rt2800_get_beacon_offset(rt2x00dev, 4));
|
|
|
+ rt2x00_set_field32(®, BCN_OFFSET1_BCN5,
|
|
|
+ rt2800_get_beacon_offset(rt2x00dev, 5));
|
|
|
+ rt2x00_set_field32(®, BCN_OFFSET1_BCN6,
|
|
|
+ rt2800_get_beacon_offset(rt2x00dev, 6));
|
|
|
+ rt2x00_set_field32(®, BCN_OFFSET1_BCN7,
|
|
|
+ rt2800_get_beacon_offset(rt2x00dev, 7));
|
|
|
rt2800_register_write(rt2x00dev, BCN_OFFSET1, reg);
|
|
|
|
|
|
rt2800_register_write(rt2x00dev, LEGACY_BASIC_RATE, 0x0000013f);
|