Changeset 053fc2b in mainline for uspace/drv
- Timestamp:
- 2015-04-10T13:52:11Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a931b7b
- Parents:
- d7dadcb4
- Location:
- uspace/drv/nic/ar9271
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/nic/ar9271/ar9271.c
rd7dadcb4 r053fc2b 105 105 static int ar9271_ieee80211_set_freq(ieee80211_dev_t *ieee80211_dev, 106 106 uint16_t freq); 107 static int ar9271_ieee80211_bssid_change(ieee80211_dev_t *ieee80211_dev); 107 static int ar9271_ieee80211_bssid_change(ieee80211_dev_t *ieee80211_dev, 108 bool connected); 108 109 static int ar9271_ieee80211_key_config(ieee80211_dev_t *ieee80211_dev, 109 110 ieee80211_key_config_t *key_conf, bool insert); … … 351 352 ar9271_t *ar9271 = (ar9271_t *) ieee80211_get_specific(ieee80211_dev); 352 353 353 //hw_wakeup(ar9271);354 355 354 wmi_send_command(ar9271->htc_device, WMI_DISABLE_INTR, NULL, 0, NULL); 356 355 wmi_send_command(ar9271->htc_device, WMI_DRAIN_TXQ_ALL, NULL, 0, NULL); … … 379 378 } 380 379 381 static int ar9271_ieee80211_bssid_change(ieee80211_dev_t *ieee80211_dev) 380 static int ar9271_ieee80211_bssid_change(ieee80211_dev_t *ieee80211_dev, 381 bool connected) 382 382 { 383 383 assert(ieee80211_dev); … … 385 385 ar9271_t *ar9271 = (ar9271_t *) ieee80211_get_specific(ieee80211_dev); 386 386 387 /* Check if we are connected or disconnected. */ 388 if(ieee80211_is_connected(ieee80211_dev)) { 387 if(connected) { 389 388 nic_address_t bssid; 390 389 ieee80211_query_bssid(ieee80211_dev, &bssid); … … 433 432 { 434 433 assert(ieee80211_dev); 435 assert(key_conf);436 434 437 435 ar9271_t *ar9271 = (ar9271_t *) ieee80211_get_specific(ieee80211_dev); 438 436 439 uint32_t key[5];440 uint32_t key_type;441 uint32_t reg_ptr;442 void *data_start;443 444 437 if(insert) { 438 assert(key_conf); 439 440 uint32_t key[5]; 441 uint32_t key_type; 442 uint32_t reg_ptr; 443 void *data_start; 444 445 445 nic_address_t bssid; 446 446 ieee80211_query_bssid(ieee80211_dev, &bssid); … … 520 520 ieee80211_setup_key_confirm(ieee80211_dev, true); 521 521 } else { 522 // TODO 522 // TODO: Delete keys from device 523 ieee80211_setup_key_confirm(ieee80211_dev, false); 523 524 } 524 525 … … 562 563 data_header->keyix = AR9271_STA_KEY_INDEX; 563 564 int sec_suite = 564 ieee80211_get_ security_suite(ieee80211_dev);565 ieee80211_get_pairwise_security(ieee80211_dev); 565 566 switch(sec_suite) { 566 567 case IEEE80211_SECURITY_SUITE_WEP40: -
uspace/drv/nic/ar9271/hw.c
rd7dadcb4 r053fc2b 377 377 } 378 378 379 int hw_wakeup(ar9271_t *ar9271)380 {381 int rc;382 383 uint32_t rtc_status;384 wmi_reg_read(ar9271->htc_device, AR9271_RTC_STATUS, &rtc_status);385 if((rtc_status & AR9271_RTC_STATUS_MASK) == AR9271_RTC_STATUS_SHUTDOWN) {386 rc = hw_reset_power_on(ar9271);387 if(rc != EOK) {388 usb_log_info("Failed to HW reset power on.\n");389 return rc;390 }391 392 rc = hw_set_reset(ar9271, false);393 if(rc != EOK) {394 usb_log_info("Failed to HW warm reset.\n");395 return rc;396 }397 }398 399 wmi_reg_set_bit(ar9271->htc_device, AR9271_RTC_FORCE_WAKE,400 AR9271_RTC_FORCE_WAKE_ENABLE);401 402 size_t i;403 for(i = 0; i < HW_WAIT_LOOPS; i++) {404 wmi_reg_read(ar9271->htc_device, AR9271_RTC_STATUS,405 &rtc_status);406 if((rtc_status & AR9271_RTC_STATUS_MASK) ==407 AR9271_RTC_STATUS_ON) {408 break;409 }410 wmi_reg_set_bit(ar9271->htc_device, AR9271_RTC_FORCE_WAKE,411 AR9271_RTC_FORCE_WAKE_ENABLE);412 udelay(50);413 }414 415 if(i == HW_WAIT_LOOPS) {416 return EINVAL;417 } else {418 return EOK;419 }420 }421 422 379 int hw_freq_switch(ar9271_t *ar9271, uint16_t freq) 423 380 { -
uspace/drv/nic/ar9271/hw.h
rd7dadcb4 r053fc2b 45 45 extern int hw_rx_init(ar9271_t *ar9271); 46 46 extern int hw_reset(ar9271_t *ar9271); 47 extern int hw_wakeup(ar9271_t *ar9271);48 47 extern int hw_set_bssid(ar9271_t *ar9271); 49 48 extern int hw_set_rx_filter(ar9271_t *ar9271, bool assoc);
Note:
See TracChangeset
for help on using the changeset viewer.
