enic: assign affinity hint to interrupts
[cascardo/linux.git] / drivers / net / ethernet / cisco / enic / enic.h
index 6401ba9..1671fa3 100644 (file)
@@ -50,6 +50,7 @@ struct enic_msix_entry {
        char devname[IFNAMSIZ];
        irqreturn_t (*isr)(int, void *);
        void *devid;
+       cpumask_var_t affinity_mask;
 };
 
 /* Store only the lower range.  Higher range is given by fw. */
@@ -263,6 +264,32 @@ static inline unsigned int enic_msix_notify_intr(struct enic *enic)
        return enic->rq_count + enic->wq_count + 1;
 }
 
+static inline bool enic_is_err_intr(struct enic *enic, int intr)
+{
+       switch (vnic_dev_get_intr_mode(enic->vdev)) {
+       case VNIC_DEV_INTR_MODE_INTX:
+               return intr == enic_legacy_err_intr();
+       case VNIC_DEV_INTR_MODE_MSIX:
+               return intr == enic_msix_err_intr(enic);
+       case VNIC_DEV_INTR_MODE_MSI:
+       default:
+               return false;
+       }
+}
+
+static inline bool enic_is_notify_intr(struct enic *enic, int intr)
+{
+       switch (vnic_dev_get_intr_mode(enic->vdev)) {
+       case VNIC_DEV_INTR_MODE_INTX:
+               return intr == enic_legacy_notify_intr();
+       case VNIC_DEV_INTR_MODE_MSIX:
+               return intr == enic_msix_notify_intr(enic);
+       case VNIC_DEV_INTR_MODE_MSI:
+       default:
+               return false;
+       }
+}
+
 static inline int enic_dma_map_check(struct enic *enic, dma_addr_t dma_addr)
 {
        if (unlikely(pci_dma_mapping_error(enic->pdev, dma_addr))) {