~ubuntu-branches/ubuntu/saucy/linux-n900/saucy

« back to all changes in this revision

Viewing changes to drivers/scsi/bfa/include/fcs/bfa_fcs_rport.h

  • Committer: Bazaar Package Importer
  • Author(s): Mathieu Poirier
  • Date: 2011-02-18 09:43:31 UTC
  • Revision ID: james.westby@ubuntu.com-20110218094331-eyubsja4f9k0yhmq
Tags: 2.6.35-1.1
Initial release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
18
#ifndef __BFA_FCS_RPORT_H__
 
19
#define __BFA_FCS_RPORT_H__
 
20
 
 
21
#include <defs/bfa_defs_status.h>
 
22
#include <cs/bfa_q.h>
 
23
#include <fcs/bfa_fcs.h>
 
24
#include <defs/bfa_defs_rport.h>
 
25
 
 
26
#define BFA_FCS_RPORT_DEF_DEL_TIMEOUT   90      /* in secs */
 
27
/*
 
28
 * forward declarations
 
29
 */
 
30
struct bfad_rport_s;
 
31
 
 
32
struct bfa_fcs_itnim_s;
 
33
struct bfa_fcs_tin_s;
 
34
struct bfa_fcs_iprp_s;
 
35
 
 
36
/* Rport Features (RPF) */
 
37
struct bfa_fcs_rpf_s {
 
38
        bfa_sm_t               sm;      /*  state machine */
 
39
        struct bfa_fcs_rport_s *rport;  /*  parent rport */
 
40
        struct bfa_timer_s      timer;  /*  general purpose timer */
 
41
        struct bfa_fcxp_s       *fcxp;  /*  FCXP needed for discarding */
 
42
        struct bfa_fcxp_wqe_s   fcxp_wqe;       /*  fcxp wait queue element */
 
43
        int                     rpsc_retries;   /*  max RPSC retry attempts */
 
44
        enum bfa_pport_speed    rpsc_speed;     /* Current Speed from RPSC.
 
45
                                                 * O if RPSC fails */
 
46
        enum bfa_pport_speed    assigned_speed; /* Speed assigned by the user.
 
47
                                                 * will be used if RPSC is not
 
48
                                                 * supported by the rport */
 
49
};
 
50
 
 
51
struct bfa_fcs_rport_s {
 
52
        struct list_head         qe;    /*  used by port/vport */
 
53
        struct bfa_fcs_port_s *port;    /*  parent FCS port */
 
54
        struct bfa_fcs_s      *fcs;     /*  fcs instance */
 
55
        struct bfad_rport_s   *rp_drv;  /*  driver peer instance */
 
56
        u32        pid; /*  port ID of rport */
 
57
        u16        maxfrsize;   /*  maximum frame size */
 
58
        u16        reply_oxid;  /*  OX_ID of inbound requests */
 
59
        enum fc_cos        fc_cos;      /*  FC classes of service supp */
 
60
        bfa_boolean_t   cisc;   /*  CISC capable device */
 
61
        wwn_t           pwwn;   /*  port wwn of rport */
 
62
        wwn_t           nwwn;   /*  node wwn of rport */
 
63
        struct bfa_rport_symname_s psym_name; /*  port symbolic name  */
 
64
        bfa_sm_t        sm;             /*  state machine */
 
65
        struct bfa_timer_s timer;       /*  general purpose timer */
 
66
        struct bfa_fcs_itnim_s *itnim;  /*  ITN initiator mode role */
 
67
        struct bfa_fcs_tin_s *tin;      /*  ITN initiator mode role */
 
68
        struct bfa_fcs_iprp_s *iprp;    /*  IP/FC role */
 
69
        struct bfa_rport_s *bfa_rport;  /*  BFA Rport */
 
70
        struct bfa_fcxp_s *fcxp;        /*  FCXP needed for discarding */
 
71
        int             plogi_retries;  /*  max plogi retry attempts */
 
72
        int             ns_retries;     /*  max NS query retry attempts */
 
73
        struct bfa_fcxp_wqe_s   fcxp_wqe; /*  fcxp wait queue element */
 
74
        struct bfa_rport_stats_s stats; /*  rport stats */
 
75
        enum bfa_rport_function scsi_function;  /*  Initiator/Target */
 
76
        struct bfa_fcs_rpf_s rpf;       /* Rport features module */
 
77
};
 
78
 
 
79
static inline struct bfa_rport_s *
 
80
bfa_fcs_rport_get_halrport(struct bfa_fcs_rport_s *rport)
 
81
{
 
82
        return rport->bfa_rport;
 
83
}
 
84
 
 
85
/**
 
86
 * bfa fcs rport API functions
 
87
 */
 
88
bfa_status_t bfa_fcs_rport_add(struct bfa_fcs_port_s *port, wwn_t *pwwn,
 
89
                        struct bfa_fcs_rport_s *rport,
 
90
                        struct bfad_rport_s *rport_drv);
 
91
bfa_status_t bfa_fcs_rport_remove(struct bfa_fcs_rport_s *rport);
 
92
void bfa_fcs_rport_get_attr(struct bfa_fcs_rport_s *rport,
 
93
                        struct bfa_rport_attr_s *attr);
 
94
void bfa_fcs_rport_get_stats(struct bfa_fcs_rport_s *rport,
 
95
                        struct bfa_rport_stats_s *stats);
 
96
void bfa_fcs_rport_clear_stats(struct bfa_fcs_rport_s *rport);
 
97
struct bfa_fcs_rport_s *bfa_fcs_rport_lookup(struct bfa_fcs_port_s *port,
 
98
                        wwn_t rpwwn);
 
99
struct bfa_fcs_rport_s *bfa_fcs_rport_lookup_by_nwwn(
 
100
                        struct bfa_fcs_port_s *port, wwn_t rnwwn);
 
101
void bfa_fcs_rport_set_del_timeout(u8 rport_tmo);
 
102
void bfa_fcs_rport_set_speed(struct bfa_fcs_rport_s *rport,
 
103
                        enum bfa_pport_speed speed);
 
104
#endif /* __BFA_FCS_RPORT_H__ */