From: FUJITA Tomonori <tomof@acm.org>
To: vasu.dev@intel.com
Cc: fujita.tomonori@lab.ntt.co.jp, stefanr@s5r6.in-berlin.de,
robert.w.love@intel.com, tomof@acm.org, yi.zou@intel.com,
christopher.leech@intel.com,
linux-scsi@vger.kernel.orgfujita.tomonori@lab.ntt.co.jp
Subject: RE: Open-FCoE on linux-scsi
Date: Sun, 6 Jan 2008 13:27:05 +0900 [thread overview]
Message-ID: <20080106133002J.tomof@acm.org> (raw)
In-Reply-To: <08FE5CC30C9A3F41BF819A502CF7BF6E029FF0B8@fmsmsx411.amr.corp.intel.com>
On Fri, 4 Jan 2008 14:07:28 -0800
"Dev, Vasu" <vasu.dev@intel.com> wrote:
>
> >>
> >> _If_ there will indeed be dedicated FCoE HBAs in the future, the
> >> following stack could exist in addition to the one above:
> >>
> >> - SCSI core,
> >> scsi_transport_fc
> >> - FCoE HBA driver(s)
> >
> >Agreed. My FCoE initiator design would be something like:
> >
> >scsi-ml
> >fcoe initiator driver
> >libfcoe
> >fc_transport_class (inclusing fcoe support)
> >
> >And FCoE HBA LLDs work like:
> >
> >scsi-ml
> >FCoE HBA LLDs (some of them might use libfcoe)
> >fc_transport_class (inclusing fcoe support)
> >
> >
> >That's the way that other transport classes do, I think. For me, the
> >current code tries to invent another fc class. For example, the code
> >newly defines:
> >
> >struct fc_remote_port {
> > struct list_head rp_list; /* list under fc_virt_fab */
> > struct fc_virt_fab *rp_vf; /* virtual fabric */
> > fc_wwn_t rp_port_wwn; /* remote port world wide name
> */
> > fc_wwn_t rp_node_wwn; /* remote node world wide name
> */
> > fc_fid_t rp_fid; /* F_ID for remote_port if known
> */
> > atomic_t rp_refcnt; /* reference count */
> > u_int rp_disc_ver; /* discovery instance */
> > u_int rp_io_limit; /* limit on outstanding I/Os */
> > u_int rp_io_count; /* count of outstanding I/Os */
> > u_int rp_fcp_parm; /* remote FCP service parameters
> */
> > u_int rp_local_fcp_parm; /* local FCP service
> parameters */
> > void *rp_client_priv; /* HBA driver private data */
> > void *rp_fcs_priv; /* FCS driver private data */
> > struct sa_event_list *rp_events; /* event list */
> > struct sa_hash_link rp_fid_hash_link;
> > struct sa_hash_link rp_wwpn_hash_link;
> >
> > /*
> > * For now, there's just one session per remote port.
> > * Eventually, for multipathing, there will be more.
> > */
> > u_char rp_sess_ready; /* session ready to be used */
> > struct fc_sess *rp_sess; /* session */
> > void *dns_lookup; /* private dns lookup */
> > int dns_lookup_count; /* number of attempted lookups
> */
> >};
> >
> >/*
> > * remote ports are created and looked up by WWPN.
> > */
> >struct fc_remote_port *fc_remote_port_create(struct fc_virt_fab *,
> fc_wwn_t);
> >struct fc_remote_port *fc_remote_port_lookup(struct fc_virt_fab *,
> > fc_fid_t, fc_wwn_t wwpn);
> >struct fc_remote_port *fc_remote_port_lookup_create(struct fc_virt_fab
> *,
> > fc_fid_t,
> > fc_wwn_t wwpn,
> > fc_wwn_t wwnn);
> >
> >
> >The FCoE LLD needs to exploit the exsting struct fc_rport and APIs.
>
> The openfc is software implementation of FC services such as FC login
> and target discovery and it is already using/exploiting existing fc
> transport class including fc_rport struct. You can see openfc using
> fc_rport in openfc_queuecommand() and using fc transport API
> fc_port_remote_add() for fc_rport.
You just calls fc_remote_port_add. I don't think that reinventing the
whole rport management like reference counting doesn't mean exploiting
the exsting struct fc_rport and APIs.
> The fcoe module is just a first example of possible openfc transport but
> openfc can be used with other transports or HW HBAs also.
>
> The openfc does provide generic transport interface using fcdev which is
> currently used by FCoE module.
>
> One can certainly implement partly or fully openfc and fcoe modules in
> FCoE HBA.
As pointed out in other mails, I believe that the similar job has done
in other transport classes using scsi transport class infrastructure
and the FCoE needs to follow the existing examples.
next prev parent reply other threads:[~2008-01-06 4:27 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-27 23:40 Open-FCoE on linux-scsi Love, Robert W
2007-11-28 0:19 ` FUJITA Tomonori
2007-11-28 0:29 ` Love, Robert W
2007-12-28 19:11 ` FUJITA Tomonori
2007-12-31 16:34 ` Love, Robert W
2008-01-03 10:35 ` FUJITA Tomonori
2008-01-03 21:58 ` Love, Robert W
2008-01-04 11:45 ` Stefan Richter
2008-01-04 11:59 ` FUJITA Tomonori
2008-01-04 22:07 ` Dev, Vasu
2008-01-04 23:41 ` Stefan Richter
2008-01-05 0:09 ` Stefan Richter
2008-01-05 0:21 ` Stefan Richter
2008-01-05 8:28 ` Christoph Hellwig
2008-01-15 1:18 ` Love, Robert W
2008-01-15 22:18 ` James Smart
2008-01-22 23:52 ` Love, Robert W
2008-01-29 5:42 ` Chris Leech
2008-02-01 1:53 ` James Smart
2008-01-06 4:14 ` FUJITA Tomonori
2008-01-06 4:27 ` FUJITA Tomonori [this message]
2008-01-04 13:47 ` FUJITA Tomonori
2008-01-04 20:19 ` Mike Christie
2008-01-05 18:33 ` Vladislav Bolkhovitin
2008-01-06 1:28 ` FUJITA Tomonori
2008-01-08 17:38 ` Vladislav Bolkhovitin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080106133002J.tomof@acm.org \
--to=tomof@acm.org \
--cc=christopher.leech@intel.com \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=linux-scsi@vger.kernel.orgfujita.tomonori \
--cc=robert.w.love@intel.com \
--cc=stefanr@s5r6.in-berlin.de \
--cc=vasu.dev@intel.com \
--cc=yi.zou@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.