Project

General

Profile

Feature #11361

i40e default VSI sometimes lacks implicit L2 filter

Added by Robert Mustacchi 3 months ago. Updated 3 months ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
driver - device drivers
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:

Description

Up until this point, all testing against X710/X722 parts has shown two different behaviors with regards to the implicit L2 filter on the Default VSI.

1. The Default VSI has an implicit L2 filter for the factory MAC address and it counts against the total number of L2 filters used.

2. The same as #1 but it DOES NOT count against the total used.

But recently a customer seems to have encountered a third behavior:

3. The Default VSI DOES NOT have an implicit L2 filter for the factory MAC address.

This third behavior causes `i40e_config_def_vsi()` to fail and the following message to be printed to the logs.

2018-12-05T14:59:26.886836+00:00 tcn002 i40e: [ID 517869 kern.warning] WARNING: i40e0: Failed to remove primary MAC from default VSI:  -53 (2)

This message is saying that the request to delete the primary (aka factory) MAC has failed with ENOENT. Here is the code:

    /*
     * The controller places an implicit L2 filter for the primary
     * MAC pointing to the default VSI. We remove this filter to
     * prevent duplicate delivery of packets destined for the
     * primary MAC address as DLS will create the same filter on a
     * non-default VSI for the primary MAC client.
     */
    bzero(&filt, sizeof (filt));
    bcopy(hw->mac.port_addr, filt.mac_addr, ETHERADDRL);
    filt.flags = I40E_AQC_MACVLAN_DEL_PERFECT_MATCH;
    filt.vlan_tag = 0;

    ASSERT3U(i40e->i40e_resources.ifr_nmacfilt_used, <=, 1);

    err = i40e_aq_remove_macvlan(hw, I40E_DEF_VSI_SEID(i40e), &filt, 1,
        NULL);
    if (err != I40E_SUCCESS) {
        i40e_error(i40e, "Failed to remove primary MAC from default VSI" 
            ":  %d (%d)", err, hw->aq.asq_last_status);
        return (B_FALSE);
    }

And here is the information for the controller the customer is running:

