RE: [Intel-wired-lan] [PATCH net-next V2 2/2] intel: ixgbevf: Support Windows hosts (Hyper-V)
> -Original Message- > From: Joe Perches [mailto:j...@perches.com] > Sent: Monday, April 18, 2016 10:00 AM > To: KY Srinivasan ; Alexander Duyck > > Cc: David Miller ; Netdev > ; linux-ker...@vger.kernel.org; > de...@linuxdriverproject.org; o...@aepfle.de; Robo Bot > ; Jason Wang ; > e...@mellanox.com; ja...@mellanox.com; yevge...@mellanox.com; John > Ronciak ; intel-wired-lan l...@lists.osuosl.org> > Subject: Re: [Intel-wired-lan] [PATCH net-next V2 2/2] intel: ixgbevf: Support > Windows hosts (Hyper-V) > > On Mon, 2016-04-18 at 16:52 +, KY Srinivasan wrote: > [] > > > > +bool ixgbevf_on_hyperv(struct ixgbe_hw *hw) > > > > +{ > > > > + if (hw->mbx.ops.check_for_msg == NULL) > > > > + return true; > > > > + else > > > > + return false; > > > > +} > > trivia: > > bool func(...) > { > if () > return true; > else > return false; > } > > can generally be written as: > > bool func(...) > { > return ; > } Thanks Joe; will update. K. Y
Re: [Intel-wired-lan] [PATCH net-next V2 2/2] intel: ixgbevf: Support Windows hosts (Hyper-V)
On Mon, 2016-04-18 at 16:52 +, KY Srinivasan wrote: [] > > > +bool ixgbevf_on_hyperv(struct ixgbe_hw *hw) > > > +{ > > > + if (hw->mbx.ops.check_for_msg == NULL) > > > + return true; > > > + else > > > + return false; > > > +} trivia: bool func(...) { if () return true; else return false; } can generally be written as: bool func(...) { return ; }
RE: [Intel-wired-lan] [PATCH net-next V2 2/2] intel: ixgbevf: Support Windows hosts (Hyper-V)
> -Original Message- > From: Alexander Duyck [mailto:alexander.du...@gmail.com] > Sent: Monday, April 18, 2016 9:18 AM > To: KY Srinivasan > Cc: David Miller ; Netdev > ; linux-ker...@vger.kernel.org; > de...@linuxdriverproject.org; o...@aepfle.de; Robo Bot > ; Jason Wang ; > e...@mellanox.com; ja...@mellanox.com; yevge...@mellanox.com; John > Ronciak ; intel-wired-lan l...@lists.osuosl.org> > Subject: Re: [Intel-wired-lan] [PATCH net-next V2 2/2] intel: ixgbevf: Support > Windows hosts (Hyper-V) > > On Sun, Apr 17, 2016 at 10:22 PM, K. Y. Srinivasan > wrote: > > On Hyper-V, the VF/PF communication is a via software mediated path > > as opposed to the hardware mailbox. Make the necessary > > adjustments to support Hyper-V. > > > > Signed-off-by: K. Y. Srinivasan > > --- > > V2: Addressed most of the comments from > > Alexander Duyck > > and Rustad, Mark D . > > > > drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | 12 ++ > > drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 16 ++- > > drivers/net/ethernet/intel/ixgbevf/mbx.c | 12 ++ > > drivers/net/ethernet/intel/ixgbevf/vf.c | 201 > + > > 4 files changed, 237 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h > b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h > > index 5ac60ee..3296d27 100644 > > --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h > > +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h > > @@ -460,9 +460,13 @@ enum ixbgevf_state_t { > > > > enum ixgbevf_boards { > > board_82599_vf, > > + board_82599_vf_hv, > > board_X540_vf, > > + board_X540_vf_hv, > > board_X550_vf, > > + board_X550_vf_hv, > > board_X550EM_x_vf, > > + board_X550EM_x_vf_hv, > > }; > > > > enum ixgbevf_xcast_modes { > > @@ -477,6 +481,13 @@ extern const struct ixgbevf_info > ixgbevf_X550_vf_info; > > extern const struct ixgbevf_info ixgbevf_X550EM_x_vf_info; > > extern const struct ixgbe_mbx_operations ixgbevf_mbx_ops; > > > > + > > +extern const struct ixgbevf_info ixgbevf_82599_vf_hv_info; > > +extern const struct ixgbevf_info ixgbevf_X540_vf_hv_info; > > +extern const struct ixgbevf_info ixgbevf_X550_vf_hv_info; > > +extern const struct ixgbevf_info ixgbevf_X550EM_x_vf_hv_info; > > +extern const struct ixgbe_mbx_operations ixgbevf_hv_mbx_ops; > > + > > /* needed by ethtool.c */ > > extern const char ixgbevf_driver_name[]; > > extern const char ixgbevf_driver_version[]; > > @@ -494,6 +505,7 @@ void ixgbevf_free_rx_resources(struct ixgbevf_ring > *); > > void ixgbevf_free_tx_resources(struct ixgbevf_ring *); > > void ixgbevf_update_stats(struct ixgbevf_adapter *adapter); > > int ethtool_ioctl(struct ifreq *ifr); > > +bool ixgbevf_on_hyperv(struct ixgbe_hw *hw); > > > > extern void ixgbevf_write_eitr(struct ixgbevf_q_vector *q_vector); > > > > diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > > index 007cbe0..c761d80 100644 > > --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > > +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > > @@ -62,10 +62,14 @@ static char ixgbevf_copyright[] = > > "Copyright (c) 2009 - 2015 Intel Corporation."; > > > > static const struct ixgbevf_info *ixgbevf_info_tbl[] = { > > - [board_82599_vf] = &ixgbevf_82599_vf_info, > > - [board_X540_vf] = &ixgbevf_X540_vf_info, > > - [board_X550_vf] = &ixgbevf_X550_vf_info, > > - [board_X550EM_x_vf] = &ixgbevf_X550EM_x_vf_info, > > + [board_82599_vf]= &ixgbevf_82599_vf_info, > > + [board_82599_vf_hv] = &ixgbevf_82599_vf_hv_info, > > + [board_X540_vf] = &ixgbevf_X540_vf_info, > > + [board_X540_vf_hv] = &ixgbevf_X540_vf_hv_info, > > + [board_X550_vf] = &ixgbevf_X550_vf_info, > > + [board_X550_vf_hv] = &ixgbevf_X550_vf_hv_info, > > + [board_X550EM_x_vf] = &ixgbevf_X550EM_x_vf_info, > > + [board_X550EM_x_vf_hv] = &ixgbevf_X550EM_x_vf_hv_info, > > }; > > > > /* ixgbevf_pci_tbl - PCI Device ID Table > > @@ -78,9 +82,13 @@ static const struct ixgbevf_info *ixgbevf_info_tbl[] = > { > > */ > > static const struct pci_device_id ixgbevf_pci_tbl[] = { > > {PCI_VDEVICE(INTEL, IXG
Re: [Intel-wired-lan] [PATCH net-next V2 2/2] intel: ixgbevf: Support Windows hosts (Hyper-V)
On Sun, Apr 17, 2016 at 10:22 PM, K. Y. Srinivasan wrote: > On Hyper-V, the VF/PF communication is a via software mediated path > as opposed to the hardware mailbox. Make the necessary > adjustments to support Hyper-V. > > Signed-off-by: K. Y. Srinivasan > --- > V2: Addressed most of the comments from > Alexander Duyck > and Rustad, Mark D . > > drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | 12 ++ > drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 16 ++- > drivers/net/ethernet/intel/ixgbevf/mbx.c | 12 ++ > drivers/net/ethernet/intel/ixgbevf/vf.c | 201 > + > 4 files changed, 237 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h > b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h > index 5ac60ee..3296d27 100644 > --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h > +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h > @@ -460,9 +460,13 @@ enum ixbgevf_state_t { > > enum ixgbevf_boards { > board_82599_vf, > + board_82599_vf_hv, > board_X540_vf, > + board_X540_vf_hv, > board_X550_vf, > + board_X550_vf_hv, > board_X550EM_x_vf, > + board_X550EM_x_vf_hv, > }; > > enum ixgbevf_xcast_modes { > @@ -477,6 +481,13 @@ extern const struct ixgbevf_info ixgbevf_X550_vf_info; > extern const struct ixgbevf_info ixgbevf_X550EM_x_vf_info; > extern const struct ixgbe_mbx_operations ixgbevf_mbx_ops; > > + > +extern const struct ixgbevf_info ixgbevf_82599_vf_hv_info; > +extern const struct ixgbevf_info ixgbevf_X540_vf_hv_info; > +extern const struct ixgbevf_info ixgbevf_X550_vf_hv_info; > +extern const struct ixgbevf_info ixgbevf_X550EM_x_vf_hv_info; > +extern const struct ixgbe_mbx_operations ixgbevf_hv_mbx_ops; > + > /* needed by ethtool.c */ > extern const char ixgbevf_driver_name[]; > extern const char ixgbevf_driver_version[]; > @@ -494,6 +505,7 @@ void ixgbevf_free_rx_resources(struct ixgbevf_ring *); > void ixgbevf_free_tx_resources(struct ixgbevf_ring *); > void ixgbevf_update_stats(struct ixgbevf_adapter *adapter); > int ethtool_ioctl(struct ifreq *ifr); > +bool ixgbevf_on_hyperv(struct ixgbe_hw *hw); > > extern void ixgbevf_write_eitr(struct ixgbevf_q_vector *q_vector); > > diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > index 007cbe0..c761d80 100644 > --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > @@ -62,10 +62,14 @@ static char ixgbevf_copyright[] = > "Copyright (c) 2009 - 2015 Intel Corporation."; > > static const struct ixgbevf_info *ixgbevf_info_tbl[] = { > - [board_82599_vf] = &ixgbevf_82599_vf_info, > - [board_X540_vf] = &ixgbevf_X540_vf_info, > - [board_X550_vf] = &ixgbevf_X550_vf_info, > - [board_X550EM_x_vf] = &ixgbevf_X550EM_x_vf_info, > + [board_82599_vf]= &ixgbevf_82599_vf_info, > + [board_82599_vf_hv] = &ixgbevf_82599_vf_hv_info, > + [board_X540_vf] = &ixgbevf_X540_vf_info, > + [board_X540_vf_hv] = &ixgbevf_X540_vf_hv_info, > + [board_X550_vf] = &ixgbevf_X550_vf_info, > + [board_X550_vf_hv] = &ixgbevf_X550_vf_hv_info, > + [board_X550EM_x_vf] = &ixgbevf_X550EM_x_vf_info, > + [board_X550EM_x_vf_hv] = &ixgbevf_X550EM_x_vf_hv_info, > }; > > /* ixgbevf_pci_tbl - PCI Device ID Table > @@ -78,9 +82,13 @@ static const struct ixgbevf_info *ixgbevf_info_tbl[] = { > */ > static const struct pci_device_id ixgbevf_pci_tbl[] = { > {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_VF), board_82599_vf }, > + {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_VF_HV), board_82599_vf_hv }, > {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540_VF), board_X540_vf }, > + {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540_VF_HV), board_X540_vf_hv }, > {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550_VF), board_X550_vf }, > + {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550_VF_HV), board_X550_vf_hv }, > {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_X_VF), board_X550EM_x_vf }, > + {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_X_VF_HV), > board_X550EM_x_vf_hv}, > /* required last entry */ > {0, } > }; > diff --git a/drivers/net/ethernet/intel/ixgbevf/mbx.c > b/drivers/net/ethernet/intel/ixgbevf/mbx.c > index dc68fea..298a0da 100644 > --- a/drivers/net/ethernet/intel/ixgbevf/mbx.c > +++ b/drivers/net/ethernet/intel/ixgbevf/mbx.c > @@ -346,3 +346,15 @@ const struct ixgbe_mbx_operations ixgbevf_mbx_ops = { > .check_for_rst = ixgbevf_check_for_rst_vf, > }; > > +/** > + * Mailbox operations when running on Hyper-V. > + * On Hyper-V, PF/VF communiction is not through the > + * hardware mailbox; this communication is through > + * a software mediated path. > + * Most mail box operations are noop while running on > + * Hyper-V. > + */ > +const struct ixgbe_mbx_operations i