[dpdk-dev] net/ixgbe: fix Rx/Tx queue interrupt for x550 devices
Checks
Commit Message
x550 devices not do interrupt vector mapping before
enable Rx/Tx queue interrupt, makes interrupt mode
can't work neither with igb_uio or VFIO.
Fixes: d2e72774e58c ("ixgbe/base: support X550")
Signed-off-by: Qiming Yang <qiming.yang@intel.com>
---
drivers/net/ixgbe/ixgbe_ethdev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Comments
Hi,Qiming:
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Qiming Yang
> Sent: Monday, July 17, 2017 1:35 PM
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Lu, Wenzhuo <wenzhuo.lu@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>
> Subject: [dpdk-dev] [PATCH] net/ixgbe: fix Rx/Tx queue interrupt for x550
> devices
>
> x550 devices not do interrupt vector mapping before enable Rx/Tx queue
> interrupt, makes interrupt mode can't work neither with igb_uio or VFIO.
>
> Fixes: d2e72774e58c ("ixgbe/base: support X550")
>
> Signed-off-by: Qiming Yang <qiming.yang@intel.com>
> ---
> drivers/net/ixgbe/ixgbe_ethdev.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
> index 9b06ac1..8432482 100644
> --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> @@ -5611,7 +5611,8 @@ ixgbe_set_ivar_map(struct ixgbe_hw *hw, int8_t
> direction,
> tmp |= (msix_vector << (8 * (queue & 0x3)));
> IXGBE_WRITE_REG(hw, IXGBE_IVAR(idx), tmp);
> } else if ((hw->mac.type == ixgbe_mac_82599EB) ||
> - (hw->mac.type == ixgbe_mac_X540)) {
> + (hw->mac.type == ixgbe_mac_X540)
> + (hw->mac.type == ixgbe_mac_X550)) {
It looks like that you forget to add "||"
Thanks
Zhiyong
> if (direction == -1) {
> /* other causes */
> idx = ((queue & 1) * 8);
> --
> 2.7.4
Yes, thanks. I'll send another patch with both fixed other issue.
> -----Original Message-----
> From: Yang, Zhiyong
> Sent: Monday, July 17, 2017 2:09 PM
> To: Yang, Qiming <qiming.yang@intel.com>; dev@dpdk.org
> Cc: stable@dpdk.org; Lu, Wenzhuo <wenzhuo.lu@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>
> Subject: RE: [dpdk-dev] [PATCH] net/ixgbe: fix Rx/Tx queue interrupt for x550
> devices
>
> Hi,Qiming:
>
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Qiming Yang
> > Sent: Monday, July 17, 2017 1:35 PM
> > To: dev@dpdk.org
> > Cc: stable@dpdk.org; Lu, Wenzhuo <wenzhuo.lu@intel.com>; Yang, Qiming
> > <qiming.yang@intel.com>
> > Subject: [dpdk-dev] [PATCH] net/ixgbe: fix Rx/Tx queue interrupt for
> > x550 devices
> >
> > x550 devices not do interrupt vector mapping before enable Rx/Tx queue
> > interrupt, makes interrupt mode can't work neither with igb_uio or VFIO.
> >
> > Fixes: d2e72774e58c ("ixgbe/base: support X550")
> >
> > Signed-off-by: Qiming Yang <qiming.yang@intel.com>
> > ---
> > drivers/net/ixgbe/ixgbe_ethdev.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c
> > b/drivers/net/ixgbe/ixgbe_ethdev.c
> > index 9b06ac1..8432482 100644
> > --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> > @@ -5611,7 +5611,8 @@ ixgbe_set_ivar_map(struct ixgbe_hw *hw, int8_t
> > direction,
> > tmp |= (msix_vector << (8 * (queue & 0x3)));
> > IXGBE_WRITE_REG(hw, IXGBE_IVAR(idx), tmp);
> > } else if ((hw->mac.type == ixgbe_mac_82599EB) ||
> > - (hw->mac.type == ixgbe_mac_X540)) {
> > + (hw->mac.type == ixgbe_mac_X540)
> > + (hw->mac.type == ixgbe_mac_X550)) {
>
> It looks like that you forget to add "||"
>
> Thanks
> Zhiyong
>
> > if (direction == -1) {
> > /* other causes */
> > idx = ((queue & 1) * 8);
> > --
> > 2.7.4
@@ -5611,7 +5611,8 @@ ixgbe_set_ivar_map(struct ixgbe_hw *hw, int8_t direction,
tmp |= (msix_vector << (8 * (queue & 0x3)));
IXGBE_WRITE_REG(hw, IXGBE_IVAR(idx), tmp);
} else if ((hw->mac.type == ixgbe_mac_82599EB) ||
- (hw->mac.type == ixgbe_mac_X540)) {
+ (hw->mac.type == ixgbe_mac_X540)
+ (hw->mac.type == ixgbe_mac_X550)) {
if (direction == -1) {
/* other causes */
idx = ((queue & 1) * 8);