Message ID | 20090219194949.22270.40834.stgit.yi.zou@intel.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, 19 Feb 2009 12:49:49 -0700 Yi Zou <yi.zou@intel.com> wrote: > This adds a "struct net_fcoe_ops *fcoe_ops" to net_device struct so any > network adapter driver can provide Fiber Channle over Ethernet (FCoE) offload > support through net_device. The fcoe_ops is only available when FCoE is > enabled in kernel as built-in or module driver. > > Signed-off-by: Yi Zou <yi.zou@intel.com> Rather than adding another _ops structure please add to existing netdevice_ops. You don't need the flags that way. If netdevice_ops has fcoe_setup, then device can do it... -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
>On Thu, 19 Feb 2009 12:49:49 -0700 >Yi Zou <yi.zou@intel.com> wrote: > >> This adds a "struct net_fcoe_ops *fcoe_ops" to net_device struct so >any >> network adapter driver can provide Fiber Channle over Ethernet (FCoE) >offload >> support through net_device. The fcoe_ops is only available when FCoE >is >> enabled in kernel as built-in or module driver. >> >> Signed-off-by: Yi Zou <yi.zou@intel.com> > >Rather than adding another _ops structure please add to existing >netdevice_ops. You don't need the flags that way. If netdevice_ops >has fcoe_setup, then device can do it... The comments in struct net_device_ops says for management hooks, if that's an ok place for net_fcoe_ops, then, I am all for it. Thanks. yi -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
>>On Thu, 19 Feb 2009 12:49:49 -0700 >>Yi Zou <yi.zou@intel.com> wrote: >> >>> This adds a "struct net_fcoe_ops *fcoe_ops" to net_device struct so >>any >>> network adapter driver can provide Fiber Channle over Ethernet (FCoE) >>offload >>> support through net_device. The fcoe_ops is only available when FCoE >>is >>> enabled in kernel as built-in or module driver. >>> >>> Signed-off-by: Yi Zou <yi.zou@intel.com> >> >>Rather than adding another _ops structure please add to existing >>netdevice_ops. You don't need the flags that way. If netdevice_ops >>has fcoe_setup, then device can do it... >The comments in struct net_device_ops says for management hooks, if >that's an ok place for net_fcoe_ops, then, I am all for it. > >Thanks. > >yi Hi, Stephen, Regarding your comment about adding net_fcoe_ops to net_device_ops, the net_fcoe_ops contains function pointers ad well as data members, where net_device_ops seems to me is the placeholder only for function pointers. So I think it is still better to still leave the net_fcoe_ops to net_device. Let me know what you think. Thanks, yi -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 20 Feb 2009 15:21:42 -0800 "Zou, Yi" <yi.zou@intel.com> wrote: > >>On Thu, 19 Feb 2009 12:49:49 -0700 > >>Yi Zou <yi.zou@intel.com> wrote: > >> > >>> This adds a "struct net_fcoe_ops *fcoe_ops" to net_device struct so > >>any > >>> network adapter driver can provide Fiber Channle over Ethernet (FCoE) > >>offload > >>> support through net_device. The fcoe_ops is only available when FCoE > >>is > >>> enabled in kernel as built-in or module driver. > >>> > >>> Signed-off-by: Yi Zou <yi.zou@intel.com> > >> > >>Rather than adding another _ops structure please add to existing > >>netdevice_ops. You don't need the flags that way. If netdevice_ops > >>has fcoe_setup, then device can do it... > >The comments in struct net_device_ops says for management hooks, if > >that's an ok place for net_fcoe_ops, then, I am all for it. > > > >Thanks. > > > >yi > > Hi, Stephen, > Regarding your comment about adding net_fcoe_ops to net_device_ops, > the net_fcoe_ops contains function pointers ad well as data members, > where net_device_ops seems to me is the placeholder only for function > pointers. So I think it is still better to still leave > the net_fcoe_ops to net_device. Let me know what you think. > > Thanks, > yi Data members go in net_device (because they are per device instance). Put fcoe stuff in net_device_ops. Ideally, it should look like TSO and GRO; with standard ethtool type config? -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index ec54785..faf85be 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -47,6 +47,10 @@ #include <net/dcbnl.h> #endif +#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE) +#include <linux/netfcoe.h> +#endif + struct vlan_group; struct ethtool_ops; struct netpoll_info; @@ -840,6 +844,10 @@ struct net_device struct dcbnl_rtnl_ops *dcbnl_ops; #endif +#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE) + struct net_fcoe_ops *fcoe_ops; +#endif + #ifdef CONFIG_COMPAT_NET_DEV_OPS struct { int (*init)(struct net_device *dev); diff --git a/include/linux/netfcoe.h b/include/linux/netfcoe.h new file mode 100644 index 0000000..9d6d64d --- /dev/null +++ b/include/linux/netfcoe.h @@ -0,0 +1,36 @@ +/* + * Copyright(c) 2007 - 2009 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 + */ +#ifndef __NET_FCOE_H__ +#define __NET_FCOE_H__ + +#define NET_FCOE_CRC (1 << 0) /* FC CRC32 offload */ +#define NET_FCOE_LSO (1 << 1) /* Large send offload */ +#define NET_FCOE_LRO (1 << 2) /* Large receive offload */ +/* + * Ops struct for FCoE enabled drivers to callback through the netdevice struct + */ +struct net_fcoe_ops { + u16 lro_xid; + u32 features; + int (*ddp_setup)(struct net_device *netdev, u16 xid, + struct scatterlist *sgl, unsigned int nents); + int (*ddp_done)(struct net_device *netdev, u16 xid); +}; + +#endif /* __NET_FCOE_H__ */
This adds a "struct net_fcoe_ops *fcoe_ops" to net_device struct so any network adapter driver can provide Fiber Channle over Ethernet (FCoE) offload support through net_device. The fcoe_ops is only available when FCoE is enabled in kernel as built-in or module driver. Signed-off-by: Yi Zou <yi.zou@intel.com> --- include/linux/netdevice.h | 8 ++++++++ include/linux/netfcoe.h | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 0 deletions(-) create mode 100644 include/linux/netfcoe.h -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html