Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue
Jeff Kirsher says: ==================== Intel Wired LAN Driver Updates 2018-10-31 This series contains a various collection of fixes. Miroslav Lichvar from Red Hat or should I say IBM now? Updates the PHC timecounter interval for igb so that it gets updated at least once every 550 seconds. Ngai-Mint provides a fix for fm10k to prevent a soft lockup or system crash by adding a new condition to determine if the SM mailbox is in the correct state before proceeding. Jake provides several fm10k fixes, first one marks complier aborts as non-fatal since on some platforms trigger machine check errors when the compile aborts. Added missing device ids to the in-kernel driver. Due to the recent fixes, bumped the driver version. I (Jeff Kirsher) fixed a XFRM_ALGO dependency for both ixgbe and ixgbevf. This fix was based on the original work from Arnd Bergmann, which only fixed ixgbe. Mitch provides a fix for i40e/avf to update the status codes, which resolves an issue between a mis-match between i40e and the iavf driver, which also supports the ice LAN driver. Radoslaw fixes the ixgbe where the driver is logging a message about spoofed packets detected when the VF is re-started with a different MAC address. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Коммит
4d3163cf87
|
@ -200,6 +200,15 @@ config IXGBE_DCB
|
||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
|
config IXGBE_IPSEC
|
||||||
|
bool "IPSec XFRM cryptography-offload acceleration"
|
||||||
|
depends on IXGBE
|
||||||
|
depends on XFRM_OFFLOAD
|
||||||
|
default y
|
||||||
|
select XFRM_ALGO
|
||||||
|
---help---
|
||||||
|
Enable support for IPSec offload in ixgbe.ko
|
||||||
|
|
||||||
config IXGBEVF
|
config IXGBEVF
|
||||||
tristate "Intel(R) 10GbE PCI Express Virtual Function Ethernet support"
|
tristate "Intel(R) 10GbE PCI Express Virtual Function Ethernet support"
|
||||||
depends on PCI_MSI
|
depends on PCI_MSI
|
||||||
|
@ -217,6 +226,15 @@ config IXGBEVF
|
||||||
will be called ixgbevf. MSI-X interrupt support is required
|
will be called ixgbevf. MSI-X interrupt support is required
|
||||||
for this driver to work correctly.
|
for this driver to work correctly.
|
||||||
|
|
||||||
|
config IXGBEVF_IPSEC
|
||||||
|
bool "IPSec XFRM cryptography-offload acceleration"
|
||||||
|
depends on IXGBEVF
|
||||||
|
depends on XFRM_OFFLOAD
|
||||||
|
default y
|
||||||
|
select XFRM_ALGO
|
||||||
|
---help---
|
||||||
|
Enable support for IPSec offload in ixgbevf.ko
|
||||||
|
|
||||||
config I40E
|
config I40E
|
||||||
tristate "Intel(R) Ethernet Controller XL710 Family support"
|
tristate "Intel(R) Ethernet Controller XL710 Family support"
|
||||||
imply PTP_1588_CLOCK
|
imply PTP_1588_CLOCK
|
||||||
|
|
|
@ -244,7 +244,8 @@ process_mbx:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* guarantee we have free space in the SM mailbox */
|
/* guarantee we have free space in the SM mailbox */
|
||||||
if (!hw->mbx.ops.tx_ready(&hw->mbx, FM10K_VFMBX_MSG_MTU)) {
|
if (hw->mbx.state == FM10K_STATE_OPEN &&
|
||||||
|
!hw->mbx.ops.tx_ready(&hw->mbx, FM10K_VFMBX_MSG_MTU)) {
|
||||||
/* keep track of how many times this occurs */
|
/* keep track of how many times this occurs */
|
||||||
interface->hw_sm_mbx_full++;
|
interface->hw_sm_mbx_full++;
|
||||||
|
|
||||||
|
@ -302,6 +303,28 @@ void fm10k_iov_suspend(struct pci_dev *pdev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void fm10k_mask_aer_comp_abort(struct pci_dev *pdev)
|
||||||
|
{
|
||||||
|
u32 err_mask;
|
||||||
|
int pos;
|
||||||
|
|
||||||
|
pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ERR);
|
||||||
|
if (!pos)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Mask the completion abort bit in the ERR_UNCOR_MASK register,
|
||||||
|
* preventing the device from reporting these errors to the upstream
|
||||||
|
* PCIe root device. This avoids bringing down platforms which upgrade
|
||||||
|
* non-fatal completer aborts into machine check exceptions. Completer
|
||||||
|
* aborts can occur whenever a VF reads a queue it doesn't own.
|
||||||
|
*/
|
||||||
|
pci_read_config_dword(pdev, pos + PCI_ERR_UNCOR_MASK, &err_mask);
|
||||||
|
err_mask |= PCI_ERR_UNC_COMP_ABORT;
|
||||||
|
pci_write_config_dword(pdev, pos + PCI_ERR_UNCOR_MASK, err_mask);
|
||||||
|
|
||||||
|
mmiowb();
|
||||||
|
}
|
||||||
|
|
||||||
int fm10k_iov_resume(struct pci_dev *pdev)
|
int fm10k_iov_resume(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
struct fm10k_intfc *interface = pci_get_drvdata(pdev);
|
struct fm10k_intfc *interface = pci_get_drvdata(pdev);
|
||||||
|
@ -317,6 +340,12 @@ int fm10k_iov_resume(struct pci_dev *pdev)
|
||||||
if (!iov_data)
|
if (!iov_data)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
/* Lower severity of completer abort error reporting as
|
||||||
|
* the VFs can trigger this any time they read a queue
|
||||||
|
* that they don't own.
|
||||||
|
*/
|
||||||
|
fm10k_mask_aer_comp_abort(pdev);
|
||||||
|
|
||||||
/* allocate hardware resources for the VFs */
|
/* allocate hardware resources for the VFs */
|
||||||
hw->iov.ops.assign_resources(hw, num_vfs, num_vfs);
|
hw->iov.ops.assign_resources(hw, num_vfs, num_vfs);
|
||||||
|
|
||||||
|
@ -460,20 +489,6 @@ void fm10k_iov_disable(struct pci_dev *pdev)
|
||||||
fm10k_iov_free_data(pdev);
|
fm10k_iov_free_data(pdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fm10k_disable_aer_comp_abort(struct pci_dev *pdev)
|
|
||||||
{
|
|
||||||
u32 err_sev;
|
|
||||||
int pos;
|
|
||||||
|
|
||||||
pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ERR);
|
|
||||||
if (!pos)
|
|
||||||
return;
|
|
||||||
|
|
||||||
pci_read_config_dword(pdev, pos + PCI_ERR_UNCOR_SEVER, &err_sev);
|
|
||||||
err_sev &= ~PCI_ERR_UNC_COMP_ABORT;
|
|
||||||
pci_write_config_dword(pdev, pos + PCI_ERR_UNCOR_SEVER, err_sev);
|
|
||||||
}
|
|
||||||
|
|
||||||
int fm10k_iov_configure(struct pci_dev *pdev, int num_vfs)
|
int fm10k_iov_configure(struct pci_dev *pdev, int num_vfs)
|
||||||
{
|
{
|
||||||
int current_vfs = pci_num_vf(pdev);
|
int current_vfs = pci_num_vf(pdev);
|
||||||
|
@ -495,12 +510,6 @@ int fm10k_iov_configure(struct pci_dev *pdev, int num_vfs)
|
||||||
|
|
||||||
/* allocate VFs if not already allocated */
|
/* allocate VFs if not already allocated */
|
||||||
if (num_vfs && num_vfs != current_vfs) {
|
if (num_vfs && num_vfs != current_vfs) {
|
||||||
/* Disable completer abort error reporting as
|
|
||||||
* the VFs can trigger this any time they read a queue
|
|
||||||
* that they don't own.
|
|
||||||
*/
|
|
||||||
fm10k_disable_aer_comp_abort(pdev);
|
|
||||||
|
|
||||||
err = pci_enable_sriov(pdev, num_vfs);
|
err = pci_enable_sriov(pdev, num_vfs);
|
||||||
if (err) {
|
if (err) {
|
||||||
dev_err(&pdev->dev,
|
dev_err(&pdev->dev,
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
#include "fm10k.h"
|
#include "fm10k.h"
|
||||||
|
|
||||||
#define DRV_VERSION "0.23.4-k"
|
#define DRV_VERSION "0.26.1-k"
|
||||||
#define DRV_SUMMARY "Intel(R) Ethernet Switch Host Interface Driver"
|
#define DRV_SUMMARY "Intel(R) Ethernet Switch Host Interface Driver"
|
||||||
const char fm10k_driver_version[] = DRV_VERSION;
|
const char fm10k_driver_version[] = DRV_VERSION;
|
||||||
char fm10k_driver_name[] = "fm10k";
|
char fm10k_driver_name[] = "fm10k";
|
||||||
|
|
|
@ -23,6 +23,8 @@ static const struct fm10k_info *fm10k_info_tbl[] = {
|
||||||
*/
|
*/
|
||||||
static const struct pci_device_id fm10k_pci_tbl[] = {
|
static const struct pci_device_id fm10k_pci_tbl[] = {
|
||||||
{ PCI_VDEVICE(INTEL, FM10K_DEV_ID_PF), fm10k_device_pf },
|
{ PCI_VDEVICE(INTEL, FM10K_DEV_ID_PF), fm10k_device_pf },
|
||||||
|
{ PCI_VDEVICE(INTEL, FM10K_DEV_ID_SDI_FM10420_QDA2), fm10k_device_pf },
|
||||||
|
{ PCI_VDEVICE(INTEL, FM10K_DEV_ID_SDI_FM10420_DA2), fm10k_device_pf },
|
||||||
{ PCI_VDEVICE(INTEL, FM10K_DEV_ID_VF), fm10k_device_vf },
|
{ PCI_VDEVICE(INTEL, FM10K_DEV_ID_VF), fm10k_device_vf },
|
||||||
/* required last entry */
|
/* required last entry */
|
||||||
{ 0, }
|
{ 0, }
|
||||||
|
|
|
@ -15,6 +15,8 @@ struct fm10k_hw;
|
||||||
|
|
||||||
#define FM10K_DEV_ID_PF 0x15A4
|
#define FM10K_DEV_ID_PF 0x15A4
|
||||||
#define FM10K_DEV_ID_VF 0x15A5
|
#define FM10K_DEV_ID_VF 0x15A5
|
||||||
|
#define FM10K_DEV_ID_SDI_FM10420_QDA2 0x15D0
|
||||||
|
#define FM10K_DEV_ID_SDI_FM10420_DA2 0x15D5
|
||||||
|
|
||||||
#define FM10K_MAX_QUEUES 256
|
#define FM10K_MAX_QUEUES 256
|
||||||
#define FM10K_MAX_QUEUES_PF 128
|
#define FM10K_MAX_QUEUES_PF 128
|
||||||
|
|
|
@ -3674,7 +3674,7 @@ int i40e_vc_process_vf_msg(struct i40e_pf *pf, s16 vf_id, u32 v_opcode,
|
||||||
dev_err(&pf->pdev->dev, "Invalid message from VF %d, opcode %d, len %d\n",
|
dev_err(&pf->pdev->dev, "Invalid message from VF %d, opcode %d, len %d\n",
|
||||||
local_vf_id, v_opcode, msglen);
|
local_vf_id, v_opcode, msglen);
|
||||||
switch (ret) {
|
switch (ret) {
|
||||||
case VIRTCHNL_ERR_PARAM:
|
case VIRTCHNL_STATUS_ERR_PARAM:
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -51,9 +51,15 @@
|
||||||
*
|
*
|
||||||
* The 40 bit 82580 SYSTIM overflows every
|
* The 40 bit 82580 SYSTIM overflows every
|
||||||
* 2^40 * 10^-9 / 60 = 18.3 minutes.
|
* 2^40 * 10^-9 / 60 = 18.3 minutes.
|
||||||
|
*
|
||||||
|
* SYSTIM is converted to real time using a timecounter. As
|
||||||
|
* timecounter_cyc2time() allows old timestamps, the timecounter
|
||||||
|
* needs to be updated at least once per half of the SYSTIM interval.
|
||||||
|
* Scheduling of delayed work is not very accurate, so we aim for 8
|
||||||
|
* minutes to be sure the actual interval is shorter than 9.16 minutes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define IGB_SYSTIM_OVERFLOW_PERIOD (HZ * 60 * 9)
|
#define IGB_SYSTIM_OVERFLOW_PERIOD (HZ * 60 * 8)
|
||||||
#define IGB_PTP_TX_TIMEOUT (HZ * 15)
|
#define IGB_PTP_TX_TIMEOUT (HZ * 15)
|
||||||
#define INCPERIOD_82576 BIT(E1000_TIMINCA_16NS_SHIFT)
|
#define INCPERIOD_82576 BIT(E1000_TIMINCA_16NS_SHIFT)
|
||||||
#define INCVALUE_82576_MASK GENMASK(E1000_TIMINCA_16NS_SHIFT - 1, 0)
|
#define INCVALUE_82576_MASK GENMASK(E1000_TIMINCA_16NS_SHIFT - 1, 0)
|
||||||
|
|
|
@ -17,4 +17,4 @@ ixgbe-$(CONFIG_IXGBE_DCB) += ixgbe_dcb.o ixgbe_dcb_82598.o \
|
||||||
ixgbe-$(CONFIG_IXGBE_HWMON) += ixgbe_sysfs.o
|
ixgbe-$(CONFIG_IXGBE_HWMON) += ixgbe_sysfs.o
|
||||||
ixgbe-$(CONFIG_DEBUG_FS) += ixgbe_debugfs.o
|
ixgbe-$(CONFIG_DEBUG_FS) += ixgbe_debugfs.o
|
||||||
ixgbe-$(CONFIG_FCOE:m=y) += ixgbe_fcoe.o
|
ixgbe-$(CONFIG_FCOE:m=y) += ixgbe_fcoe.o
|
||||||
ixgbe-$(CONFIG_XFRM_OFFLOAD) += ixgbe_ipsec.o
|
ixgbe-$(CONFIG_IXGBE_IPSEC) += ixgbe_ipsec.o
|
||||||
|
|
|
@ -769,9 +769,9 @@ struct ixgbe_adapter {
|
||||||
#define IXGBE_RSS_KEY_SIZE 40 /* size of RSS Hash Key in bytes */
|
#define IXGBE_RSS_KEY_SIZE 40 /* size of RSS Hash Key in bytes */
|
||||||
u32 *rss_key;
|
u32 *rss_key;
|
||||||
|
|
||||||
#ifdef CONFIG_XFRM_OFFLOAD
|
#ifdef CONFIG_IXGBE_IPSEC
|
||||||
struct ixgbe_ipsec *ipsec;
|
struct ixgbe_ipsec *ipsec;
|
||||||
#endif /* CONFIG_XFRM_OFFLOAD */
|
#endif /* CONFIG_IXGBE_IPSEC */
|
||||||
|
|
||||||
/* AF_XDP zero-copy */
|
/* AF_XDP zero-copy */
|
||||||
struct xdp_umem **xsk_umems;
|
struct xdp_umem **xsk_umems;
|
||||||
|
@ -1008,7 +1008,7 @@ void ixgbe_store_key(struct ixgbe_adapter *adapter);
|
||||||
void ixgbe_store_reta(struct ixgbe_adapter *adapter);
|
void ixgbe_store_reta(struct ixgbe_adapter *adapter);
|
||||||
s32 ixgbe_negotiate_fc(struct ixgbe_hw *hw, u32 adv_reg, u32 lp_reg,
|
s32 ixgbe_negotiate_fc(struct ixgbe_hw *hw, u32 adv_reg, u32 lp_reg,
|
||||||
u32 adv_sym, u32 adv_asm, u32 lp_sym, u32 lp_asm);
|
u32 adv_sym, u32 adv_asm, u32 lp_sym, u32 lp_asm);
|
||||||
#ifdef CONFIG_XFRM_OFFLOAD
|
#ifdef CONFIG_IXGBE_IPSEC
|
||||||
void ixgbe_init_ipsec_offload(struct ixgbe_adapter *adapter);
|
void ixgbe_init_ipsec_offload(struct ixgbe_adapter *adapter);
|
||||||
void ixgbe_stop_ipsec_offload(struct ixgbe_adapter *adapter);
|
void ixgbe_stop_ipsec_offload(struct ixgbe_adapter *adapter);
|
||||||
void ixgbe_ipsec_restore(struct ixgbe_adapter *adapter);
|
void ixgbe_ipsec_restore(struct ixgbe_adapter *adapter);
|
||||||
|
@ -1036,5 +1036,5 @@ static inline int ixgbe_ipsec_vf_add_sa(struct ixgbe_adapter *adapter,
|
||||||
u32 *mbuf, u32 vf) { return -EACCES; }
|
u32 *mbuf, u32 vf) { return -EACCES; }
|
||||||
static inline int ixgbe_ipsec_vf_del_sa(struct ixgbe_adapter *adapter,
|
static inline int ixgbe_ipsec_vf_del_sa(struct ixgbe_adapter *adapter,
|
||||||
u32 *mbuf, u32 vf) { return -EACCES; }
|
u32 *mbuf, u32 vf) { return -EACCES; }
|
||||||
#endif /* CONFIG_XFRM_OFFLOAD */
|
#endif /* CONFIG_IXGBE_IPSEC */
|
||||||
#endif /* _IXGBE_H_ */
|
#endif /* _IXGBE_H_ */
|
||||||
|
|
|
@ -8694,7 +8694,7 @@ netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb,
|
||||||
|
|
||||||
#endif /* IXGBE_FCOE */
|
#endif /* IXGBE_FCOE */
|
||||||
|
|
||||||
#ifdef CONFIG_XFRM_OFFLOAD
|
#ifdef CONFIG_IXGBE_IPSEC
|
||||||
if (skb->sp && !ixgbe_ipsec_tx(tx_ring, first, &ipsec_tx))
|
if (skb->sp && !ixgbe_ipsec_tx(tx_ring, first, &ipsec_tx))
|
||||||
goto out_drop;
|
goto out_drop;
|
||||||
#endif
|
#endif
|
||||||
|
@ -10190,7 +10190,7 @@ ixgbe_features_check(struct sk_buff *skb, struct net_device *dev,
|
||||||
* the TSO, so it's the exception.
|
* the TSO, so it's the exception.
|
||||||
*/
|
*/
|
||||||
if (skb->encapsulation && !(features & NETIF_F_TSO_MANGLEID)) {
|
if (skb->encapsulation && !(features & NETIF_F_TSO_MANGLEID)) {
|
||||||
#ifdef CONFIG_XFRM_OFFLOAD
|
#ifdef CONFIG_IXGBE_IPSEC
|
||||||
if (!skb->sp)
|
if (!skb->sp)
|
||||||
#endif
|
#endif
|
||||||
features &= ~NETIF_F_TSO;
|
features &= ~NETIF_F_TSO;
|
||||||
|
@ -10883,7 +10883,7 @@ skip_sriov:
|
||||||
if (hw->mac.type >= ixgbe_mac_82599EB)
|
if (hw->mac.type >= ixgbe_mac_82599EB)
|
||||||
netdev->features |= NETIF_F_SCTP_CRC;
|
netdev->features |= NETIF_F_SCTP_CRC;
|
||||||
|
|
||||||
#ifdef CONFIG_XFRM_OFFLOAD
|
#ifdef CONFIG_IXGBE_IPSEC
|
||||||
#define IXGBE_ESP_FEATURES (NETIF_F_HW_ESP | \
|
#define IXGBE_ESP_FEATURES (NETIF_F_HW_ESP | \
|
||||||
NETIF_F_HW_ESP_TX_CSUM | \
|
NETIF_F_HW_ESP_TX_CSUM | \
|
||||||
NETIF_F_GSO_ESP)
|
NETIF_F_GSO_ESP)
|
||||||
|
|
|
@ -722,8 +722,10 @@ static inline void ixgbe_vf_reset_event(struct ixgbe_adapter *adapter, u32 vf)
|
||||||
ixgbe_set_vmvir(adapter, vfinfo->pf_vlan,
|
ixgbe_set_vmvir(adapter, vfinfo->pf_vlan,
|
||||||
adapter->default_up, vf);
|
adapter->default_up, vf);
|
||||||
|
|
||||||
if (vfinfo->spoofchk_enabled)
|
if (vfinfo->spoofchk_enabled) {
|
||||||
hw->mac.ops.set_vlan_anti_spoofing(hw, true, vf);
|
hw->mac.ops.set_vlan_anti_spoofing(hw, true, vf);
|
||||||
|
hw->mac.ops.set_mac_anti_spoofing(hw, true, vf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* reset multicast table array for vf */
|
/* reset multicast table array for vf */
|
||||||
|
|
|
@ -10,5 +10,5 @@ ixgbevf-objs := vf.o \
|
||||||
mbx.o \
|
mbx.o \
|
||||||
ethtool.o \
|
ethtool.o \
|
||||||
ixgbevf_main.o
|
ixgbevf_main.o
|
||||||
ixgbevf-$(CONFIG_XFRM_OFFLOAD) += ipsec.o
|
ixgbevf-$(CONFIG_IXGBEVF_IPSEC) += ipsec.o
|
||||||
|
|
||||||
|
|
|
@ -459,7 +459,7 @@ int ethtool_ioctl(struct ifreq *ifr);
|
||||||
|
|
||||||
extern void ixgbevf_write_eitr(struct ixgbevf_q_vector *q_vector);
|
extern void ixgbevf_write_eitr(struct ixgbevf_q_vector *q_vector);
|
||||||
|
|
||||||
#ifdef CONFIG_XFRM_OFFLOAD
|
#ifdef CONFIG_IXGBEVF_IPSEC
|
||||||
void ixgbevf_init_ipsec_offload(struct ixgbevf_adapter *adapter);
|
void ixgbevf_init_ipsec_offload(struct ixgbevf_adapter *adapter);
|
||||||
void ixgbevf_stop_ipsec_offload(struct ixgbevf_adapter *adapter);
|
void ixgbevf_stop_ipsec_offload(struct ixgbevf_adapter *adapter);
|
||||||
void ixgbevf_ipsec_restore(struct ixgbevf_adapter *adapter);
|
void ixgbevf_ipsec_restore(struct ixgbevf_adapter *adapter);
|
||||||
|
@ -482,7 +482,7 @@ static inline int ixgbevf_ipsec_tx(struct ixgbevf_ring *tx_ring,
|
||||||
struct ixgbevf_tx_buffer *first,
|
struct ixgbevf_tx_buffer *first,
|
||||||
struct ixgbevf_ipsec_tx_data *itd)
|
struct ixgbevf_ipsec_tx_data *itd)
|
||||||
{ return 0; }
|
{ return 0; }
|
||||||
#endif /* CONFIG_XFRM_OFFLOAD */
|
#endif /* CONFIG_IXGBEVF_IPSEC */
|
||||||
|
|
||||||
void ixgbe_napi_add_all(struct ixgbevf_adapter *adapter);
|
void ixgbe_napi_add_all(struct ixgbevf_adapter *adapter);
|
||||||
void ixgbe_napi_del_all(struct ixgbevf_adapter *adapter);
|
void ixgbe_napi_del_all(struct ixgbevf_adapter *adapter);
|
||||||
|
|
|
@ -4150,7 +4150,7 @@ static int ixgbevf_xmit_frame_ring(struct sk_buff *skb,
|
||||||
first->tx_flags = tx_flags;
|
first->tx_flags = tx_flags;
|
||||||
first->protocol = vlan_get_protocol(skb);
|
first->protocol = vlan_get_protocol(skb);
|
||||||
|
|
||||||
#ifdef CONFIG_XFRM_OFFLOAD
|
#ifdef CONFIG_IXGBEVF_IPSEC
|
||||||
if (skb->sp && !ixgbevf_ipsec_tx(tx_ring, first, &ipsec_tx))
|
if (skb->sp && !ixgbevf_ipsec_tx(tx_ring, first, &ipsec_tx))
|
||||||
goto out_drop;
|
goto out_drop;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -62,13 +62,19 @@
|
||||||
/* Error Codes */
|
/* Error Codes */
|
||||||
enum virtchnl_status_code {
|
enum virtchnl_status_code {
|
||||||
VIRTCHNL_STATUS_SUCCESS = 0,
|
VIRTCHNL_STATUS_SUCCESS = 0,
|
||||||
VIRTCHNL_ERR_PARAM = -5,
|
VIRTCHNL_STATUS_ERR_PARAM = -5,
|
||||||
|
VIRTCHNL_STATUS_ERR_NO_MEMORY = -18,
|
||||||
VIRTCHNL_STATUS_ERR_OPCODE_MISMATCH = -38,
|
VIRTCHNL_STATUS_ERR_OPCODE_MISMATCH = -38,
|
||||||
VIRTCHNL_STATUS_ERR_CQP_COMPL_ERROR = -39,
|
VIRTCHNL_STATUS_ERR_CQP_COMPL_ERROR = -39,
|
||||||
VIRTCHNL_STATUS_ERR_INVALID_VF_ID = -40,
|
VIRTCHNL_STATUS_ERR_INVALID_VF_ID = -40,
|
||||||
VIRTCHNL_STATUS_NOT_SUPPORTED = -64,
|
VIRTCHNL_STATUS_ERR_ADMIN_QUEUE_ERROR = -53,
|
||||||
|
VIRTCHNL_STATUS_ERR_NOT_SUPPORTED = -64,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Backward compatibility */
|
||||||
|
#define VIRTCHNL_ERR_PARAM VIRTCHNL_STATUS_ERR_PARAM
|
||||||
|
#define VIRTCHNL_STATUS_NOT_SUPPORTED VIRTCHNL_STATUS_ERR_NOT_SUPPORTED
|
||||||
|
|
||||||
#define VIRTCHNL_LINK_SPEED_100MB_SHIFT 0x1
|
#define VIRTCHNL_LINK_SPEED_100MB_SHIFT 0x1
|
||||||
#define VIRTCHNL_LINK_SPEED_1000MB_SHIFT 0x2
|
#define VIRTCHNL_LINK_SPEED_1000MB_SHIFT 0x2
|
||||||
#define VIRTCHNL_LINK_SPEED_10GB_SHIFT 0x3
|
#define VIRTCHNL_LINK_SPEED_10GB_SHIFT 0x3
|
||||||
|
@ -831,7 +837,7 @@ virtchnl_vc_validate_vf_msg(struct virtchnl_version_info *ver, u32 v_opcode,
|
||||||
case VIRTCHNL_OP_EVENT:
|
case VIRTCHNL_OP_EVENT:
|
||||||
case VIRTCHNL_OP_UNKNOWN:
|
case VIRTCHNL_OP_UNKNOWN:
|
||||||
default:
|
default:
|
||||||
return VIRTCHNL_ERR_PARAM;
|
return VIRTCHNL_STATUS_ERR_PARAM;
|
||||||
}
|
}
|
||||||
/* few more checks */
|
/* few more checks */
|
||||||
if (err_msg_format || valid_len != msglen)
|
if (err_msg_format || valid_len != msglen)
|
||||||
|
|
|
@ -8,7 +8,6 @@ config XFRM
|
||||||
|
|
||||||
config XFRM_OFFLOAD
|
config XFRM_OFFLOAD
|
||||||
bool
|
bool
|
||||||
depends on XFRM
|
|
||||||
|
|
||||||
config XFRM_ALGO
|
config XFRM_ALGO
|
||||||
tristate
|
tristate
|
||||||
|
|
Загрузка…
Ссылка в новой задаче