]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/commitdiff
net: hns3: Drop depricated mta table support
authorJian Shen <shenjian15@huawei.com>
Fri, 5 Oct 2018 17:03:27 +0000 (18:03 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 5 Oct 2018 19:01:55 +0000 (12:01 -0700)
For mta table support has been dropped, remove the code for mta table.

Signed-off-by: Zhongzhu Liu <liuzhongzhu@huawei.com>
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hclge_mbx.h
drivers/net/ethernet/hisilicon/hns3/hnae3.h
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h

index be9dc08ccf6785762a329016ed3f3e20d2f21dad..038326cfda93d736a52dbde2a46d4a2ef94c5cc4 100644 (file)
@@ -46,9 +46,6 @@ enum hclge_mbx_mac_vlan_subcode {
        HCLGE_MBX_MAC_VLAN_MC_MODIFY,           /* modify MC mac addr */
        HCLGE_MBX_MAC_VLAN_MC_ADD,              /* add new MC mac addr */
        HCLGE_MBX_MAC_VLAN_MC_REMOVE,           /* remove MC mac addr */
-       HCLGE_MBX_MAC_VLAN_MC_FUNC_MTA_ENABLE,  /* config func MTA enable */
-       HCLGE_MBX_MAC_VLAN_MTA_TYPE_READ,       /* read func MTA type */
-       HCLGE_MBX_MAC_VLAN_MTA_STATUS_UPDATE,   /* update MTA status */
 };
 
 /* below are per-VF vlan cfg subcodes */
index 591ee2ee4bf6400dc57d78c3fe30644ce6b6f739..1b49c5d3340b691c92ef81f4a7115a5278b3199a 100644 (file)
@@ -355,8 +355,6 @@ struct hnae3_ae_ops {
                           const unsigned char *addr);
        int (*rm_mc_addr)(struct hnae3_handle *handle,
                          const unsigned char *addr);
-       int (*update_mta_status)(struct hnae3_handle *handle);
-
        void (*set_tso_stats)(struct hnae3_handle *handle, int enable);
        void (*update_stats)(struct hnae3_handle *handle,
                             struct net_device_stats *net_stats);
index d8b8ccffb4b859a90bd5582b47f00fd8d43576c2..3f36c38c7dfc7728c635f945500e38a26ddc66a2 100644 (file)
@@ -476,9 +476,6 @@ static void hns3_nic_set_rx_mode(struct net_device *netdev)
        if (netdev->flags & IFF_MULTICAST) {
                if (__dev_mc_sync(netdev, hns3_nic_mc_sync, hns3_nic_mc_unsync))
                        netdev_err(netdev, "sync mc address fail\n");
-
-               if (h->ae_algo->ops->update_mta_status)
-                       h->ae_algo->ops->update_mta_status(h);
        }
 }
 
