Commit 339dcf7f authored by Shannon Nelson's avatar Shannon Nelson Committed by David S. Miller

ionic: clean up desc_info and cq_info structs

Remove some unnecessary struct fields and related code.
Co-developed-by: default avatarNeel Patel <neel@pensando.io>
Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0c1d175b
...@@ -467,9 +467,7 @@ int ionic_cq_init(struct ionic_lif *lif, struct ionic_cq *cq, ...@@ -467,9 +467,7 @@ int ionic_cq_init(struct ionic_lif *lif, struct ionic_cq *cq,
struct ionic_intr_info *intr, struct ionic_intr_info *intr,
unsigned int num_descs, size_t desc_size) unsigned int num_descs, size_t desc_size)
{ {
struct ionic_cq_info *cur;
unsigned int ring_size; unsigned int ring_size;
unsigned int i;
if (desc_size == 0 || !is_power_of_2(num_descs)) if (desc_size == 0 || !is_power_of_2(num_descs))
return -EINVAL; return -EINVAL;
...@@ -485,19 +483,6 @@ int ionic_cq_init(struct ionic_lif *lif, struct ionic_cq *cq, ...@@ -485,19 +483,6 @@ int ionic_cq_init(struct ionic_lif *lif, struct ionic_cq *cq,
cq->tail_idx = 0; cq->tail_idx = 0;
cq->done_color = 1; cq->done_color = 1;
cur = cq->info;
for (i = 0; i < num_descs; i++) {
if (i + 1 == num_descs) {
cur->next = cq->info;
cur->last = true;
} else {
cur->next = cur + 1;
}
cur->index = i;
cur++;
}
return 0; return 0;
} }
...@@ -551,9 +536,7 @@ int ionic_q_init(struct ionic_lif *lif, struct ionic_dev *idev, ...@@ -551,9 +536,7 @@ int ionic_q_init(struct ionic_lif *lif, struct ionic_dev *idev,
unsigned int num_descs, size_t desc_size, unsigned int num_descs, size_t desc_size,
size_t sg_desc_size, unsigned int pid) size_t sg_desc_size, unsigned int pid)
{ {
struct ionic_desc_info *cur;
unsigned int ring_size; unsigned int ring_size;
unsigned int i;
if (desc_size == 0 || !is_power_of_2(num_descs)) if (desc_size == 0 || !is_power_of_2(num_descs))
return -EINVAL; return -EINVAL;
...@@ -574,18 +557,6 @@ int ionic_q_init(struct ionic_lif *lif, struct ionic_dev *idev, ...@@ -574,18 +557,6 @@ int ionic_q_init(struct ionic_lif *lif, struct ionic_dev *idev,
snprintf(q->name, sizeof(q->name), "L%d-%s%u", lif->index, name, index); snprintf(q->name, sizeof(q->name), "L%d-%s%u", lif->index, name, index);
cur = q->info;
for (i = 0; i < num_descs; i++) {
if (i + 1 == num_descs)
cur->next = q->info;
else
cur->next = cur + 1;
cur->index = i;
cur->left = num_descs - i;
cur++;
}
return 0; return 0;
} }
...@@ -652,6 +623,7 @@ void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info, ...@@ -652,6 +623,7 @@ void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info,
struct ionic_desc_info *desc_info; struct ionic_desc_info *desc_info;
ionic_desc_cb cb; ionic_desc_cb cb;
void *cb_arg; void *cb_arg;
u16 index;
/* check for empty queue */ /* check for empty queue */
if (q->tail_idx == q->head_idx) if (q->tail_idx == q->head_idx)
...@@ -665,6 +637,7 @@ void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info, ...@@ -665,6 +637,7 @@ void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info,
do { do {
desc_info = &q->info[q->tail_idx]; desc_info = &q->info[q->tail_idx];
index = q->tail_idx;
q->tail_idx = (q->tail_idx + 1) & (q->num_descs - 1); q->tail_idx = (q->tail_idx + 1) & (q->num_descs - 1);
cb = desc_info->cb; cb = desc_info->cb;
...@@ -675,5 +648,5 @@ void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info, ...@@ -675,5 +648,5 @@ void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info,
if (cb) if (cb)
cb(q, desc_info, cq_info, cb_arg); cb(q, desc_info, cq_info, cb_arg);
} while (desc_info->index != stop_index); } while (index != stop_index);
} }
...@@ -156,9 +156,6 @@ struct ionic_cq_info { ...@@ -156,9 +156,6 @@ struct ionic_cq_info {
struct ionic_admin_comp *admincq; struct ionic_admin_comp *admincq;
struct ionic_notifyq_event *notifyq; struct ionic_notifyq_event *notifyq;
}; };
struct ionic_cq_info *next;
unsigned int index;
bool last;
}; };
struct ionic_queue; struct ionic_queue;
...@@ -186,9 +183,6 @@ struct ionic_desc_info { ...@@ -186,9 +183,6 @@ struct ionic_desc_info {
struct ionic_txq_sg_desc *txq_sg_desc; struct ionic_txq_sg_desc *txq_sg_desc;
struct ionic_rxq_sg_desc *rxq_sgl_desc; struct ionic_rxq_sg_desc *rxq_sgl_desc;
}; };
struct ionic_desc_info *next;
unsigned int index;
unsigned int left;
unsigned int npages; unsigned int npages;
struct ionic_page_info pages[IONIC_RX_MAX_SG_ELEMS + 1]; struct ionic_page_info pages[IONIC_RX_MAX_SG_ELEMS + 1];
ionic_desc_cb cb; ionic_desc_cb cb;
......
...@@ -238,10 +238,10 @@ static bool ionic_rx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info) ...@@ -238,10 +238,10 @@ static bool ionic_rx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info)
if (q->tail_idx == q->head_idx) if (q->tail_idx == q->head_idx)
return false; return false;
desc_info = &q->info[q->tail_idx]; if (q->tail_idx != le16_to_cpu(comp->comp_index))
if (desc_info->index != le16_to_cpu(comp->comp_index))
return false; return false;
desc_info = &q->info[q->tail_idx];
q->tail_idx = (q->tail_idx + 1) & (q->num_descs - 1); q->tail_idx = (q->tail_idx + 1) & (q->num_descs - 1);
/* clean the related q entry, only one per qc completion */ /* clean the related q entry, only one per qc completion */
...@@ -635,6 +635,7 @@ static bool ionic_tx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info) ...@@ -635,6 +635,7 @@ static bool ionic_tx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info)
struct ionic_txq_comp *comp = cq_info->cq_desc; struct ionic_txq_comp *comp = cq_info->cq_desc;
struct ionic_queue *q = cq->bound_q; struct ionic_queue *q = cq->bound_q;
struct ionic_desc_info *desc_info; struct ionic_desc_info *desc_info;
u16 index;
if (!color_match(comp->color, cq->done_color)) if (!color_match(comp->color, cq->done_color))
return false; return false;
...@@ -644,11 +645,12 @@ static bool ionic_tx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info) ...@@ -644,11 +645,12 @@ static bool ionic_tx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info)
*/ */
do { do {
desc_info = &q->info[q->tail_idx]; desc_info = &q->info[q->tail_idx];
index = q->tail_idx;
q->tail_idx = (q->tail_idx + 1) & (q->num_descs - 1); q->tail_idx = (q->tail_idx + 1) & (q->num_descs - 1);
ionic_tx_clean(q, desc_info, cq_info, desc_info->cb_arg); ionic_tx_clean(q, desc_info, cq_info, desc_info->cb_arg);
desc_info->cb = NULL; desc_info->cb = NULL;
desc_info->cb_arg = NULL; desc_info->cb_arg = NULL;
} while (desc_info->index != le16_to_cpu(comp->comp_index)); } while (index != le16_to_cpu(comp->comp_index));
return true; return true;
} }
......
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