Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7cfc1ceb authored by Manish Chopra's avatar Manish Chopra Committed by David S. Miller
Browse files

qlcnic: Fix setting Guest VLAN



o When configuring guest VLAN after PVID configuration, VF was loading
  with previously configured PVID. Clear the PVID which was previously
  configured before configuring guest VLAN.

o Display guest VLAN when it is configured

Signed-off-by: default avatarManish Chopra <manish.chopra@qlogic.com>
Signed-off-by: default avatarHimanshu Madhani <himanshu.madhani@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6226204b
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
@@ -1749,6 +1749,7 @@ int qlcnic_sriov_set_vf_vlan(struct net_device *netdev, int vf,

	switch (vlan) {
	case 4095:
		vp->vlan = 0;
		vp->vlan_mode = QLC_GUEST_VLAN_MODE;
		break;
	case 0:
@@ -1767,6 +1768,29 @@ int qlcnic_sriov_set_vf_vlan(struct net_device *netdev, int vf,
	return 0;
}

static inline __u32 qlcnic_sriov_get_vf_vlan(struct qlcnic_adapter *adapter,
					     struct qlcnic_vport *vp, int vf)
{
	__u32 vlan = 0;

	switch (vp->vlan_mode) {
	case QLC_PVID_MODE:
		vlan = vp->vlan;
		break;
	case QLC_GUEST_VLAN_MODE:
		vlan = MAX_VLAN_ID;
		break;
	case QLC_NO_VLAN_MODE:
		vlan = 0;
		break;
	default:
		netdev_info(adapter->netdev, "Invalid VLAN mode = %d for VF %d\n",
			    vp->vlan_mode, vf);
	}

	return vlan;
}

int qlcnic_sriov_get_vf_config(struct net_device *netdev,
			       int vf, struct ifla_vf_info *ivi)
{
@@ -1782,7 +1806,7 @@ int qlcnic_sriov_get_vf_config(struct net_device *netdev,

	vp = sriov->vf_info[vf].vp;
	memcpy(&ivi->mac, vp->mac, ETH_ALEN);
	ivi->vlan = vp->vlan;
	ivi->vlan = qlcnic_sriov_get_vf_vlan(adapter, vp, vf);
	ivi->qos = vp->qos;
	ivi->spoofchk = vp->spoofchk;
	if (vp->max_tx_bw == MAX_BW)