|
@@ -16,6 +16,7 @@
|
|
|
#include "bnxt_hsi.h"
|
|
#include "bnxt_hsi.h"
|
|
|
#include "bnxt.h"
|
|
#include "bnxt.h"
|
|
|
#include "bnxt_vfr.h"
|
|
#include "bnxt_vfr.h"
|
|
|
|
|
+#include "bnxt_devlink.h"
|
|
|
#include "bnxt_tc.h"
|
|
#include "bnxt_tc.h"
|
|
|
|
|
|
|
|
#ifdef CONFIG_BNXT_SRIOV
|
|
#ifdef CONFIG_BNXT_SRIOV
|
|
@@ -451,7 +452,7 @@ err:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* Devlink related routines */
|
|
/* Devlink related routines */
|
|
|
-static int bnxt_dl_eswitch_mode_get(struct devlink *devlink, u16 *mode)
|
|
|
|
|
|
|
+int bnxt_dl_eswitch_mode_get(struct devlink *devlink, u16 *mode)
|
|
|
{
|
|
{
|
|
|
struct bnxt *bp = bnxt_get_bp_from_dl(devlink);
|
|
struct bnxt *bp = bnxt_get_bp_from_dl(devlink);
|
|
|
|
|
|
|
@@ -459,7 +460,7 @@ static int bnxt_dl_eswitch_mode_get(struct devlink *devlink, u16 *mode)
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static int bnxt_dl_eswitch_mode_set(struct devlink *devlink, u16 mode)
|
|
|
|
|
|
|
+int bnxt_dl_eswitch_mode_set(struct devlink *devlink, u16 mode)
|
|
|
{
|
|
{
|
|
|
struct bnxt *bp = bnxt_get_bp_from_dl(devlink);
|
|
struct bnxt *bp = bnxt_get_bp_from_dl(devlink);
|
|
|
int rc = 0;
|
|
int rc = 0;
|
|
@@ -497,52 +498,4 @@ done:
|
|
|
return rc;
|
|
return rc;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static const struct devlink_ops bnxt_dl_ops = {
|
|
|
|
|
- .eswitch_mode_set = bnxt_dl_eswitch_mode_set,
|
|
|
|
|
- .eswitch_mode_get = bnxt_dl_eswitch_mode_get
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
-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);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
#endif
|
|
#endif
|