[net-next,v4,2/4] octeon_ep: PF-VF mailbox version support
Commit Message
Add PF-VF mailbox initial version support
Signed-off-by: Shinas Rasheed <srasheed@marvell.com>
---
V4:
- No changes
V3: https://lore.kernel.org/all/20231211063355.2630028-3-srasheed@marvell.com/
- No changes
V2: https://lore.kernel.org/all/20231209081450.2613561-3-srasheed@marvell.com/
- No changes
V1: https://lore.kernel.org/all/20231208070352.2606192-3-srasheed@marvell.com/
.../net/ethernet/marvell/octeon_ep/octep_main.h | 1 +
.../ethernet/marvell/octeon_ep/octep_pfvf_mbox.c | 15 ++++++++++++---
.../ethernet/marvell/octeon_ep/octep_pfvf_mbox.h | 7 +++++--
3 files changed, 18 insertions(+), 5 deletions(-)
Comments
在 2023/12/13 11:58, Shinas Rasheed 写道:
> Add PF-VF mailbox initial version support
>
> Signed-off-by: Shinas Rasheed <srasheed@marvell.com>
> ---
> V4:
> - No changes
>
> V3: https://lore.kernel.org/all/20231211063355.2630028-3-srasheed@marvell.com/
> - No changes
>
> V2: https://lore.kernel.org/all/20231209081450.2613561-3-srasheed@marvell.com/
> - No changes
>
> V1: https://lore.kernel.org/all/20231208070352.2606192-3-srasheed@marvell.com/
>
> .../net/ethernet/marvell/octeon_ep/octep_main.h | 1 +
> .../ethernet/marvell/octeon_ep/octep_pfvf_mbox.c | 15 ++++++++++++---
> .../ethernet/marvell/octeon_ep/octep_pfvf_mbox.h | 7 +++++--
> 3 files changed, 18 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_main.h b/drivers/net/ethernet/marvell/octeon_ep/octep_main.h
> index 3223bb6f95ea..fee59e0e0138 100644
> --- a/drivers/net/ethernet/marvell/octeon_ep/octep_main.h
> +++ b/drivers/net/ethernet/marvell/octeon_ep/octep_main.h
> @@ -220,6 +220,7 @@ struct octep_iface_link_info {
> /* The Octeon VF device specific info data structure.*/
> struct octep_pfvf_info {
> u8 mac_addr[ETH_ALEN];
> + u32 mbox_version;
> };
>
> /* The Octeon device specific private data structure.
> diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_pfvf_mbox.c b/drivers/net/ethernet/marvell/octeon_ep/octep_pfvf_mbox.c
> index 43b40e91f7bf..baffe298a2a0 100644
> --- a/drivers/net/ethernet/marvell/octeon_ep/octep_pfvf_mbox.c
> +++ b/drivers/net/ethernet/marvell/octeon_ep/octep_pfvf_mbox.c
> @@ -28,10 +28,18 @@ static void octep_pfvf_validate_version(struct octep_device *oct, u32 vf_id,
> {
> u32 vf_version = (u32)cmd.s_version.version;
>
> - if (vf_version <= OCTEP_PFVF_MBOX_VERSION_V1)
> - rsp->s_version.type = OCTEP_PFVF_MBOX_TYPE_RSP_ACK;
> + dev_dbg(&oct->pdev->dev, "VF id:%d VF version:%d PF version:%d\n",
> + vf_id, vf_version, OCTEP_PFVF_MBOX_VERSION_CURRENT);
> + if (vf_version < OCTEP_PFVF_MBOX_VERSION_CURRENT)
> + rsp->s_version.version = vf_version;
> else
> - rsp->s_version.type = OCTEP_PFVF_MBOX_TYPE_RSP_NACK;
> + rsp->s_version.version = OCTEP_PFVF_MBOX_VERSION_CURRENT;
> +
> + oct->vf_info[vf_id].mbox_version = rsp->s_version.version;
> + dev_dbg(&oct->pdev->dev, "VF id:%d negotiated VF version:%d\n",
> + vf_id, oct->vf_info[vf_id].mbox_version);
> +
> + rsp->s_version.type = OCTEP_PFVF_MBOX_TYPE_RSP_ACK;
> }
>
> static void octep_pfvf_get_link_status(struct octep_device *oct, u32 vf_id,
> @@ -167,6 +175,7 @@ int octep_setup_pfvf_mbox(struct octep_device *oct)
> goto free_mbox;
>
> memset(oct->mbox[ring], 0, sizeof(struct octep_mbox));
> + memset(&oct->vf_info[i], 0, sizeof(struct octep_pfvf_info));
> mutex_init(&oct->mbox[ring]->lock);
> INIT_WORK(&oct->mbox[ring]->wk.work, octep_pfvf_mbox_work);
> oct->mbox[ring]->wk.ctxptr = oct->mbox[ring];
> diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_pfvf_mbox.h b/drivers/net/ethernet/marvell/octeon_ep/octep_pfvf_mbox.h
> index 34feeb559b0d..af4dcf5ef7f1 100644
> --- a/drivers/net/ethernet/marvell/octeon_ep/octep_pfvf_mbox.h
> +++ b/drivers/net/ethernet/marvell/octeon_ep/octep_pfvf_mbox.h
> @@ -13,11 +13,15 @@
> #define OCTEON_SDP_16K_HW_FRS 16380UL
> #define OCTEON_SDP_64K_HW_FRS 65531UL
>
> +/* When a new command is implemented,PF Mbox version should be bumped.
> + */
> enum octep_pfvf_mbox_version {
> OCTEP_PFVF_MBOX_VERSION_V0,
> OCTEP_PFVF_MBOX_VERSION_V1,
> };
>
> +#define OCTEP_PFVF_MBOX_VERSION_CURRENT OCTEP_PFVF_MBOX_VERSION_V1
> +
> enum octep_pfvf_mbox_opcode {
> OCTEP_PFVF_MBOX_CMD_VERSION,
> OCTEP_PFVF_MBOX_CMD_SET_MTU,
> @@ -30,7 +34,7 @@ enum octep_pfvf_mbox_opcode {
> OCTEP_PFVF_MBOX_CMD_GET_LINK_STATUS,
> OCTEP_PFVF_MBOX_CMD_GET_MTU,
> OCTEP_PFVF_MBOX_CMD_DEV_REMOVE,
> - OCTEP_PFVF_MBOX_CMD_LAST,
> + OCTEP_PFVF_MBOX_CMD_MAX,
> };
This change is unrelative with
this enum is introduced in the first patch, why not directly rename it
in the first one?
>
> enum octep_pfvf_mbox_word_type {
> @@ -79,7 +83,6 @@ enum octep_pfvf_link_autoneg {
>
> #define OCTEP_PFVF_MBOX_TIMEOUT_MS 500
> #define OCTEP_PFVF_MBOX_MAX_RETRIES 2
> -#define OCTEP_PFVF_MBOX_VERSION 0
Similar here, you introduce it in first patch, and no place used, then
remove it int the second one.
Maybe you can reorganize this patchset ?
> #define OCTEP_PFVF_MBOX_MAX_DATA_SIZE 6
> #define OCTEP_PFVF_MBOX_MORE_FRAG_FLAG 1
> #define OCTEP_PFVF_MBOX_WRITE_WAIT_TIME msecs_to_jiffies(1)
Hi Shenijan
> > +#define OCTEP_PFVF_MBOX_VERSION_CURRENT
> OCTEP_PFVF_MBOX_VERSION_V1
> > +
> > enum octep_pfvf_mbox_opcode {
> > OCTEP_PFVF_MBOX_CMD_VERSION,
> > OCTEP_PFVF_MBOX_CMD_SET_MTU,
> > @@ -30,7 +34,7 @@ enum octep_pfvf_mbox_opcode {
> > OCTEP_PFVF_MBOX_CMD_GET_LINK_STATUS,
> > OCTEP_PFVF_MBOX_CMD_GET_MTU,
> > OCTEP_PFVF_MBOX_CMD_DEV_REMOVE,
> > - OCTEP_PFVF_MBOX_CMD_LAST,
> > + OCTEP_PFVF_MBOX_CMD_MAX,
> > };
> This change is unrelative with
> this enum is introduced in the first patch, why not directly rename it
> in the first one?
That is correct. These changes were ported from our original development release internal repos in order
to also reflect the development history, but I think this particular detail can be avoided by fixing it
in the original patch as it doesn't seem too relevant. I can do that in the next patchset.
> >
> > enum octep_pfvf_mbox_word_type {
> > @@ -79,7 +83,6 @@ enum octep_pfvf_link_autoneg {
> >
> > #define OCTEP_PFVF_MBOX_TIMEOUT_MS 500
> > #define OCTEP_PFVF_MBOX_MAX_RETRIES 2
> > -#define OCTEP_PFVF_MBOX_VERSION 0
> Similar here, you introduce it in first patch, and no place used, then
> remove it int the second one.
> Maybe you can reorganize this patchset ?
>
> > #define OCTEP_PFVF_MBOX_MAX_DATA_SIZE 6
> > #define OCTEP_PFVF_MBOX_MORE_FRAG_FLAG 1
> > #define OCTEP_PFVF_MBOX_WRITE_WAIT_TIME msecs_to_jiffies(1)
@@ -220,6 +220,7 @@ struct octep_iface_link_info {
/* The Octeon VF device specific info data structure.*/
struct octep_pfvf_info {
u8 mac_addr[ETH_ALEN];
+ u32 mbox_version;
};
/* The Octeon device specific private data structure.
@@ -28,10 +28,18 @@ static void octep_pfvf_validate_version(struct octep_device *oct, u32 vf_id,
{
u32 vf_version = (u32)cmd.s_version.version;
- if (vf_version <= OCTEP_PFVF_MBOX_VERSION_V1)
- rsp->s_version.type = OCTEP_PFVF_MBOX_TYPE_RSP_ACK;
+ dev_dbg(&oct->pdev->dev, "VF id:%d VF version:%d PF version:%d\n",
+ vf_id, vf_version, OCTEP_PFVF_MBOX_VERSION_CURRENT);
+ if (vf_version < OCTEP_PFVF_MBOX_VERSION_CURRENT)
+ rsp->s_version.version = vf_version;
else
- rsp->s_version.type = OCTEP_PFVF_MBOX_TYPE_RSP_NACK;
+ rsp->s_version.version = OCTEP_PFVF_MBOX_VERSION_CURRENT;
+
+ oct->vf_info[vf_id].mbox_version = rsp->s_version.version;
+ dev_dbg(&oct->pdev->dev, "VF id:%d negotiated VF version:%d\n",
+ vf_id, oct->vf_info[vf_id].mbox_version);
+
+ rsp->s_version.type = OCTEP_PFVF_MBOX_TYPE_RSP_ACK;
}
static void octep_pfvf_get_link_status(struct octep_device *oct, u32 vf_id,
@@ -167,6 +175,7 @@ int octep_setup_pfvf_mbox(struct octep_device *oct)
goto free_mbox;
memset(oct->mbox[ring], 0, sizeof(struct octep_mbox));
+ memset(&oct->vf_info[i], 0, sizeof(struct octep_pfvf_info));
mutex_init(&oct->mbox[ring]->lock);
INIT_WORK(&oct->mbox[ring]->wk.work, octep_pfvf_mbox_work);
oct->mbox[ring]->wk.ctxptr = oct->mbox[ring];
@@ -13,11 +13,15 @@
#define OCTEON_SDP_16K_HW_FRS 16380UL
#define OCTEON_SDP_64K_HW_FRS 65531UL
+/* When a new command is implemented,PF Mbox version should be bumped.
+ */
enum octep_pfvf_mbox_version {
OCTEP_PFVF_MBOX_VERSION_V0,
OCTEP_PFVF_MBOX_VERSION_V1,
};
+#define OCTEP_PFVF_MBOX_VERSION_CURRENT OCTEP_PFVF_MBOX_VERSION_V1
+
enum octep_pfvf_mbox_opcode {
OCTEP_PFVF_MBOX_CMD_VERSION,
OCTEP_PFVF_MBOX_CMD_SET_MTU,
@@ -30,7 +34,7 @@ enum octep_pfvf_mbox_opcode {
OCTEP_PFVF_MBOX_CMD_GET_LINK_STATUS,
OCTEP_PFVF_MBOX_CMD_GET_MTU,
OCTEP_PFVF_MBOX_CMD_DEV_REMOVE,
- OCTEP_PFVF_MBOX_CMD_LAST,
+ OCTEP_PFVF_MBOX_CMD_MAX,
};
enum octep_pfvf_mbox_word_type {
@@ -79,7 +83,6 @@ enum octep_pfvf_link_autoneg {
#define OCTEP_PFVF_MBOX_TIMEOUT_MS 500
#define OCTEP_PFVF_MBOX_MAX_RETRIES 2
-#define OCTEP_PFVF_MBOX_VERSION 0
#define OCTEP_PFVF_MBOX_MAX_DATA_SIZE 6
#define OCTEP_PFVF_MBOX_MORE_FRAG_FLAG 1
#define OCTEP_PFVF_MBOX_WRITE_WAIT_TIME msecs_to_jiffies(1)