Re: [ofa-general] Re: [PATCH v4 14/14] QLogic VNIC: sysfs Documentation

Previous thread: none

Next thread: RFC: L2TPv3 implementation: some questions by James Chapman on Tuesday, June 10, 2008 - 4:01 pm. (1 message)
From: Ramachandra K
Date: Tuesday, June 10, 2008 - 2:02 pm

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: Ramachandra K
Date: Tuesday, June 10, 2008 - 2:07 pm

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
Date: Tuesday, June 10, 2008 - 2:08 pm

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
Date: Tuesday, June 10, 2008 - 2:08 pm

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: Ramachandra K
Date: Tuesday, June 10, 2008 - 2:09 pm

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 ...
From: Patrick McHardy
Date: Tuesday, June 10, 2008 - 11:47 pm

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.
--

From: Amar Mudrankit
Date: Thursday, June 12, 2008 - 8:13 am

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.
--

From: Patrick McHardy
Date: Thursday, June 12, 2008 - 8:18 am

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?

--

From: Ramachandra K
Date: Thursday, June 12, 2008 - 8:29 am

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
--

From: Patrick McHardy
Date: Thursday, June 12, 2008 - 8:34 am

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?

--

From: Jeff Garzik
Date: Thursday, June 12, 2008 - 1:22 pm

That makes a lot of assumptions about the Linux distribution and 
userspace setup, assumptions that may not be true for all Linux.

	Jeff


--

From: Roland Dreier
Date: Saturday, June 14, 2008 - 11:03 am

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.
--

From: Jason Gunthorpe
Date: Saturday, June 14, 2008 - 12:03 pm

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
--

From: Patrick McHardy
Date: Monday, June 16, 2008 - 1:54 am

Fully agreed.
--

From: Ramachandra K
Date: Wednesday, June 18, 2008 - 5:32 am

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
--

From: Patrick McHardy
Date: Wednesday, June 18, 2008 - 5:38 am

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.

--

From: Jason Gunthorpe
Date: Wednesday, June 18, 2008 - 11:21 am

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
--

From: Patrick McHardy
Date: Wednesday, June 18, 2008 - 6:19 pm

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.


--

From: Patrick McHardy
Date: Wednesday, June 18, 2008 - 6:26 pm

Maybe I misparsed this, sorry Jason :)
--

From: Ramachandra K
Date: Thursday, June 12, 2008 - 8:50 am

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
--

From: Patrick McHardy
Date: Thursday, June 12, 2008 - 9:03 am

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 :)
--

From: Amar Mudrankit
Date: Thursday, June 12, 2008 - 2:09 pm

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
--

From: Patrick McHardy
Date: Friday, June 13, 2008 - 8:20 am

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.
--

From: Amar Mudrankit
Date: Friday, June 13, 2008 - 2:47 pm

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
--

From: Patrick McHardy
Date: Saturday, June 14, 2008 - 1:08 am

->fill_xstats is in the kernel, in iproute its ->print_xstats.
--

From: Amar Mudrankit
Date: Monday, June 16, 2008 - 12:44 pm

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
--

From: Patrick McHardy
Date: Monday, June 16, 2008 - 1:39 pm

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.
--

From: Karen Shaeffer
Date: Thursday, June 12, 2008 - 9:04 am

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
Date: Tuesday, June 10, 2008 - 2:03 pm

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: Ramachandra K
Date: Tuesday, June 10, 2008 - 2:06 pm

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: Ramachandra K
Date: Tuesday, June 10, 2008 - 2:07 pm

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
Date: Tuesday, June 10, 2008 - 2:05 pm

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: Ramachandra K
Date: Tuesday, June 10, 2008 - 2:06 pm

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
Date: Tuesday, June 10, 2008 - 2:02 pm

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: Ramachandra K
Date: Tuesday, June 10, 2008 - 2:05 pm

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: Ramachandra K
Date: Tuesday, June 10, 2008 - 2:03 pm

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
Date: Tuesday, June 10, 2008 - 2:04 pm

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: Ramachandra K
Date: Tuesday, June 10, 2008 - 2:04 pm

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 ...
From: Stephen Hemminger
Date: Tuesday, June 10, 2008 - 3:21 pm

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.
--

From: Ramachandra K
Date: Thursday, June 12, 2008 - 8:21 am

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
--

From: Patrick McHardy
Date: Thursday, June 12, 2008 - 8:35 am

See my questions about this interface that you've skipped for
the second time.
--

Previous thread: none

Next thread: RFC: L2TPv3 implementation: some questions by James Chapman on Tuesday, June 10, 2008 - 4:01 pm. (1 message)