[net-next,v2,2/2] net: hinic: Add control command support for VF PMD driver in DPDK

Message ID 20221101060358.7837-2-cai.huoqing@linux.dev
State New
Headers
Series [net-next,v2,1/2] net: hinic: Convert the cmd code from decimal to hex to be more readable |

Commit Message

Cai Huoqing Nov. 1, 2022, 6:03 a.m. UTC
  HINIC has a mailbox for PF-VF communication and the VF driver
could send port control command to PF driver via mailbox.

The control command only can be set to register in PF,
so add support in PF driver for VF PMD driver control
command when VF PMD driver work with linux PF driver.

Then there is no need to add handlers to nic_vf_cmd_msg_handler[],
because the host driver just forwards it to the firmware.
Actually the firmware works on a coprocessor MGMT_CPU(inside the NIC)
which will recv and deal with these commands.

Signed-off-by: Cai Huoqing <cai.huoqing@linux.dev>
---
v1->v2:
	1.Update the commit messsage.
	2.Add net-next prefix.
	The comments link: https://lore.kernel.org/lkml/20221031195805.74e22089@kernel.org/

 .../net/ethernet/huawei/hinic/hinic_hw_dev.h  | 64 +++++++++++++++++++
 .../net/ethernet/huawei/hinic/hinic_sriov.c   | 18 ++++++
 2 files changed, 82 insertions(+)
  

Comments

Jani Nikula Nov. 1, 2022, 10:46 a.m. UTC | #1
On Tue, 01 Nov 2022, Cai Huoqing <cai.huoqing@linux.dev> wrote:
> HINIC has a mailbox for PF-VF communication and the VF driver
> could send port control command to PF driver via mailbox.
>
> The control command only can be set to register in PF,
> so add support in PF driver for VF PMD driver control
> command when VF PMD driver work with linux PF driver.
>
> Then there is no need to add handlers to nic_vf_cmd_msg_handler[],
> because the host driver just forwards it to the firmware.
> Actually the firmware works on a coprocessor MGMT_CPU(inside the NIC)
> which will recv and deal with these commands.
>
> Signed-off-by: Cai Huoqing <cai.huoqing@linux.dev>

Out of curiosity, what exactly compelled you to Cc me on this particular
patch? I mean there aren't a whole lot of places in the kernel that
would be more off-topic for me. :)

BR,
Jani.
  
Cai Huoqing Nov. 1, 2022, 12:17 p.m. UTC | #2
On 01 11月 22 12:46:32, Jani Nikula wrote:
> On Tue, 01 Nov 2022, Cai Huoqing <cai.huoqing@linux.dev> wrote:
> > HINIC has a mailbox for PF-VF communication and the VF driver
> > could send port control command to PF driver via mailbox.
> >
> > The control command only can be set to register in PF,
> > so add support in PF driver for VF PMD driver control
> > command when VF PMD driver work with linux PF driver.
> >
> > Then there is no need to add handlers to nic_vf_cmd_msg_handler[],
> > because the host driver just forwards it to the firmware.
> > Actually the firmware works on a coprocessor MGMT_CPU(inside the NIC)
> > which will recv and deal with these commands.
> >
> > Signed-off-by: Cai Huoqing <cai.huoqing@linux.dev>
> 
> Out of curiosity, what exactly compelled you to Cc me on this particular
> patch? I mean there aren't a whole lot of places in the kernel that
> would be more off-topic for me. :)
run ./scripts/get_maintainer.pl this patch in net-next
then get your email
Jani Nikula <jani.nikula@intel.com> (commit_signer:1/8=12%)
Maybe you have some commits in net subsystem ?
> 
> BR,
> Jani.
> 
> 
> -- 
> Jani Nikula, Intel Open Source Graphics Center
  
