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

Commit b3f7de83 authored by Sucheta Chakraborty's avatar Sucheta Chakraborty Committed by David S. Miller
Browse files

qlcnic: Do MAC learning for SRIOV PF.



o MAC learning will be done for SRIOV PF to help program VLAN filters
  onto adapter. This will help VNIC traffic to flow through without
  flooding traffic.

Signed-off-by: default avatarSucheta Chakraborty <sucheta.chakraborty@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9eb0948a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1079,6 +1079,7 @@ struct qlcnic_adapter {
	u64 dev_rst_time;
	bool drv_mac_learn;
	bool fdb_mac_learn;
	u8 rx_mac_learn;
	unsigned long vlans[BITS_TO_LONGS(VLAN_N_VID)];
	u8 flash_mfg_id;
	struct qlcnic_npar_info *npars;
+2 −0
Original line number Diff line number Diff line
@@ -1591,7 +1591,9 @@ static void qlcnic_83xx_set_interface_id_promisc(struct qlcnic_adapter *adapter,
						 u32 *interface_id)
{
	if (qlcnic_sriov_pf_check(adapter)) {
		qlcnic_alloc_lb_filters_mem(adapter);
		qlcnic_pf_set_interface_id_promisc(adapter, interface_id);
		adapter->rx_mac_learn = 1;
	} else {
		if (!qlcnic_sriov_vf_check(adapter))
			*interface_id = adapter->recv_ctx->context_id << 16;
+1 −0
Original line number Diff line number Diff line
@@ -2214,6 +2214,7 @@ int qlcnic_83xx_init(struct qlcnic_adapter *adapter, int pci_using_dac)
	struct qlcnic_hardware_context *ahw = adapter->ahw;
	int err = 0;

	adapter->rx_mac_learn = 0;
	ahw->msix_supported = !!qlcnic_use_msi_x;

	qlcnic_83xx_init_rings(adapter);
+6 −2
Original line number Diff line number Diff line
@@ -224,10 +224,14 @@ int qlcnic_83xx_config_vnic_opmode(struct qlcnic_adapter *adapter)
		return -EIO;
	}

	if (ahw->capabilities & QLC_83XX_ESWITCH_CAPABILITY)
	if (ahw->capabilities & QLC_83XX_ESWITCH_CAPABILITY) {
		adapter->flags |= QLCNIC_ESWITCH_ENABLED;
	else
		if (adapter->drv_mac_learn)
			adapter->rx_mac_learn = 1;
	} else {
		adapter->flags &= ~QLCNIC_ESWITCH_ENABLED;
		adapter->rx_mac_learn = 0;
	}

	ahw->idc.vnic_state = QLCNIC_DEV_NPAR_NON_OPER;
	ahw->idc.vnic_wait_limit = QLCNIC_DEV_NPAR_OPER_TIMEO;
+3 −0
Original line number Diff line number Diff line
@@ -546,8 +546,11 @@ void __qlcnic_set_multi(struct net_device *netdev, u16 vlan)
	    !adapter->fdb_mac_learn) {
		qlcnic_alloc_lb_filters_mem(adapter);
		adapter->drv_mac_learn = 1;
		if (adapter->flags & QLCNIC_ESWITCH_ENABLED)
			adapter->rx_mac_learn = 1;
	} else {
		adapter->drv_mac_learn = 0;
		adapter->rx_mac_learn = 0;
	}

	qlcnic_nic_set_promisc(adapter, mode);
Loading