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

Commit 879c3808 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'net-aquantia-fixes-on-vlan-filters-and-other-conditions'



Igor Russkikh says:

====================
net: aquantia: fixes on vlan filters and other conditions

Here is a set of various bug fixes related to vlan filter offload and
two other rare cases.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 154f4fb7 be6cef69
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -431,7 +431,8 @@ int aq_del_fvlan_by_vlan(struct aq_nic_s *aq_nic, u16 vlan_id)
		if (be16_to_cpu(rule->aq_fsp.h_ext.vlan_tci) == vlan_id)
			break;
	}
	if (rule && be16_to_cpu(rule->aq_fsp.h_ext.vlan_tci) == vlan_id) {
	if (rule && rule->type == aq_rx_filter_vlan &&
	    be16_to_cpu(rule->aq_fsp.h_ext.vlan_tci) == vlan_id) {
		struct ethtool_rxnfc cmd;

		cmd.fs.location = rule->aq_fsp.location;
@@ -843,7 +844,7 @@ int aq_filters_vlans_update(struct aq_nic_s *aq_nic)
		return err;

	if (aq_nic->ndev->features & NETIF_F_HW_VLAN_CTAG_FILTER) {
		if (hweight < AQ_VLAN_MAX_FILTERS && hweight > 0) {
		if (hweight <= AQ_VLAN_MAX_FILTERS && hweight > 0) {
			err = aq_hw_ops->hw_filter_vlan_ctrl(aq_hw,
				!(aq_nic->packet_filter & IFF_PROMISC));
			aq_nic->aq_nic_cfg.is_vlan_force_promisc = false;
+4 −0
Original line number Diff line number Diff line
@@ -61,6 +61,10 @@ static int aq_ndev_open(struct net_device *ndev)
	if (err < 0)
		goto err_exit;

	err = aq_filters_vlans_update(aq_nic);
	if (err < 0)
		goto err_exit;

	err = aq_nic_start(aq_nic);
	if (err < 0)
		goto err_exit;
+1 −1
Original line number Diff line number Diff line
@@ -393,7 +393,7 @@ int aq_nic_start(struct aq_nic_s *self)
						   self->aq_nic_cfg.link_irq_vec);
			err = request_threaded_irq(irqvec, NULL,
						   aq_linkstate_threaded_isr,
						   IRQF_SHARED,
						   IRQF_SHARED | IRQF_ONESHOT,
						   self->ndev->name, self);
			if (err < 0)
				goto err_exit;
+2 −1
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ static int aq_vec_poll(struct napi_struct *napi, int budget)
			}
		}

err_exit:
		if (!was_tx_cleaned)
			work_done = budget;

@@ -95,7 +96,7 @@ static int aq_vec_poll(struct napi_struct *napi, int budget)
					1U << self->aq_ring_param.vec_idx);
		}
	}
err_exit:

	return work_done;
}