static int enic_wq_service(struct vnic_dev *vdev, struct cq_desc *cq_desc, __rte_unused u8 type, u16 q_number, u16 completed_index, void *opaque) { struct enic *enic = vnic_dev_priv(vdev); vnic_wq_service(&enic->wq[q_number], cq_desc, completed_index, enic_wq_free_buf, opaque); return 0; }
static int fnic_wq_cmpl_handler_cont(struct vnic_dev *vdev, struct cq_desc *cq_desc, u8 type, u16 q_number, u16 completed_index, void *opaque) { struct fnic *fnic = vnic_dev_priv(vdev); unsigned long flags; spin_lock_irqsave(&fnic->wq_lock[q_number], flags); vnic_wq_service(&fnic->wq[q_number], cq_desc, completed_index, fnic_wq_complete_frame_send, NULL); spin_unlock_irqrestore(&fnic->wq_lock[q_number], flags); return 0; }
static int enic_wq_service(struct vnic_dev *vdev, struct cq_desc *cq_desc, u8 type, u16 q_number, u16 completed_index, void *opaque) { struct enic *enic = vnic_dev_priv(vdev); spin_lock(&enic->wq_lock[q_number]); vnic_wq_service(&enic->wq[q_number], cq_desc, completed_index, enic_wq_free_buf, opaque); if (netif_queue_stopped(enic->netdev) && vnic_wq_desc_avail(&enic->wq[q_number]) >= MAX_SKB_FRAGS + 1) netif_wake_queue(enic->netdev); spin_unlock(&enic->wq_lock[q_number]); return 0; }