-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bnxt: Move generic devlink code to new file
Moving generic devlink code (registration) out of VF-R code into new bnxt_devlink file, in preparation for future work to add additional devlink functionality to bnxt. Signed-off-by: Steve Lin <steven.lin1@broadcom.com> Acked-by: Andy Gospodarek <gospo@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
Steve Lin
authored and
David S. Miller
committed
Oct 21, 2017
1 parent
cb4dc41
commit 3c467bf
Showing
6 changed files
with
112 additions
and
85 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
obj-$(CONFIG_BNXT) += bnxt_en.o | ||
|
||
bnxt_en-y := bnxt.o bnxt_sriov.o bnxt_ethtool.o bnxt_dcb.o bnxt_ulp.o bnxt_xdp.o bnxt_vfr.o | ||
bnxt_en-y := bnxt.o bnxt_sriov.o bnxt_ethtool.o bnxt_dcb.o bnxt_ulp.o bnxt_xdp.o bnxt_vfr.o bnxt_devlink.o | ||
bnxt_en-$(CONFIG_BNXT_FLOWER_OFFLOAD) += bnxt_tc.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
/* Broadcom NetXtreme-C/E network driver. | ||
* | ||
* Copyright (c) 2017 Broadcom Limited | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/pci.h> | ||
#include <linux/netdevice.h> | ||
#include "bnxt_hsi.h" | ||
#include "bnxt.h" | ||
#include "bnxt_vfr.h" | ||
#include "bnxt_devlink.h" | ||
|
||
static const struct devlink_ops bnxt_dl_ops = { | ||
#ifdef CONFIG_BNXT_SRIOV | ||
.eswitch_mode_set = bnxt_dl_eswitch_mode_set, | ||
.eswitch_mode_get = bnxt_dl_eswitch_mode_get, | ||
#endif /* CONFIG_BNXT_SRIOV */ | ||
}; | ||
|
||
int bnxt_dl_register(struct bnxt *bp) | ||
{ | ||
struct devlink *dl; | ||
int rc; | ||
|
||
if (!pci_find_ext_capability(bp->pdev, PCI_EXT_CAP_ID_SRIOV)) | ||
return 0; | ||
|
||
if (bp->hwrm_spec_code < 0x10800) { | ||
netdev_warn(bp->dev, "Firmware does not support SR-IOV E-Switch SWITCHDEV mode.\n"); | ||
return -ENOTSUPP; | ||
} | ||
|
||
dl = devlink_alloc(&bnxt_dl_ops, sizeof(struct bnxt_dl)); | ||
if (!dl) { | ||
netdev_warn(bp->dev, "devlink_alloc failed"); | ||
return -ENOMEM; | ||
} | ||
|
||
bnxt_link_bp_to_dl(bp, dl); | ||
bp->eswitch_mode = DEVLINK_ESWITCH_MODE_LEGACY; | ||
rc = devlink_register(dl, &bp->pdev->dev); | ||
if (rc) { | ||
bnxt_link_bp_to_dl(bp, NULL); | ||
devlink_free(dl); | ||
netdev_warn(bp->dev, "devlink_register failed. rc=%d", rc); | ||
return rc; | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
void bnxt_dl_unregister(struct bnxt *bp) | ||
{ | ||
struct devlink *dl = bp->dl; | ||
|
||
if (!dl) | ||
return; | ||
|
||
devlink_unregister(dl); | ||
devlink_free(dl); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
/* Broadcom NetXtreme-C/E network driver. | ||
* | ||
* Copyright (c) 2017 Broadcom Limited | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation. | ||
*/ | ||
|
||
#ifndef BNXT_DEVLINK_H | ||
#define BNXT_DEVLINK_H | ||
|
||
/* Struct to hold housekeeping info needed by devlink interface */ | ||
struct bnxt_dl { | ||
struct bnxt *bp; /* back ptr to the controlling dev */ | ||
}; | ||
|
||
static inline struct bnxt *bnxt_get_bp_from_dl(struct devlink *dl) | ||
{ | ||
return ((struct bnxt_dl *)devlink_priv(dl))->bp; | ||
} | ||
|
||
/* To clear devlink pointer from bp, pass NULL dl */ | ||
static inline void bnxt_link_bp_to_dl(struct bnxt *bp, struct devlink *dl) | ||
{ | ||
bp->dl = dl; | ||
|
||
/* add a back pointer in dl to bp */ | ||
if (dl) { | ||
struct bnxt_dl *bp_dl = devlink_priv(dl); | ||
|
||
bp_dl->bp = bp; | ||
} | ||
} | ||
|
||
int bnxt_dl_register(struct bnxt *bp); | ||
void bnxt_dl_unregister(struct bnxt *bp); | ||
|
||
#endif /* BNXT_DEVLINK_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters