/* lro numer limit for one packet */
#define HINIC_LRO_WQE_NUM_DEFAULT 8
-/* Driver-specific log messages type */
-int hinic_logtype;
-
struct hinic_xstats_name_off {
char name[RTE_ETH_XSTATS_NAME_SIZE];
u32 offset;
static int hinic_set_dev_promiscuous(struct hinic_nic_dev *nic_dev, bool enable)
{
- u32 rx_mode_ctrl = nic_dev->rx_mode_status;
+ u32 rx_mode_ctrl;
+ int err;
+
+ err = hinic_mutex_lock(&nic_dev->rx_mode_mutex);
+ if (err)
+ return err;
+
+ rx_mode_ctrl = nic_dev->rx_mode_status;
if (enable)
rx_mode_ctrl |= HINIC_RX_MODE_PROMISC;
else
rx_mode_ctrl &= (~HINIC_RX_MODE_PROMISC);
- return hinic_config_rx_mode(nic_dev, rx_mode_ctrl);
+ err = hinic_config_rx_mode(nic_dev, rx_mode_ctrl);
+
+ (void)hinic_mutex_unlock(&nic_dev->rx_mode_mutex);
+
+ return err;
}
/**
nic_dev->proc_dev_name, dev->data->port_id);
}
- if (mask & ETH_VLAN_EXTEND_MASK) {
- PMD_DRV_LOG(ERR, "Don't support vlan qinq, device: %s, port_id: %d",
- nic_dev->proc_dev_name, dev->data->port_id);
- return -ENOTSUP;
- }
-
return 0;
}
static int hinic_set_dev_allmulticast(struct hinic_nic_dev *nic_dev,
bool enable)
{
- u32 rx_mode_ctrl = nic_dev->rx_mode_status;
+ u32 rx_mode_ctrl;
+ int err;
+
+ err = hinic_mutex_lock(&nic_dev->rx_mode_mutex);
+ if (err)
+ return err;
+
+ rx_mode_ctrl = nic_dev->rx_mode_status;
if (enable)
rx_mode_ctrl |= HINIC_RX_MODE_MC_ALL;
else
rx_mode_ctrl &= (~HINIC_RX_MODE_MC_ALL);
- return hinic_config_rx_mode(nic_dev, rx_mode_ctrl);
+ err = hinic_config_rx_mode(nic_dev, rx_mode_ctrl);
+
+ (void)hinic_mutex_unlock(&nic_dev->rx_mode_mutex);
+
+ return err;
}
/**
}
rte_bit_relaxed_set32(HINIC_DEV_INTR_EN, &nic_dev->dev_status);
+ hinic_mutex_init(&nic_dev->rx_mode_mutex, NULL);
+
/* initialize filter info */
filter_info = &nic_dev->filter;
tcam_info = &nic_dev->tcam;
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return 0;
+ hinic_mutex_destroy(&nic_dev->rx_mode_mutex);
+
hinic_dev_close(dev);
dev->dev_ops = NULL;
RTE_PMD_REGISTER_PCI(net_hinic, rte_hinic_pmd);
RTE_PMD_REGISTER_PCI_TABLE(net_hinic, pci_id_hinic_map);
-
-RTE_INIT(hinic_init_log)
-{
- hinic_logtype = rte_log_register("pmd.net.hinic");
- if (hinic_logtype >= 0)
- rte_log_set_level(hinic_logtype, RTE_LOG_INFO);
-}
+RTE_LOG_REGISTER(hinic_logtype, pmd.net.hinic, INFO);