mirror of https://gitee.com/openkylin/linux.git
i40e: When in promisc mode apply promisc mode to Tx Traffic as well
In MFP mode particularly when we were setting the PF VSI in limited promiscuous, the HW switch was still mirroring the outgoing packets from other VSIs (VF/VMdq) onto the PF VSI. With this new bit set, the mirroring doesn't happen any more and so we are in limited promiscuous on the PF VSI in MFP which is similar to defport. An API check is not required, since this bit is reserved for FW API version < 1.5 Also update copyright year in file headers. Change-ID: I9840cb95f11dde733d943cb03ce84f68b9611bc8 Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
73b03f9848
commit
3b1200891b
|
@ -1,7 +1,7 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Intel Ethernet Controller XL710 Family Linux Driver
|
* Intel Ethernet Controller XL710 Family Linux Driver
|
||||||
* Copyright(c) 2013 - 2014 Intel Corporation.
|
* Copyright(c) 2013 - 2016 Intel Corporation.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
|
@ -1087,6 +1087,7 @@ struct i40e_aqc_set_vsi_promiscuous_modes {
|
||||||
#define I40E_AQC_SET_VSI_PROMISC_BROADCAST 0x04
|
#define I40E_AQC_SET_VSI_PROMISC_BROADCAST 0x04
|
||||||
#define I40E_AQC_SET_VSI_DEFAULT 0x08
|
#define I40E_AQC_SET_VSI_DEFAULT 0x08
|
||||||
#define I40E_AQC_SET_VSI_PROMISC_VLAN 0x10
|
#define I40E_AQC_SET_VSI_PROMISC_VLAN 0x10
|
||||||
|
#define I40E_AQC_SET_VSI_PROMISC_TX 0x8000
|
||||||
__le16 seid;
|
__le16 seid;
|
||||||
#define I40E_AQC_VSI_PROM_CMD_SEID_MASK 0x3FF
|
#define I40E_AQC_VSI_PROM_CMD_SEID_MASK 0x3FF
|
||||||
__le16 vlan_tag;
|
__le16 vlan_tag;
|
||||||
|
|
|
@ -1952,12 +1952,19 @@ i40e_status i40e_aq_set_vsi_unicast_promiscuous(struct i40e_hw *hw,
|
||||||
i40e_fill_default_direct_cmd_desc(&desc,
|
i40e_fill_default_direct_cmd_desc(&desc,
|
||||||
i40e_aqc_opc_set_vsi_promiscuous_modes);
|
i40e_aqc_opc_set_vsi_promiscuous_modes);
|
||||||
|
|
||||||
if (set)
|
if (set) {
|
||||||
flags |= I40E_AQC_SET_VSI_PROMISC_UNICAST;
|
flags |= I40E_AQC_SET_VSI_PROMISC_UNICAST;
|
||||||
|
if (((hw->aq.api_maj_ver == 1) && (hw->aq.api_min_ver >= 5)) ||
|
||||||
|
(hw->aq.api_maj_ver > 1))
|
||||||
|
flags |= I40E_AQC_SET_VSI_PROMISC_TX;
|
||||||
|
}
|
||||||
|
|
||||||
cmd->promiscuous_flags = cpu_to_le16(flags);
|
cmd->promiscuous_flags = cpu_to_le16(flags);
|
||||||
|
|
||||||
cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_UNICAST);
|
cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_UNICAST);
|
||||||
|
if (((hw->aq.api_maj_ver >= 1) && (hw->aq.api_min_ver >= 5)) ||
|
||||||
|
(hw->aq.api_maj_ver > 1))
|
||||||
|
cmd->valid_flags |= cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_TX);
|
||||||
|
|
||||||
cmd->seid = cpu_to_le16(seid);
|
cmd->seid = cpu_to_le16(seid);
|
||||||
status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details);
|
status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Intel Ethernet Controller XL710 Family Linux Virtual Function Driver
|
* Intel Ethernet Controller XL710 Family Linux Virtual Function Driver
|
||||||
* Copyright(c) 2013 - 2014 Intel Corporation.
|
* Copyright(c) 2013 - 2016 Intel Corporation.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
|
@ -1084,6 +1084,7 @@ struct i40e_aqc_set_vsi_promiscuous_modes {
|
||||||
#define I40E_AQC_SET_VSI_PROMISC_BROADCAST 0x04
|
#define I40E_AQC_SET_VSI_PROMISC_BROADCAST 0x04
|
||||||
#define I40E_AQC_SET_VSI_DEFAULT 0x08
|
#define I40E_AQC_SET_VSI_DEFAULT 0x08
|
||||||
#define I40E_AQC_SET_VSI_PROMISC_VLAN 0x10
|
#define I40E_AQC_SET_VSI_PROMISC_VLAN 0x10
|
||||||
|
#define I40E_AQC_SET_VSI_PROMISC_TX 0x8000
|
||||||
__le16 seid;
|
__le16 seid;
|
||||||
#define I40E_AQC_VSI_PROM_CMD_SEID_MASK 0x3FF
|
#define I40E_AQC_VSI_PROM_CMD_SEID_MASK 0x3FF
|
||||||
__le16 vlan_tag;
|
__le16 vlan_tag;
|
||||||
|
|
Loading…
Reference in New Issue