index 6098dacb098772777517af4556eaca352a290826..1ccde67db77087c4bc2fd1332253aeb73e911197 100644 (file)
@@ -179,12 +179,6 @@ enum hclge_opcode_type {
        HCLGE_OPC_MAC_ETHTYPE_ADD           = 0x1010,
        HCLGE_OPC_MAC_ETHTYPE_REMOVE    = 0x1011,
 
-       /* Multicast linear table commands */
-       HCLGE_OPC_MTA_MAC_MODE_CFG          = 0x1020,
-       HCLGE_OPC_MTA_MAC_FUNC_CFG          = 0x1021,
-       HCLGE_OPC_MTA_TBL_ITEM_CFG          = 0x1022,
-       HCLGE_OPC_MTA_TBL_ITEM_QUERY    = 0x1023,
-
        /* VLAN commands */
        HCLGE_OPC_VLAN_FILTER_CTRL          = 0x1100,
        HCLGE_OPC_VLAN_FILTER_PF_CFG    = 0x1101,
@@ -623,30 +617,6 @@ struct hclge_mac_mgr_tbl_entry_cmd {
        u8      rsv3[2];
 };
 
-#define HCLGE_CFG_MTA_MAC_SEL_S                0
-#define HCLGE_CFG_MTA_MAC_SEL_M                GENMASK(1, 0)
-#define HCLGE_CFG_MTA_MAC_EN_B         7
-struct hclge_mta_filter_mode_cmd {
-       u8      dmac_sel_en; /* Use lowest 2 bit as sel_mode, bit 7 as enable */
-       u8      rsv[23];
-};
-
-#define HCLGE_CFG_FUNC_MTA_ACCEPT_B    0
-struct hclge_cfg_func_mta_filter_cmd {
-       u8      accept; /* Only used lowest 1 bit */
-       u8      function_id;
-       u8      rsv[22];
-};
-
-#define HCLGE_CFG_MTA_ITEM_ACCEPT_B    0
-#define HCLGE_CFG_MTA_ITEM_IDX_S       0
-#define HCLGE_CFG_MTA_ITEM_IDX_M       GENMASK(11, 0)
-struct hclge_cfg_func_mta_item_cmd {
-       __le16  item_idx; /* Only used lowest 12 bit */
-       u8      accept;   /* Only used lowest 1 bit */
-       u8      rsv[21];
-};
-
 struct hclge_mac_vlan_add_cmd {
        __le16  flags;
        __le16  mac_addr_hi16;
index d346d0aec15fda9ecc0189b1eef7b6b688e6eebb..d95ea9b2cf6d3a56a4598d774fb4049913e3963f 100644 (file)
@@ -25,9 +25,6 @@
 #define HCLGE_STATS_READ(p, offset) (*((u64 *)((u8 *)(p) + (offset))))
 #define HCLGE_MAC_STATS_FIELD_OFF(f) (offsetof(struct hclge_mac_stats, f))
 
-static int hclge_set_mta_filter_mode(struct hclge_dev *hdev,
-                                    enum hclge_mta_dmac_sel_type mta_mac_sel,
-                                    bool enable);
 static int hclge_set_mtu(struct hnae3_handle *handle, int new_mtu);
 static int hclge_init_vlan_config(struct hclge_dev *hdev);
 static int hclge_reset_ae_dev(struct hnae3_ae_dev *ae_dev);
@@ -1952,10 +1949,8 @@ static int hclge_mac_init(struct hclge_dev *hdev)
        struct hnae3_handle *handle = &hdev->vport[0].nic;
        struct net_device *netdev = handle->kinfo.netdev;
        struct hclge_mac *mac = &hdev->hw.mac;
-       struct hclge_vport *vport;
        int mtu;
        int ret;
-       int i;
 
        hdev->hw.mac.duplex = HCLGE_MAC_FULL;
        ret = hclge_cfg_mac_speed_dup_hw(hdev, hdev->hw.mac.speed,
@@ -1968,32 +1963,6 @@ static int hclge_mac_init(struct hclge_dev *hdev)
 
        mac->link = 0;
 
-       /* Initialize the MTA table work mode */
-       hdev->enable_mta        = true;
-       hdev->mta_mac_sel_type  = HCLGE_MAC_ADDR_47_36;
-
-       ret = hclge_set_mta_filter_mode(hdev,
-                                       hdev->mta_mac_sel_type,
-                                       hdev->enable_mta);
-       if (ret) {
-               dev_err(&hdev->pdev->dev, "set mta filter mode failed %d\n",
-                       ret);
-               return ret;
-       }
-
-       for (i = 0; i < hdev->num_alloc_vport; i++) {
-               vport = &hdev->vport[i];
-               vport->accept_mta_mc = false;
-
-               memset(vport->mta_shadow, 0, sizeof(vport->mta_shadow));
-               ret = hclge_cfg_func_mta_filter(hdev, vport->vport_id, false);
-               if (ret) {
-                       dev_err(&hdev->pdev->dev,
-                               "set mta filter mode fail ret=%d\n", ret);
-                       return ret;
-               }
-       }
-
        if (netdev)
                mtu = netdev->mtu;
        else
@@ -4954,174 +4923,6 @@ static void hclge_prepare_mac_addr(struct hclge_mac_vlan_tbl_entry_cmd *new_req,
        new_req->mac_addr_lo16 = cpu_to_le16(low_val & 0xffff);
 }
 
-static u16 hclge_get_mac_addr_to_mta_index(struct hclge_vport *vport,
-                                          const u8 *addr)
-{
-       u16 high_val = addr[1] | (addr[0] << 8);
-       struct hclge_dev *hdev = vport->back;
-       u32 rsh = 4 - hdev->mta_mac_sel_type;
-       u16 ret_val = (high_val >> rsh) & 0xfff;
-
-       return ret_val;
-}
-
-static int hclge_set_mta_filter_mode(struct hclge_dev *hdev,
-                                    enum hclge_mta_dmac_sel_type mta_mac_sel,
-                                    bool enable)
-{
-       struct hclge_mta_filter_mode_cmd *req;
-       struct hclge_desc desc;
-       int ret;
-
-       req = (struct hclge_mta_filter_mode_cmd *)desc.data;
-       hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_MTA_MAC_MODE_CFG, false);
-
-       hnae3_set_bit(req->dmac_sel_en, HCLGE_CFG_MTA_MAC_EN_B,
-                     enable);
-       hnae3_set_field(req->dmac_sel_en, HCLGE_CFG_MTA_MAC_SEL_M,
-                       HCLGE_CFG_MTA_MAC_SEL_S, mta_mac_sel);
-
-       ret = hclge_cmd_send(&hdev->hw, &desc, 1);
-       if (ret)
-               dev_err(&hdev->pdev->dev,
-                       "Config mat filter mode failed for cmd_send, ret =%d.\n",
-                       ret);
-
-       return ret;
-}
-
-int hclge_cfg_func_mta_filter(struct hclge_dev *hdev,
-                             u8 func_id,
-                             bool enable)
-{
-       struct hclge_cfg_func_mta_filter_cmd *req;
-       struct hclge_desc desc;
-       int ret;
-
-       req = (struct hclge_cfg_func_mta_filter_cmd *)desc.data;
-       hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_MTA_MAC_FUNC_CFG, false);
-
-       hnae3_set_bit(req->accept, HCLGE_CFG_FUNC_MTA_ACCEPT_B,
-                     enable);
-       req->function_id = func_id;
-
-       ret = hclge_cmd_send(&hdev->hw, &desc, 1);
-       if (ret)
-               dev_err(&hdev->pdev->dev,
-                       "Config func_id enable failed for cmd_send, ret =%d.\n",
-                       ret);
-
-       return ret;
-}
-
-static int hclge_set_mta_table_item(struct hclge_vport *vport,
-                                   u16 idx,
-                                   bool enable)
-{
-       struct hclge_dev *hdev = vport->back;
-       struct hclge_cfg_func_mta_item_cmd *req;
-       struct hclge_desc desc;
-       u16 item_idx = 0;
-       int ret;
-
-       req = (struct hclge_cfg_func_mta_item_cmd *)desc.data;
-       hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_MTA_TBL_ITEM_CFG, false);
-       hnae3_set_bit(req->accept, HCLGE_CFG_MTA_ITEM_ACCEPT_B, enable);
-
-       hnae3_set_field(item_idx, HCLGE_CFG_MTA_ITEM_IDX_M,
-                       HCLGE_CFG_MTA_ITEM_IDX_S, idx);
-       req->item_idx = cpu_to_le16(item_idx);
-
-       ret = hclge_cmd_send(&hdev->hw, &desc, 1);
-       if (ret) {
-               dev_err(&hdev->pdev->dev,
-                       "Config mta table item failed for cmd_send, ret =%d.\n",
-                       ret);
-               return ret;
-       }
-
-       if (enable)
-               set_bit(idx, vport->mta_shadow);
-       else
-               clear_bit(idx, vport->mta_shadow);
-
-       return 0;
-}
-
-static int hclge_update_mta_status(struct hnae3_handle *handle)
-{
-       unsigned long mta_status[BITS_TO_LONGS(HCLGE_MTA_TBL_SIZE)];
-       struct hclge_vport *vport = hclge_get_vport(handle);
-       struct net_device *netdev = handle->kinfo.netdev;
-       struct netdev_hw_addr *ha;
-       u16 tbl_idx;
-
-       memset(mta_status, 0, sizeof(mta_status));
-
-       /* update mta_status from mc addr list */
-       netdev_for_each_mc_addr(ha, netdev) {
-               tbl_idx = hclge_get_mac_addr_to_mta_index(vport, ha->addr);
-               set_bit(tbl_idx, mta_status);
-       }
-
-       return hclge_update_mta_status_common(vport, mta_status,
-                                       0, HCLGE_MTA_TBL_SIZE, true);
-}
-
-int hclge_update_mta_status_common(struct hclge_vport *vport,
-                                  unsigned long *status,
-                                  u16 idx,
-                                  u16 count,
-                                  bool update_filter)
-{
-       struct hclge_dev *hdev = vport->back;
-       u16 update_max = idx + count;
-       u16 check_max;
-       int ret = 0;
-       bool used;
-       u16 i;
-
-       /* setup mta check range */
-       if (update_filter) {
-               i = 0;
-               check_max = HCLGE_MTA_TBL_SIZE;
-       } else {
-               i = idx;
-               check_max = update_max;
-       }
-
-       used = false;
-       /* check and update all mta item */
-       for (; i < check_max; i++) {
-               /* ignore unused item */
-               if (!test_bit(i, vport->mta_shadow))
-                       continue;
-
-               /* if i in update range then update it */
-               if (i >= idx && i < update_max)
-                       if (!test_bit(i - idx, status))
-                               hclge_set_mta_table_item(vport, i, false);
-
-               if (!used && test_bit(i, vport->mta_shadow))
-                       used = true;
-       }
-
-       /* no longer use mta, disable it */
-       if (vport->accept_mta_mc && update_filter && !used) {
-               ret = hclge_cfg_func_mta_filter(hdev,
-                                               vport->vport_id,
-                                               false);
-               if (ret)
-                       dev_err(&hdev->pdev->dev,
-                               "disable func mta filter fail ret=%d\n",
-                               ret);
-               else
-                       vport->accept_mta_mc = false;
-       }
-
-       return ret;
-}
-
 static int hclge_remove_mac_vlan_tbl(struct hclge_vport *vport,
                                     struct hclge_mac_vlan_tbl_entry_cmd *req)
 {
@@ -5477,7 +5278,6 @@ int hclge_add_mc_addr_common(struct hclge_vport *vport,
        struct hclge_dev *hdev = vport->back;
        struct hclge_mac_vlan_tbl_entry_cmd req;
        struct hclge_desc desc[3];
-       u16 tbl_idx;
        int status;
 
        /* mac addr check */
@@ -5507,25 +5307,8 @@ int hclge_add_mc_addr_common(struct hclge_vport *vport,
                status = hclge_add_mac_vlan_tbl(vport, &req, desc);
        }
 
-       /* If mc mac vlan table is full, use MTA table */
-       if (status == -ENOSPC) {
-               if (!vport->accept_mta_mc) {
-                       status = hclge_cfg_func_mta_filter(hdev,
-                                                          vport->vport_id,
-                                                          true);
-                       if (status) {
-                               dev_err(&hdev->pdev->dev,
-                                       "set mta filter mode fail ret=%d\n",
-                                       status);
-                               return status;
-                       }
-                       vport->accept_mta_mc = true;
-               }
-
-               /* Set MTA table for this MAC address */
-               tbl_idx = hclge_get_mac_addr_to_mta_index(vport, addr);
-               status = hclge_set_mta_table_item(vport, tbl_idx, true);
-       }
+       if (status == -ENOSPC)
+               dev_err(&hdev->pdev->dev, "mc mac vlan table is full\n");
 
        return status;
 }
@@ -7428,7 +7211,6 @@ static const struct hnae3_ae_ops hclge_ops = {
        .rm_uc_addr = hclge_rm_uc_addr,
        .add_mc_addr = hclge_add_mc_addr,
        .rm_mc_addr = hclge_rm_mc_addr,
-       .update_mta_status = hclge_update_mta_status,
        .set_autoneg = hclge_set_autoneg,
        .get_autoneg = hclge_get_autoneg,
        .get_pauseparam = hclge_get_pauseparam,
index d0c7c624b31a1986e91ca6a40d631e403fa8658e..e3dfd654eca9a1c4b1f0af7a90b29d91c725ca1b 100644 (file)
@@ -59,8 +59,6 @@
 #define HCLGE_DEFAULT_UMV_SPACE_PER_PF \
        (HCLGE_UMV_TBL_SIZE / HCLGE_MAX_PF_NUM)
 
-#define HCLGE_MTA_TBL_SIZE             4096
-
 #define HCLGE_TQP_RESET_TRY_TIMES      10
 
 #define HCLGE_PHY_PAGE_MDIX            0
@@ -168,13 +166,6 @@ enum HCLGE_MAC_DUPLEX {
        HCLGE_MAC_FULL
 };
 
-enum hclge_mta_dmac_sel_type {
-       HCLGE_MAC_ADDR_47_36,
-       HCLGE_MAC_ADDR_46_35,
-       HCLGE_MAC_ADDR_45_34,
-       HCLGE_MAC_ADDR_44_33,
-};
-
 struct hclge_mac {
        u8 phy_addr;
        u8 flag;
@@ -677,9 +668,6 @@ struct hclge_dev {
        u32 pkt_buf_size; /* Total pf buf size for tx/rx */
        u32 mps; /* Max packet size */
 
-       enum hclge_mta_dmac_sel_type mta_mac_sel_type;
-       bool enable_mta; /* Multicast filter enable */
-
        struct hclge_vlan_type_cfg vlan_type_cfg;
 
        unsigned long vlan_table[VLAN_N_VID][BITS_TO_LONGS(HCLGE_VPORT_NUM)];
@@ -754,9 +742,6 @@ struct hclge_vport {
        struct hclge_dev *back;  /* Back reference to associated dev */
        struct hnae3_handle nic;
        struct hnae3_handle roce;
-
-       bool accept_mta_mc; /* whether to accept mta filter multicast */
-       unsigned long mta_shadow[BITS_TO_LONGS(HCLGE_MTA_TBL_SIZE)];
 };
 
 void hclge_promisc_param_init(struct hclge_promisc_param *param, bool en_uc,
@@ -771,15 +756,6 @@ int hclge_add_mc_addr_common(struct hclge_vport *vport,
 int hclge_rm_mc_addr_common(struct hclge_vport *vport,
                            const unsigned char *addr);
 
-int hclge_cfg_func_mta_filter(struct hclge_dev *hdev,
-                             u8 func_id,
-                             bool enable);
-int hclge_update_mta_status_common(struct hclge_vport *vport,
-                                  unsigned long *status,
-                                  u16 idx,
-                                  u16 count,
-                                  bool update_filter);
-
 struct hclge_vport *hclge_get_vport(struct hnae3_handle *handle);
 int hclge_bind_ring_with_vector(struct hclge_vport *vport,
                                int vector_id, bool en,
index f34851c91eb39432705a6206959feffa7cc56529..04462a347a94075bd28453b6db9088d77ef586c9 100644 (file)
@@ -233,43 +233,6 @@ static int hclge_set_vf_uc_mac_addr(struct hclge_vport *vport,
        return 0;
 }
 
-static int hclge_set_vf_mc_mta_status(struct hclge_vport *vport,
-                                     u8 *msg, u8 idx, bool is_end)
-{
-#define HCLGE_MTA_STATUS_MSG_SIZE 13
-#define HCLGE_MTA_STATUS_MSG_BITS \
-                               (HCLGE_MTA_STATUS_MSG_SIZE * BITS_PER_BYTE)
-#define HCLGE_MTA_STATUS_MSG_END_BITS \
-                               (HCLGE_MTA_TBL_SIZE % HCLGE_MTA_STATUS_MSG_BITS)
-       unsigned long status[BITS_TO_LONGS(HCLGE_MTA_STATUS_MSG_BITS)];
-       u16 tbl_cnt;
-       u16 tbl_idx;
-       u8 msg_ofs;
-       u8 msg_bit;
-
-       tbl_cnt = is_end ? HCLGE_MTA_STATUS_MSG_END_BITS :
-                       HCLGE_MTA_STATUS_MSG_BITS;
-
-       /* set msg field */
-       msg_ofs = 0;
-       msg_bit = 0;
-       memset(status, 0, sizeof(status));
-       for (tbl_idx = 0; tbl_idx < tbl_cnt; tbl_idx++) {
-               if (msg[msg_ofs] & BIT(msg_bit))
-                       set_bit(tbl_idx, status);
-
-               msg_bit++;
-               if (msg_bit == BITS_PER_BYTE) {
-                       msg_bit = 0;
-                       msg_ofs++;
-               }
-       }
-
-       return hclge_update_mta_status_common(vport,
-                                       status, idx * HCLGE_MTA_STATUS_MSG_BITS,
-                                       tbl_cnt, is_end);
-}
-
 static int hclge_set_vf_mc_mac_addr(struct hclge_vport *vport,
                                    struct hclge_mbx_vf_to_pf_cmd *mbx_req,
                                    bool gen_resp)
@@ -284,27 +247,6 @@ static int hclge_set_vf_mc_mac_addr(struct hclge_vport *vport,
                status = hclge_add_mc_addr_common(vport, mac_addr);
        } else if (mbx_req->msg[1] == HCLGE_MBX_MAC_VLAN_MC_REMOVE) {
                status = hclge_rm_mc_addr_common(vport, mac_addr);
-       } else if (mbx_req->msg[1] == HCLGE_MBX_MAC_VLAN_MC_FUNC_MTA_ENABLE) {
-               u8 func_id = vport->vport_id;
-               bool enable = mbx_req->msg[2];
-
-               status = hclge_cfg_func_mta_filter(hdev, func_id, enable);
-       } else if (mbx_req->msg[1] == HCLGE_MBX_MAC_VLAN_MTA_TYPE_READ) {
-               resp_data = hdev->mta_mac_sel_type;
-               resp_len = sizeof(u8);
-               gen_resp = true;
-               status = 0;
-       } else if (mbx_req->msg[1] == HCLGE_MBX_MAC_VLAN_MTA_STATUS_UPDATE) {
-               /* mta status update msg format
-                * msg[2.6 : 2.0]  msg index
-                * msg[2.7]        msg is end
-                * msg[15 : 3]     mta status bits[103 : 0]
-                */
-               bool is_end = (mbx_req->msg[2] & 0x80) ? true : false;
-
-               status = hclge_set_vf_mc_mta_status(vport, &mbx_req->msg[3],
-                                                   mbx_req->msg[2] & 0x7F,
-                                                   is_end);
        } else {
                dev_err(&hdev->pdev->dev,
                        "failed to set mcast mac addr, unknown subcode %d\n",
index 8f858cb2a67bfd1045caa6cbadeaa7abbf7e332b..ca4a9f790917747f4dce71e4599ed337cdc7cd69 100644 (file)
@@ -746,126 +746,6 @@ static void hclgevf_reset_tqp_stats(struct hnae3_handle *handle)
        }
 }
 
-static int hclgevf_cfg_func_mta_type(struct hclgevf_dev *hdev)
-{
-       u8 resp_msg = HCLGEVF_MTA_TYPE_SEL_MAX;
-       int ret;
-
-       ret = hclgevf_send_mbx_msg(hdev, HCLGE_MBX_SET_MULTICAST,
-                                  HCLGE_MBX_MAC_VLAN_MTA_TYPE_READ,
-                                  NULL, 0, true, &resp_msg, sizeof(u8));
-
-       if (ret) {
-               dev_err(&hdev->pdev->dev,
-                       "Read mta type fail, ret=%d.\n", ret);
-               return ret;
-       }
-
-       if (resp_msg > HCLGEVF_MTA_TYPE_SEL_MAX) {
-               dev_err(&hdev->pdev->dev,
-                       "Read mta type invalid, resp=%d.\n", resp_msg);
-               return -EINVAL;
-       }
-
-       hdev->mta_mac_sel_type = resp_msg;
-
-       return 0;
-}
-
-static u16 hclgevf_get_mac_addr_to_mta_index(struct hclgevf_dev *hdev,
-                                            const u8 *addr)
-{
-       u32 rsh = HCLGEVF_MTA_TYPE_SEL_MAX - hdev->mta_mac_sel_type;
-       u16 high_val = addr[1] | (addr[0] << 8);
-
-       return (high_val >> rsh) & 0xfff;
-}
-
-static int hclgevf_do_update_mta_status(struct hclgevf_dev *hdev,
-                                       unsigned long *status)
-{
-#define HCLGEVF_MTA_STATUS_MSG_SIZE 13
-#define HCLGEVF_MTA_STATUS_MSG_BITS \
-                       (HCLGEVF_MTA_STATUS_MSG_SIZE * BITS_PER_BYTE)
-#define HCLGEVF_MTA_STATUS_MSG_END_BITS \
-                       (HCLGEVF_MTA_TBL_SIZE % HCLGEVF_MTA_STATUS_MSG_BITS)
-       u16 tbl_cnt;
-       u16 tbl_idx;
-       u8 msg_cnt;
-       u8 msg_idx;
-       int ret;
-
-       msg_cnt = DIV_ROUND_UP(HCLGEVF_MTA_TBL_SIZE,
-                              HCLGEVF_MTA_STATUS_MSG_BITS);
-       tbl_idx = 0;
-       msg_idx = 0;
-       while (msg_cnt--) {
-               u8 msg[HCLGEVF_MTA_STATUS_MSG_SIZE + 1];
-               u8 *p = &msg[1];
-               u8 msg_ofs;
-               u8 msg_bit;
-
-               memset(msg, 0, sizeof(msg));
-
-               /* set index field */
-               msg[0] = 0x7F & msg_idx;
-
-               /* set end flag field */
-               if (msg_cnt == 0) {
-                       msg[0] |= 0x80;
-                       tbl_cnt = HCLGEVF_MTA_STATUS_MSG_END_BITS;
-               } else {
-                       tbl_cnt = HCLGEVF_MTA_STATUS_MSG_BITS;
-               }
-
-               /* set status field */
-               msg_ofs = 0;
-               msg_bit = 0;
-               while (tbl_cnt--) {
-                       if (test_bit(tbl_idx, status))
-                               p[msg_ofs] |= BIT(msg_bit);
-
-                       tbl_idx++;
-
-                       msg_bit++;
-                       if (msg_bit == BITS_PER_BYTE) {
-                               msg_bit = 0;
-                               msg_ofs++;
-                       }
-               }
-
-               ret = hclgevf_send_mbx_msg(hdev, HCLGE_MBX_SET_MULTICAST,
-                                          HCLGE_MBX_MAC_VLAN_MTA_STATUS_UPDATE,
-                                          msg, sizeof(msg), false, NULL, 0);
-               if (ret)
-                       break;
-
-               msg_idx++;
-       }
-
-       return ret;
-}
-
-static int hclgevf_update_mta_status(struct hnae3_handle *handle)
-{
-       unsigned long mta_status[BITS_TO_LONGS(HCLGEVF_MTA_TBL_SIZE)];
-       struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
-       struct net_device *netdev = hdev->nic.kinfo.netdev;
-       struct netdev_hw_addr *ha;
-       u16 tbl_idx;
-
-       /* clear status */
-       memset(mta_status, 0, sizeof(mta_status));
-
-       /* update status from mc addr list */
-       netdev_for_each_mc_addr(ha, netdev) {
-               tbl_idx = hclgevf_get_mac_addr_to_mta_index(hdev, ha->addr);
-               set_bit(tbl_idx, mta_status);
-       }
-
-       return hclgevf_do_update_mta_status(hdev, mta_status);
-}
-
 static void hclgevf_get_mac_addr(struct hnae3_handle *handle, u8 *p)
 {
        struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
@@ -1871,14 +1751,6 @@ static int hclgevf_init_hdev(struct hclgevf_dev *hdev)
                goto err_config;
        }
 
-       /* Initialize mta type for this VF */
-       ret = hclgevf_cfg_func_mta_type(hdev);
-       if (ret) {
-               dev_err(&hdev->pdev->dev,
-                       "failed(%d) to initialize MTA type\n", ret);
-               goto err_config;
-       }
-
        /* Initialize RSS for this VF */
        ret = hclgevf_rss_init_hw(hdev);
        if (ret) {
@@ -2038,7 +1910,6 @@ static const struct hnae3_ae_ops hclgevf_ops = {
        .rm_uc_addr = hclgevf_rm_uc_addr,
        .add_mc_addr = hclgevf_add_mc_addr,
        .rm_mc_addr = hclgevf_rm_mc_addr,
-       .update_mta_status = hclgevf_update_mta_status,
        .get_stats = hclgevf_get_stats,
        .update_stats = hclgevf_update_stats,
        .get_strings = hclgevf_get_strings,
index 2af01f107c635dcd9c01b6293a617af69553b2ec..cf5fbf793c5ee9578a07fe46955963440b9ff7ae 100644 (file)
@@ -47,9 +47,6 @@
 #define HCLGEVF_RSS_CFG_TBL_NUM \
        (HCLGEVF_RSS_IND_TBL_SIZE / HCLGEVF_RSS_CFG_TBL_SIZE)
 
-#define HCLGEVF_MTA_TBL_SIZE           4096
-#define HCLGEVF_MTA_TYPE_SEL_MAX       4
-
 /* states of hclgevf device & tasks */
 enum hclgevf_states {
        /* device states */
@@ -157,8 +154,6 @@ struct hclgevf_dev {
        u16 *vector_status;
        int *vector_irq;
 
-       bool accept_mta_mc; /* whether to accept mta filter multicast */
-       u8 mta_mac_sel_type;
        bool mbx_event_pending;
        struct hclgevf_mbx_resp_status mbx_resp; /* mailbox response */
        struct hclgevf_mbx_arq_ring arq; /* mailbox async rx queue */