Quantcast
Viewing all articles
Browse latest Browse all 4405

Difference in DPDK and Native IXGBE driver support for 82599 NIC

Hello All,

 

We have been trying to make Unicast promiscuous mode work with RHEL7.3 with latest native ixgbe driver (ixgbe-5.1.3), but it seems that unicast promiscuous mode is not enabled for 82599 series nic cards in the native driver.

I can see an explicit check in ixgbe_sriov.c code, where before enabling promiscuous mode, it checks if NIC card is equal(or lower) than 82599EB, it returns.

 

Adding snippet below:

        case IXGBEVF_XCAST_MODE_PROMISC:

                if (hw->mac.type <= ixgbe_mac_82599EB)

                        return -EOPNOTSUPP;

 

 

                fctrl = IXGBE_READ_REG(hw, IXGBE_FCTRL);

                if (!(fctrl & IXGBE_FCTRL_UPE)) {

                        /* VF promisc requires PF in promisc */

                        e_warn(drv,

                               "Enabling VF promisc requires PF in promisc\n");

                        return -EPERM;

                }

 

 

                disable = 0;

                enable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE |

                         IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;

                break;

 

But, when I see the corresponding code in DPDK16.11 version, I can see the support has been added for 82599 NICs family. The feature seems to have implemented using IXGBE_VMOLR_ROPE  flag.

 

Relevant snippet from DPDK code:

uint32_t

ixgbe_convert_vm_rx_mask_to_val(uint16_t rx_mask, uint32_t orig_val)

{

        uint32_t new_val = orig_val;

 

        if (rx_mask & ETH_VMDQ_ACCEPT_UNTAG)

                new_val |= IXGBE_VMOLR_AUPE;

        if (rx_mask & ETH_VMDQ_ACCEPT_HASH_MC)

                new_val |= IXGBE_VMOLR_ROMPE;

        if (rx_mask & ETH_VMDQ_ACCEPT_HASH_UC)

                new_val |= IXGBE_VMOLR_ROPE;

        if (rx_mask & ETH_VMDQ_ACCEPT_BROADCAST)

                new_val |= IXGBE_VMOLR_BAM;

        if (rx_mask & ETH_VMDQ_ACCEPT_MULTICAST)

                new_val |= IXGBE_VMOLR_MPE;

 

        return new_val;

}

 

 

So, can you please let us know, why such difference between supported NIC ? and can we also have similar functionality ported to the native ixgbe driver?

 

Other setup details

 

Kernel version

# uname -r

3.10.0-514.el7.x86_64

 

LSPCI output

# lspci -nn | grep Ether | grep 82599

81:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)

81:00.1 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)

81:10.0 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)

 

# ethtool -i eth2

driver: ixgbe

version: 5.1.3

firmware-version: 0x61bd0001

expansion-rom-version:

bus-info: 0000:81:00.0

supports-statistics: yes

supports-test: yes

supports-eeprom-access: yes

supports-register-dump: yes

supports-priv-flags: yes

 

 

Regards

Pratik


Viewing all articles
Browse latest Browse all 4405

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>