net/mlx5: add C++ include guard to public header
[dpdk.git] / drivers / net / bnxt / bnxt_cpr.c
index 593eebf..9b9285b 100644 (file)
@@ -107,6 +107,26 @@ static void bnxt_handle_event_error_report(struct bnxt *bp,
        }
 }
 
+void bnxt_handle_vf_cfg_change(void *arg)
+{
+       struct bnxt *bp = arg;
+       struct rte_eth_dev *eth_dev = bp->eth_dev;
+       int rc;
+
+       /* Free and recreate filters with default VLAN */
+       if (eth_dev->data->dev_started) {
+               rc = bnxt_dev_stop_op(eth_dev);
+               if (rc != 0) {
+                       PMD_DRV_LOG(ERR, "Failed to stop Port:%u\n", eth_dev->data->port_id);
+                       return;
+               }
+
+               rc = bnxt_dev_start_op(eth_dev);
+               if (rc != 0)
+                       PMD_DRV_LOG(ERR, "Failed to start Port:%u\n", eth_dev->data->port_id);
+       }
+}
+
 /*
  * Async event handling
  */
@@ -138,8 +158,11 @@ void bnxt_handle_async_event(struct bnxt *bp,
                PMD_DRV_LOG(INFO, "Async event: PF driver unloaded\n");
                break;
        case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE:
-               PMD_DRV_LOG(INFO, "Async event: VF config changed\n");
+               PMD_DRV_LOG(INFO, "Port %u: VF config change async event\n", port_id);
+               PMD_DRV_LOG(INFO, "event: data1 %#x data2 %#x\n", data1, data2);
                bnxt_hwrm_func_qcfg(bp, NULL);
+               if (BNXT_VF(bp))
+                       rte_eal_alarm_set(1, bnxt_handle_vf_cfg_change, (void *)bp);
                break;
        case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED:
                PMD_DRV_LOG(INFO, "Port conn async event\n");