|
@@ -2776,6 +2776,25 @@ int igb_add_filter(struct igb_adapter *adapter, struct igb_nfc_filter *input)
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
+ if (input->filter.match_flags & IGB_FILTER_FLAG_DST_MAC_ADDR) {
|
|
|
+ err = igb_add_mac_steering_filter(adapter,
|
|
|
+ input->filter.dst_addr,
|
|
|
+ input->action, 0);
|
|
|
+ err = min_t(int, err, 0);
|
|
|
+ if (err)
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (input->filter.match_flags & IGB_FILTER_FLAG_SRC_MAC_ADDR) {
|
|
|
+ err = igb_add_mac_steering_filter(adapter,
|
|
|
+ input->filter.src_addr,
|
|
|
+ input->action,
|
|
|
+ IGB_MAC_STATE_SRC_ADDR);
|
|
|
+ err = min_t(int, err, 0);
|
|
|
+ if (err)
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+
|
|
|
if (input->filter.match_flags & IGB_FILTER_FLAG_VLAN_TCI)
|
|
|
err = igb_rxnfc_write_vlan_prio_filter(adapter, input);
|
|
|
|
|
@@ -2824,6 +2843,15 @@ int igb_erase_filter(struct igb_adapter *adapter, struct igb_nfc_filter *input)
|
|
|
igb_clear_vlan_prio_filter(adapter,
|
|
|
ntohs(input->filter.vlan_tci));
|
|
|
|
|
|
+ if (input->filter.match_flags & IGB_FILTER_FLAG_SRC_MAC_ADDR)
|
|
|
+ igb_del_mac_steering_filter(adapter, input->filter.src_addr,
|
|
|
+ input->action,
|
|
|
+ IGB_MAC_STATE_SRC_ADDR);
|
|
|
+
|
|
|
+ if (input->filter.match_flags & IGB_FILTER_FLAG_DST_MAC_ADDR)
|
|
|
+ igb_del_mac_steering_filter(adapter, input->filter.dst_addr,
|
|
|
+ input->action, 0);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|