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?

Ramachandra K wrote:
+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.

This is exactly what rtnl_link is for.

+/sys/class/infiniband_qlgc_vnic/interfaces/<VNIC-interface-name>/
+
+       vnic_state      (0444)  State of the VNIC interface.

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.

Whats the idea behind this?

+
+       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 VNIC
+                               interface.
+
+       tx_csum         (0644)  Get/Set transmit checksum boolean value for VNIC
+                               interface.  Only root can Enable/Disable the
+                               transmit checksum operation for that VNIC
+                               interface.

Why is this not done using ethtool?

+Example:
+--------
+
+QLogic VNIC sysfs interface can be used directly to create a VNIC interface.
+
+# echo the name of new VNIC interface to create_vnic
+echo -n veth1 > /sys/class/infiniband_qlgc_vnic/interfaces/create_vnic
+
+# echo parameters to configure the VNIC interface. Some of these are +# interface level parameters which needs to be passed only once per VNIC
+# interface.
+
+echo -n true  > /sys/class/infiniband_qlgc_vnic/interfaces/veth1/rx_csum
+echo -n false > /sys/class/infiniband_qlgc_vnic/interfaces/veth1/tx_csum
+echo -n false > /sys/class/infiniband_qlgc_vnic/interfaces/veth1/multicast
+
+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
+echo -n 0                               > 
/sys/class/infiniband_qlgc_vnic/interfaces/veth1/primary_path/instance
+echo -n 100                             > 
/sys/class/infiniband_qlgc_vnic/interfaces/veth1/primary_path/heartbeat
+string="EVIC in Chassis 0x00066a00db000010, Slot 4, Ioc 1"
+echo -n $string                         > 
/sys/class/infiniband_qlgc_vnic/interfaces/veth1/primary_path/ioc_string
+
+# Trigger the connection establishment process for the path by choosing 
required
+# HCA and IB port combination.
+
+echo -n veth1 > /sys/class/infiniband_qlgc_vnic/vnic-mlx4_0-1/create_primary
+
+# In case of failover configuration, pass the parameters of the failover
+# connection to the driver and trigger its connection establishment
+# process.
+
+echo -n 00066a01de000037                > 
/sys/class/infiniband_qlgc_vnic/interfaces/veth1/secondary_path/ioc_guid
+echo -n fe8000000000000100066a11de000037 > 
/sys/class/infiniband_qlgc_vnic/interfaces/veth1/secondary_path/dgid
+echo -n ffff                            > 
/sys/class/infiniband_qlgc_vnic/interfaces/veth1/secondary_path/pkey
+echo -n 1                               > 
/sys/class/infiniband_qlgc_vnic/interfaces/veth1/secondary_path/instance
+echo -n 100                             > 
/sys/class/infiniband_qlgc_vnic/interfaces/veth1/secondary_path/heartbeat
+string="EVIC in Chassis 0x00066a00db000010, Slot 4, Ioc 1"
+echo -n $string                         > 
/sys/class/infiniband_qlgc_vnic/interfaces/veth1/secondary_path/ioc_string
+
+echo -n veth1 > /sys/class/infiniband_qlgc_vnic/vnic-mlx4_0-2/create_secondary
+
+# An interface can be deleted by echoing the name of the interface to be 
deleted
+# to delete_vnic file
+echo -n veth1 > /sys/class/infiniband_qlgc_vnic/interfaces/delete_vnic


This clearly shows the advantage of being able to use echo
for configuration.
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to