#define HNSV2_TXD_BUFNUM_S 0
 #define HNSV2_TXD_BUFNUM_M (0x7 << HNSV2_TXD_BUFNUM_S)
+#define HNSV2_TXD_PORTID_S     4
+#define HNSV2_TXD_PORTID_M     (0X7 << HNSV2_TXD_PORTID_S)
 #define HNSV2_TXD_RI_B   1
 #define HNSV2_TXD_L4CS_B   2
 #define HNSV2_TXD_L3CS_B   3
        int q_num;
        int vf_id;
        u32 eport_id;
+       u32 dport_id;   /* v2 tx bd should fill the dport_id */
        enum hnae_port_type port_type;
        struct list_head node;    /* list to hnae_ae_dev->handle_list */
        struct hnae_buf_ops *bops; /* operation for the buffer */
 
        ae_handle->phy_node = vf_cb->mac_cb->phy_node;
        ae_handle->if_support = vf_cb->mac_cb->if_support;
        ae_handle->port_type = vf_cb->mac_cb->mac_type;
+       ae_handle->dport_id = port_idx;
 
        return ae_handle;
 vf_id_err:
 
        desc->addr = cpu_to_le64(dma);
        desc->tx.send_size = cpu_to_le16((u16)size);
 
-       /*config bd buffer end */
+       /* config bd buffer end */
        hnae_set_bit(rrcfv, HNSV2_TXD_VLD_B, 1);
        hnae_set_field(bn_pid, HNSV2_TXD_BUFNUM_M, 0, buf_num - 1);
 
+       /* fill port_id in the tx bd for sending management pkts */
+       hnae_set_field(bn_pid, HNSV2_TXD_PORTID_M,
+                      HNSV2_TXD_PORTID_S, ring->q->handle->dport_id);
+
        if (type == DESC_TYPE_SKB) {
                skb = (struct sk_buff *)priv;