From owner-svn-src-all@freebsd.org Mon Oct 19 18:06:37 2015 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 439A4A19432; Mon, 19 Oct 2015 18:06:37 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1D3A2186A; Mon, 19 Oct 2015 18:06:37 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t9JI6aI7085343; Mon, 19 Oct 2015 18:06:36 GMT (envelope-from cem@FreeBSD.org) Received: (from cem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t9JI6ZwX085340; Mon, 19 Oct 2015 18:06:35 GMT (envelope-from cem@FreeBSD.org) Message-Id: <201510191806.t9JI6ZwX085340@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cem set sender to cem@FreeBSD.org using -f From: "Conrad E. Meyer" Date: Mon, 19 Oct 2015 18:06:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r289598 - in head/sys/dev/ntb: if_ntb ntb_hw X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Oct 2015 18:06:37 -0000 Author: cem Date: Mon Oct 19 18:06:35 2015 New Revision: 289598 URL: https://svnweb.freebsd.org/changeset/base/289598 Log: NTB: Add ntb_db_vector_mask() missed in r289546 This is the last one. Obtained from: Linux (Dual BSD/GPL driver) Sponsored by: EMC / Isilon Storage Division Modified: head/sys/dev/ntb/if_ntb/if_ntb.c head/sys/dev/ntb/ntb_hw/ntb_hw.c head/sys/dev/ntb/ntb_hw/ntb_hw.h Modified: head/sys/dev/ntb/if_ntb/if_ntb.c ============================================================================== --- head/sys/dev/ntb/if_ntb/if_ntb.c Mon Oct 19 17:53:20 2015 (r289597) +++ head/sys/dev/ntb/if_ntb/if_ntb.c Mon Oct 19 18:06:35 2015 (r289598) @@ -290,7 +290,7 @@ static int ntb_process_rxc(struct ntb_tr 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); @@ -1122,7 +1122,7 @@ ntb_complete_rxc(void *arg, int pending) } 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; Modified: head/sys/dev/ntb/ntb_hw/ntb_hw.c ============================================================================== --- head/sys/dev/ntb/ntb_hw/ntb_hw.c Mon Oct 19 17:53:20 2015 (r289597) +++ head/sys/dev/ntb/ntb_hw/ntb_hw.c Mon Oct 19 18:06:35 2015 (r289598) @@ -2207,6 +2207,24 @@ ntb_db_valid_mask(struct ntb_softc *ntb) 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 Modified: head/sys/dev/ntb/ntb_hw/ntb_hw.h ============================================================================== --- head/sys/dev/ntb/ntb_hw/ntb_hw.h Mon Oct 19 17:53:20 2015 (r289597) +++ head/sys/dev/ntb/ntb_hw/ntb_hw.h Mon Oct 19 18:06:35 2015 (r289598) @@ -56,7 +56,7 @@ enum ntb_width { 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 { @@ -90,13 +90,13 @@ int ntb_peer_spad_read(struct ntb_softc 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. */