]> git.baikalelectronics.ru Git - kernel.git/commitdiff
i40e: Remove LLDP frame filters
authorArkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Fri, 16 Apr 2021 21:43:57 +0000 (23:43 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 7 May 2021 16:35:49 +0000 (09:35 -0700)
Remove filters from being setup in case of software DCB and allow the
LLDP frames to be properly transmitted to the wire.

It is not possible to transmit the LLDP frame out of the port, if they
are filtered by control VSI. This prohibits software LLDP agent
properly communicate its DCB capabilities to the neighbors.

Fixes: 4b208eaa8078 ("i40e: Add init and default config of software based DCB")
Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Tested-by: Imam Hassan Reza Biswas <imam.hassan.reza.biswas@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/i40e/i40e.h
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
drivers/net/ethernet/intel/i40e/i40e_main.c

index 9067cd3ce243973bc7bb4f613f7497d9ed975e61..85d3dd3a3339fe0d9ed6548dbb61c0d7ff84e4be 100644 (file)
@@ -1144,7 +1144,6 @@ static inline bool i40e_is_sw_dcb(struct i40e_pf *pf)
        return !!(pf->flags & I40E_FLAG_DISABLE_FW_LLDP);
 }
 
-void i40e_set_lldp_forwarding(struct i40e_pf *pf, bool enable);
 #ifdef CONFIG_I40E_DCB
 void i40e_dcbnl_flush_apps(struct i40e_pf *pf,
                           struct i40e_dcbx_config *old_cfg,
index bd527eab002b5b056394017a15d3da31318f9f63..ccd5b9486ea987767b9da3a75a43867e67f78bc7 100644 (file)
@@ -5282,7 +5282,6 @@ flags_complete:
                        i40e_aq_cfg_lldp_mib_change_event(&pf->hw, false, NULL);
                        i40e_aq_stop_lldp(&pf->hw, true, false, NULL);
                } else {
-                       i40e_set_lldp_forwarding(pf, false);
                        status = i40e_aq_start_lldp(&pf->hw, false, NULL);
                        if (status) {
                                adq_err = pf->hw.aq.asq_last_status;
index c2d145a56b5ed416a1cdfb7129ef8e7575ae99e2..704e474879c5bf8467fe24037ba3e41ce9807824 100644 (file)
@@ -6879,40 +6879,6 @@ out:
 }
 #endif /* CONFIG_I40E_DCB */
 
-/**
- * i40e_set_lldp_forwarding - set forwarding of lldp frames
- * @pf: PF being configured
- * @enable: if forwarding to OS shall be enabled
- *
- * Toggle forwarding of lldp frames behavior,
- * When passing DCB control from firmware to software
- * lldp frames must be forwarded to the software based
- * lldp agent.
- */
-void i40e_set_lldp_forwarding(struct i40e_pf *pf, bool enable)
-{
-       if (pf->lan_vsi == I40E_NO_VSI)
-               return;
-
-       if (!pf->vsi[pf->lan_vsi])
-               return;
-
-       /* No need to check the outcome, commands may fail
-        * if desired value is already set
-        */
-       i40e_aq_add_rem_control_packet_filter(&pf->hw, NULL, ETH_P_LLDP,
-                                             I40E_AQC_ADD_CONTROL_PACKET_FLAGS_TX |
-                                             I40E_AQC_ADD_CONTROL_PACKET_FLAGS_IGNORE_MAC,
-                                             pf->vsi[pf->lan_vsi]->seid, 0,
-                                             enable, NULL, NULL);
-
-       i40e_aq_add_rem_control_packet_filter(&pf->hw, NULL, ETH_P_LLDP,
-                                             I40E_AQC_ADD_CONTROL_PACKET_FLAGS_RX |
-                                             I40E_AQC_ADD_CONTROL_PACKET_FLAGS_IGNORE_MAC,
-                                             pf->vsi[pf->lan_vsi]->seid, 0,
-                                             enable, NULL, NULL);
-}
-
 /**
  * i40e_print_link_message - print link up or down
  * @vsi: the VSI for which link needs a message
@@ -10736,10 +10702,6 @@ static void i40e_rebuild(struct i40e_pf *pf, bool reinit, bool lock_acquired)
         */
        i40e_add_filter_to_drop_tx_flow_control_frames(&pf->hw,
                                                       pf->main_vsi_seid);
-#ifdef CONFIG_I40E_DCB
-       if (pf->flags & I40E_FLAG_DISABLE_FW_LLDP)
-               i40e_set_lldp_forwarding(pf, true);
-#endif /* CONFIG_I40E_DCB */
 
        /* restart the VSIs that were rebuilt and running before the reset */
        i40e_pf_unquiesce_all_vsi(pf);
@@ -15772,10 +15734,6 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
         */
        i40e_add_filter_to_drop_tx_flow_control_frames(&pf->hw,
                                                       pf->main_vsi_seid);
-#ifdef CONFIG_I40E_DCB
-       if (pf->flags & I40E_FLAG_DISABLE_FW_LLDP)
-               i40e_set_lldp_forwarding(pf, true);
-#endif /* CONFIG_I40E_DCB */
 
        if ((pf->hw.device_id == I40E_DEV_ID_10G_BASE_T) ||
                (pf->hw.device_id == I40E_DEV_ID_10G_BASE_T4))