From: Robert Love <robert.w.love@intel.com>
To: james.bottomeley@hansenpartnership.com, linux-scsi@vger.kernel.org
Subject: [PATCH] fcoe: removes fc_transport_fcoe.[ch] code files
Date: Tue, 24 Mar 2009 16:24:56 -0700 [thread overview]
Message-ID: <20090324232456.25914.11225.stgit@fritz> (raw)
In-Reply-To: <20090317184156.22987.73289.stgit@fritz>
From: Vasu Dev <vasu.dev@intel.com>
Remove unused fc_transport_fcoe.c and fc_transport_fcoe.h
files.
---
drivers/scsi/fcoe/fc_transport_fcoe.c | 443 ---------------------------------
include/scsi/fc_transport_fcoe.h | 54 ----
2 files changed, 0 insertions(+), 497 deletions(-)
delete mode 100644 drivers/scsi/fcoe/fc_transport_fcoe.c
delete mode 100644 include/scsi/fc_transport_fcoe.h
diff --git a/drivers/scsi/fcoe/fc_transport_fcoe.c b/drivers/scsi/fcoe/fc_transport_fcoe.c
deleted file mode 100644
index 8862758..0000000
--- a/drivers/scsi/fcoe/fc_transport_fcoe.c
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * Copyright(c) 2007 - 2008 Intel Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Maintained at www.Open-FCoE.org
- */
-
-#include <linux/pci.h>
-#include <scsi/libfcoe.h>
-#include <scsi/fc_transport_fcoe.h>
-
-/* internal fcoe transport */
-struct fcoe_transport_internal {
- struct fcoe_transport *t;
- struct net_device *netdev;
- struct list_head list;
-};
-
-/* fcoe transports list and its lock */
-static LIST_HEAD(fcoe_transports);
-static DEFINE_MUTEX(fcoe_transports_lock);
-
-/**
- * fcoe_transport_default() - Returns ptr to the default transport fcoe_sw
- */
-struct fcoe_transport *fcoe_transport_default(void)
-{
- return &fcoe_sw_transport;
-}
-
-/**
- * fcoe_transport_to_pcidev() - get the pci dev from a netdev
- * @netdev: the netdev that pci dev will be retrived from
- *
- * Returns: NULL or the corrsponding pci_dev
- */
-struct pci_dev *fcoe_transport_pcidev(const struct net_device *netdev)
-{
- if (!netdev->dev.parent)
- return NULL;
- return to_pci_dev(netdev->dev.parent);
-}
-
-/**
- * fcoe_transport_device_lookup() - Lookup a transport
- * @netdev: the netdev the transport to be attached to
- *
- * This will look for existing offload driver, if not found, it falls back to
- * the default sw hba (fcoe_sw) as its fcoe transport.
- *
- * Returns: 0 for success
- */
-static struct fcoe_transport_internal *
-fcoe_transport_device_lookup(struct fcoe_transport *t,
- struct net_device *netdev)
-{
- struct fcoe_transport_internal *ti;
-
- /* assign the transpor to this device */
- mutex_lock(&t->devlock);
- list_for_each_entry(ti, &t->devlist, list) {
- if (ti->netdev == netdev) {
- mutex_unlock(&t->devlock);
- return ti;
- }
- }
- mutex_unlock(&t->devlock);
- return NULL;
-}
-/**
- * fcoe_transport_device_add() - Assign a transport to a device
- * @netdev: the netdev the transport to be attached to
- *
- * This will look for existing offload driver, if not found, it falls back to
- * the default sw hba (fcoe_sw) as its fcoe transport.
- *
- * Returns: 0 for success
- */
-static int fcoe_transport_device_add(struct fcoe_transport *t,
- struct net_device *netdev)
-{
- struct fcoe_transport_internal *ti;
-
- ti = fcoe_transport_device_lookup(t, netdev);
- if (ti) {
- printk(KERN_DEBUG "fcoe_transport_device_add:"
- "device %s is already added to transport %s\n",
- netdev->name, t->name);
- return -EEXIST;
- }
- /* allocate an internal struct to host the netdev and the list */
- ti = kzalloc(sizeof(*ti), GFP_KERNEL);
- if (!ti)
- return -ENOMEM;
-
- ti->t = t;
- ti->netdev = netdev;
- INIT_LIST_HEAD(&ti->list);
- dev_hold(ti->netdev);
-
- mutex_lock(&t->devlock);
- list_add(&ti->list, &t->devlist);
- mutex_unlock(&t->devlock);
-
- printk(KERN_DEBUG "fcoe_transport_device_add:"
- "device %s added to transport %s\n",
- netdev->name, t->name);
-
- return 0;
-}
-
-/**
- * fcoe_transport_device_remove() - Remove a device from its transport
- * @netdev: the netdev the transport to be attached to
- *
- * This removes the device from the transport so the given transport will
- * not manage this device any more
- *
- * Returns: 0 for success
- */
-static int fcoe_transport_device_remove(struct fcoe_transport *t,
- struct net_device *netdev)
-{
- struct fcoe_transport_internal *ti;
-
- ti = fcoe_transport_device_lookup(t, netdev);
- if (!ti) {
- printk(KERN_DEBUG "fcoe_transport_device_remove:"
- "device %s is not managed by transport %s\n",
- netdev->name, t->name);
- return -ENODEV;
- }
- mutex_lock(&t->devlock);
- list_del(&ti->list);
- mutex_unlock(&t->devlock);
- printk(KERN_DEBUG "fcoe_transport_device_remove:"
- "device %s removed from transport %s\n",
- netdev->name, t->name);
- dev_put(ti->netdev);
- kfree(ti);
- return 0;
-}
-
-/**
- * fcoe_transport_device_remove_all() - Remove all from transport devlist
- *
- * This removes the device from the transport so the given transport will
- * not manage this device any more
- *
- * Returns: 0 for success
- */
-static void fcoe_transport_device_remove_all(struct fcoe_transport *t)
-{
- struct fcoe_transport_internal *ti, *tmp;
-
- mutex_lock(&t->devlock);
- list_for_each_entry_safe(ti, tmp, &t->devlist, list) {
- list_del(&ti->list);
- kfree(ti);
- }
- mutex_unlock(&t->devlock);
-}
-
-/**
- * fcoe_transport_match() - Use the bus device match function to match the hw
- * @t: The fcoe transport to check
- * @netdev: The netdev to match against
- *
- * This function is used to check if the given transport wants to manage the
- * input netdev. if the transports implements the match function, it will be
- * called, o.w. we just compare the pci vendor and device id.
- *
- * Returns: true for match up
- */
-static bool fcoe_transport_match(struct fcoe_transport *t,
- struct net_device *netdev)
-{
- /* match transport by vendor and device id */
- struct pci_dev *pci;
-
- pci = fcoe_transport_pcidev(netdev);
-
- if (pci) {
- printk(KERN_DEBUG "fcoe_transport_match:"
- "%s:%x:%x -- %s:%x:%x\n",
- t->name, t->vendor, t->device,
- netdev->name, pci->vendor, pci->device);
-
- /* if transport supports match */
- if (t->match)
- return t->match(netdev);
-
- /* else just compare the vendor and device id: pci only */
- return (t->vendor == pci->vendor) && (t->device == pci->device);
- }
- return false;
-}
-
-/**
- * fcoe_transport_lookup() - Check if the transport is already registered
- * @t: the transport to be looked up
- *
- * This compares the parent device (pci) vendor and device id
- *
- * Returns: NULL if not found
- *
- * TODO: return default sw transport if no other transport is found
- */
-static struct fcoe_transport *
-fcoe_transport_lookup(struct net_device *netdev)
-{
- struct fcoe_transport *t;
-
- mutex_lock(&fcoe_transports_lock);
- list_for_each_entry(t, &fcoe_transports, list) {
- if (fcoe_transport_match(t, netdev)) {
- mutex_unlock(&fcoe_transports_lock);
- return t;
- }
- }
- mutex_unlock(&fcoe_transports_lock);
-
- printk(KERN_DEBUG "fcoe_transport_lookup:"
- "use default transport for %s\n", netdev->name);
- return fcoe_transport_default();
-}
-
-/**
- * fcoe_transport_register() - Adds a fcoe transport to the fcoe transports list
- * @t: ptr to the fcoe transport to be added
- *
- * Returns: 0 for success
- */
-int fcoe_transport_register(struct fcoe_transport *t)
-{
- struct fcoe_transport *tt;
-
- /* TODO - add fcoe_transport specific initialization here */
- mutex_lock(&fcoe_transports_lock);
- list_for_each_entry(tt, &fcoe_transports, list) {
- if (tt == t) {
- mutex_unlock(&fcoe_transports_lock);
- return -EEXIST;
- }
- }
- list_add_tail(&t->list, &fcoe_transports);
- mutex_unlock(&fcoe_transports_lock);
-
- printk(KERN_DEBUG "fcoe_transport_register:%s\n", t->name);
-
- return 0;
-}
-EXPORT_SYMBOL_GPL(fcoe_transport_register);
-
-/**
- * fcoe_transport_unregister() - Remove the tranport fro the fcoe transports list
- * @t: ptr to the fcoe transport to be removed
- *
- * Returns: 0 for success
- */
-int fcoe_transport_unregister(struct fcoe_transport *t)
-{
- struct fcoe_transport *tt, *tmp;
-
- mutex_lock(&fcoe_transports_lock);
- list_for_each_entry_safe(tt, tmp, &fcoe_transports, list) {
- if (tt == t) {
- list_del(&t->list);
- mutex_unlock(&fcoe_transports_lock);
- fcoe_transport_device_remove_all(t);
- printk(KERN_DEBUG "fcoe_transport_unregister:%s\n",
- t->name);
- return 0;
- }
- }
- mutex_unlock(&fcoe_transports_lock);
- return -ENODEV;
-}
-EXPORT_SYMBOL_GPL(fcoe_transport_unregister);
-
-/**
- * fcoe_load_transport_driver() - Load an offload driver by alias name
- * @netdev: the target net device
- *
- * Requests for an offload driver module as the fcoe transport, if fails, it
- * falls back to use the SW HBA (fcoe_sw) as its transport
- *
- * TODO -
- * 1. supports only PCI device
- * 2. needs fix for VLAn and bonding
- * 3. pure hw fcoe hba may not have netdev
- *
- * Returns: 0 for success
- */
-int fcoe_load_transport_driver(struct net_device *netdev)
-{
- struct pci_dev *pci;
- struct device *dev = netdev->dev.parent;
-
- if (fcoe_transport_lookup(netdev)) {
- /* load default transport */
- printk(KERN_DEBUG "fcoe: already loaded transport for %s\n",
- netdev->name);
- return -EEXIST;
- }
-
- pci = to_pci_dev(dev);
- if (dev->bus != &pci_bus_type) {
- printk(KERN_DEBUG "fcoe: support noly PCI device\n");
- return -ENODEV;
- }
- printk(KERN_DEBUG "fcoe: loading driver fcoe-pci-0x%04x-0x%04x\n",
- pci->vendor, pci->device);
-
- return request_module("fcoe-pci-0x%04x-0x%04x",
- pci->vendor, pci->device);
-
-}
-EXPORT_SYMBOL_GPL(fcoe_load_transport_driver);
-
-/**
- * fcoe_transport_attach() - Load transport to fcoe
- * @netdev: the netdev the transport to be attached to
- *
- * This will look for existing offload driver, if not found, it falls back to
- * the default sw hba (fcoe_sw) as its fcoe transport.
- *
- * Returns: 0 for success
- */
-int fcoe_transport_attach(struct net_device *netdev)
-{
- struct fcoe_transport *t;
-
- /* find the corresponding transport */
- t = fcoe_transport_lookup(netdev);
- if (!t) {
- printk(KERN_DEBUG "fcoe_transport_attach"
- ":no transport for %s:use %s\n",
- netdev->name, t->name);
- return -ENODEV;
- }
- /* add to the transport */
- if (fcoe_transport_device_add(t, netdev)) {
- printk(KERN_DEBUG "fcoe_transport_attach"
- ":failed to add %s to tramsport %s\n",
- netdev->name, t->name);
- return -EIO;
- }
- /* transport create function */
- if (t->create)
- t->create(netdev);
-
- printk(KERN_DEBUG "fcoe_transport_attach:transport %s for %s\n",
- t->name, netdev->name);
- return 0;
-}
-EXPORT_SYMBOL_GPL(fcoe_transport_attach);
-
-/**
- * fcoe_transport_release() - Unload transport from fcoe
- * @netdev: the net device on which fcoe is to be released
- *
- * Returns: 0 for success
- */
-int fcoe_transport_release(struct net_device *netdev)
-{
- struct fcoe_transport *t;
-
- /* find the corresponding transport */
- t = fcoe_transport_lookup(netdev);
- if (!t) {
- printk(KERN_DEBUG "fcoe_transport_release:"
- "no transport for %s:use %s\n",
- netdev->name, t->name);
- return -ENODEV;
- }
- /* remove the device from the transport */
- if (fcoe_transport_device_remove(t, netdev)) {
- printk(KERN_DEBUG "fcoe_transport_release:"
- "failed to add %s to tramsport %s\n",
- netdev->name, t->name);
- return -EIO;
- }
- /* transport destroy function */
- if (t->destroy)
- t->destroy(netdev);
-
- printk(KERN_DEBUG "fcoe_transport_release:"
- "device %s dettached from transport %s\n",
- netdev->name, t->name);
-
- return 0;
-}
-EXPORT_SYMBOL_GPL(fcoe_transport_release);
-
-/**
- * fcoe_transport_init() - Initializes fcoe transport layer
- *
- * This prepares for the fcoe transport layer
- *
- * Returns: none
- */
-int __init fcoe_transport_init(void)
-{
- INIT_LIST_HEAD(&fcoe_transports);
- mutex_init(&fcoe_transports_lock);
- return 0;
-}
-
-/**
- * fcoe_transport_exit() - Cleans up the fcoe transport layer
- *
- * This cleans up the fcoe transport layer. removing any transport on the list,
- * note that the transport destroy func is not called here.
- *
- * Returns: none
- */
-int __exit fcoe_transport_exit(void)
-{
- struct fcoe_transport *t, *tmp;
-
- mutex_lock(&fcoe_transports_lock);
- list_for_each_entry_safe(t, tmp, &fcoe_transports, list) {
- list_del(&t->list);
- mutex_unlock(&fcoe_transports_lock);
- fcoe_transport_device_remove_all(t);
- mutex_lock(&fcoe_transports_lock);
- }
- mutex_unlock(&fcoe_transports_lock);
- return 0;
-}
diff --git a/include/scsi/fc_transport_fcoe.h b/include/scsi/fc_transport_fcoe.h
deleted file mode 100644
index 8dca2af..0000000
--- a/include/scsi/fc_transport_fcoe.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef FC_TRANSPORT_FCOE_H
-#define FC_TRANSPORT_FCOE_H
-
-#include <linux/device.h>
-#include <linux/netdevice.h>
-#include <scsi/scsi_host.h>
-#include <scsi/libfc.h>
-
-/**
- * struct fcoe_transport - FCoE transport struct for generic transport
- * for Ethernet devices as well as pure HBAs
- *
- * @name: name for thsi transport
- * @bus: physical bus type (pci_bus_type)
- * @driver: physical bus driver for network device
- * @create: entry create function
- * @destroy: exit destroy function
- * @list: list of transports
- */
-struct fcoe_transport {
- char *name;
- unsigned short vendor;
- unsigned short device;
- struct bus_type *bus;
- struct device_driver *driver;
- int (*create)(struct net_device *device);
- int (*destroy)(struct net_device *device);
- bool (*match)(struct net_device *device);
- struct list_head list;
- struct list_head devlist;
- struct mutex devlock;
-};
-
-/**
- * MODULE_ALIAS_FCOE_PCI
- *
- * some care must be taken with this, vendor and device MUST be a hex value
- * preceded with 0x and with letters in lower case (0x12ab, not 0x12AB or 12AB)
- */
-#define MODULE_ALIAS_FCOE_PCI(vendor, device) \
- MODULE_ALIAS("fcoe-pci-" __stringify(vendor) "-" __stringify(device))
-
-/* exported funcs */
-int fcoe_transport_attach(struct net_device *netdev);
-int fcoe_transport_release(struct net_device *netdev);
-int fcoe_transport_register(struct fcoe_transport *t);
-int fcoe_transport_unregister(struct fcoe_transport *t);
-int fcoe_load_transport_driver(struct net_device *netdev);
-int __init fcoe_transport_init(void);
-int __exit fcoe_transport_exit(void);
-
-/* fcow_sw is the default transport */
-extern struct fcoe_transport fcoe_sw_transport;
-#endif /* FC_TRANSPORT_FCOE_H */
next prev parent reply other threads:[~2009-03-24 23:24 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-17 18:41 [PATCH 00/14] Open-FCoE fixes and features for 2.6.30 merge window Robert Love
2009-03-17 18:41 ` [PATCH 01/14] fcoe: Initialize all possilbe skb_queue(s) when module is loaded Robert Love
2009-03-17 18:41 ` [PATCH 02/14] fcoe: Use percpu kernel funcs for struct fcoe_percpu_s Robert Love
2009-03-17 18:41 ` [PATCH 03/14] fcoe: Use per-CPU kernel function for dev_stats instead of an array Robert Love
2009-03-31 22:51 ` [PATCH 3/14 v2] " Robert Love
2009-03-17 18:41 ` [PATCH 04/14] fcoe: create/destroy fcoe Rx threads on CPU hotplug events Robert Love
2009-03-23 0:59 ` James Bottomley
2009-03-23 19:42 ` Robert Love
2009-03-24 3:50 ` James Bottomley
2009-03-17 18:41 ` [PATCH 05/14] fcoe: prep work to completely remove fc_transport_fcoe code Robert Love
2009-03-24 23:19 ` [PATCH] " Robert Love
2009-03-26 3:03 ` [PATCH] PM port setting and attached SATA port selector in discover Andy Yan
2009-03-27 16:52 ` James Bottomley
2009-03-27 16:03 ` [PATCH] fcoe: prep work to completely remove fc_transport_fcoe code Robert Love
2009-03-27 16:12 ` Love, Robert W
2009-03-17 18:41 ` [PATCH 06/14] fcoe: removes fc_transport_fcoe.[ch] code files Robert Love
2009-03-24 23:24 ` Robert Love [this message]
2009-03-27 16:05 ` [PATCH] " Robert Love
2009-03-17 18:42 ` [PATCH 07/14] fcoe: removes default sw transport code file fcoe_sw.c Robert Love
2009-03-24 23:27 ` [PATCH] " Robert Love
2009-03-27 16:06 ` Robert Love
2009-03-17 18:42 ` [PATCH 08/14] fcoe: renames libfcoe.c to fcoe.c as the only fcoe module file Robert Love
2009-03-24 23:27 ` [PATCH] " Robert Love
2009-03-27 16:07 ` Robert Love
2009-03-17 18:42 ` [PATCH 09/14] fcoe, libfc, scsi: adds libfcoe module Robert Love
2009-03-17 18:42 ` [PATCH 10/14] fcoe: moves common FCoE library API functions to " Robert Love
2009-03-17 18:42 ` [PATCH 11/14] fcoe: cleans up libfcoe.h and adds fcoe.h for fcoe module Robert Love
2009-03-17 18:42 ` [PATCH 12/14] fcoe, libfc: fix double fcoe_softc memory alloc Robert Love
2009-03-17 18:42 ` [PATCH 13/14] fcoe: Add a header file defining the FIP protocol for FCoE Robert Love
2009-03-17 18:42 ` [PATCH 14/14] fcoe, libfcoe: Add support for FIP. FCoE discovery and keep-alive Robert Love
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=20090324232456.25914.11225.stgit@fritz \
--to=robert.w.love@intel.com \
--cc=james.bottomeley@hansenpartnership.com \
--cc=linux-scsi@vger.kernel.org \
/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.