summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandrew-elder <aelder@audioscience.com>2017-09-26 08:49:46 -0400
committerGitHub <noreply@github.com>2017-09-26 08:49:46 -0400
commitaf4a989376fab591b01af89d1decdd7adf1dfa8b (patch)
tree21d4e1d0bfaa46bd9b2bfa89f1fde209a3f11d1e
parentecda7dadd3d0f8969770a718a7c65c83f26b8909 (diff)
parent7eae084c1c3785fb1439bc51bf461367d86bcb25 (diff)
downloadOpen-AVB-af4a989376fab591b01af89d1decdd7adf1dfa8b.tar.gz
Merge pull request #695 from jfornal/kernel_update
Kernel update
-rw-r--r--kmod/igb/igb_main.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/kmod/igb/igb_main.c b/kmod/igb/igb_main.c
index 3310680d..c8a4a7e3 100644
--- a/kmod/igb/igb_main.c
+++ b/kmod/igb/igb_main.c
@@ -181,8 +181,14 @@ static void igb_restore_vf_multicasts(struct igb_adapter *adapter);
static void igb_process_mdd_event(struct igb_adapter *);
#ifdef IFLA_VF_MAX
static int igb_ndo_set_vf_mac(struct net_device *netdev, int vf, u8 *mac);
+#ifdef IFLA_VF_VLAN_INFO_MAX
+static int igb_ndo_set_vf_vlan(struct net_device *netdev,
+ int vf, u16 vlan, u8 qos, __be16 vlan_proto);
+#else
static int igb_ndo_set_vf_vlan(struct net_device *netdev,
int vf, u16 vlan, u8 qos);
+#endif /*IFLA_VF_VLAN_INFO_MAX*/
+
#ifdef HAVE_VF_SPOOFCHK_CONFIGURE
static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf,
bool setting);
@@ -6648,9 +6654,15 @@ static void igb_set_vmvir(struct igb_adapter *adapter, u32 vid, u32 vf)
else
E1000_WRITE_REG(hw, E1000_VMVIR(vf), 0);
}
+#ifdef IFLA_VF_VLAN_INFO_MAX
+static int igb_ndo_set_vf_vlan(struct net_device *netdev,
+ int vf, u16 vlan, u8 qos, __be16 vlan_proto)
+#else
static int igb_ndo_set_vf_vlan(struct net_device *netdev,
- int vf, u16 vlan, u8 qos)
+ int vf, u16 vlan, u8 qos)
+#endif /*IFLA_VF_VLAN_INFO_MAX*/
+
{
int err = 0;
struct igb_adapter *adapter = netdev_priv(netdev);
@@ -6659,6 +6671,7 @@ static int igb_ndo_set_vf_vlan(struct net_device *netdev,
if ((vf >= adapter->vfs_allocated_count) || (vlan > VLAN_VID_MASK-1)
|| (qos > 7))
return -EINVAL;
+
if (vlan || qos) {
err = igb_vlvf_set(adapter, vlan, !!vlan, vf);
if (err)
@@ -6816,9 +6829,16 @@ static inline void igb_vf_reset(struct igb_adapter *adapter, u32 vf)
igb_clear_vf_vfta(adapter, vf);
#ifdef IFLA_VF_MAX
if (adapter->vf_data[vf].pf_vlan)
+#ifdef IFLA_VF_VLAN_INFO_MAX
+ igb_ndo_set_vf_vlan(adapter->netdev, vf,
+ adapter->vf_data[vf].pf_vlan,
+ adapter->vf_data[vf].pf_qos, 0);
+#else
+
igb_ndo_set_vf_vlan(adapter->netdev, vf,
adapter->vf_data[vf].pf_vlan,
adapter->vf_data[vf].pf_qos);
+#endif
else
igb_clear_vf_vfta(adapter, vf);
#endif