diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt73usb.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index df0ef3f70f1..cc6a72b09f4 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -545,7 +545,8 @@ static void rt73usb_config_intf(struct rt2x00_dev *rt2x00dev, | |||
545 | } | 545 | } |
546 | 546 | ||
547 | static void rt73usb_config_erp(struct rt2x00_dev *rt2x00dev, | 547 | static void rt73usb_config_erp(struct rt2x00_dev *rt2x00dev, |
548 | struct rt2x00lib_erp *erp) | 548 | struct rt2x00lib_erp *erp, |
549 | u32 changed) | ||
549 | { | 550 | { |
550 | u32 reg; | 551 | u32 reg; |
551 | 552 | ||
@@ -554,28 +555,36 @@ static void rt73usb_config_erp(struct rt2x00_dev *rt2x00dev, | |||
554 | rt2x00_set_field32(®, TXRX_CSR0_TSF_OFFSET, IEEE80211_HEADER); | 555 | rt2x00_set_field32(®, TXRX_CSR0_TSF_OFFSET, IEEE80211_HEADER); |
555 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); | 556 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); |
556 | 557 | ||
557 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, ®); | 558 | if (changed & BSS_CHANGED_ERP_PREAMBLE) { |
558 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_ENABLE, 1); | 559 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, ®); |
559 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_PREAMBLE, | 560 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_ENABLE, 1); |
560 | !!erp->short_preamble); | 561 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_PREAMBLE, |
561 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); | 562 | !!erp->short_preamble); |
563 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); | ||
564 | } | ||
562 | 565 | ||
563 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR5, erp->basic_rates); | 566 | if (changed & BSS_CHANGED_BASIC_RATES) |
567 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR5, | ||
568 | erp->basic_rates); | ||
564 | 569 | ||
565 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, ®); | 570 | if (changed & BSS_CHANGED_BEACON_INT) { |
566 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_INTERVAL, | 571 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, ®); |
567 | erp->beacon_int * 16); | 572 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_INTERVAL, |
568 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); | 573 | erp->beacon_int * 16); |
574 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); | ||
575 | } | ||
569 | 576 | ||
570 | rt2x00usb_register_read(rt2x00dev, MAC_CSR9, ®); | 577 | if (changed & BSS_CHANGED_ERP_SLOT) { |
571 | rt2x00_set_field32(®, MAC_CSR9_SLOT_TIME, erp->slot_time); | 578 | rt2x00usb_register_read(rt2x00dev, MAC_CSR9, ®); |
572 | rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); | 579 | rt2x00_set_field32(®, MAC_CSR9_SLOT_TIME, erp->slot_time); |
580 | rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); | ||
573 | 581 | ||
574 | rt2x00usb_register_read(rt2x00dev, MAC_CSR8, ®); | 582 | rt2x00usb_register_read(rt2x00dev, MAC_CSR8, ®); |
575 | rt2x00_set_field32(®, MAC_CSR8_SIFS, erp->sifs); | 583 | rt2x00_set_field32(®, MAC_CSR8_SIFS, erp->sifs); |
576 | rt2x00_set_field32(®, MAC_CSR8_SIFS_AFTER_RX_OFDM, 3); | 584 | rt2x00_set_field32(®, MAC_CSR8_SIFS_AFTER_RX_OFDM, 3); |
577 | rt2x00_set_field32(®, MAC_CSR8_EIFS, erp->eifs); | 585 | rt2x00_set_field32(®, MAC_CSR8_EIFS, erp->eifs); |
578 | rt2x00usb_register_write(rt2x00dev, MAC_CSR8, reg); | 586 | rt2x00usb_register_write(rt2x00dev, MAC_CSR8, reg); |
587 | } | ||
579 | } | 588 | } |
580 | 589 | ||
581 | static void rt73usb_config_antenna_5x(struct rt2x00_dev *rt2x00dev, | 590 | static void rt73usb_config_antenna_5x(struct rt2x00_dev *rt2x00dev, |