This is the last one.
Obtained from: Linux (Dual BSD/GPL driver)
Sponsored by: EMC / Isilon Storage Division
static void ntb_rx_copy_task(struct ntb_transport_qp *qp,
struct ntb_queue_entry *entry, void *offset);
static void ntb_complete_rxc(void *arg, int pending);
-static void ntb_transport_doorbell_callback(void *data, int vector);
+static void ntb_transport_doorbell_callback(void *data, uint32_t vector);
static void ntb_transport_event_callback(void *data);
static void ntb_transport_link_work(void *arg);
static int ntb_set_mw(struct ntb_transport_ctx *, int num_mw, unsigned size);
}
static void
-ntb_transport_doorbell_callback(void *data, int vector)
+ntb_transport_doorbell_callback(void *data, uint32_t vector)
{
struct ntb_transport_ctx *nt = data;
struct ntb_transport_qp *qp;
return (ntb->db_valid_mask);
}
+/*
+ * ntb_db_vector_mask() - get a mask of doorbell bits serviced by a vector
+ * @ntb: NTB device context
+ * @vector: Doorbell vector number
+ *
+ * Each interrupt vector may have a different number or arrangement of bits.
+ *
+ * Return: A mask of doorbell bits serviced by a vector.
+ */
+uint64_t
+ntb_db_vector_mask(struct ntb_softc *ntb, uint32_t vector)
+{
+
+ if (vector > ntb->db_vec_count)
+ return (0);
+ return (ntb->db_valid_mask & ntb_vec_mask(ntb, vector));
+}
+
/**
* ntb_link_is_up() - get the current ntb link state
* @ntb: NTB device context
SYSCTL_DECL(_hw_ntb);
-typedef void (*ntb_db_callback)(void *data, int vector);
+typedef void (*ntb_db_callback)(void *data, uint32_t vector);
typedef void (*ntb_event_callback)(void *data);
struct ntb_ctx_ops {
uint32_t *val);
uint64_t ntb_db_valid_mask(struct ntb_softc *);
+uint64_t ntb_db_vector_mask(struct ntb_softc *, uint32_t vector);
bus_addr_t ntb_get_peer_db_addr(struct ntb_softc *, vm_size_t *sz_out);
void ntb_db_clear(struct ntb_softc *, uint64_t bits);
void ntb_db_clear_mask(struct ntb_softc *, uint64_t bits);
uint64_t ntb_db_read(struct ntb_softc *);
void ntb_db_set_mask(struct ntb_softc *, uint64_t bits);
-uint64_t ntb_db_vector_mask(struct ntb_softc *, int vector);
void ntb_peer_db_set(struct ntb_softc *, uint64_t bits);
/* Hardware owns the low 32 bits of features. */