Jani Nikula Nov. 1, 2022, 12:37 p.m. UTC | #3
On Tue, 01 Nov 2022, Cai Huoqing <cai.huoqing@linux.dev> wrote:
> On 01 11月 22 12:46:32, Jani Nikula wrote:
>> On Tue, 01 Nov 2022, Cai Huoqing <cai.huoqing@linux.dev> wrote:
>> > HINIC has a mailbox for PF-VF communication and the VF driver
>> > could send port control command to PF driver via mailbox.
>> >
>> > The control command only can be set to register in PF,
>> > so add support in PF driver for VF PMD driver control
>> > command when VF PMD driver work with linux PF driver.
>> >
>> > Then there is no need to add handlers to nic_vf_cmd_msg_handler[],
>> > because the host driver just forwards it to the firmware.
>> > Actually the firmware works on a coprocessor MGMT_CPU(inside the NIC)
>> > which will recv and deal with these commands.
>> >
>> > Signed-off-by: Cai Huoqing <cai.huoqing@linux.dev>
>> 
>> Out of curiosity, what exactly compelled you to Cc me on this particular
>> patch? I mean there aren't a whole lot of places in the kernel that
>> would be more off-topic for me. :)
> run ./scripts/get_maintainer.pl this patch in net-next
> then get your email
> Jani Nikula <jani.nikula@intel.com> (commit_signer:1/8=12%)
> Maybe you have some commits in net subsystem ?

A grand total of 3 commits in drivers/net/wireless/ath/ two years ago,
adding 3 const keywords, nowhere near of what you're changing.

get_maintainer.pl is utterly broken to suggest I should be Cc'd.


BR,
Jani.


>> 
>> BR,
>> Jani.
>> 
>> 
>> -- 
>> Jani Nikula, Intel Open Source Graphics Center
  
Jakub Kicinski Nov. 1, 2022, 3:37 p.m. UTC | #4
On Tue, 01 Nov 2022 14:37:39 +0200 Jani Nikula wrote:
> On Tue, 01 Nov 2022, Cai Huoqing <cai.huoqing@linux.dev> wrote:
> > On 01 11月 22 12:46:32, Jani Nikula wrote:  
> >> Out of curiosity, what exactly compelled you to Cc me on this particular
> >> patch? I mean there aren't a whole lot of places in the kernel that
> >> would be more off-topic for me. :)  
> > run ./scripts/get_maintainer.pl this patch in net-next
> > then get your email
> > Jani Nikula <jani.nikula@intel.com> (commit_signer:1/8=12%)
> > Maybe you have some commits in net subsystem ?  
> 
> A grand total of 3 commits in drivers/net/wireless/ath/ two years ago,
> adding 3 const keywords, nowhere near of what you're changing.
> 
> get_maintainer.pl is utterly broken to suggest I should be Cc'd.

