>--- a/drivers/infiniband/hw/nes/nes_hw.c
>+++ b/drivers/infiniband/hw/nes/nes_hw.c
>@@ -1232,6 +1232,12 @@ static void nes_replenish_nic_rq(struct nes_vnic
>*nesvnic)
>       nesnic = &nesvnic->nic;
>       nesdev = nesvnic->nesdev;
>       spin_lock_irqsave(&nesnic->rq_lock, flags);
>+      if (nesnic->replenishing_rq !=0) {
>+              spin_unlock_irqrestore(&nesnic->rq_lock, flags);
>+              return;
>+      }
>+      nesnic->replenishing_rq = 1;
>+      spin_unlock_irqrestore(&nesnic->rq_lock, flags);
>       do {
>               skb = dev_alloc_skb(nesvnic->max_frame_size);
>               if (skb) {
>@@ -1275,7 +1281,7 @@ static void nes_replenish_nic_rq(struct nes_vnic
>*nesvnic)
>       if (rx_wqes_posted) {
>               nes_write32(nesdev->regs+NES_WQE_ALLOC, (rx_wqes_posted << 24) |
>nesnic->qp_id);
>       }
>-      spin_unlock_irqrestore(&nesnic->rq_lock, flags);
>+      nesnic->replenishing_rq = 0;

It seems racy that this is set under lock, but cleared without the lock held.
How do you ensure that the nic_rq will always be replenished?

>@@ -2314,11 +2313,11 @@ void nes_nic_ce_handler(struct nes_device *nesdev,
>struct nes_hw_nic_cq *cq)
>                               cqe_count = 0;
>                       }
> #ifdef NES_NAPI

Is #ifdef napi sprinkled throughout the code common for most drivers?  Is there
a better way to handle this?  (Is this OFED only for backports, or for
upstream?)

>@@ -361,6 +361,7 @@ enum nes_cqe_opcode_bits {
>       NES_CQE_VALID = (1<<31),
> };
>
>+
> enum nes_cqe_word_idx {
>       NES_CQE_PAYLOAD_LENGTH_IDX = 0,
>       NES_CQE_COMP_COMP_CTX_LOW_IDX = 2,
>@@ -810,6 +811,7 @@ struct nes_hw_aeqe {
>       __le32 aeqe_words[4];
> };
>
>+

couple extra blank lines were added

> struct nes_cqp_request {
>       wait_queue_head_t     waitq;
>       struct nes_hw_cqp_wqe cqp_wqe;
>@@ -857,6 +859,8 @@ struct nes_hw_nic {
>       u16 rq_head;
>       u16 rq_tail;
>       u16 rq_size;
>+      u8 replenishing_rq;
>+      u8 reserved;

Why is reserved added?

- Sean
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to