On Wed, 18 Dec 2024 17:25:53 +0800
Junlong Wang <wang.junlo...@zte.com.cn> wrote:

> +static void
> +zxdh_notify_queue(struct zxdh_hw *hw, struct zxdh_virtqueue *vq)
> +{
> +     uint32_t notify_data = 0;
> +
> +     if (!zxdh_pci_with_feature(hw, ZXDH_F_NOTIFICATION_DATA)) {
> +             rte_write16(vq->vq_queue_index, vq->notify_addr);
> +             return;
> +     }
> +
> +     if (zxdh_pci_with_feature(hw, ZXDH_F_RING_PACKED)) {
> +             notify_data = ((uint32_t)(!!(vq->vq_packed.cached_flags &
> +                                             
> ZXDH_VRING_PACKED_DESC_F_AVAIL)) << 31) |
> +                                             ((uint32_t)vq->vq_avail_idx << 
> 16) |
> +                                             vq->vq_queue_index;
> +     } else {
> +             notify_data = ((uint32_t)vq->vq_avail_idx << 16) | 
> vq->vq_queue_index;
> +     }
> +     PMD_DRV_LOG(DEBUG, "queue:%d notify_data 0x%x notify_addr 0x%p",
> +                              vq->vq_queue_index, notify_data, 
> vq->notify_addr);
> +     rte_write32(notify_data, vq->notify_addr);
> +}

Looks like the notify_data part could be simplified to:
        notify_data = ((uint32_t)vq->vq_avail_idx << 16) | vq->vq_queue_index;
        if (zxdh_pci_with_feature(hw, ZXDH_F_RING_PACKED) && 
(vq->vq_packed.cached_flags & ZXDH_VRING_PACKED_DESC_F_AVAIL)
                notify_data |= RTE_BIT32(31);

Reply via email to