mirror of https://gitee.com/openkylin/linux.git
iwlwifi: make iwl_tx_queue->tfds void*
Instead of having both tfds and tfds39, we can just have a void *tfds. It makes the tx_queue structure nicer, and the code cleaner. It also helps with further TX queues management code merging. Signed-off-by: Samuel Ortiz <samuel.ortiz@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
77fecfb88f
commit
59606ffa91
|
@ -730,10 +730,11 @@ int iwl3945_hw_txq_attach_buf_to_tfd(struct iwl_priv *priv,
|
||||||
{
|
{
|
||||||
int count;
|
int count;
|
||||||
struct iwl_queue *q;
|
struct iwl_queue *q;
|
||||||
struct iwl3945_tfd *tfd;
|
struct iwl3945_tfd *tfd, *tfd_tmp;
|
||||||
|
|
||||||
q = &txq->q;
|
q = &txq->q;
|
||||||
tfd = &txq->tfds39[q->write_ptr];
|
tfd_tmp = (struct iwl3945_tfd *)txq->tfds;
|
||||||
|
tfd = &tfd_tmp[q->write_ptr];
|
||||||
|
|
||||||
if (reset)
|
if (reset)
|
||||||
memset(tfd, 0, sizeof(*tfd));
|
memset(tfd, 0, sizeof(*tfd));
|
||||||
|
@ -764,7 +765,7 @@ int iwl3945_hw_txq_attach_buf_to_tfd(struct iwl_priv *priv,
|
||||||
*/
|
*/
|
||||||
void iwl3945_hw_txq_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq)
|
void iwl3945_hw_txq_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq)
|
||||||
{
|
{
|
||||||
struct iwl3945_tfd *tfd_tmp = (struct iwl3945_tfd *)&txq->tfds39[0];
|
struct iwl3945_tfd *tfd_tmp = (struct iwl3945_tfd *)txq->tfds;
|
||||||
struct iwl3945_tfd *tfd = &tfd_tmp[txq->q.read_ptr];
|
struct iwl3945_tfd *tfd = &tfd_tmp[txq->q.read_ptr];
|
||||||
struct pci_dev *dev = priv->pci_dev;
|
struct pci_dev *dev = priv->pci_dev;
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -520,7 +520,7 @@ static inline u8 iwl_tfd_get_num_tbs(struct iwl_tfd *tfd)
|
||||||
*/
|
*/
|
||||||
void iwl_hw_txq_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq)
|
void iwl_hw_txq_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq)
|
||||||
{
|
{
|
||||||
struct iwl_tfd *tfd_tmp = (struct iwl_tfd *)&txq->tfds[0];
|
struct iwl_tfd *tfd_tmp = (struct iwl_tfd *)txq->tfds;
|
||||||
struct iwl_tfd *tfd;
|
struct iwl_tfd *tfd;
|
||||||
struct pci_dev *dev = priv->pci_dev;
|
struct pci_dev *dev = priv->pci_dev;
|
||||||
int index = txq->q.read_ptr;
|
int index = txq->q.read_ptr;
|
||||||
|
@ -563,11 +563,12 @@ int iwl_hw_txq_attach_buf_to_tfd(struct iwl_priv *priv,
|
||||||
u8 reset, u8 pad)
|
u8 reset, u8 pad)
|
||||||
{
|
{
|
||||||
struct iwl_queue *q;
|
struct iwl_queue *q;
|
||||||
struct iwl_tfd *tfd;
|
struct iwl_tfd *tfd, *tfd_tmp;
|
||||||
u32 num_tbs;
|
u32 num_tbs;
|
||||||
|
|
||||||
q = &txq->q;
|
q = &txq->q;
|
||||||
tfd = &txq->tfds[q->write_ptr];
|
tfd_tmp = (struct iwl_tfd *)txq->tfds;
|
||||||
|
tfd = &tfd_tmp[q->write_ptr];
|
||||||
|
|
||||||
if (reset)
|
if (reset)
|
||||||
memset(tfd, 0, sizeof(*tfd));
|
memset(tfd, 0, sizeof(*tfd));
|
||||||
|
|
|
@ -149,8 +149,7 @@ struct iwl_tx_info {
|
||||||
|
|
||||||
struct iwl_tx_queue {
|
struct iwl_tx_queue {
|
||||||
struct iwl_queue q;
|
struct iwl_queue q;
|
||||||
struct iwl_tfd *tfds;
|
void *tfds;
|
||||||
struct iwl3945_tfd *tfds39;
|
|
||||||
struct iwl_cmd *cmd[TFD_TX_CMD_SLOTS];
|
struct iwl_cmd *cmd[TFD_TX_CMD_SLOTS];
|
||||||
struct iwl_tx_info *txb;
|
struct iwl_tx_info *txb;
|
||||||
u8 need_update;
|
u8 need_update;
|
||||||
|
|
|
@ -295,12 +295,12 @@ static int iwl_tx_queue_alloc(struct iwl_priv *priv,
|
||||||
/* Circular buffer of transmit frame descriptors (TFDs),
|
/* Circular buffer of transmit frame descriptors (TFDs),
|
||||||
* shared with device */
|
* shared with device */
|
||||||
txq->tfds = pci_alloc_consistent(dev,
|
txq->tfds = pci_alloc_consistent(dev,
|
||||||
sizeof(txq->tfds[0]) * TFD_QUEUE_SIZE_MAX,
|
sizeof(struct iwl_tfd) * TFD_QUEUE_SIZE_MAX,
|
||||||
&txq->q.dma_addr);
|
&txq->q.dma_addr);
|
||||||
|
|
||||||
if (!txq->tfds) {
|
if (!txq->tfds) {
|
||||||
IWL_ERR(priv, "pci_alloc_consistent(%zd) failed\n",
|
IWL_ERR(priv, "pci_alloc_consistent(%zd) failed\n",
|
||||||
sizeof(txq->tfds[0]) * TFD_QUEUE_SIZE_MAX);
|
sizeof(struct iwl_tfd) * TFD_QUEUE_SIZE_MAX);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
txq->q.id = id;
|
txq->q.id = id;
|
||||||
|
|
|
@ -172,13 +172,13 @@ static int iwl3945_tx_queue_alloc(struct iwl_priv *priv,
|
||||||
|
|
||||||
/* Circular buffer of transmit frame descriptors (TFDs),
|
/* Circular buffer of transmit frame descriptors (TFDs),
|
||||||
* shared with device */
|
* shared with device */
|
||||||
txq->tfds39 = pci_alloc_consistent(dev,
|
txq->tfds = pci_alloc_consistent(dev,
|
||||||
sizeof(txq->tfds39[0]) * TFD_QUEUE_SIZE_MAX,
|
sizeof(struct iwl3945_tfd) * TFD_QUEUE_SIZE_MAX,
|
||||||
&txq->q.dma_addr);
|
&txq->q.dma_addr);
|
||||||
|
|
||||||
if (!txq->tfds39) {
|
if (!txq->tfds) {
|
||||||
IWL_ERR(priv, "pci_alloc_consistent(%zd) failed\n",
|
IWL_ERR(priv, "pci_alloc_consistent(%zd) failed\n",
|
||||||
sizeof(txq->tfds39[0]) * TFD_QUEUE_SIZE_MAX);
|
sizeof(struct iwl3945_tfd) * TFD_QUEUE_SIZE_MAX);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
txq->q.id = id;
|
txq->q.id = id;
|
||||||
|
@ -287,7 +287,7 @@ void iwl3945_tx_queue_free(struct iwl_priv *priv, struct iwl_tx_queue *txq)
|
||||||
/* De-alloc circular buffer of TFDs */
|
/* De-alloc circular buffer of TFDs */
|
||||||
if (txq->q.n_bd)
|
if (txq->q.n_bd)
|
||||||
pci_free_consistent(dev, sizeof(struct iwl3945_tfd) *
|
pci_free_consistent(dev, sizeof(struct iwl3945_tfd) *
|
||||||
txq->q.n_bd, txq->tfds39, txq->q.dma_addr);
|
txq->q.n_bd, txq->tfds, txq->q.dma_addr);
|
||||||
|
|
||||||
/* De-alloc array of per-TFD driver data */
|
/* De-alloc array of per-TFD driver data */
|
||||||
kfree(txq->txb);
|
kfree(txq->txb);
|
||||||
|
|
Loading…
Reference in New Issue