aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ice/ice_dcb_lib.c
diff options
context:
space:
mode:
authorAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>2019-02-28 18:24:26 -0500
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2019-04-18 11:38:47 -0400
commit00cc3f1b3a3011b5fee9711244ffcec418b519f0 (patch)
tree80b084fec17a03504e28e529fd8c859f6e601f7f /drivers/net/ethernet/intel/ice/ice_dcb_lib.c
parent0deab659a615a480a68ae17ad36a0f3c37c62e01 (diff)
ice: Add code to process LLDP MIB change events
This patch adds support to process LLDP MIB change notifications sent by the firmware. Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_dcb_lib.c')
-rw-r--r--drivers/net/ethernet/intel/ice/ice_dcb_lib.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_dcb_lib.c b/drivers/net/ethernet/intel/ice/ice_dcb_lib.c
index c52bd5bb37c2..6bbca2c99dbd 100644
--- a/drivers/net/ethernet/intel/ice/ice_dcb_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_dcb_lib.c
@@ -320,3 +320,39 @@ dcb_init_err:
320 dev_err(dev, "DCB init failed\n"); 320 dev_err(dev, "DCB init failed\n");
321 return err; 321 return err;
322} 322}
323
324/**
325 * ice_dcb_process_lldp_set_mib_change - Process MIB change
326 * @pf: ptr to ice_pf
327 * @event: pointer to the admin queue receive event
328 */
329void
330ice_dcb_process_lldp_set_mib_change(struct ice_pf *pf,
331 struct ice_rq_event_info *event)
332{
333 if (pf->dcbx_cap & DCB_CAP_DCBX_LLD_MANAGED) {
334 struct ice_dcbx_cfg *dcbcfg, *prev_cfg;
335 int err;
336
337 prev_cfg = &pf->hw.port_info->local_dcbx_cfg;
338 dcbcfg = devm_kmemdup(&pf->pdev->dev, prev_cfg,
339 sizeof(*dcbcfg), GFP_KERNEL);
340 if (!dcbcfg)
341 return;
342
343 err = ice_lldp_to_dcb_cfg(event->msg_buf, dcbcfg);
344 if (!err)
345 ice_pf_dcb_cfg(pf, dcbcfg);
346
347 devm_kfree(&pf->pdev->dev, dcbcfg);
348
349 /* Get updated DCBx data from firmware */
350 err = ice_get_dcb_cfg(pf->hw.port_info);
351 if (err)
352 dev_err(&pf->pdev->dev,
353 "Failed to get DCB config\n");
354 } else {
355 dev_dbg(&pf->pdev->dev,
356 "MIB Change Event in HOST mode\n");
357 }
358}