Merge branch 'net-2.6' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[pandora-kernel.git] / drivers / scsi / bfa / bfa_uf_priv.h
1 /*
2  * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
3  * All rights reserved
4  * www.brocade.com
5  *
6  * Linux driver for Brocade Fibre Channel Host Bus Adapter.
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License (GPL) Version 2 as
10  * published by the Free Software Foundation
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * General Public License for more details.
16  */
17 #ifndef __BFA_UF_PRIV_H__
18 #define __BFA_UF_PRIV_H__
19
20 #include <cs/bfa_sm.h>
21 #include <bfa_svc.h>
22 #include <bfi/bfi_uf.h>
23
24 #define BFA_UF_MIN      (4)
25
26 struct bfa_uf_mod_s {
27         struct bfa_s *bfa;              /*  back pointer to BFA */
28         struct bfa_uf_s *uf_list;       /*  array of UFs */
29         u16     num_ufs;        /*  num unsolicited rx frames */
30         struct list_head        uf_free_q;      /*  free UFs */
31         struct list_head        uf_posted_q;    /*  UFs posted to IOC */
32         struct bfa_uf_buf_s *uf_pbs_kva;        /*  list UF bufs request pld */
33         u64     uf_pbs_pa;      /*  phy addr for UF bufs */
34         struct bfi_uf_buf_post_s *uf_buf_posts;
35                                         /*  pre-built UF post msgs */
36         bfa_cb_uf_recv_t ufrecv;        /*  uf recv handler function */
37         void            *cbarg;         /*  uf receive handler arg */
38 };
39
40 #define BFA_UF_MOD(__bfa)       (&(__bfa)->modules.uf_mod)
41
42 #define ufm_pbs_pa(_ufmod, _uftag)      \
43         ((_ufmod)->uf_pbs_pa + sizeof(struct bfa_uf_buf_s) * (_uftag))
44
45 void    bfa_uf_isr(struct bfa_s *bfa, struct bfi_msg_s *msg);
46
47 #endif /* __BFA_UF_PRIV_H__ */