|
@@ -7330,6 +7330,23 @@ static void i40e_handle_mdd_event(struct i40e_pf *pf)
|
|
|
i40e_flush(hw);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * i40e_sync_udp_filters - Trigger a sync event for existing UDP filters
|
|
|
+ * @pf: board private structure
|
|
|
+ **/
|
|
|
+static void i40e_sync_udp_filters(struct i40e_pf *pf)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+
|
|
|
+ /* loop through and set pending bit for all active UDP filters */
|
|
|
+ for (i = 0; i < I40E_MAX_PF_UDP_OFFLOAD_PORTS; i++) {
|
|
|
+ if (pf->udp_ports[i].port)
|
|
|
+ pf->pending_udp_bitmap |= BIT_ULL(i);
|
|
|
+ }
|
|
|
+
|
|
|
+ pf->flags |= I40E_FLAG_UDP_FILTER_SYNC;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* i40e_sync_udp_filters_subtask - Sync the VSI filter list with HW
|
|
|
* @pf: board private structure
|
|
@@ -10738,6 +10755,9 @@ static int i40e_setup_pf_switch(struct i40e_pf *pf, bool reinit)
|
|
|
|
|
|
i40e_ptp_init(pf);
|
|
|
|
|
|
+ /* repopulate tunnel port filters */
|
|
|
+ i40e_sync_udp_filters(pf);
|
|
|
+
|
|
|
return ret;
|
|
|
}
|
|
|
|