Apparently is because you acked commit 8581fd402a0c ("treewide: Add
missing includes masked by cgroup -> bpf dependency").
This random driver is obviously was not the part you were acking but
heuristics :/

Cai Huoqing FWIW we recommend adding --git-min-percent 25 when running
get_maintainers, otherwise there's all sorts of noise that gets in.
  
Jani Nikula Nov. 1, 2022, 4:06 p.m. UTC | #5
On Tue, 01 Nov 2022, Jakub Kicinski <kuba@kernel.org> wrote:
> On Tue, 01 Nov 2022 14:37:39 +0200 Jani Nikula wrote:
>> On Tue, 01 Nov 2022, Cai Huoqing <cai.huoqing@linux.dev> wrote:
>> > On 01 11月 22 12:46:32, Jani Nikula wrote:  
>> >> Out of curiosity, what exactly compelled you to Cc me on this particular
>> >> patch? I mean there aren't a whole lot of places in the kernel that
>> >> would be more off-topic for me. :)  
>> > run ./scripts/get_maintainer.pl this patch in net-next
>> > then get your email
>> > Jani Nikula <jani.nikula@intel.com> (commit_signer:1/8=12%)
>> > Maybe you have some commits in net subsystem ?  
>> 
>> A grand total of 3 commits in drivers/net/wireless/ath/ two years ago,
>> adding 3 const keywords, nowhere near of what you're changing.
>> 
>> get_maintainer.pl is utterly broken to suggest I should be Cc'd.
>
> Apparently is because you acked commit 8581fd402a0c ("treewide: Add
> missing includes masked by cgroup -> bpf dependency").
> This random driver is obviously was not the part you were acking but
> heuristics :/

*rolls eyes* :D


>
> Cai Huoqing FWIW we recommend adding --git-min-percent 25 when running
> get_maintainers, otherwise there's all sorts of noise that gets in.
  

Patch

diff --git a/drivers/net/ethernet/huawei/hinic/hinic_hw_dev.h b/drivers/net/ethernet/huawei/hinic/hinic_hw_dev.h
index abffd967a791..4f561e4e849a 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_hw_dev.h
+++ b/drivers/net/ethernet/huawei/hinic/hinic_hw_dev.h
@@ -53,11 +53,15 @@  enum hinic_port_cmd {
 
 	HINIC_PORT_CMD_SET_PFC = 0x5,
 
+	HINIC_PORT_CMD_SET_ETS = 0x7,
+	HINIC_PORT_CMD_GET_ETS = 0x8,
+
 	HINIC_PORT_CMD_SET_MAC = 0x9,
 	HINIC_PORT_CMD_GET_MAC = 0xA,
 	HINIC_PORT_CMD_DEL_MAC = 0xB,
 
 	HINIC_PORT_CMD_SET_RX_MODE = 0xC,
+	HINIC_PORT_CMD_SET_ANTI_ATTACK_RATE = 0xD,
 
 	HINIC_PORT_CMD_GET_PAUSE_INFO = 0x14,
 	HINIC_PORT_CMD_SET_PAUSE_INFO = 0x15,
@@ -81,6 +85,7 @@  enum hinic_port_cmd {
 	HINIC_PORT_CMD_GET_RSS_TEMPLATE_INDIR_TBL = 0x25,
 
 	HINIC_PORT_CMD_SET_PORT_STATE = 0x29,
+	HINIC_PORT_CMD_GET_PORT_STATE = 0x30,
 
 	HINIC_PORT_CMD_SET_RSS_TEMPLATE_TBL = 0x2B,
 	HINIC_PORT_CMD_GET_RSS_TEMPLATE_TBL = 0x2C,
@@ -97,17 +102,29 @@  enum hinic_port_cmd {
 
 	HINIC_PORT_CMD_RSS_CFG = 0x42,
 
+	HINIC_PORT_CMD_GET_PHY_TYPE = 0x44,
+
 	HINIC_PORT_CMD_FWCTXT_INIT = 0x45,
 
 	HINIC_PORT_CMD_GET_LOOPBACK_MODE = 0x48,
 	HINIC_PORT_CMD_SET_LOOPBACK_MODE = 0x49,
 
+	HINIC_PORT_CMD_GET_JUMBO_FRAME_SIZE = 0x4A,
+	HINIC_PORT_CMD_SET_JUMBO_FRAME_SIZE = 0x4B,
+
 	HINIC_PORT_CMD_ENABLE_SPOOFCHK = 0x4E,
 
 	HINIC_PORT_CMD_GET_MGMT_VERSION = 0x58,
 
+	HINIC_PORT_CMD_GET_PORT_TYPE = 0x5B,
+
 	HINIC_PORT_CMD_SET_FUNC_STATE = 0x5D,
 
+	HINIC_PORT_CMD_GET_PORT_ID_BY_FUNC_ID = 0x5E,
+
+	HINIC_PORT_CMD_GET_DMA_CS = 0x64,
+	HINIC_PORT_CMD_SET_DMA_CS = 0x65,
+
 	HINIC_PORT_CMD_GET_GLOBAL_QPN = 0x66,
 
 	HINIC_PORT_CMD_SET_VF_RATE = 0x69,
@@ -121,25 +138,72 @@  enum hinic_port_cmd {
 
 	HINIC_PORT_CMD_SET_RQ_IQ_MAP = 0x73,
 
+	HINIC_PORT_CMD_SET_PFC_THD = 0x75,
+
 	HINIC_PORT_CMD_LINK_STATUS_REPORT = 0xA0,
 
+	HINIC_PORT_CMD_SET_LOSSLESS_ETH	= 0xA3,
+
 	HINIC_PORT_CMD_UPDATE_MAC = 0xA4,
 
 	HINIC_PORT_CMD_GET_CAP = 0xAA,
 
+	HINIC_PORT_CMD_UP_TC_ADD_FLOW = 0xAF,
+	HINIC_PORT_CMD_UP_TC_DEL_FLOW = 0xB0,
+	HINIC_PORT_CMD_UP_TC_GET_FLOW = 0xB1,
+
+	HINIC_PORT_CMD_UP_TC_FLUSH_TCAM = 0xB2,
+
+	HINIC_PORT_CMD_UP_TC_CTRL_TCAM_BLOCK = 0xB3,
+
+	HINIC_PORT_CMD_UP_TC_ENABLE = 0xB4,
+
+	HINIC_PORT_CMD_UP_TC_GET_TCAM_BLOCK = 0xB5,
+
+	HINIC_PORT_CMD_SET_IPSU_MAC = 0xCB,
+	HINIC_PORT_CMD_GET_IPSU_MAC = 0xCC,
+
+	HINIC_PORT_CMD_SET_XSFP_STATUS = 0xD4,
 	HINIC_PORT_CMD_GET_LINK_MODE = 0xD9,
 
 	HINIC_PORT_CMD_SET_SPEED = 0xDA,
 
 	HINIC_PORT_CMD_SET_AUTONEG = 0xDB,
 
+	HINIC_PORT_CMD_CLEAR_QP_RES = 0xDD,
+
+	HINIC_PORT_CMD_SET_SUPER_CQE = 0xDE,
+
+	HINIC_PORT_CMD_SET_VF_COS = 0xDF,
+	HINIC_PORT_CMD_GET_VF_COS = 0xE1,
+
+	HINIC_PORT_CMD_CABLE_PLUG_EVENT	= 0xE5,
+
+	HINIC_PORT_CMD_LINK_ERR_EVENT = 0xE6,
+
+	HINIC_PORT_CMD_SET_COS_UP_MAP = 0xE8,
+
+	HINIC_PORT_CMD_RESET_LINK_CFG = 0xEB,
+
 	HINIC_PORT_CMD_GET_STD_SFP_INFO = 0xF0,
 
+	HINIC_PORT_CMD_FORCE_PKT_DROP = 0xF3,
+
 	HINIC_PORT_CMD_SET_LRO_TIMER = 0xF4,
 
+	HINIC_PORT_CMD_SET_VHD_CFG = 0xF7,
+
+	HINIC_PORT_CMD_SET_LINK_FOLLOW = 0xF8,
+
 	HINIC_PORT_CMD_SET_VF_MAX_MIN_RATE = 0xF9,
 
 	HINIC_PORT_CMD_GET_SFP_ABS = 0xFB,
+
+	HINIC_PORT_CMD_Q_FILTER	= 0xFC,
+
+	HINIC_PORT_CMD_TCAM_FILTER = 0xFE,
+
+	HINIC_PORT_CMD_SET_VLAN_FILTER = 0xFF
 };
 
 /* cmd of mgmt CPU message for HILINK module */
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_sriov.c b/drivers/net/ethernet/huawei/hinic/hinic_sriov.c
index a5f08b969e3f..bba41994dee6 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_sriov.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_sriov.c
@@ -489,6 +489,24 @@  static struct vf_cmd_check_handle nic_cmd_support_vf[] = {
 	{HINIC_PORT_CMD_UPDATE_MAC, hinic_mbox_check_func_id_8B},
 	{HINIC_PORT_CMD_GET_CAP, hinic_mbox_check_func_id_8B},
 	{HINIC_PORT_CMD_GET_LINK_MODE, hinic_mbox_check_func_id_8B},
+	{HINIC_PORT_CMD_GET_VF_COS, NULL},
+	{HINIC_PORT_CMD_SET_VHD_CFG, hinic_mbox_check_func_id_8B},
+	{HINIC_PORT_CMD_SET_VLAN_FILTER, hinic_mbox_check_func_id_8B},
+	{HINIC_PORT_CMD_Q_FILTER, hinic_mbox_check_func_id_8B},
+	{HINIC_PORT_CMD_TCAM_FILTER, NULL},
+	{HINIC_PORT_CMD_UP_TC_ADD_FLOW, NULL},
+	{HINIC_PORT_CMD_UP_TC_DEL_FLOW, NULL},
+	{HINIC_PORT_CMD_UP_TC_FLUSH_TCAM, hinic_mbox_check_func_id_8B},
+	{HINIC_PORT_CMD_UP_TC_CTRL_TCAM_BLOCK, hinic_mbox_check_func_id_8B},
+	{HINIC_PORT_CMD_UP_TC_ENABLE, hinic_mbox_check_func_id_8B},
+	{HINIC_PORT_CMD_CABLE_PLUG_EVENT, NULL},
+	{HINIC_PORT_CMD_LINK_ERR_EVENT, NULL},
+	{HINIC_PORT_CMD_SET_PORT_STATE, hinic_mbox_check_func_id_8B},
+	{HINIC_PORT_CMD_SET_ETS, NULL},
+	{HINIC_PORT_CMD_SET_ANTI_ATTACK_RATE, NULL},
+	{HINIC_PORT_CMD_RESET_LINK_CFG, hinic_mbox_check_func_id_8B},
+	{HINIC_PORT_CMD_SET_LINK_FOLLOW, NULL},
+	{HINIC_PORT_CMD_CLEAR_QP_RES, NULL},
 };
 
 #define CHECK_IPSU_15BIT	0X8000