git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ethdev: change promiscuous callbacks to return status
[dpdk.git]
/
drivers
/
net
/
axgbe
/
axgbe_ethdev.c
diff --git
a/drivers/net/axgbe/axgbe_ethdev.c
b/drivers/net/axgbe/axgbe_ethdev.c
index
9ae9f06
..
c43b5bf
100644
(file)
--- a/
drivers/net/axgbe/axgbe_ethdev.c
+++ b/
drivers/net/axgbe/axgbe_ethdev.c
@@
-15,8
+15,8
@@
static int axgbe_dev_start(struct rte_eth_dev *dev);
static void axgbe_dev_stop(struct rte_eth_dev *dev);
static void axgbe_dev_interrupt_handler(void *param);
static void axgbe_dev_close(struct rte_eth_dev *dev);
static void axgbe_dev_stop(struct rte_eth_dev *dev);
static void axgbe_dev_interrupt_handler(void *param);
static void axgbe_dev_close(struct rte_eth_dev *dev);
-static
void
axgbe_dev_promiscuous_enable(struct rte_eth_dev *dev);
-static
void
axgbe_dev_promiscuous_disable(struct rte_eth_dev *dev);
+static
int
axgbe_dev_promiscuous_enable(struct rte_eth_dev *dev);
+static
int
axgbe_dev_promiscuous_disable(struct rte_eth_dev *dev);
static void axgbe_dev_allmulticast_enable(struct rte_eth_dev *dev);
static void axgbe_dev_allmulticast_disable(struct rte_eth_dev *dev);
static int axgbe_dev_link_update(struct rte_eth_dev *dev,
static void axgbe_dev_allmulticast_enable(struct rte_eth_dev *dev);
static void axgbe_dev_allmulticast_disable(struct rte_eth_dev *dev);
static int axgbe_dev_link_update(struct rte_eth_dev *dev,
@@
-24,7
+24,7
@@
static int axgbe_dev_link_update(struct rte_eth_dev *dev,
static int axgbe_dev_stats_get(struct rte_eth_dev *dev,
struct rte_eth_stats *stats);
static void axgbe_dev_stats_reset(struct rte_eth_dev *dev);
static int axgbe_dev_stats_get(struct rte_eth_dev *dev,
struct rte_eth_stats *stats);
static void axgbe_dev_stats_reset(struct rte_eth_dev *dev);
-static
void
axgbe_dev_info_get(struct rte_eth_dev *dev,
+static
int
axgbe_dev_info_get(struct rte_eth_dev *dev,
struct rte_eth_dev_info *dev_info);
/* The set of PCI devices this driver supports */
struct rte_eth_dev_info *dev_info);
/* The set of PCI devices this driver supports */
@@
-136,8
+136,8
@@
axgbe_dev_interrupt_handler(void *param)
DMA_CH_SR, dma_ch_isr);
}
}
DMA_CH_SR, dma_ch_isr);
}
}
- /*
Enable interrupts since disabled after generation
*/
- rte_intr_
enable
(&pdata->pci_dev->intr_handle);
+ /*
Unmask interrupts since disabled after generation
*/
+ rte_intr_
ack
(&pdata->pci_dev->intr_handle);
}
/*
}
/*
@@
-157,7
+157,7
@@
axgbe_dev_configure(struct rte_eth_dev *dev)
static int
axgbe_dev_rx_mq_config(struct rte_eth_dev *dev)
{
static int
axgbe_dev_rx_mq_config(struct rte_eth_dev *dev)
{
- struct axgbe_port *pdata =
(struct axgbe_port *)
dev->data->dev_private;
+ struct axgbe_port *pdata = dev->data->dev_private;
if (dev->data->dev_conf.rxmode.mq_mode == ETH_MQ_RX_RSS)
pdata->rss_enable = 1;
if (dev->data->dev_conf.rxmode.mq_mode == ETH_MQ_RX_RSS)
pdata->rss_enable = 1;
@@
-171,10
+171,11
@@
axgbe_dev_rx_mq_config(struct rte_eth_dev *dev)
static int
axgbe_dev_start(struct rte_eth_dev *dev)
{
static int
axgbe_dev_start(struct rte_eth_dev *dev)
{
- PMD_INIT_FUNC_TRACE();
- struct axgbe_port *pdata = (struct axgbe_port *)dev->data->dev_private;
+ struct axgbe_port *pdata = dev->data->dev_private;
int ret;
int ret;
+ PMD_INIT_FUNC_TRACE();
+
/* Multiqueue RSS */
ret = axgbe_dev_rx_mq_config(dev);
if (ret) {
/* Multiqueue RSS */
ret = axgbe_dev_rx_mq_config(dev);
if (ret) {
@@
-209,9
+210,10
@@
axgbe_dev_start(struct rte_eth_dev *dev)
static void
axgbe_dev_stop(struct rte_eth_dev *dev)
{
static void
axgbe_dev_stop(struct rte_eth_dev *dev)
{
- PMD_INIT_FUNC_TRACE();
struct axgbe_port *pdata = dev->data->dev_private;
struct axgbe_port *pdata = dev->data->dev_private;
+ PMD_INIT_FUNC_TRACE();
+
rte_intr_disable(&pdata->pci_dev->intr_handle);
if (axgbe_test_bit(AXGBE_STOPPED, &pdata->dev_state))
rte_intr_disable(&pdata->pci_dev->intr_handle);
if (axgbe_test_bit(AXGBE_STOPPED, &pdata->dev_state))
@@
-234,30
+236,37
@@
axgbe_dev_close(struct rte_eth_dev *dev)
axgbe_dev_clear_queues(dev);
}
axgbe_dev_clear_queues(dev);
}
-static
void
+static
int
axgbe_dev_promiscuous_enable(struct rte_eth_dev *dev)
{
axgbe_dev_promiscuous_enable(struct rte_eth_dev *dev)
{
- PMD_INIT_FUNC_TRACE();
struct axgbe_port *pdata = dev->data->dev_private;
struct axgbe_port *pdata = dev->data->dev_private;
+ PMD_INIT_FUNC_TRACE();
+
AXGMAC_IOWRITE_BITS(pdata, MAC_PFR, PR, 1);
AXGMAC_IOWRITE_BITS(pdata, MAC_PFR, PR, 1);
+
+ return 0;
}
}
-static
void
+static
int
axgbe_dev_promiscuous_disable(struct rte_eth_dev *dev)
{
axgbe_dev_promiscuous_disable(struct rte_eth_dev *dev)
{
- PMD_INIT_FUNC_TRACE();
struct axgbe_port *pdata = dev->data->dev_private;
struct axgbe_port *pdata = dev->data->dev_private;
+ PMD_INIT_FUNC_TRACE();
+
AXGMAC_IOWRITE_BITS(pdata, MAC_PFR, PR, 0);
AXGMAC_IOWRITE_BITS(pdata, MAC_PFR, PR, 0);
+
+ return 0;
}
static void
axgbe_dev_allmulticast_enable(struct rte_eth_dev *dev)
{
}
static void
axgbe_dev_allmulticast_enable(struct rte_eth_dev *dev)
{
- PMD_INIT_FUNC_TRACE();
struct axgbe_port *pdata = dev->data->dev_private;
struct axgbe_port *pdata = dev->data->dev_private;
+ PMD_INIT_FUNC_TRACE();
+
if (AXGMAC_IOREAD_BITS(pdata, MAC_PFR, PM))
return;
AXGMAC_IOWRITE_BITS(pdata, MAC_PFR, PM, 1);
if (AXGMAC_IOREAD_BITS(pdata, MAC_PFR, PM))
return;
AXGMAC_IOWRITE_BITS(pdata, MAC_PFR, PM, 1);
@@
-266,9
+275,10
@@
axgbe_dev_allmulticast_enable(struct rte_eth_dev *dev)
static void
axgbe_dev_allmulticast_disable(struct rte_eth_dev *dev)
{
static void
axgbe_dev_allmulticast_disable(struct rte_eth_dev *dev)
{
- PMD_INIT_FUNC_TRACE();
struct axgbe_port *pdata = dev->data->dev_private;
struct axgbe_port *pdata = dev->data->dev_private;
+ PMD_INIT_FUNC_TRACE();
+
if (!AXGMAC_IOREAD_BITS(pdata, MAC_PFR, PM))
return;
AXGMAC_IOWRITE_BITS(pdata, MAC_PFR, PM, 0);
if (!AXGMAC_IOREAD_BITS(pdata, MAC_PFR, PM))
return;
AXGMAC_IOWRITE_BITS(pdata, MAC_PFR, PM, 0);
@@
-348,7
+358,7
@@
axgbe_dev_stats_reset(struct rte_eth_dev *dev)
}
}
}
}
-static
void
+static
int
axgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
{
struct axgbe_port *pdata = dev->data->dev_private;
axgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
{
struct axgbe_port *pdata = dev->data->dev_private;
@@
-364,7
+374,6
@@
axgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
DEV_RX_OFFLOAD_IPV4_CKSUM |
DEV_RX_OFFLOAD_UDP_CKSUM |
DEV_RX_OFFLOAD_TCP_CKSUM |
DEV_RX_OFFLOAD_IPV4_CKSUM |
DEV_RX_OFFLOAD_UDP_CKSUM |
DEV_RX_OFFLOAD_TCP_CKSUM |
- DEV_RX_OFFLOAD_CRC_STRIP |
DEV_RX_OFFLOAD_KEEP_CRC;
dev_info->tx_offload_capa =
DEV_RX_OFFLOAD_KEEP_CRC;
dev_info->tx_offload_capa =
@@
-388,6
+397,8
@@
axgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
dev_info->default_txconf = (struct rte_eth_txconf) {
.tx_free_thresh = AXGBE_TX_FREE_THRESH,
};
dev_info->default_txconf = (struct rte_eth_txconf) {
.tx_free_thresh = AXGBE_TX_FREE_THRESH,
};
+
+ return 0;
}
static void axgbe_get_all_hw_features(struct axgbe_port *pdata)
}
static void axgbe_get_all_hw_features(struct axgbe_port *pdata)
@@
-579,7
+590,7
@@
eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return 0;
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return 0;
- pdata =
(struct axgbe_port *)
eth_dev->data->dev_private;
+ pdata = eth_dev->data->dev_private;
/* initial state */
axgbe_set_bit(AXGBE_DOWN, &pdata->dev_state);
axgbe_set_bit(AXGBE_STOPPED, &pdata->dev_state);
/* initial state */
axgbe_set_bit(AXGBE_DOWN, &pdata->dev_state);
axgbe_set_bit(AXGBE_STOPPED, &pdata->dev_state);
@@
-627,19
+638,19
@@
eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
pdata->mac_addr.addr_bytes[5] = (mac_hi >> 8) & 0xff;
eth_dev->data->mac_addrs = rte_zmalloc("axgbe_mac_addr",
pdata->mac_addr.addr_bytes[5] = (mac_hi >> 8) & 0xff;
eth_dev->data->mac_addrs = rte_zmalloc("axgbe_mac_addr",
- ETHER_ADDR_LEN, 0);
+
RTE_
ETHER_ADDR_LEN, 0);
if (!eth_dev->data->mac_addrs) {
PMD_INIT_LOG(ERR,
"Failed to alloc %u bytes needed to store MAC addr tbl",
if (!eth_dev->data->mac_addrs) {
PMD_INIT_LOG(ERR,
"Failed to alloc %u bytes needed to store MAC addr tbl",
- ETHER_ADDR_LEN);
+
RTE_
ETHER_ADDR_LEN);
return -ENOMEM;
}
return -ENOMEM;
}
- if (!is_valid_assigned_ether_addr(&pdata->mac_addr))
- eth_random_addr(pdata->mac_addr.addr_bytes);
+ if (!
rte_
is_valid_assigned_ether_addr(&pdata->mac_addr))
+
rte_
eth_random_addr(pdata->mac_addr.addr_bytes);
/* Copy the permanent MAC address */
/* Copy the permanent MAC address */
- ether_addr_copy(&pdata->mac_addr, ð_dev->data->mac_addrs[0]);
+
rte_
ether_addr_copy(&pdata->mac_addr, ð_dev->data->mac_addrs[0]);
/* Clock settings */
pdata->sysclk_rate = AXGBE_V2_DMA_CLOCK_FREQ;
/* Clock settings */
pdata->sysclk_rate = AXGBE_V2_DMA_CLOCK_FREQ;
@@
-695,6
+706,7
@@
eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
ret = pdata->phy_if.phy_init(pdata);
if (ret) {
rte_free(eth_dev->data->mac_addrs);
ret = pdata->phy_if.phy_init(pdata);
if (ret) {
rte_free(eth_dev->data->mac_addrs);
+ eth_dev->data->mac_addrs = NULL;
return ret;
}
return ret;
}
@@
-719,9
+731,6
@@
eth_axgbe_dev_uninit(struct rte_eth_dev *eth_dev)
return 0;
pci_dev = RTE_DEV_TO_PCI(eth_dev->device);
return 0;
pci_dev = RTE_DEV_TO_PCI(eth_dev->device);
- /*Free macaddres*/
- rte_free(eth_dev->data->mac_addrs);
- eth_dev->data->mac_addrs = NULL;
eth_dev->dev_ops = NULL;
eth_dev->rx_pkt_burst = NULL;
eth_dev->tx_pkt_burst = NULL;
eth_dev->dev_ops = NULL;
eth_dev->rx_pkt_burst = NULL;
eth_dev->tx_pkt_burst = NULL;