X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fhinic%2Fhinic_pmd_ethdev.c;h=8493f6e42c6e2ad5e21d5bafb65973b8a3bef49f;hb=1b7b9f170fcebbbd0708fab554dcb5a7badef8cf;hp=072fec339849f101ff8259888f16053b2f8e235a;hpb=8b945a7f7dcb688fada7ec8650b8a1f45252ea73;p=dpdk.git diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c index 072fec3398..8493f6e42c 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.c +++ b/drivers/net/hinic/hinic_pmd_ethdev.c @@ -57,6 +57,7 @@ #define HINIC_DEFAULT_BURST_SIZE 32 #define HINIC_DEFAULT_NB_QUEUES 1 #define HINIC_DEFAULT_RING_SIZE 1024 +#define HINIC_MAX_LRO_SIZE 65536 /* * vlan_id is a 12 bit number. @@ -318,7 +319,8 @@ static int hinic_dev_configure(struct rte_eth_dev *dev) return -EINVAL; } - dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH; + if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG) + dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH; /* mtu size is 256~9600 */ if (dev->data->dev_conf.rxmode.max_rx_pkt_len < HINIC_MIN_FRAME_SIZE || @@ -438,7 +440,7 @@ static int hinic_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, nic_dev->rxqs[queue_idx] = rxq; /* alloc rx sq hw wqepage*/ - rc = hinic_create_rq(hwdev, queue_idx, rq_depth); + rc = hinic_create_rq(hwdev, queue_idx, rq_depth, socket_id); if (rc) { PMD_DRV_LOG(ERR, "Create rxq[%d] failed, dev_name: %s, rq_depth: %d", queue_idx, dev->data->name, rq_depth); @@ -465,6 +467,7 @@ static int hinic_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, rxq->q_depth = rq_depth; rxq->buf_len = (u16)buf_size; rxq->rx_free_thresh = rx_free_thresh; + rxq->socket_id = socket_id; /* the last point cant do mbuf rearm in bulk */ rxq->rxinfo_align_end = rxq->q_depth - rxq->rx_free_thresh; @@ -592,7 +595,7 @@ static int hinic_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, nic_dev->txqs[queue_idx] = txq; /* alloc tx sq hw wqepage */ - rc = hinic_create_sq(hwdev, queue_idx, sq_depth); + rc = hinic_create_sq(hwdev, queue_idx, sq_depth, socket_id); if (rc) { PMD_DRV_LOG(ERR, "Create txq[%d] failed, dev_name: %s, sq_depth: %d", queue_idx, dev->data->name, sq_depth); @@ -611,6 +614,7 @@ static int hinic_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, txq->sq_bot_sge_addr = HINIC_GET_WQ_TAIL(txq) - sizeof(struct hinic_sq_bufdesc); txq->cos = nic_dev->default_cos; + txq->socket_id = socket_id; /* alloc software txinfo */ rc = hinic_setup_tx_resources(txq); @@ -2963,14 +2967,10 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev) /* EAL is SECONDARY and eth_dev is already created */ if (rte_eal_process_type() != RTE_PROC_PRIMARY) { - rc = rte_intr_callback_register(&pci_dev->intr_handle, - hinic_dev_interrupt_handler, - (void *)eth_dev); - if (rc) - PMD_DRV_LOG(ERR, "Initialize %s failed in secondary process", - eth_dev->data->name); + PMD_DRV_LOG(INFO, "Initialize %s in secondary process", + eth_dev->data->name); - return rc; + return 0; } nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);