qed*: IOV link control
[deliverable/linux.git] / drivers / net / ethernet / qlogic / qed / qed_l2.c
index 80f0b853a1426018c4c75c91849db320801edbef..8d83250aa5baa33da2e7f5083de816f499ffb50e 100644 (file)
@@ -114,7 +114,8 @@ int qed_sp_vport_start(struct qed_hwfn *p_hwfn,
                                             p_params->mtu,
                                             p_params->remove_inner_vlan,
                                             p_params->tpa_mode,
-                                            p_params->max_buffers_per_cqe);
+                                            p_params->max_buffers_per_cqe,
+                                            p_params->only_untagged);
        }
 
        return qed_sp_eth_vport_start(p_hwfn, p_params);
@@ -367,6 +368,16 @@ int qed_sp_vport_update(struct qed_hwfn *p_hwfn,
        p_cmn->inner_vlan_removal_en = p_params->inner_vlan_removal_flg;
        val = p_params->update_inner_vlan_removal_flg;
        p_cmn->update_inner_vlan_removal_en_flg = val;
+
+       p_cmn->default_vlan_en = p_params->default_vlan_enable_flg;
+       val = p_params->update_default_vlan_enable_flg;
+       p_cmn->update_default_vlan_en_flg = val;
+
+       p_cmn->default_vlan = cpu_to_le16(p_params->default_vlan);
+       p_cmn->update_default_vlan_flg = p_params->update_default_vlan_flg;
+
+       p_cmn->silent_vlan_removal_en = p_params->silent_vlan_removal_flg;
+
        p_ramrod->common.tx_switching_en = p_params->tx_switching_flg;
        p_cmn->update_tx_switching_en_flg = p_params->update_tx_switching_flg;
 
@@ -1690,6 +1701,14 @@ static void qed_register_eth_ops(struct qed_dev *cdev,
                qed_vf_start_iov_wq(cdev);
 }
 
+static bool qed_check_mac(struct qed_dev *cdev, u8 *mac)
+{
+       if (IS_PF(cdev))
+               return true;
+
+       return qed_vf_check_mac(&cdev->hwfns[0], mac);
+}
+
 static int qed_start_vport(struct qed_dev *cdev,
                           struct qed_start_vport_params *params)
 {
@@ -1702,6 +1721,7 @@ static int qed_start_vport(struct qed_dev *cdev,
                start.tpa_mode = params->gro_enable ? QED_TPA_MODE_GRO :
                                                        QED_TPA_MODE_NONE;
                start.remove_inner_vlan = params->remove_inner_vlan;
+               start.only_untagged = true;     /* untagged only */
                start.drop_ttl0 = params->drop_ttl0;
                start.opaque_fid = p_hwfn->hw_info.opaque_fid;
                start.concrete_fid = p_hwfn->hw_info.concrete_fid;
@@ -2137,6 +2157,7 @@ static const struct qed_eth_ops qed_eth_ops_pass = {
 #endif
        .fill_dev_info = &qed_fill_eth_dev_info,
        .register_ops = &qed_register_eth_ops,
+       .check_mac = &qed_check_mac,
        .vport_start = &qed_start_vport,
        .vport_stop = &qed_stop_vport,
        .vport_update = &qed_update_vport,
This page took 0.041708 seconds and 5 git commands to generate.