Messages in this thread | | | Date | Fri, 28 Oct 2022 13:24:03 +0800 | From | Cai Huoqing <> | Subject | Re: [PATCH 2/2] net: hinic: Add control command support for VF PMD driver in DPDK |
| |
On 28 10月 22 09:21:09, shaozhengchao wrote: > > > On 2022/10/26 20:59, Cai Huoqing 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. > > > > Signed-off-by: Cai Huoqing <cai.huoqing@linux.dev> > > --- > > .../net/ethernet/huawei/hinic/hinic_hw_dev.h | 64 +++++++++++++++++++ > > .../net/ethernet/huawei/hinic/hinic_sriov.c | 18 ++++++ > > 2 files changed, 82 insertions(+) > > > > 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 > Hi Cai: > I guess how do you get the opcodes of these commands? Have they > all been tested? Is the test result consistent with the driver released > on the Huawei support website? Hi Shao, Thanks for your reply.
I try to keep this PF part support to recv hinic VF PMD driver in DPDK upstream. the command comes from here, https://github.com/DPDK/dpdk/blob/main/drivers/net/hinic/base/hinic_pmd_niccfg.c
send by the DPDK-hinic function 'l2nic_msg_to_mgmt_sync' when 'hinic_func_type(hwdev) == TYPE_VF'.
for the test, the DPDK part is tested, I also test this part in SP582 NIC
Thanks. Cai > > Zhengchao Shao
| |