diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-rx.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-rx.c | 31 |
1 files changed, 0 insertions, 31 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c index 73739cfd8047..7a432829e79f 100644 --- a/drivers/net/wireless/iwlwifi/iwl-rx.c +++ b/drivers/net/wireless/iwlwifi/iwl-rx.c | |||
@@ -145,13 +145,7 @@ int iwl_rx_queue_update_write_ptr(struct iwl_priv *priv, struct iwl_rx_queue *q) | |||
145 | goto exit_unlock; | 145 | goto exit_unlock; |
146 | } | 146 | } |
147 | 147 | ||
148 | ret = iwl_grab_nic_access(priv); | ||
149 | if (ret) | ||
150 | goto exit_unlock; | ||
151 | |||
152 | /* Device expects a multiple of 8 */ | ||
153 | iwl_write_direct32(priv, rx_wrt_ptr_reg, q->write & ~0x7); | 148 | iwl_write_direct32(priv, rx_wrt_ptr_reg, q->write & ~0x7); |
154 | iwl_release_nic_access(priv); | ||
155 | 149 | ||
156 | /* Else device is assumed to be awake */ | 150 | /* Else device is assumed to be awake */ |
157 | } else { | 151 | } else { |
@@ -403,19 +397,10 @@ EXPORT_SYMBOL(iwl_rx_queue_reset); | |||
403 | 397 | ||
404 | int iwl_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq) | 398 | int iwl_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq) |
405 | { | 399 | { |
406 | int ret; | ||
407 | unsigned long flags; | ||
408 | u32 rb_size; | 400 | u32 rb_size; |
409 | const u32 rfdnlog = RX_QUEUE_SIZE_LOG; /* 256 RBDs */ | 401 | const u32 rfdnlog = RX_QUEUE_SIZE_LOG; /* 256 RBDs */ |
410 | const u32 rb_timeout = 0; /* FIXME: RX_RB_TIMEOUT why this stalls RX */ | 402 | const u32 rb_timeout = 0; /* FIXME: RX_RB_TIMEOUT why this stalls RX */ |
411 | 403 | ||
412 | spin_lock_irqsave(&priv->lock, flags); | ||
413 | ret = iwl_grab_nic_access(priv); | ||
414 | if (ret) { | ||
415 | spin_unlock_irqrestore(&priv->lock, flags); | ||
416 | return ret; | ||
417 | } | ||
418 | |||
419 | if (priv->cfg->mod_params->amsdu_size_8K) | 404 | if (priv->cfg->mod_params->amsdu_size_8K) |
420 | rb_size = FH_RCSR_RX_CONFIG_REG_VAL_RB_SIZE_8K; | 405 | rb_size = FH_RCSR_RX_CONFIG_REG_VAL_RB_SIZE_8K; |
421 | else | 406 | else |
@@ -452,35 +437,19 @@ int iwl_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq) | |||
452 | (rb_timeout << FH_RCSR_RX_CONFIG_REG_IRQ_RBTH_POS)| | 437 | (rb_timeout << FH_RCSR_RX_CONFIG_REG_IRQ_RBTH_POS)| |
453 | (rfdnlog << FH_RCSR_RX_CONFIG_RBDCB_SIZE_POS)); | 438 | (rfdnlog << FH_RCSR_RX_CONFIG_RBDCB_SIZE_POS)); |
454 | 439 | ||
455 | iwl_release_nic_access(priv); | ||
456 | |||
457 | iwl_write32(priv, CSR_INT_COALESCING, 0x40); | 440 | iwl_write32(priv, CSR_INT_COALESCING, 0x40); |
458 | 441 | ||
459 | spin_unlock_irqrestore(&priv->lock, flags); | ||
460 | |||
461 | return 0; | 442 | return 0; |
462 | } | 443 | } |
463 | 444 | ||
464 | int iwl_rxq_stop(struct iwl_priv *priv) | 445 | int iwl_rxq_stop(struct iwl_priv *priv) |
465 | { | 446 | { |
466 | int ret; | ||
467 | unsigned long flags; | ||
468 | |||
469 | spin_lock_irqsave(&priv->lock, flags); | ||
470 | ret = iwl_grab_nic_access(priv); | ||
471 | if (unlikely(ret)) { | ||
472 | spin_unlock_irqrestore(&priv->lock, flags); | ||
473 | return ret; | ||
474 | } | ||
475 | 447 | ||
476 | /* stop Rx DMA */ | 448 | /* stop Rx DMA */ |
477 | iwl_write_direct32(priv, FH_MEM_RCSR_CHNL0_CONFIG_REG, 0); | 449 | iwl_write_direct32(priv, FH_MEM_RCSR_CHNL0_CONFIG_REG, 0); |
478 | iwl_poll_direct_bit(priv, FH_MEM_RSSR_RX_STATUS_REG, | 450 | iwl_poll_direct_bit(priv, FH_MEM_RSSR_RX_STATUS_REG, |
479 | FH_RSSR_CHNL0_RX_STATUS_CHNL_IDLE, 1000); | 451 | FH_RSSR_CHNL0_RX_STATUS_CHNL_IDLE, 1000); |
480 | 452 | ||
481 | iwl_release_nic_access(priv); | ||
482 | spin_unlock_irqrestore(&priv->lock, flags); | ||
483 | |||
484 | return 0; | 453 | return 0; |
485 | } | 454 | } |
486 | EXPORT_SYMBOL(iwl_rxq_stop); | 455 | EXPORT_SYMBOL(iwl_rxq_stop); |