Commit 8cd812bc authored by Winkler, Tomas's avatar Winkler, Tomas Committed by John W. Linville

iwl3945: use iwl_rb_status

This patch makes use of iwl_rb_status also in 3945. The structure
for 3945 is not the same but since only closed_rb_num filed is used
in both cases there is no reason to duplicate it.
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarZhu Yi <yi.zhu@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent cbba18c6
...@@ -302,7 +302,6 @@ static inline int iwl3945_hw_valid_rtc_data_addr(u32 addr) ...@@ -302,7 +302,6 @@ static inline int iwl3945_hw_valid_rtc_data_addr(u32 addr)
* and &iwl3945_shared.rx_read_ptr[0] is provided to FH_RCSR_RPTR_ADDR(0) */ * and &iwl3945_shared.rx_read_ptr[0] is provided to FH_RCSR_RPTR_ADDR(0) */
struct iwl3945_shared { struct iwl3945_shared {
__le32 tx_base_ptr[8]; __le32 tx_base_ptr[8];
__le32 rx_read_ptr[3];
} __attribute__ ((packed)); } __attribute__ ((packed));
struct iwl3945_tfd_frame_data { struct iwl3945_tfd_frame_data {
......
...@@ -974,9 +974,7 @@ static int iwl3945_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq) ...@@ -974,9 +974,7 @@ static int iwl3945_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
} }
iwl_write_direct32(priv, FH39_RCSR_RBD_BASE(0), rxq->dma_addr); iwl_write_direct32(priv, FH39_RCSR_RBD_BASE(0), rxq->dma_addr);
iwl_write_direct32(priv, FH39_RCSR_RPTR_ADDR(0), iwl_write_direct32(priv, FH39_RCSR_RPTR_ADDR(0), rxq->rb_stts_dma);
priv->shared_phys +
offsetof(struct iwl3945_shared, rx_read_ptr[0]));
iwl_write_direct32(priv, FH39_RCSR_WPTR(0), 0); iwl_write_direct32(priv, FH39_RCSR_WPTR(0), 0);
iwl_write_direct32(priv, FH39_RCSR_CONFIG(0), iwl_write_direct32(priv, FH39_RCSR_CONFIG(0),
FH39_RCSR_RX_CONFIG_REG_VAL_DMA_CHNL_EN_ENABLE | FH39_RCSR_RX_CONFIG_REG_VAL_DMA_CHNL_EN_ENABLE |
...@@ -2377,13 +2375,6 @@ int iwl3945_hw_tx_queue_init(struct iwl_priv *priv, struct iwl3945_tx_queue *txq ...@@ -2377,13 +2375,6 @@ int iwl3945_hw_tx_queue_init(struct iwl_priv *priv, struct iwl3945_tx_queue *txq
return 0; return 0;
} }
int iwl3945_hw_get_rx_read(struct iwl_priv *priv)
{
struct iwl3945_shared *shared_data = priv->shared_virt;
return le32_to_cpu(shared_data->rx_read_ptr[0]);
}
/** /**
* iwl3945_init_hw_rate_table - Initialize the hardware rate fallback table * iwl3945_init_hw_rate_table - Initialize the hardware rate fallback table
*/ */
......
...@@ -282,7 +282,6 @@ extern int iwl3945_hw_tx_queue_init(struct iwl_priv *priv, ...@@ -282,7 +282,6 @@ extern int iwl3945_hw_tx_queue_init(struct iwl_priv *priv,
struct iwl3945_tx_queue *txq); struct iwl3945_tx_queue *txq);
extern unsigned int iwl3945_hw_get_beacon_cmd(struct iwl_priv *priv, extern unsigned int iwl3945_hw_get_beacon_cmd(struct iwl_priv *priv,
struct iwl3945_frame *frame, u8 rate); struct iwl3945_frame *frame, u8 rate);
extern int iwl3945_hw_get_rx_read(struct iwl_priv *priv);
void iwl3945_hw_build_tx_cmd_rate(struct iwl_priv *priv, struct iwl_cmd *cmd, void iwl3945_hw_build_tx_cmd_rate(struct iwl_priv *priv, struct iwl_cmd *cmd,
struct ieee80211_tx_info *info, struct ieee80211_tx_info *info,
struct ieee80211_hdr *hdr, struct ieee80211_hdr *hdr,
......
...@@ -414,6 +414,7 @@ struct iwl_rb_status { ...@@ -414,6 +414,7 @@ struct iwl_rb_status {
__le16 closed_fr_num; __le16 closed_fr_num;
__le16 finished_rb_num; __le16 finished_rb_num;
__le16 finished_fr_nam; __le16 finished_fr_nam;
__le32 __unused; /* 3945 only */
} __attribute__ ((packed)); } __attribute__ ((packed));
......
...@@ -3588,7 +3588,7 @@ static void iwl3945_rx_handle(struct iwl_priv *priv) ...@@ -3588,7 +3588,7 @@ static void iwl3945_rx_handle(struct iwl_priv *priv)
/* uCode's read index (stored in shared DRAM) indicates the last Rx /* uCode's read index (stored in shared DRAM) indicates the last Rx
* buffer that the driver may process (last buffer filled by ucode). */ * buffer that the driver may process (last buffer filled by ucode). */
r = iwl3945_hw_get_rx_read(priv); r = le16_to_cpu(rxq->rb_stts->closed_rb_num) & 0x0FFF;
i = rxq->read; i = rxq->read;
if (iwl3945_rx_queue_space(rxq) > (RX_QUEUE_SIZE / 2)) if (iwl3945_rx_queue_space(rxq) > (RX_QUEUE_SIZE / 2))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment