Roland,
This is the fourth round of QLogic Virtual NIC driver patch series for submission
to 2.6.27 kernel. The series has been tested against your for-2.6.27 branch.
Based on comments received on third series of patches, following fixes have
been introduced in this series:
- Single value per sysfs file created by QLogic VNIC Driver.
- Documentation/ABI/testing/sysfs-class-infiniband-qlgc-vnic
describing the sysfs interface of the QLogic VNIC Driver.
- Use of existing dev->stats instead of driver's private
vnic->stats.
- Changing more generic name completion_callback_cleanup to
the one more driver specific - vnic_completion_cleanup
- Removal of the field vnic->open
- Minor Modifications to linked list manipulations.
The sparse endianness checking for the driver did not give any warnings and
checkpatch.pl have few warnings indicating lines slightly longer than 80 columns.
Background:
As mentioned in the earlier versions of patch series, this series adds QLogic
Virtual NIC (VNIC) driver which works in conjunction with the the QLogic
Ethernet Virtual I/O Controller (EVIC) hardware. The VNIC driver along with the
QLogic EVIC's two 10 Gigabit ethernet ports, enables Infiniband clusters to
connect to Ethernet networks. This driver also works with the earlier version of
the I/O Controller, the VEx.
The QLogic VNIC driver creates virtual ethernet interfaces and tunnels the
Ethernet data to/from the EVIC over Infiniband using an Infiniband reliable
connection.
[PATCH v4 01/14] QLogic VNIC: Driver - netdev implementation.
[PATCH v4 02/14] QLogic VNIC: Netpath - abstraction of connection to EVIC/VEx.
[PATCH v4 03/14] QLogic VNIC: Implementation of communication protocol with EVIC/VEx.
[PATCH v4 04/14] QLogic VNIC: Implementation of Control path of communication protocol.
[PATCH v4 05/14] QLogic VNIC: Implementation of Data path of communication protocol.
[PATCH v4 06/14] QLogic VNIC: IB core stack interaction.
[PATCH v4 07/14] QLogic ...From: Poornima Kamath <poornima.kamath@qlogic.com> This patch adds the driver utility file which mainly contains utility macros for debugging of QLogic VNIC driver. Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_util.h | 236 ++++++++++++++++++++++++++ 1 files changed, 236 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_util.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_util.h b/drivers/infiniband/ulp/qlgc_vnic/vnic_util.h new file mode 100644 index 0000000..095fa3a --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_util.h @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2006 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR ...
From: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Kconfig and Makefile for the QLogic VNIC driver. Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/Kconfig | 19 +++++++++++++++++++ drivers/infiniband/ulp/qlgc_vnic/Makefile | 13 +++++++++++++ 2 files changed, 32 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/Kconfig create mode 100644 drivers/infiniband/ulp/qlgc_vnic/Makefile diff --git a/drivers/infiniband/ulp/qlgc_vnic/Kconfig b/drivers/infiniband/ulp/qlgc_vnic/Kconfig new file mode 100644 index 0000000..7b4030e --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/Kconfig @@ -0,0 +1,19 @@ +config INFINIBAND_QLGC_VNIC + tristate "QLogic VNIC - Support for QLogic Ethernet Virtual I/O Controller" + depends on INFINIBAND && NETDEVICES && INET + ---help--- + Support for the QLogic Ethernet Virtual I/O Controller + (EVIC). In conjunction with the EVIC, this provides virtual + ethernet interfaces and transports ethernet packets over + InfiniBand so that you can communicate with Ethernet networks + using your IB device. + +config INFINIBAND_QLGC_VNIC_STATS + bool "QLogic VNIC Statistics" + depends on INFINIBAND_QLGC_VNIC + default n + ---help--- + This option compiles statistics collecting code into the + data path of the QLogic VNIC driver to help in profiling and fine + tuning. This adds some overhead in the interest of gathering + data. diff --git a/drivers/infiniband/ulp/qlgc_vnic/Makefile b/drivers/infiniband/ulp/qlgc_vnic/Makefile new file mode 100644 index 0000000..509dd67 --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/Makefile @@ -0,0 +1,13 @@ +obj-$(CONFIG_INFINIBAND_QLGC_VNIC) += qlgc_vnic.o + +qlgc_vnic-y := vnic_main.o \ + vnic_ib.o \ + vnic_viport.o \ + vnic_control.o ...
From: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> This patch modifies the toplevel Infiniband Kconfig and Makefile to include QLogic VNIC as new ULP. Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/Kconfig | 2 ++ drivers/infiniband/Makefile | 1 + 2 files changed, 3 insertions(+), 0 deletions(-) diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig index a5dc78a..0775df5 100644 --- a/drivers/infiniband/Kconfig +++ b/drivers/infiniband/Kconfig @@ -53,4 +53,6 @@ source "drivers/infiniband/ulp/srp/Kconfig" source "drivers/infiniband/ulp/iser/Kconfig" +source "drivers/infiniband/ulp/qlgc_vnic/Kconfig" + endif # INFINIBAND diff --git a/drivers/infiniband/Makefile b/drivers/infiniband/Makefile index ed35e44..845271e 100644 --- a/drivers/infiniband/Makefile +++ b/drivers/infiniband/Makefile @@ -9,3 +9,4 @@ obj-$(CONFIG_INFINIBAND_NES) += hw/nes/ obj-$(CONFIG_INFINIBAND_IPOIB) += ulp/ipoib/ obj-$(CONFIG_INFINIBAND_SRP) += ulp/srp/ obj-$(CONFIG_INFINIBAND_ISER) += ulp/iser/ +obj-$(CONFIG_INFINIBAND_QLGC_VNIC) += ulp/qlgc_vnic/ --
From: Amar Mudrankit <amar.mudrankit@qlogic.com> This patch adds the file sysfs-class-infiniband-qlgc-vnic which describes the sysfs files managed by QLogic VNIC. Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- .../ABI/testing/sysfs-class-infiniband-qlgc-vnic | 179 ++++++++++++++++++++ 1 files changed, 179 insertions(+), 0 deletions(-) create mode 100644 Documentation/ABI/testing/sysfs-class-infiniband-qlgc-vnic diff --git a/Documentation/ABI/testing/sysfs-class-infiniband-qlgc-vnic b/Documentation/ABI/testing/sysfs-class-infiniband-qlgc-vnic new file mode 100644 index 0000000..6cf22ac --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-infiniband-qlgc-vnic @@ -0,0 +1,179 @@ +What: /sys/class/infiniband_qlgc_vnic/ +Date: June 2008 +KernelVersion: 2.6.27 +Contact: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> +Description: + +sysfs interface: +---------------- + +The QLogic Virtual NIC module when loaded on host creates following set of +files into the sysfs: + +/sys/class/infiniband_qlgc_vnic/interfaces + + create_vnic (0200) To create a new VNIC interface, write the name + of the interface to this file. + + delete_vnic (0200) To delete an existing VNIC interface, write + name of that VNIC interface to this file. + +/sys/class/infiniband_qlgc_vnic/interfaces/<VNIC-interface-name>/ + + vnic_state (0444) State of the VNIC interface. + + current_path (0444) In case of failover configuration, which + connection among the primary and secondary is + currently being used. + + multicast (0644) Get/Set IB multicast value for the VNIC + interface. Only root can Enable/Disable IB + multicast for that VNIC interface. + + rx_csum (0644) Get/Set receive checksum boolean value for VNIC + interface. Only root can Enable/Disable the + receive checksum operation for that ...
Since I didn't receive anything but a "its too complex" in response to my previous question, let me ask again: why are you inventing a new sysfs interface (combined with ~15 module parameters) instead of using the existing standard interfaces for this? This I don't understand - you seem to be registering and unregistering the net_device based some state machine, in some cases even triggered by timers. This clearly shows the advantage of being able to use echo for configuration. --
For a given VNIC interface, unless the VNIC host driver establishes a connection with EVIC and completes the control and data path communication sequence with the EVIC, the VNIC network device is not registered on the host. Establishing a connection with EVIC and going through the control and data path communication involves multiple packet exchange on the IB side with the EVIC and can take some time. The netpath statemachine is, hence, meant to PERIODICALLY check if connection is fully established with EVIC or not. Once connection is established, it takes care to register the VNIC netdevice. --
We have linkstate/operstate for this. How is a user supposed to configure the network device when it appears at a more or less random time from his perspective? --
If you are referring to IP address configuration etc, users can configure the interfaces by setting up ifcfg files and the interfaces are automatically configured when they are registered. Regards, Ram --
Maybe they can. It gets more complicated when daemons want to bind to that device etc. But that still leaves the main question, why is it not using the standard way and simply keeps the carrier turned off until the link is ready? --
That makes a lot of assumptions about the Linux distribution and userspace setup, assumptions that may not be true for all Linux. Jeff --
Well, keep in mind that this driver is for an ethernet virtual NIC that is actually remote across another network (an InfiniBand fabric) -- so these devices can actually appear or disappear at random times by their nature. It's a similar issue to, say, a USB ethernet adapter presents -- there's no sane way to have operstate set for a device that hasn't been attached yet. - R. --
I think that is only a fair analogy if the VNIC used some kind of hot-plug auto discovery procedure like USB does. As soon as you require the administrator to run a command to bind a device to a VNIC GID you are much more like a tunnel device and the ethernet device should exist from the moment the administator creates it up until the administator destroys it. The state of the connection to the VNIC should be reflected in some way other than device presence. Jason --
Is your suggestion that the netdevice needs to be registered as soon as we get parameters from userspace even if that netdevice stays inactive until we finish all of our communication with the QLogic EVIC gateway device over the IB network ? Currently we register netdevice only after we have made sure that we can connect to the EVIC and that there are enough resources on the EVIC to support this virtual ethernet interface. But if we register the netdevice without making sure that we can reach the EVIC and that it has resources, there is a possibility that we register a netdevice that can never become active. Isn't our current behavior analogous to an ethernet driver not registering a netdev if it can't properly initialize its hardware ? Regards, Ram --
Yes, it should be created as soon as the administrator Thats similar to a ethernet device that never has a cable plugged in. You should register the device with its carrier turned off, then change the carrier state once the connection No, hardware probing is done automatically, while with your device the administrator explicitly asks to create the device. The expected behaviour is that the device exists once the command finishes without returning an error. --
I would also encourage you to embrace this view of the VNIC as a tunnel fully and let the administrator re-target an active netdevice to a different VNIC without tearing down the netdevice.. The user space interface for that pretty much come for free with the netlink implementation, one of the advantages I suppose.. Jason --
That has nothing to do with when the device is registered. Look at the existing tunnel devices, they *all* follow the scheme I described (and all of them can be "retargeted"). The simple point is: not one device with a pure kernel driver uses asynchronous registration. The question you Yes, a more or less clean interface (at least forceably following the major existing conventions) comes with it automatically (the driver private details still can be done well or less well of course). But as multiple people have already stated, we gladly offer assistance. --
Maybe I misparsed this, sorry Jason :) --
Can you please elaborate on the standard interfaces you are referring to ? Also as Roland mentioned in the other thread, echo-ing the parameters to sysfs files is a pretty straightforward way to configure the interfaces. Users can setup configuration files to configure QLogic VNIC interfaces specifying the name of the interface, various parameters of the QLogic EVIC gateway target they want to use and a simple user level script parses the configuration file and echoes the parameters to the driver. From this statement, I thought you agreed with the advantage of echo for configuration. Regards, Ram --
We introduced the rtnl_link API to avoid having each driver come up with its own method of creating virtual network devices. Besides the fact that it is the interface intended to be used for this kind of thing and the advantages mentioned in my response to Roland, looking at your interface, there are a few more advantages from integrating this cleanly in iproute: > +echo -n 00066a01de000037 > /sys/class/infiniband_qlgc_vnic/interfaces/veth1/primary_path/ioc_guid > +echo -n fe8000000000000100066a11de000037 > /sys/class/infiniband_qlgc_vnic/interfaces/veth1/primary_path/dgid > +echo -n ffff > /sys/class/infiniband_qlgc_vnic/interfaces/veth1/primary_path/pkey I guess life would be easier for users if those parameters can be generated in userspace or at least looked up in something like the maps in /etc/iproute2/. > +echo -n 100 > /sys/class/infiniband_qlgc_vnic/interfaces/veth1/primary_path/heartbeat I assume thats some kind of timing parameter. iproute would allow to specify the (undocumented) unit and convert it appropriately. In any case, things like tx_csum and rx_csum definitely do Sorry, that wasn't meant seriously :) --
I have just started on getting into the rtnl_link API. There are few queries on it, plz correct me if I am wrong. 1. If I understand it correctly, this interface is not text based. Hence, it looks like this interface needs a separate user program which actually sends the parameters to the driver. A separate user program for each driver, as their configuration parameters might be different. Is it right? 2. I am not sure if there exists a standardized (netlink?) interface through which parameters can be passed to kernel. If so, there would be standard set of parameters that can be configured and standard set of statistics values that can be retrieved from driver. Is it so? Actually, I tried googling around rtnl_link, but couldn't collect sufficient information. 3. Is there any kind of documentation available on this? I tried searching on it in Documentation/ directory as well as git log but could not locate enough of it. 4. Can anybody point to an ethernet driver as an example of implementation of rtnl_link API along with an equivalent user space program to configure it? Is it the answer of question no 2 above? If so, what about statistics We are planning to give ethtool support for the driver in future, in which case these 2 parameters will be configured through ethtool. Thanks and Regards, Amar --
Not necessarily an entire program, you can integrate it in iproute2 or libnl. Look at ip/iplink_vlan.c in iproute for For virtual network drivers, its rtnl_link, or more generally, My fault, I have some unfinished documentation that I never completed. There are a few examples in the tree: drivers/net/dummy.c drivers/net/macvlan.c drivers/net/ifb.c drivers/net/veth.c net/8021q/vlan_netlink.c macvlan and vlan are probably best suited as an example, dummy and ifb are too simple and veth is kind of special because it registers two devices. Yes, thats where it belongs. --
I was trying to guess the use case for the vlan which has implemented rtnl_link api : For sending parameters to driver: # ip link set <vlan-iface-name> up multicast ...... type vlan id <vlan-id> reorder_hdr on ingress-qos-map <...> egress-qos-map <...> In such case, I think the link_util's private parse_opt function will be invoked to parse link's private configurable parameters. These parameters along with the standard set of parameters (name, multicast, promisc etc) are then sent to driver through rtnl_talk function . Similarly, for reading values from driver: # ip addr show dev <vlan-iface-name> does it require "type" field similar to "ip link set"? Is this understanding correct? How does a link type corresponding to VLAN driver gets added into linkutil_list, so that ip will correctly call functions specific to I was looking at latest release of iproute2, in which I could not locate fill_xstats. Can you help me to locate this? Thanks and Regards, Amar --
->fill_xstats is in the kernel, in iproute its ->print_xstats. --
I was looking at kernel code net/8021q/vlan_netlink.c on which I have following queries: a. Is it a correct file in kernel I m referring to? b. vlan_fill_info is a function to send parameters back to user level. What is the role of skb as an argument to function? Is some network operation expected? c. How exactly the kernel API ops->get_size comes into play? I guess user prog should first get the size of parameters that will be returned by driver before calling ops->fill_info. d. Can somebody briefly introduce struct nlattr? It looks like all parameters flow through this structure. Thanks and Regards, Amar S Mudrankit --
netlink is a (local) networking protocol, this is the message No, its used internally for skb allocation. It should return the size of all encapsulated netlink attributes that will be Not much to say about it, nla_type contains the numerical attribute type, nla_len the length without padding. Data follows the attribute, followed by padding to a multiple of four. The netlink construction functions and macros from include/net/netlink.h take care of all of this for you. --
Hi Ram, I believe that was Roland's comment, not Patrick's. Karen -- Karen Shaeffer Neuralscape, Palo Alto, Ca. 94306 shaeffer@neuralscape.com http://www.neuralscape.com --
From: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> This patch implements the netpath layer of QLogic VNIC. Netpath is an abstraction of a connection to EVIC. It primarily includes the implementation which maintains the timers to monitor the status of the connection to EVIC/VEx. Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_netpath.c | 109 +++++++++++++++++++++++ drivers/infiniband/ulp/qlgc_vnic/vnic_netpath.h | 80 +++++++++++++++++ 2 files changed, 189 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_netpath.c create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_netpath.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_netpath.c b/drivers/infiniband/ulp/qlgc_vnic/vnic_netpath.c new file mode 100644 index 0000000..273031c --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_netpath.c @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2006 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the ...
From: Usha Srinivasan <usha.srinivasan@qlogic.com> Implementation of ethernet broadcasting and multicasting for QLogic VNIC interface by making use of underlying IB multicasting. Signed-off-by: Usha Srinivasan <usha.srinivasan@qlogic.com> Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_multicast.c | 319 +++++++++++++++++++++ drivers/infiniband/ulp/qlgc_vnic/vnic_multicast.h | 77 +++++ 2 files changed, 396 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_multicast.c create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_multicast.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_multicast.c b/drivers/infiniband/ulp/qlgc_vnic/vnic_multicast.c new file mode 100644 index 0000000..f40ea20 --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_multicast.c @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2008 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS ...
From: Amar Mudrankit <amar.mudrankit@qlogic.com> Collection of statistics about QLogic VNIC interfaces is implemented in this patch. Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_stats.c | 234 ++++++++++++ drivers/infiniband/ulp/qlgc_vnic/vnic_stats.h | 497 +++++++++++++++++++++++++ 2 files changed, 731 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_stats.c create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_stats.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_stats.c b/drivers/infiniband/ulp/qlgc_vnic/vnic_stats.c new file mode 100644 index 0000000..d11a8df --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_stats.c @@ -0,0 +1,234 @@ +/* + * Copyright (c) 2006 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * ...
From: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> The patch implements the interaction of the QLogic VNIC driver with the underlying core infiniband stack. Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_ib.c | 1057 ++++++++++++++++++++++++++++ drivers/infiniband/ulp/qlgc_vnic/vnic_ib.h | 207 +++++ 2 files changed, 1264 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_ib.c create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_ib.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_ib.c b/drivers/infiniband/ulp/qlgc_vnic/vnic_ib.c new file mode 100644 index 0000000..1957e90 --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_ib.c @@ -0,0 +1,1057 @@ +/* + * Copyright (c) 2006 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * ...
From: Amar Mudrankit <amar.mudrankit@qlogic.com> The sysfs interface for the QLogic VNIC driver is implemented through this patch. Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_sys.c | 1256 +++++++++++++++++++++++++++ drivers/infiniband/ulp/qlgc_vnic/vnic_sys.h | 52 + 2 files changed, 1308 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_sys.c create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_sys.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_sys.c b/drivers/infiniband/ulp/qlgc_vnic/vnic_sys.c new file mode 100644 index 0000000..7dbc955 --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_sys.c @@ -0,0 +1,1256 @@ +/* + * Copyright (c) 2006 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A ...
From: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> QLogic Virtual NIC Driver. This patch implements netdev registration, netdev functions and state maintenance of the QLogic Virtual NIC corresponding to the various events associated with the QLogic Ethernet Virtual I/O Controller (EVIC/VEx) connection. Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_main.c | 1097 ++++++++++++++++++++++++++ drivers/infiniband/ulp/qlgc_vnic/vnic_main.h | 159 ++++ 2 files changed, 1256 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_main.c create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_main.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_main.c b/drivers/infiniband/ulp/qlgc_vnic/vnic_main.c new file mode 100644 index 0000000..665f7dc --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_main.c @@ -0,0 +1,1097 @@ +/* + * Copyright (c) 2006 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the ...
From: Poornima Kamath <poornima.kamath@qlogic.com> This patch adds the files that handle various configurable parameters of the VNIC driver ---- configuration of virtual NIC, control, data connections to the EVIC and general IB connection parameters. Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_config.c | 379 ++++++++++++++++++++++++ drivers/infiniband/ulp/qlgc_vnic/vnic_config.h | 240 +++++++++++++++ 2 files changed, 619 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_config.c create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_config.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_config.c b/drivers/infiniband/ulp/qlgc_vnic/vnic_config.c new file mode 100644 index 0000000..cf120a6 --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_config.c @@ -0,0 +1,379 @@ +/* + * Copyright (c) 2006 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS ...
From: Poornima Kamath <poornima.kamath@qlogic.com> Implementation of the statemachine for the protocol used while communicating with the EVIC. The patch also implements the viport abstraction which represents the virtual ethernet port on EVIC. Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_viport.c | 1214 ++++++++++++++++++++++++ drivers/infiniband/ulp/qlgc_vnic/vnic_viport.h | 175 +++ 2 files changed, 1389 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_viport.c create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_viport.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_viport.c b/drivers/infiniband/ulp/qlgc_vnic/vnic_viport.c new file mode 100644 index 0000000..10a002b --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_viport.c @@ -0,0 +1,1214 @@ +/* + * Copyright (c) 2006 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", ...
From: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> This patch implements the actual data transfer part of the communication protocol with the EVIC/VEx. RDMA of ethernet packets is implemented in here. Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_data.c | 1492 +++++++++++++++++++++++ drivers/infiniband/ulp/qlgc_vnic/vnic_data.h | 206 +++ drivers/infiniband/ulp/qlgc_vnic/vnic_trailer.h | 103 ++ 3 files changed, 1801 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_data.c create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_data.h create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_trailer.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_data.c b/drivers/infiniband/ulp/qlgc_vnic/vnic_data.c new file mode 100644 index 0000000..02d94e7 --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_data.c @@ -0,0 +1,1492 @@ +/* + * Copyright (c) 2006 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * ...
From: Poornima Kamath <poornima.kamath@qlogic.com> This patch adds the files that define the control packet formats and implements various control messages that are exchanged as part of the communication protocol with the EVIC/VEx. Signed-off-by: Poornima Kamath <poornima.kamath@qlogic.com> Signed-off-by: Ramachandra K <ramachandra.kuchimanchi@qlogic.com> Signed-off-by: Amar Mudrankit <amar.mudrankit@qlogic.com> --- drivers/infiniband/ulp/qlgc_vnic/vnic_control.c | 2286 ++++++++++++++++++++ drivers/infiniband/ulp/qlgc_vnic/vnic_control.h | 180 ++ .../infiniband/ulp/qlgc_vnic/vnic_control_pkt.h | 368 +++ 3 files changed, 2834 insertions(+), 0 deletions(-) create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_control.c create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_control.h create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_control_pkt.h diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_control.c b/drivers/infiniband/ulp/qlgc_vnic/vnic_control.c new file mode 100644 index 0000000..df4d2a8 --- /dev/null +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_control.c @@ -0,0 +1,2286 @@ +/* + * Copyright (c) 2006 QLogic, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in ...
On Tue, 10 Jun 2008 17:04:15 -0400 Shouldn't you be using ktime_t rather than cycles_t? And then convert it to some standard time base (ns, ms, or USER_HZ) when reporting to user space. --
Roland, On Wed, Jun 11, 2008 at 2:32 AM, Ramachandra K Since the single value per sysfs file change has been implemented, is the driver ready for merging or are there any more changes required before the merge can happen ? Regards, Ram --
See my questions about this interface that you've skipped for the second time. --