Dual Marvell 88E1512 PHY Gigabit Ethernet Controller via Intel C621 Chipset

                   pci15d9,37d1, instance #0
                        Driver properties:
                            name='api-version' type=string items=1 dev=none
                                value='1.5'
                            name='firmware-build' type=string items=1 dev=none
                                value='c25b'
                            name='firmware-version' type=string items=1 dev=none
                                value='3.1'
                            name='printed-board-assembly' type=string items=1 dev=none
                                value=''
                            name='fm-accchk-capable' type=boolean dev=none
                            name='fm-dmachk-capable' type=boolean dev=none
                            name='fm-errcb-capable' type=boolean dev=none
                            name='fm-ereport-capable' type=boolean dev=none
                        Hardware properties:
                            name='pci-msix-capid-pointer' type=int items=1
                                value=00000070
                            name='pci-msi-capid-pointer' type=int items=1
                                value=00000050
                            name='pcie-serial' type=byte items=8
                                value=ac.1f.6b.ff.ff.1e.8c.6e
                            name='acpi-namespace' type=string items=1
                                value='\_SB_.PC03.BR3A.EPCU.VSP3.FPK0'
                            name='assigned-addresses' type=int items=10
                                value=c3600010.00000000.c4000000.00000000.01000000.c360001c.00000000.c5008000.00000000.00008000
                            name='reg' type=int items=15
                                value=00600000.00000000.00000000.00000000.00000000.43600010.00000000.00000000.00000000.01000000.4360001c.00000000.00000000.00000000.00008000
                            name='compatible' type=string items=13
                                value='pciex8086,37d1.15d9.37d1.8' + 'pciex8086,37d1.15d9.37d1' + 'pciex8086,37d1.8' + 'pciex8086,37d1' + 'pciexclass,020000' + 'pciexclass,0200' + 'pci8086,37d1.15d9.37d1.8' + 'pci8086,37d1.15d9.37d1' + 'pci15d9,37d1' + 'pci8086,37d1.8' + 'pci8086,37d1' + 'pciclass,020000' + 'pciclass,0200'
                                                            name='model' type=string items=1
                                value='Ethernet controller'
                            name='power-consumption' type=int items=2
                                value=00000001.00000001
                            name='devsel-speed' type=int items=1
                                value=00000000
                            name='interrupts' type=int items=1
                                value=00000001
                            name='subsystem-vendor-id' type=int items=1
                                value=000015d9
                            name='subsystem-id' type=int items=1
                                value=000037d1
                            name='unit-address' type=string items=1
                                value='0'
                            name='class-code' type=int items=1
                                value=00020000
                            name='revision-id' type=int items=1
                                value=00000008
                            name='vendor-id' type=int items=1
                                value=00008086
                            name='device-id' type=int items=1
                                value=000037d1
                            name='vendor-name' type=string items=1
                                value='Intel Corporation'
                            name='device-name' type=string items=1
                                value='Ethernet Connection X722 for 1GbE'
                            name='subsystem-name' type=string items=1
                                value='unknown subsystem'
                        Device Minor Nodes:
                            dev=(296,1)
                                dev_path=/pci@5a,0/pci8086,2030@0/pci8086,37c0@0/pci8086,37c5@3/pci15d9,37d1@0:i40e0
                                    spectype=chr type=minor
                                    dev_link=/dev/i40e0
                            dev=(296,1004)
                                dev_path=<clone>
                                Device Minor Layered Under:
                                    mod=udp accesstype=chr
                                        dev_path=/pseudo/udp@0
                            dev=(296,1003)
                                dev_path=<clone>
                                Device Minor Layered Under:
                                    mod=udp accesstype=chr
                                        dev_path=/pseudo/udp@0

                    pci15d9,37d1, instance #1
                        Driver properties:
                            name='api-version' type=string items=1 dev=none
                                value='1.5'
                            name='firmware-build' type=string items=1 dev=none
                                value='c25b'
                            name='firmware-version' type=string items=1 dev=none
                                value='3.1'
                            name='printed-board-assembly' type=string items=1 dev=none
                                value=''
                            name='fm-accchk-capable' type=boolean dev=none
                            name='fm-dmachk-capable' type=boolean dev=none
                            name='fm-errcb-capable' type=boolean dev=none
                            name='fm-ereport-capable' type=boolean dev=none
                        Hardware properties:
                            name='pci-msix-capid-pointer' type=int items=1
                                value=00000070
                            name='pci-msi-capid-pointer' type=int items=1
                                value=00000050
                            name='pcie-serial' type=byte items=8
                                value=ac.1f.6b.ff.ff.1e.8c.6e
                            name='acpi-namespace' type=string items=1
                                value='\_SB_.PC03.BR3A.EPCU.VSP3.FPK1'
                            name='assigned-addresses' type=int items=10
                                value=c3600110.00000000.c3000000.00000000.01000000.c360011c.00000000.c5000000.00000000.00008000
                            name='reg' type=int items=15
                                value=00600100.00000000.00000000.00000000.00000000.43600110.00000000.00000000.00000000.01000000.4360011c.00000000.00000000.00000000.00008000
                            name='compatible' type=string items=13
                                value='pciex8086,37d1.15d9.37d1.8' + 'pciex8086,37d1.15d9.37d1' + 'pciex8086,37d1.8' + 'pciex8086,37d1' + 'pciexclass,020000' + 'pciexclass,0200' + 'pci8086,37d1.15d9.37d1.8' + 'pci8086,37d1.15d9.37d1' + 'pci15d9,37d1' + 'pci8086,37d1.8' + 'pci8086,37d1' + 'pciclass,020000' + 'pciclass,0200'
                                                            name='model' type=string items=1
                                value='Ethernet controller'
                            name='power-consumption' type=int items=2
                                value=00000001.00000001
                            name='devsel-speed' type=int items=1
                                value=00000000
                            name='interrupts' type=int items=1
                                value=00000001
                            name='subsystem-vendor-id' type=int items=1
                                value=000015d9
                            name='subsystem-id' type=int items=1
                                value=000037d1
                            name='unit-address' type=string items=1
                                value='0,1'
                            name='class-code' type=int items=1
                                value=00020000
                            name='revision-id' type=int items=1
                                value=00000008
                            name='vendor-id' type=int items=1
                                value=00008086
                            name='device-id' type=int items=1
                                value=000037d1
                            name='vendor-name' type=string items=1
                                value='Intel Corporation'
                            name='device-name' type=string items=1
                                value='Ethernet Connection X722 for 1GbE'
                            name='subsystem-name' type=string items=1
                                value='unknown subsystem'
                        Device Minor Nodes:
                            dev=(296,2)
                                dev_path=/pci@5a,0/pci8086,2030@0/pci8086,37c0@0/pci8086,37c5@3/pci15d9,37d1@0,1:i40e1
                                    spectype=chr type=minor
                                    dev_link=/dev/i40e1

The current assumption is that this controller/firmware lacks the implicit filter. But it's worth pointing out that the code assumes the implicit filters is a untagged traffic filter. Perhaps there is a chance that the filter is for any tagged traffic (i.e. created with the I40E_AQC_MACVLAN_ADD_IGNORE_VLAN flag).

History

#1

Updated by Electric Monk 3 months ago

  • Status changed from New to Closed

git commit 35c41bec7bc78a7cb9515709725049bc12064c04

commit  35c41bec7bc78a7cb9515709725049bc12064c04
Author: Ryan Zezeski <rpz@joyent.com>
Date:   2019-07-15T18:17:01.000Z

    11361 i40e default VSI sometimes lacks implicit L2 filter
    Reviewed by: Robert Mustacchi <rm@joyent.com>
    Reviewed by: Randy Fishel <randyf@sibernet.com>
    Approved by: Garrett D'Amore <garrett@damore.org>

Also available in: Atom PDF