* Copyright(c) 2017 Cavium, Inc
*/
+#include <rte_string_fns.h>
#include <rte_ethdev_driver.h>
#include <rte_ethdev_pci.h>
#include <rte_cycles.h>
}
}
-static void
+static int
lio_dev_info_get(struct rte_eth_dev *eth_dev,
struct rte_eth_dev_info *devinfo)
{
devinfo->speed_capa = ETH_LINK_SPEED_10G;
lio_dev_err(lio_dev,
"Unknown CN23XX subsystem device id. Setting 10G as default link speed.\n");
+ return -EINVAL;
}
devinfo->max_rx_queues = lio_dev->max_rx_queues;
ETH_RSS_NONFRAG_IPV6_TCP |
ETH_RSS_IPV6_EX |
ETH_RSS_IPV6_TCP_EX);
+ return 0;
}
static int
{
struct lio_device *lio_dev = LIO_DEV(eth_dev);
uint16_t pf_mtu = lio_dev->linfo.link.s.mtu;
- uint32_t frame_len = mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
+ uint32_t frame_len = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;
struct lio_dev_ctrl_cmd ctrl_cmd;
struct lio_ctrl_pkt ctrl_pkt;
/* check if VF MTU is within allowed range.
* New value should not exceed PF MTU.
*/
- if ((mtu < ETHER_MIN_MTU) || (mtu > pf_mtu)) {
+ if (mtu < RTE_ETHER_MIN_MTU || mtu > pf_mtu) {
lio_dev_err(lio_dev, "VF MTU should be >= %d and <= %d\n",
- ETHER_MIN_MTU, pf_mtu);
+ RTE_ETHER_MIN_MTU, pf_mtu);
return -EINVAL;
}
return -1;
}
- if (frame_len > ETHER_MAX_LEN)
+ if (frame_len > RTE_ETHER_MAX_LEN)
eth_dev->data->dev_conf.rxmode.offloads |=
DEV_RX_OFFLOAD_JUMBO_FRAME;
else
/**
* \brief Net device enable, disable allmulticast
* @param eth_dev Pointer to the structure rte_eth_dev
+ *
+ * @return
+ * On success return 0
+ * On failure return negative errno
*/
-static void
+static int
lio_change_dev_flag(struct rte_eth_dev *eth_dev)
{
struct lio_device *lio_dev = LIO_DEV(eth_dev);
if (lio_send_ctrl_pkt(lio_dev, &ctrl_pkt)) {
lio_dev_err(lio_dev, "Failed to send change flag message\n");
- return;
+ return -EAGAIN;
}
- if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd))
+ if (lio_wait_for_ctrl_cmd(lio_dev, &ctrl_cmd)) {
lio_dev_err(lio_dev, "Change dev flag command timed out\n");
+ return -ETIMEDOUT;
+ }
+
+ return 0;
}
-static void
+static int
lio_dev_promiscuous_enable(struct rte_eth_dev *eth_dev)
{
struct lio_device *lio_dev = LIO_DEV(eth_dev);
if (strcmp(lio_dev->firmware_version, LIO_VF_TRUST_MIN_VERSION) < 0) {
lio_dev_err(lio_dev, "Require firmware version >= %s\n",
LIO_VF_TRUST_MIN_VERSION);
- return;
+ return -EAGAIN;
}
if (!lio_dev->intf_open) {
lio_dev_err(lio_dev, "Port %d down, can't enable promiscuous\n",
lio_dev->port_id);
- return;
+ return -EAGAIN;
}
lio_dev->ifflags |= LIO_IFFLAG_PROMISC;
- lio_change_dev_flag(eth_dev);
+ return lio_change_dev_flag(eth_dev);
}
-static void
+static int
lio_dev_promiscuous_disable(struct rte_eth_dev *eth_dev)
{
struct lio_device *lio_dev = LIO_DEV(eth_dev);
if (strcmp(lio_dev->firmware_version, LIO_VF_TRUST_MIN_VERSION) < 0) {
lio_dev_err(lio_dev, "Require firmware version >= %s\n",
LIO_VF_TRUST_MIN_VERSION);
- return;
+ return -EAGAIN;
}
if (!lio_dev->intf_open) {
lio_dev_err(lio_dev, "Port %d down, can't disable promiscuous\n",
lio_dev->port_id);
- return;
+ return -EAGAIN;
}
lio_dev->ifflags &= ~LIO_IFFLAG_PROMISC;
- lio_change_dev_flag(eth_dev);
+ return lio_change_dev_flag(eth_dev);
}
static void
goto dev_mtu_set_error;
}
- mtu = (uint16_t)(frame_len - ETHER_HDR_LEN - ETHER_CRC_LEN);
- if (mtu < ETHER_MIN_MTU)
- mtu = ETHER_MIN_MTU;
+ mtu = (uint16_t)(frame_len - RTE_ETHER_HDR_LEN - RTE_ETHER_CRC_LEN);
+ if (mtu < RTE_ETHER_MIN_MTU)
+ mtu = RTE_ETHER_MIN_MTU;
if (eth_dev->data->mtu != mtu) {
ret = lio_dev_mtu_set(eth_dev, mtu);
struct lio_device *lio_dev = LIO_DEV(eth_dev);
uint16_t timeout = LIO_MAX_CMD_TIMEOUT;
int retval, num_iqueues, num_oqueues;
- uint8_t mac[ETHER_ADDR_LEN], i;
+ uint8_t mac[RTE_ETHER_ADDR_LEN], i;
struct lio_if_cfg_resp *resp;
struct lio_soft_command *sc;
union lio_if_cfg if_cfg;
goto nic_config_fail;
}
- snprintf(lio_dev->firmware_version, LIO_FW_VERSION_LENGTH, "%s",
- resp->cfg_info.lio_firmware_version);
+ strlcpy(lio_dev->firmware_version,
+ resp->cfg_info.lio_firmware_version, LIO_FW_VERSION_LENGTH);
lio_swap_8B_data((uint64_t *)(&resp->cfg_info),
sizeof(struct octeon_if_cfg_info) >> 3);
/* 64-bit swap required on LE machines */
lio_swap_8B_data(&lio_dev->linfo.hw_addr, 1);
- for (i = 0; i < ETHER_ADDR_LEN; i++)
+ for (i = 0; i < RTE_ETHER_ADDR_LEN; i++)
mac[i] = *((uint8_t *)(((uint8_t *)&lio_dev->linfo.hw_addr) +
2 + i));
/* Copy the permanent MAC address */
- ether_addr_copy((struct ether_addr *)mac, ð_dev->data->mac_addrs[0]);
+ rte_ether_addr_copy((struct rte_ether_addr *)mac,
+ ð_dev->data->mac_addrs[0]);
/* enable firmware checksum support for tunnel packets */
lio_enable_hw_tunnel_rx_checksum(eth_dev);
}
eth_dev->dev_ops = &liovf_eth_dev_ops;
- eth_dev->data->mac_addrs = rte_zmalloc("lio", ETHER_ADDR_LEN, 0);
+ eth_dev->data->mac_addrs = rte_zmalloc("lio", RTE_ETHER_ADDR_LEN, 0);
if (eth_dev->data->mac_addrs == NULL) {
lio_dev_err(lio_dev,
"MAC addresses memory allocation failed\n");