diff options
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.c | 30 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.c | 30 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 17 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800usb.c | 18 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00config.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 28 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 28 |
8 files changed, 42 insertions, 112 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c index 6f39ba662188..0197531bd88c 100644 --- a/drivers/net/wireless/rt2x00/rt2400pci.c +++ b/drivers/net/wireless/rt2x00/rt2400pci.c | |||
@@ -335,10 +335,11 @@ static void rt2400pci_config_erp(struct rt2x00_dev *rt2x00dev, | |||
335 | preamble_mask = erp->short_preamble << 3; | 335 | preamble_mask = erp->short_preamble << 3; |
336 | 336 | ||
337 | rt2x00pci_register_read(rt2x00dev, TXCSR1, ®); | 337 | rt2x00pci_register_read(rt2x00dev, TXCSR1, ®); |
338 | rt2x00_set_field32(®, TXCSR1_ACK_TIMEOUT, | 338 | rt2x00_set_field32(®, TXCSR1_ACK_TIMEOUT, erp->ack_timeout); |
339 | erp->ack_timeout); | ||
340 | rt2x00_set_field32(®, TXCSR1_ACK_CONSUME_TIME, | 339 | rt2x00_set_field32(®, TXCSR1_ACK_CONSUME_TIME, |
341 | erp->ack_consume_time); | 340 | erp->ack_consume_time); |
341 | rt2x00_set_field32(®, TXCSR1_TSF_OFFSET, IEEE80211_HEADER); | ||
342 | rt2x00_set_field32(®, TXCSR1_AUTORESPONDER, 1); | ||
342 | rt2x00pci_register_write(rt2x00dev, TXCSR1, reg); | 343 | rt2x00pci_register_write(rt2x00dev, TXCSR1, reg); |
343 | 344 | ||
344 | rt2x00pci_register_read(rt2x00dev, ARCSR2, ®); | 345 | rt2x00pci_register_read(rt2x00dev, ARCSR2, ®); |
@@ -371,6 +372,11 @@ static void rt2400pci_config_erp(struct rt2x00_dev *rt2x00dev, | |||
371 | rt2x00_set_field32(®, CSR11_SLOT_TIME, erp->slot_time); | 372 | rt2x00_set_field32(®, CSR11_SLOT_TIME, erp->slot_time); |
372 | rt2x00pci_register_write(rt2x00dev, CSR11, reg); | 373 | rt2x00pci_register_write(rt2x00dev, CSR11, reg); |
373 | 374 | ||
375 | rt2x00pci_register_read(rt2x00dev, CSR12, ®); | ||
376 | rt2x00_set_field32(®, CSR12_BEACON_INTERVAL, erp->beacon_int * 16); | ||
377 | rt2x00_set_field32(®, CSR12_CFP_MAX_DURATION, erp->beacon_int * 16); | ||
378 | rt2x00pci_register_write(rt2x00dev, CSR12, reg); | ||
379 | |||
374 | rt2x00pci_register_read(rt2x00dev, CSR18, ®); | 380 | rt2x00pci_register_read(rt2x00dev, CSR18, ®); |
375 | rt2x00_set_field32(®, CSR18_SIFS, erp->sifs); | 381 | rt2x00_set_field32(®, CSR18_SIFS, erp->sifs); |
376 | rt2x00_set_field32(®, CSR18_PIFS, erp->pifs); | 382 | rt2x00_set_field32(®, CSR18_PIFS, erp->pifs); |
@@ -503,24 +509,6 @@ static void rt2400pci_config_retry_limit(struct rt2x00_dev *rt2x00dev, | |||
503 | rt2x00pci_register_write(rt2x00dev, CSR11, reg); | 509 | rt2x00pci_register_write(rt2x00dev, CSR11, reg); |
504 | } | 510 | } |
505 | 511 | ||
506 | static void rt2400pci_config_duration(struct rt2x00_dev *rt2x00dev, | ||
507 | struct rt2x00lib_conf *libconf) | ||
508 | { | ||
509 | u32 reg; | ||
510 | |||
511 | rt2x00pci_register_read(rt2x00dev, TXCSR1, ®); | ||
512 | rt2x00_set_field32(®, TXCSR1_TSF_OFFSET, IEEE80211_HEADER); | ||
513 | rt2x00_set_field32(®, TXCSR1_AUTORESPONDER, 1); | ||
514 | rt2x00pci_register_write(rt2x00dev, TXCSR1, reg); | ||
515 | |||
516 | rt2x00pci_register_read(rt2x00dev, CSR12, ®); | ||
517 | rt2x00_set_field32(®, CSR12_BEACON_INTERVAL, | ||
518 | libconf->conf->beacon_int * 16); | ||
519 | rt2x00_set_field32(®, CSR12_CFP_MAX_DURATION, | ||
520 | libconf->conf->beacon_int * 16); | ||
521 | rt2x00pci_register_write(rt2x00dev, CSR12, reg); | ||
522 | } | ||
523 | |||
524 | static void rt2400pci_config_ps(struct rt2x00_dev *rt2x00dev, | 512 | static void rt2400pci_config_ps(struct rt2x00_dev *rt2x00dev, |
525 | struct rt2x00lib_conf *libconf) | 513 | struct rt2x00lib_conf *libconf) |
526 | { | 514 | { |
@@ -558,8 +546,6 @@ static void rt2400pci_config(struct rt2x00_dev *rt2x00dev, | |||
558 | libconf->conf->power_level); | 546 | libconf->conf->power_level); |
559 | if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS) | 547 | if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS) |
560 | rt2400pci_config_retry_limit(rt2x00dev, libconf); | 548 | rt2400pci_config_retry_limit(rt2x00dev, libconf); |
561 | if (flags & IEEE80211_CONF_CHANGE_BEACON_INTERVAL) | ||
562 | rt2400pci_config_duration(rt2x00dev, libconf); | ||
563 | if (flags & IEEE80211_CONF_CHANGE_PS) | 549 | if (flags & IEEE80211_CONF_CHANGE_PS) |
564 | rt2400pci_config_ps(rt2x00dev, libconf); | 550 | rt2400pci_config_ps(rt2x00dev, libconf); |
565 | } | 551 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c index 906960f67b6c..f95cb646f85a 100644 --- a/drivers/net/wireless/rt2x00/rt2500pci.c +++ b/drivers/net/wireless/rt2x00/rt2500pci.c | |||
@@ -341,10 +341,11 @@ static void rt2500pci_config_erp(struct rt2x00_dev *rt2x00dev, | |||
341 | preamble_mask = erp->short_preamble << 3; | 341 | preamble_mask = erp->short_preamble << 3; |
342 | 342 | ||
343 | rt2x00pci_register_read(rt2x00dev, TXCSR1, ®); | 343 | rt2x00pci_register_read(rt2x00dev, TXCSR1, ®); |
344 | rt2x00_set_field32(®, TXCSR1_ACK_TIMEOUT, | 344 | rt2x00_set_field32(®, TXCSR1_ACK_TIMEOUT, erp->ack_timeout); |
345 | erp->ack_timeout); | ||
346 | rt2x00_set_field32(®, TXCSR1_ACK_CONSUME_TIME, | 345 | rt2x00_set_field32(®, TXCSR1_ACK_CONSUME_TIME, |
347 | erp->ack_consume_time); | 346 | erp->ack_consume_time); |
347 | rt2x00_set_field32(®, TXCSR1_TSF_OFFSET, IEEE80211_HEADER); | ||
348 | rt2x00_set_field32(®, TXCSR1_AUTORESPONDER, 1); | ||
348 | rt2x00pci_register_write(rt2x00dev, TXCSR1, reg); | 349 | rt2x00pci_register_write(rt2x00dev, TXCSR1, reg); |
349 | 350 | ||
350 | rt2x00pci_register_read(rt2x00dev, ARCSR2, ®); | 351 | rt2x00pci_register_read(rt2x00dev, ARCSR2, ®); |
@@ -377,6 +378,11 @@ static void rt2500pci_config_erp(struct rt2x00_dev *rt2x00dev, | |||
377 | rt2x00_set_field32(®, CSR11_SLOT_TIME, erp->slot_time); | 378 | rt2x00_set_field32(®, CSR11_SLOT_TIME, erp->slot_time); |
378 | rt2x00pci_register_write(rt2x00dev, CSR11, reg); | 379 | rt2x00pci_register_write(rt2x00dev, CSR11, reg); |
379 | 380 | ||
381 | rt2x00pci_register_read(rt2x00dev, CSR12, ®); | ||
382 | rt2x00_set_field32(®, CSR12_BEACON_INTERVAL, erp->beacon_int * 16); | ||
383 | rt2x00_set_field32(®, CSR12_CFP_MAX_DURATION, erp->beacon_int * 16); | ||
384 | rt2x00pci_register_write(rt2x00dev, CSR12, reg); | ||
385 | |||
380 | rt2x00pci_register_read(rt2x00dev, CSR18, ®); | 386 | rt2x00pci_register_read(rt2x00dev, CSR18, ®); |
381 | rt2x00_set_field32(®, CSR18_SIFS, erp->sifs); | 387 | rt2x00_set_field32(®, CSR18_SIFS, erp->sifs); |
382 | rt2x00_set_field32(®, CSR18_PIFS, erp->pifs); | 388 | rt2x00_set_field32(®, CSR18_PIFS, erp->pifs); |
@@ -552,24 +558,6 @@ static void rt2500pci_config_retry_limit(struct rt2x00_dev *rt2x00dev, | |||
552 | rt2x00pci_register_write(rt2x00dev, CSR11, reg); | 558 | rt2x00pci_register_write(rt2x00dev, CSR11, reg); |
553 | } | 559 | } |
554 | 560 | ||
555 | static void rt2500pci_config_duration(struct rt2x00_dev *rt2x00dev, | ||
556 | struct rt2x00lib_conf *libconf) | ||
557 | { | ||
558 | u32 reg; | ||
559 | |||
560 | rt2x00pci_register_read(rt2x00dev, TXCSR1, ®); | ||
561 | rt2x00_set_field32(®, TXCSR1_TSF_OFFSET, IEEE80211_HEADER); | ||
562 | rt2x00_set_field32(®, TXCSR1_AUTORESPONDER, 1); | ||
563 | rt2x00pci_register_write(rt2x00dev, TXCSR1, reg); | ||
564 | |||
565 | rt2x00pci_register_read(rt2x00dev, CSR12, ®); | ||
566 | rt2x00_set_field32(®, CSR12_BEACON_INTERVAL, | ||
567 | libconf->conf->beacon_int * 16); | ||
568 | rt2x00_set_field32(®, CSR12_CFP_MAX_DURATION, | ||
569 | libconf->conf->beacon_int * 16); | ||
570 | rt2x00pci_register_write(rt2x00dev, CSR12, reg); | ||
571 | } | ||
572 | |||
573 | static void rt2500pci_config_ps(struct rt2x00_dev *rt2x00dev, | 561 | static void rt2500pci_config_ps(struct rt2x00_dev *rt2x00dev, |
574 | struct rt2x00lib_conf *libconf) | 562 | struct rt2x00lib_conf *libconf) |
575 | { | 563 | { |
@@ -609,8 +597,6 @@ static void rt2500pci_config(struct rt2x00_dev *rt2x00dev, | |||
609 | libconf->conf->power_level); | 597 | libconf->conf->power_level); |
610 | if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS) | 598 | if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS) |
611 | rt2500pci_config_retry_limit(rt2x00dev, libconf); | 599 | rt2500pci_config_retry_limit(rt2x00dev, libconf); |
612 | if (flags & IEEE80211_CONF_CHANGE_BEACON_INTERVAL) | ||
613 | rt2500pci_config_duration(rt2x00dev, libconf); | ||
614 | if (flags & IEEE80211_CONF_CHANGE_PS) | 600 | if (flags & IEEE80211_CONF_CHANGE_PS) |
615 | rt2500pci_config_ps(rt2x00dev, libconf); | 601 | rt2500pci_config_ps(rt2x00dev, libconf); |
616 | } | 602 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 1debb88bc60e..69f966f1ce54 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -503,6 +503,10 @@ static void rt2500usb_config_erp(struct rt2x00_dev *rt2x00dev, | |||
503 | 503 | ||
504 | rt2500usb_register_write(rt2x00dev, TXRX_CSR11, erp->basic_rates); | 504 | rt2500usb_register_write(rt2x00dev, TXRX_CSR11, erp->basic_rates); |
505 | 505 | ||
506 | rt2500usb_register_read(rt2x00dev, TXRX_CSR18, ®); | ||
507 | rt2x00_set_field16(®, TXRX_CSR18_INTERVAL, erp->beacon_int * 4); | ||
508 | rt2500usb_register_write(rt2x00dev, TXRX_CSR18, reg); | ||
509 | |||
506 | rt2500usb_register_write(rt2x00dev, MAC_CSR10, erp->slot_time); | 510 | rt2500usb_register_write(rt2x00dev, MAC_CSR10, erp->slot_time); |
507 | rt2500usb_register_write(rt2x00dev, MAC_CSR11, erp->sifs); | 511 | rt2500usb_register_write(rt2x00dev, MAC_CSR11, erp->sifs); |
508 | rt2500usb_register_write(rt2x00dev, MAC_CSR12, erp->eifs); | 512 | rt2500usb_register_write(rt2x00dev, MAC_CSR12, erp->eifs); |
@@ -632,17 +636,6 @@ static void rt2500usb_config_txpower(struct rt2x00_dev *rt2x00dev, | |||
632 | rt2500usb_rf_write(rt2x00dev, 3, rf3); | 636 | rt2500usb_rf_write(rt2x00dev, 3, rf3); |
633 | } | 637 | } |
634 | 638 | ||
635 | static void rt2500usb_config_duration(struct rt2x00_dev *rt2x00dev, | ||
636 | struct rt2x00lib_conf *libconf) | ||
637 | { | ||
638 | u16 reg; | ||
639 | |||
640 | rt2500usb_register_read(rt2x00dev, TXRX_CSR18, ®); | ||
641 | rt2x00_set_field16(®, TXRX_CSR18_INTERVAL, | ||
642 | libconf->conf->beacon_int * 4); | ||
643 | rt2500usb_register_write(rt2x00dev, TXRX_CSR18, reg); | ||
644 | } | ||
645 | |||
646 | static void rt2500usb_config_ps(struct rt2x00_dev *rt2x00dev, | 639 | static void rt2500usb_config_ps(struct rt2x00_dev *rt2x00dev, |
647 | struct rt2x00lib_conf *libconf) | 640 | struct rt2x00lib_conf *libconf) |
648 | { | 641 | { |
@@ -680,8 +673,6 @@ static void rt2500usb_config(struct rt2x00_dev *rt2x00dev, | |||
680 | !(flags & IEEE80211_CONF_CHANGE_CHANNEL)) | 673 | !(flags & IEEE80211_CONF_CHANGE_CHANNEL)) |
681 | rt2500usb_config_txpower(rt2x00dev, | 674 | rt2500usb_config_txpower(rt2x00dev, |
682 | libconf->conf->power_level); | 675 | libconf->conf->power_level); |
683 | if (flags & IEEE80211_CONF_CHANGE_BEACON_INTERVAL) | ||
684 | rt2500usb_config_duration(rt2x00dev, libconf); | ||
685 | if (flags & IEEE80211_CONF_CHANGE_PS) | 676 | if (flags & IEEE80211_CONF_CHANGE_PS) |
686 | rt2500usb_config_ps(rt2x00dev, libconf); | 677 | rt2500usb_config_ps(rt2x00dev, libconf); |
687 | } | 678 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c index aae7aa72bf06..142ad34fdc49 100644 --- a/drivers/net/wireless/rt2x00/rt2800usb.c +++ b/drivers/net/wireless/rt2x00/rt2800usb.c | |||
@@ -616,6 +616,11 @@ static void rt2800usb_config_erp(struct rt2x00_dev *rt2x00dev, | |||
616 | rt2x00_set_field32(®, XIFS_TIME_CFG_EIFS, erp->eifs); | 616 | rt2x00_set_field32(®, XIFS_TIME_CFG_EIFS, erp->eifs); |
617 | rt2x00_set_field32(®, XIFS_TIME_CFG_BB_RXEND_ENABLE, 1); | 617 | rt2x00_set_field32(®, XIFS_TIME_CFG_BB_RXEND_ENABLE, 1); |
618 | rt2x00usb_register_write(rt2x00dev, XIFS_TIME_CFG, reg); | 618 | rt2x00usb_register_write(rt2x00dev, XIFS_TIME_CFG, reg); |
619 | |||
620 | rt2x00usb_register_read(rt2x00dev, BCN_TIME_CFG, ®); | ||
621 | rt2x00_set_field32(®, BCN_TIME_CFG_BEACON_INTERVAL, | ||
622 | erp->beacon_int * 16); | ||
623 | rt2x00usb_register_write(rt2x00dev, BCN_TIME_CFG, reg); | ||
619 | } | 624 | } |
620 | 625 | ||
621 | static void rt2800usb_config_ant(struct rt2x00_dev *rt2x00dev, | 626 | static void rt2800usb_config_ant(struct rt2x00_dev *rt2x00dev, |
@@ -955,17 +960,6 @@ static void rt2800usb_config_retry_limit(struct rt2x00_dev *rt2x00dev, | |||
955 | rt2x00usb_register_write(rt2x00dev, TX_RTY_CFG, reg); | 960 | rt2x00usb_register_write(rt2x00dev, TX_RTY_CFG, reg); |
956 | } | 961 | } |
957 | 962 | ||
958 | static void rt2800usb_config_duration(struct rt2x00_dev *rt2x00dev, | ||
959 | struct rt2x00lib_conf *libconf) | ||
960 | { | ||
961 | u32 reg; | ||
962 | |||
963 | rt2x00usb_register_read(rt2x00dev, BCN_TIME_CFG, ®); | ||
964 | rt2x00_set_field32(®, BCN_TIME_CFG_BEACON_INTERVAL, | ||
965 | libconf->conf->beacon_int * 16); | ||
966 | rt2x00usb_register_write(rt2x00dev, BCN_TIME_CFG, reg); | ||
967 | } | ||
968 | |||
969 | static void rt2800usb_config_ps(struct rt2x00_dev *rt2x00dev, | 963 | static void rt2800usb_config_ps(struct rt2x00_dev *rt2x00dev, |
970 | struct rt2x00lib_conf *libconf) | 964 | struct rt2x00lib_conf *libconf) |
971 | { | 965 | { |
@@ -1010,8 +1004,6 @@ static void rt2800usb_config(struct rt2x00_dev *rt2x00dev, | |||
1010 | rt2800usb_config_txpower(rt2x00dev, libconf->conf->power_level); | 1004 | rt2800usb_config_txpower(rt2x00dev, libconf->conf->power_level); |
1011 | if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS) | 1005 | if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS) |
1012 | rt2800usb_config_retry_limit(rt2x00dev, libconf); | 1006 | rt2800usb_config_retry_limit(rt2x00dev, libconf); |
1013 | if (flags & IEEE80211_CONF_CHANGE_BEACON_INTERVAL) | ||
1014 | rt2800usb_config_duration(rt2x00dev, libconf); | ||
1015 | if (flags & IEEE80211_CONF_CHANGE_PS) | 1007 | if (flags & IEEE80211_CONF_CHANGE_PS) |
1016 | rt2800usb_config_ps(rt2x00dev, libconf); | 1008 | rt2800usb_config_ps(rt2x00dev, libconf); |
1017 | } | 1009 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 419b1b9f998e..2b64a6198698 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -417,6 +417,8 @@ struct rt2x00lib_erp { | |||
417 | short pifs; | 417 | short pifs; |
418 | short difs; | 418 | short difs; |
419 | short eifs; | 419 | short eifs; |
420 | |||
421 | u16 beacon_int; | ||
420 | }; | 422 | }; |
421 | 423 | ||
422 | /* | 424 | /* |
diff --git a/drivers/net/wireless/rt2x00/rt2x00config.c b/drivers/net/wireless/rt2x00/rt2x00config.c index 863e399d4fa6..c5bbf0b6e207 100644 --- a/drivers/net/wireless/rt2x00/rt2x00config.c +++ b/drivers/net/wireless/rt2x00/rt2x00config.c | |||
@@ -106,6 +106,7 @@ void rt2x00lib_config_erp(struct rt2x00_dev *rt2x00dev, | |||
106 | } | 106 | } |
107 | 107 | ||
108 | erp.basic_rates = bss_conf->basic_rates; | 108 | erp.basic_rates = bss_conf->basic_rates; |
109 | erp.beacon_int = bss_conf->beacon_int; | ||
109 | 110 | ||
110 | rt2x00dev->ops->lib->config_erp(rt2x00dev, &erp); | 111 | rt2x00dev->ops->lib->config_erp(rt2x00dev, &erp); |
111 | } | 112 | } |
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index cb521ee7a8f0..a8bf5c432858 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -603,15 +603,22 @@ static void rt61pci_config_erp(struct rt2x00_dev *rt2x00dev, | |||
603 | 603 | ||
604 | rt2x00pci_register_read(rt2x00dev, TXRX_CSR0, ®); | 604 | rt2x00pci_register_read(rt2x00dev, TXRX_CSR0, ®); |
605 | rt2x00_set_field32(®, TXRX_CSR0_RX_ACK_TIMEOUT, erp->ack_timeout); | 605 | rt2x00_set_field32(®, TXRX_CSR0_RX_ACK_TIMEOUT, erp->ack_timeout); |
606 | rt2x00_set_field32(®, TXRX_CSR0_TSF_OFFSET, IEEE80211_HEADER); | ||
606 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR0, reg); | 607 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR0, reg); |
607 | 608 | ||
608 | rt2x00pci_register_read(rt2x00dev, TXRX_CSR4, ®); | 609 | rt2x00pci_register_read(rt2x00dev, TXRX_CSR4, ®); |
610 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_ENABLE, 1); | ||
609 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_PREAMBLE, | 611 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_PREAMBLE, |
610 | !!erp->short_preamble); | 612 | !!erp->short_preamble); |
611 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR4, reg); | 613 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR4, reg); |
612 | 614 | ||
613 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR5, erp->basic_rates); | 615 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR5, erp->basic_rates); |
614 | 616 | ||
617 | rt2x00pci_register_read(rt2x00dev, TXRX_CSR9, ®); | ||
618 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_INTERVAL, | ||
619 | erp->beacon_int * 16); | ||
620 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR9, reg); | ||
621 | |||
615 | rt2x00pci_register_read(rt2x00dev, MAC_CSR9, ®); | 622 | rt2x00pci_register_read(rt2x00dev, MAC_CSR9, ®); |
616 | rt2x00_set_field32(®, MAC_CSR9_SLOT_TIME, erp->slot_time); | 623 | rt2x00_set_field32(®, MAC_CSR9_SLOT_TIME, erp->slot_time); |
617 | rt2x00pci_register_write(rt2x00dev, MAC_CSR9, reg); | 624 | rt2x00pci_register_write(rt2x00dev, MAC_CSR9, reg); |
@@ -938,25 +945,6 @@ static void rt61pci_config_retry_limit(struct rt2x00_dev *rt2x00dev, | |||
938 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR4, reg); | 945 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR4, reg); |
939 | } | 946 | } |
940 | 947 | ||
941 | static void rt61pci_config_duration(struct rt2x00_dev *rt2x00dev, | ||
942 | struct rt2x00lib_conf *libconf) | ||
943 | { | ||
944 | u32 reg; | ||
945 | |||
946 | rt2x00pci_register_read(rt2x00dev, TXRX_CSR0, ®); | ||
947 | rt2x00_set_field32(®, TXRX_CSR0_TSF_OFFSET, IEEE80211_HEADER); | ||
948 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR0, reg); | ||
949 | |||
950 | rt2x00pci_register_read(rt2x00dev, TXRX_CSR4, ®); | ||
951 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_ENABLE, 1); | ||
952 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR4, reg); | ||
953 | |||
954 | rt2x00pci_register_read(rt2x00dev, TXRX_CSR9, ®); | ||
955 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_INTERVAL, | ||
956 | libconf->conf->beacon_int * 16); | ||
957 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR9, reg); | ||
958 | } | ||
959 | |||
960 | static void rt61pci_config_ps(struct rt2x00_dev *rt2x00dev, | 948 | static void rt61pci_config_ps(struct rt2x00_dev *rt2x00dev, |
961 | struct rt2x00lib_conf *libconf) | 949 | struct rt2x00lib_conf *libconf) |
962 | { | 950 | { |
@@ -1016,8 +1004,6 @@ static void rt61pci_config(struct rt2x00_dev *rt2x00dev, | |||
1016 | rt61pci_config_txpower(rt2x00dev, libconf->conf->power_level); | 1004 | rt61pci_config_txpower(rt2x00dev, libconf->conf->power_level); |
1017 | if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS) | 1005 | if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS) |
1018 | rt61pci_config_retry_limit(rt2x00dev, libconf); | 1006 | rt61pci_config_retry_limit(rt2x00dev, libconf); |
1019 | if (flags & IEEE80211_CONF_CHANGE_BEACON_INTERVAL) | ||
1020 | rt61pci_config_duration(rt2x00dev, libconf); | ||
1021 | if (flags & IEEE80211_CONF_CHANGE_PS) | 1007 | if (flags & IEEE80211_CONF_CHANGE_PS) |
1022 | rt61pci_config_ps(rt2x00dev, libconf); | 1008 | rt61pci_config_ps(rt2x00dev, libconf); |
1023 | } | 1009 | } |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index 270dd4e59f7f..211a3d6bc054 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -566,15 +566,22 @@ static void rt73usb_config_erp(struct rt2x00_dev *rt2x00dev, | |||
566 | 566 | ||
567 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, ®); | 567 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, ®); |
568 | rt2x00_set_field32(®, TXRX_CSR0_RX_ACK_TIMEOUT, erp->ack_timeout); | 568 | rt2x00_set_field32(®, TXRX_CSR0_RX_ACK_TIMEOUT, erp->ack_timeout); |
569 | rt2x00_set_field32(®, TXRX_CSR0_TSF_OFFSET, IEEE80211_HEADER); | ||
569 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); | 570 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); |
570 | 571 | ||
571 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, ®); | 572 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, ®); |
573 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_ENABLE, 1); | ||
572 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_PREAMBLE, | 574 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_PREAMBLE, |
573 | !!erp->short_preamble); | 575 | !!erp->short_preamble); |
574 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); | 576 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); |
575 | 577 | ||
576 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR5, erp->basic_rates); | 578 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR5, erp->basic_rates); |
577 | 579 | ||
580 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, ®); | ||
581 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_INTERVAL, | ||
582 | erp->beacon_int * 16); | ||
583 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); | ||
584 | |||
578 | rt2x00usb_register_read(rt2x00dev, MAC_CSR9, ®); | 585 | rt2x00usb_register_read(rt2x00dev, MAC_CSR9, ®); |
579 | rt2x00_set_field32(®, MAC_CSR9_SLOT_TIME, erp->slot_time); | 586 | rt2x00_set_field32(®, MAC_CSR9_SLOT_TIME, erp->slot_time); |
580 | rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); | 587 | rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); |
@@ -834,25 +841,6 @@ static void rt73usb_config_retry_limit(struct rt2x00_dev *rt2x00dev, | |||
834 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); | 841 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); |
835 | } | 842 | } |
836 | 843 | ||
837 | static void rt73usb_config_duration(struct rt2x00_dev *rt2x00dev, | ||
838 | struct rt2x00lib_conf *libconf) | ||
839 | { | ||
840 | u32 reg; | ||
841 | |||
842 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, ®); | ||
843 | rt2x00_set_field32(®, TXRX_CSR0_TSF_OFFSET, IEEE80211_HEADER); | ||
844 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); | ||
845 | |||
846 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, ®); | ||
847 | rt2x00_set_field32(®, TXRX_CSR4_AUTORESPOND_ENABLE, 1); | ||
848 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); | ||
849 | |||
850 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, ®); | ||
851 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_INTERVAL, | ||
852 | libconf->conf->beacon_int * 16); | ||
853 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); | ||
854 | } | ||
855 | |||
856 | static void rt73usb_config_ps(struct rt2x00_dev *rt2x00dev, | 844 | static void rt73usb_config_ps(struct rt2x00_dev *rt2x00dev, |
857 | struct rt2x00lib_conf *libconf) | 845 | struct rt2x00lib_conf *libconf) |
858 | { | 846 | { |
@@ -906,8 +894,6 @@ static void rt73usb_config(struct rt2x00_dev *rt2x00dev, | |||
906 | rt73usb_config_txpower(rt2x00dev, libconf->conf->power_level); | 894 | rt73usb_config_txpower(rt2x00dev, libconf->conf->power_level); |
907 | if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS) | 895 | if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS) |
908 | rt73usb_config_retry_limit(rt2x00dev, libconf); | 896 | rt73usb_config_retry_limit(rt2x00dev, libconf); |
909 | if (flags & IEEE80211_CONF_CHANGE_BEACON_INTERVAL) | ||
910 | rt73usb_config_duration(rt2x00dev, libconf); | ||
911 | if (flags & IEEE80211_CONF_CHANGE_PS) | 897 | if (flags & IEEE80211_CONF_CHANGE_PS) |
912 | rt73usb_config_ps(rt2x00dev, libconf); | 898 | rt73usb_config_ps(rt2x00dev, libconf); |
913 | } | 899 | } |