diff options
author | Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> | 2019-02-28 18:24:26 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2019-04-18 11:38:47 -0400 |
commit | 00cc3f1b3a3011b5fee9711244ffcec418b519f0 (patch) | |
tree | 80b084fec17a03504e28e529fd8c859f6e601f7f /drivers/net/ethernet/intel/ice/ice_dcb_lib.c | |
parent | 0deab659a615a480a68ae17ad36a0f3c37c62e01 (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.c | 36 |
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 | */ | ||
329 | void | ||
330 | ice_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 | } | ||