X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fenetc%2Fenetc_ethdev.c;h=6c5501acb3a14c9afabdd304281ba874bf0862b7;hb=9c27a91018db96206edf3a1338a792b6d9d91a45;hp=ffae8ae25c779c0b731201d0f24635f4b210207e;hpb=1d0c33978a6f4f7a7fddde14fc6e0d987745baf5;p=dpdk.git diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index ffae8ae25c..6c5501acb3 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -163,7 +163,10 @@ enetc_dev_infos_get(struct rte_eth_dev *dev __rte_unused, dev_info->max_tx_queues = MAX_TX_RINGS; dev_info->max_rx_pktlen = ENETC_MAC_MAXFRM_SIZE; dev_info->rx_offload_capa = - (DEV_RX_OFFLOAD_KEEP_CRC | + (DEV_RX_OFFLOAD_IPV4_CKSUM | + DEV_RX_OFFLOAD_UDP_CKSUM | + DEV_RX_OFFLOAD_TCP_CKSUM | + DEV_RX_OFFLOAD_KEEP_CRC | DEV_RX_OFFLOAD_JUMBO_FRAME); } @@ -414,7 +417,7 @@ enetc_rx_queue_setup(struct rte_eth_dev *dev, } rx_ring->crc_len = (uint8_t)((rx_offloads & DEV_RX_OFFLOAD_KEEP_CRC) ? - ETHER_CRC_LEN : 0); + RTE_ETHER_CRC_LEN : 0); return 0; fail: @@ -592,7 +595,7 @@ enetc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) struct enetc_eth_hw *hw = ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct enetc_hw *enetc_hw = &hw->hw; - uint32_t frame_size = mtu + ETHER_HDR_LEN + ETHER_CRC_LEN; + uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN; /* check that mtu is within the allowed range */ if (mtu < ENETC_MAC_MINFRM_SIZE || frame_size > ENETC_MAC_MAXFRM_SIZE) @@ -609,7 +612,7 @@ enetc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) return -EINVAL; } - if (frame_size > ETHER_MAX_LEN) + if (frame_size > RTE_ETHER_MAX_LEN) dev->data->dev_conf.rxmode.offloads &= DEV_RX_OFFLOAD_JUMBO_FRAME; else @@ -636,6 +639,7 @@ enetc_dev_configure(struct rte_eth_dev *dev) struct enetc_hw *enetc_hw = &hw->hw; struct rte_eth_conf *eth_conf = &dev->data->dev_conf; uint64_t rx_offloads = eth_conf->rxmode.offloads; + uint32_t checksum = L3_CKSUM | L4_CKSUM; PMD_INIT_FUNC_TRACE(); @@ -650,7 +654,8 @@ enetc_dev_configure(struct rte_eth_dev *dev) ENETC_MAC_MAXFRM_SIZE); enetc_port_wr(enetc_hw, ENETC_PTXMBAR, 2 * ENETC_MAC_MAXFRM_SIZE); - dev->data->mtu = ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN; + dev->data->mtu = RTE_ETHER_MAX_LEN - RTE_ETHER_HDR_LEN - + RTE_ETHER_CRC_LEN; } if (rx_offloads & DEV_RX_OFFLOAD_KEEP_CRC) { @@ -661,6 +666,15 @@ enetc_dev_configure(struct rte_eth_dev *dev) enetc_port_wr(enetc_hw, ENETC_PM0_CMD_CFG, config); } + if (rx_offloads & DEV_RX_OFFLOAD_IPV4_CKSUM) + checksum &= ~L3_CKSUM; + + if (rx_offloads & (DEV_RX_OFFLOAD_UDP_CKSUM | DEV_RX_OFFLOAD_TCP_CKSUM)) + checksum &= ~L4_CKSUM; + + enetc_port_wr(enetc_hw, ENETC_PAR_PORT_CFG, checksum); + + return 0; } @@ -817,23 +831,25 @@ enetc_dev_init(struct rte_eth_dev *eth_dev) } /* Allocate memory for storing MAC addresses */ - eth_dev->data->mac_addrs = rte_zmalloc("enetc_eth", ETHER_ADDR_LEN, 0); + eth_dev->data->mac_addrs = rte_zmalloc("enetc_eth", + RTE_ETHER_ADDR_LEN, 0); if (!eth_dev->data->mac_addrs) { ENETC_PMD_ERR("Failed to allocate %d bytes needed to " "store MAC addresses", - ETHER_ADDR_LEN * 1); + RTE_ETHER_ADDR_LEN * 1); error = -ENOMEM; return -1; } /* Copy the permanent MAC address */ - ether_addr_copy((struct ether_addr *)hw->mac.addr, + rte_ether_addr_copy((struct rte_ether_addr *)hw->mac.addr, ð_dev->data->mac_addrs[0]); /* Set MTU */ enetc_port_wr(&hw->hw, ENETC_PM0_MAXFRM, - ENETC_SET_MAXFRM(ETHER_MAX_LEN)); - eth_dev->data->mtu = ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN; + ENETC_SET_MAXFRM(RTE_ETHER_MAX_LEN)); + eth_dev->data->mtu = RTE_ETHER_MAX_LEN - RTE_ETHER_HDR_LEN - + RTE_ETHER_CRC_LEN; ENETC_PMD_DEBUG("port_id %d vendorID=0x%x deviceID=0x%x", eth_dev->data->port_id, pci_dev->id.vendor_id,