Commit 64fecd3e authored by Felix Manlunas's avatar Felix Manlunas Committed by David S. Miller

liquidio: remove obsolete functions and data structures

1. Remove unused functions and data structures.
2. Change the sending of the remaining soft commands to synchronous.
Signed-off-by: default avatarWeilin Chang <weilin.chang@cavium.com>
Signed-off-by: default avatarFelix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent edd572d7
...@@ -31,38 +31,6 @@ ...@@ -31,38 +31,6 @@
#define OCTNIC_MAX_SG MAX_SKB_FRAGS #define OCTNIC_MAX_SG MAX_SKB_FRAGS
/**
* \brief Callback for getting interface configuration
* @param status status of request
* @param buf pointer to resp structure
*/
void lio_if_cfg_callback(struct octeon_device *oct,
u32 status __attribute__((unused)), void *buf)
{
struct octeon_soft_command *sc = (struct octeon_soft_command *)buf;
struct liquidio_if_cfg_context *ctx;
struct liquidio_if_cfg_resp *resp;
resp = (struct liquidio_if_cfg_resp *)sc->virtrptr;
ctx = (struct liquidio_if_cfg_context *)sc->ctxptr;
oct = lio_get_device(ctx->octeon_id);
if (resp->status)
dev_err(&oct->pci_dev->dev, "nic if cfg instruction failed. Status: %llx\n",
CVM_CAST64(resp->status));
WRITE_ONCE(ctx->cond, 1);
snprintf(oct->fw_info.liquidio_firmware_version, 32, "%s",
resp->cfg_info.liquidio_firmware_version);
/* This barrier is required to be sure that the response has been
* written fully before waking up the handler
*/
wmb();
wake_up_interruptible(&ctx->wc);
}
/** /**
* \brief Delete gather lists * \brief Delete gather lists
* @param lio per-network private data * @param lio per-network private data
...@@ -1211,30 +1179,6 @@ int octeon_setup_interrupt(struct octeon_device *oct, u32 num_ioqs) ...@@ -1211,30 +1179,6 @@ int octeon_setup_interrupt(struct octeon_device *oct, u32 num_ioqs)
return 0; return 0;
} }
static void liquidio_change_mtu_completion(struct octeon_device *oct,
u32 status, void *buf)
{
struct octeon_soft_command *sc = (struct octeon_soft_command *)buf;
struct liquidio_if_cfg_context *ctx;
ctx = (struct liquidio_if_cfg_context *)sc->ctxptr;
if (status) {
dev_err(&oct->pci_dev->dev, "MTU change failed. Status: %llx\n",
CVM_CAST64(status));
WRITE_ONCE(ctx->cond, LIO_CHANGE_MTU_FAIL);
} else {
WRITE_ONCE(ctx->cond, LIO_CHANGE_MTU_SUCCESS);
}
/* This barrier is required to be sure that the response has been
* written fully before waking up the handler
*/
wmb();
wake_up_interruptible(&ctx->wc);
}
/** /**
* \brief Net device change_mtu * \brief Net device change_mtu
* @param netdev network device * @param netdev network device
...@@ -1243,22 +1187,17 @@ int liquidio_change_mtu(struct net_device *netdev, int new_mtu) ...@@ -1243,22 +1187,17 @@ int liquidio_change_mtu(struct net_device *netdev, int new_mtu)
{ {
struct lio *lio = GET_LIO(netdev); struct lio *lio = GET_LIO(netdev);
struct octeon_device *oct = lio->oct_dev; struct octeon_device *oct = lio->oct_dev;
struct liquidio_if_cfg_context *ctx;
struct octeon_soft_command *sc; struct octeon_soft_command *sc;
union octnet_cmd *ncmd; union octnet_cmd *ncmd;
int ctx_size;
int ret = 0; int ret = 0;
ctx_size = sizeof(struct liquidio_if_cfg_context);
sc = (struct octeon_soft_command *) sc = (struct octeon_soft_command *)
octeon_alloc_soft_command(oct, OCTNET_CMD_SIZE, 16, ctx_size); octeon_alloc_soft_command(oct, OCTNET_CMD_SIZE, 16, 0);
ncmd = (union octnet_cmd *)sc->virtdptr; ncmd = (union octnet_cmd *)sc->virtdptr;
ctx = (struct liquidio_if_cfg_context *)sc->ctxptr;
WRITE_ONCE(ctx->cond, 0); init_completion(&sc->complete);
ctx->octeon_id = lio_get_device_id(oct); sc->sc_status = OCTEON_REQUEST_PENDING;
init_waitqueue_head(&ctx->wc);
ncmd->u64 = 0; ncmd->u64 = 0;
ncmd->s.cmd = OCTNET_CMD_CHANGE_MTU; ncmd->s.cmd = OCTNET_CMD_CHANGE_MTU;
...@@ -1271,28 +1210,28 @@ int liquidio_change_mtu(struct net_device *netdev, int new_mtu) ...@@ -1271,28 +1210,28 @@ int liquidio_change_mtu(struct net_device *netdev, int new_mtu)
octeon_prepare_soft_command(oct, sc, OPCODE_NIC, octeon_prepare_soft_command(oct, sc, OPCODE_NIC,
OPCODE_NIC_CMD, 0, 0, 0); OPCODE_NIC_CMD, 0, 0, 0);
sc->callback = liquidio_change_mtu_completion;
sc->callback_arg = sc;
sc->wait_time = 100;
ret = octeon_send_soft_command(oct, sc); ret = octeon_send_soft_command(oct, sc);
if (ret == IQ_SEND_FAILED) { if (ret == IQ_SEND_FAILED) {
netif_info(lio, rx_err, lio->netdev, "Failed to change MTU\n"); netif_info(lio, rx_err, lio->netdev, "Failed to change MTU\n");
octeon_free_soft_command(oct, sc);
return -EINVAL; return -EINVAL;
} }
/* Sleep on a wait queue till the cond flag indicates that the /* Sleep on a wait queue till the cond flag indicates that the
* response arrived or timed-out. * response arrived or timed-out.
*/ */
if (sleep_cond(&ctx->wc, &ctx->cond) == -EINTR || ret = wait_for_sc_completion_timeout(oct, sc, 0);
ctx->cond == LIO_CHANGE_MTU_FAIL) { if (ret)
octeon_free_soft_command(oct, sc); return ret;
if (sc->sc_status) {
WRITE_ONCE(sc->caller_is_done, true);
return -EINVAL; return -EINVAL;
} }
netdev->mtu = new_mtu; netdev->mtu = new_mtu;
lio->mtu = new_mtu; lio->mtu = new_mtu;
octeon_free_soft_command(oct, sc); WRITE_ONCE(sc->caller_is_done, true);
return 0; return 0;
} }
......
...@@ -40,14 +40,6 @@ MODULE_PARM_DESC(debug, "NETIF_MSG debug bits"); ...@@ -40,14 +40,6 @@ MODULE_PARM_DESC(debug, "NETIF_MSG debug bits");
#define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_LINK) #define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_LINK)
struct liquidio_rx_ctl_context {
int octeon_id;
wait_queue_head_t wc;
int cond;
};
struct oct_timestamp_resp { struct oct_timestamp_resp {
u64 rh; u64 rh;
u64 timestamp; u64 timestamp;
...@@ -597,33 +589,6 @@ static void octeon_destroy_resources(struct octeon_device *oct) ...@@ -597,33 +589,6 @@ static void octeon_destroy_resources(struct octeon_device *oct)
} }
} }
/**
* \brief Callback for rx ctrl
* @param status status of request
* @param buf pointer to resp structure
*/
static void rx_ctl_callback(struct octeon_device *oct,
u32 status, void *buf)
{
struct octeon_soft_command *sc = (struct octeon_soft_command *)buf;
struct liquidio_rx_ctl_context *ctx;
ctx = (struct liquidio_rx_ctl_context *)sc->ctxptr;
oct = lio_get_device(ctx->octeon_id);
if (status)
dev_err(&oct->pci_dev->dev, "rx ctl instruction failed. Status: %llx\n",
CVM_CAST64(status));
WRITE_ONCE(ctx->cond, 1);
/* This barrier is required to be sure that the response has been
* written fully before waking up the handler
*/
wmb();
wake_up_interruptible(&ctx->wc);
}
/** /**
* \brief Send Rx control command * \brief Send Rx control command
* @param lio per-network private data * @param lio per-network private data
...@@ -632,8 +597,6 @@ static void rx_ctl_callback(struct octeon_device *oct, ...@@ -632,8 +597,6 @@ static void rx_ctl_callback(struct octeon_device *oct,
static void send_rx_ctrl_cmd(struct lio *lio, int start_stop) static void send_rx_ctrl_cmd(struct lio *lio, int start_stop)
{ {
struct octeon_device *oct = (struct octeon_device *)lio->oct_dev; struct octeon_device *oct = (struct octeon_device *)lio->oct_dev;
int ctx_size = sizeof(struct liquidio_rx_ctl_context);
struct liquidio_rx_ctl_context *ctx;
struct octeon_soft_command *sc; struct octeon_soft_command *sc;
union octnet_cmd *ncmd; union octnet_cmd *ncmd;
int retval; int retval;
...@@ -643,14 +606,9 @@ static void send_rx_ctrl_cmd(struct lio *lio, int start_stop) ...@@ -643,14 +606,9 @@ static void send_rx_ctrl_cmd(struct lio *lio, int start_stop)
sc = (struct octeon_soft_command *) sc = (struct octeon_soft_command *)
octeon_alloc_soft_command(oct, OCTNET_CMD_SIZE, octeon_alloc_soft_command(oct, OCTNET_CMD_SIZE,
16, ctx_size); 16, 0);
ncmd = (union octnet_cmd *)sc->virtdptr; ncmd = (union octnet_cmd *)sc->virtdptr;
ctx = (struct liquidio_rx_ctl_context *)sc->ctxptr;
WRITE_ONCE(ctx->cond, 0);
ctx->octeon_id = lio_get_device_id(oct);
init_waitqueue_head(&ctx->wc);
ncmd->u64 = 0; ncmd->u64 = 0;
ncmd->s.cmd = OCTNET_CMD_RX_CTL; ncmd->s.cmd = OCTNET_CMD_RX_CTL;
...@@ -663,23 +621,24 @@ static void send_rx_ctrl_cmd(struct lio *lio, int start_stop) ...@@ -663,23 +621,24 @@ static void send_rx_ctrl_cmd(struct lio *lio, int start_stop)
octeon_prepare_soft_command(oct, sc, OPCODE_NIC, octeon_prepare_soft_command(oct, sc, OPCODE_NIC,
OPCODE_NIC_CMD, 0, 0, 0); OPCODE_NIC_CMD, 0, 0, 0);
sc->callback = rx_ctl_callback; init_completion(&sc->complete);
sc->callback_arg = sc; sc->sc_status = OCTEON_REQUEST_PENDING;
sc->wait_time = 5000;
retval = octeon_send_soft_command(oct, sc); retval = octeon_send_soft_command(oct, sc);
if (retval == IQ_SEND_FAILED) { if (retval == IQ_SEND_FAILED) {
netif_info(lio, rx_err, lio->netdev, "Failed to send RX Control message\n"); netif_info(lio, rx_err, lio->netdev, "Failed to send RX Control message\n");
octeon_free_soft_command(oct, sc);
} else { } else {
/* Sleep on a wait queue till the cond flag indicates that the /* Sleep on a wait queue till the cond flag indicates that the
* response arrived or timed-out. * response arrived or timed-out.
*/ */
if (sleep_cond(&ctx->wc, &ctx->cond) == -EINTR) retval = wait_for_sc_completion_timeout(oct, sc, 0);
if (retval)
return; return;
oct->props[lio->ifidx].rx_on = start_stop; oct->props[lio->ifidx].rx_on = start_stop;
WRITE_ONCE(sc->caller_is_done, true);
} }
octeon_free_soft_command(oct, sc);
} }
/** /**
...@@ -1938,8 +1897,7 @@ static int lio_nic_info(struct octeon_recv_info *recv_info, void *buf) ...@@ -1938,8 +1897,7 @@ static int lio_nic_info(struct octeon_recv_info *recv_info, void *buf)
static int setup_nic_devices(struct octeon_device *octeon_dev) static int setup_nic_devices(struct octeon_device *octeon_dev)
{ {
int retval, num_iqueues, num_oqueues; int retval, num_iqueues, num_oqueues;
struct liquidio_if_cfg_context *ctx; u32 resp_size, data_size;
u32 resp_size, ctx_size, data_size;
struct liquidio_if_cfg_resp *resp; struct liquidio_if_cfg_resp *resp;
struct octeon_soft_command *sc; struct octeon_soft_command *sc;
union oct_nic_if_cfg if_cfg; union oct_nic_if_cfg if_cfg;
...@@ -1970,13 +1928,11 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -1970,13 +1928,11 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
for (i = 0; i < octeon_dev->ifcount; i++) { for (i = 0; i < octeon_dev->ifcount; i++) {
resp_size = sizeof(struct liquidio_if_cfg_resp); resp_size = sizeof(struct liquidio_if_cfg_resp);
ctx_size = sizeof(struct liquidio_if_cfg_context);
data_size = sizeof(struct lio_version); data_size = sizeof(struct lio_version);
sc = (struct octeon_soft_command *) sc = (struct octeon_soft_command *)
octeon_alloc_soft_command(octeon_dev, data_size, octeon_alloc_soft_command(octeon_dev, data_size,
resp_size, ctx_size); resp_size, 0);
resp = (struct liquidio_if_cfg_resp *)sc->virtrptr; resp = (struct liquidio_if_cfg_resp *)sc->virtrptr;
ctx = (struct liquidio_if_cfg_context *)sc->ctxptr;
vdata = (struct lio_version *)sc->virtdptr; vdata = (struct lio_version *)sc->virtdptr;
*((u64 *)vdata) = 0; *((u64 *)vdata) = 0;
...@@ -1984,10 +1940,6 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -1984,10 +1940,6 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
vdata->minor = cpu_to_be16(LIQUIDIO_BASE_MINOR_VERSION); vdata->minor = cpu_to_be16(LIQUIDIO_BASE_MINOR_VERSION);
vdata->micro = cpu_to_be16(LIQUIDIO_BASE_MICRO_VERSION); vdata->micro = cpu_to_be16(LIQUIDIO_BASE_MICRO_VERSION);
WRITE_ONCE(ctx->cond, 0);
ctx->octeon_id = lio_get_device_id(octeon_dev);
init_waitqueue_head(&ctx->wc);
if_cfg.u64 = 0; if_cfg.u64 = 0;
if_cfg.s.num_iqueues = octeon_dev->sriov_info.rings_per_vf; if_cfg.s.num_iqueues = octeon_dev->sriov_info.rings_per_vf;
...@@ -2000,32 +1952,37 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -2000,32 +1952,37 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
OPCODE_NIC_IF_CFG, 0, if_cfg.u64, OPCODE_NIC_IF_CFG, 0, if_cfg.u64,
0); 0);
sc->callback = lio_if_cfg_callback; init_completion(&sc->complete);
sc->callback_arg = sc; sc->sc_status = OCTEON_REQUEST_PENDING;
sc->wait_time = 5000;
retval = octeon_send_soft_command(octeon_dev, sc); retval = octeon_send_soft_command(octeon_dev, sc);
if (retval == IQ_SEND_FAILED) { if (retval == IQ_SEND_FAILED) {
dev_err(&octeon_dev->pci_dev->dev, dev_err(&octeon_dev->pci_dev->dev,
"iq/oq config failed status: %x\n", retval); "iq/oq config failed status: %x\n", retval);
/* Soft instr is freed by driver in case of failure. */ /* Soft instr is freed by driver in case of failure. */
goto setup_nic_dev_fail; octeon_free_soft_command(octeon_dev, sc);
return(-EIO);
} }
/* Sleep on a wait queue till the cond flag indicates that the /* Sleep on a wait queue till the cond flag indicates that the
* response arrived or timed-out. * response arrived or timed-out.
*/ */
if (sleep_cond(&ctx->wc, &ctx->cond) == -EINTR) { retval = wait_for_sc_completion_timeout(octeon_dev, sc, 0);
dev_err(&octeon_dev->pci_dev->dev, "Wait interrupted\n"); if (retval)
goto setup_nic_wait_intr; return retval;
}
retval = resp->status; retval = resp->status;
if (retval) { if (retval) {
dev_err(&octeon_dev->pci_dev->dev, "iq/oq config failed\n"); dev_err(&octeon_dev->pci_dev->dev,
goto setup_nic_dev_fail; "iq/oq config failed, retval = %d\n", retval);
WRITE_ONCE(sc->caller_is_done, true);
return -EIO;
} }
snprintf(octeon_dev->fw_info.liquidio_firmware_version,
32, "%s",
resp->cfg_info.liquidio_firmware_version);
octeon_swap_8B_data((u64 *)(&resp->cfg_info), octeon_swap_8B_data((u64 *)(&resp->cfg_info),
(sizeof(struct liquidio_if_cfg_info)) >> 3); (sizeof(struct liquidio_if_cfg_info)) >> 3);
...@@ -2036,7 +1993,8 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -2036,7 +1993,8 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
dev_err(&octeon_dev->pci_dev->dev, dev_err(&octeon_dev->pci_dev->dev,
"Got bad iqueues (%016llx) or oqueues (%016llx) from firmware.\n", "Got bad iqueues (%016llx) or oqueues (%016llx) from firmware.\n",
resp->cfg_info.iqmask, resp->cfg_info.oqmask); resp->cfg_info.iqmask, resp->cfg_info.oqmask);
goto setup_nic_dev_fail; WRITE_ONCE(sc->caller_is_done, true);
goto setup_nic_dev_done;
} }
dev_dbg(&octeon_dev->pci_dev->dev, dev_dbg(&octeon_dev->pci_dev->dev,
"interface %d, iqmask %016llx, oqmask %016llx, numiqueues %d, numoqueues %d\n", "interface %d, iqmask %016llx, oqmask %016llx, numiqueues %d, numoqueues %d\n",
...@@ -2047,7 +2005,8 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -2047,7 +2005,8 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
if (!netdev) { if (!netdev) {
dev_err(&octeon_dev->pci_dev->dev, "Device allocation failed\n"); dev_err(&octeon_dev->pci_dev->dev, "Device allocation failed\n");
goto setup_nic_dev_fail; WRITE_ONCE(sc->caller_is_done, true);
goto setup_nic_dev_done;
} }
SET_NETDEV_DEV(netdev, &octeon_dev->pci_dev->dev); SET_NETDEV_DEV(netdev, &octeon_dev->pci_dev->dev);
...@@ -2123,6 +2082,8 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -2123,6 +2082,8 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
netdev->min_mtu = LIO_MIN_MTU_SIZE; netdev->min_mtu = LIO_MIN_MTU_SIZE;
netdev->max_mtu = LIO_MAX_MTU_SIZE; netdev->max_mtu = LIO_MAX_MTU_SIZE;
WRITE_ONCE(sc->caller_is_done, true);
/* Point to the properties for octeon device to which this /* Point to the properties for octeon device to which this
* interface belongs. * interface belongs.
*/ */
...@@ -2146,7 +2107,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -2146,7 +2107,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
lio->linfo.num_txpciq, lio->linfo.num_txpciq,
lio->linfo.num_rxpciq)) { lio->linfo.num_rxpciq)) {
dev_err(&octeon_dev->pci_dev->dev, "I/O queues creation failed\n"); dev_err(&octeon_dev->pci_dev->dev, "I/O queues creation failed\n");
goto setup_nic_dev_fail; goto setup_nic_dev_free;
} }
ifstate_set(lio, LIO_IFSTATE_DROQ_OPS); ifstate_set(lio, LIO_IFSTATE_DROQ_OPS);
...@@ -2169,7 +2130,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -2169,7 +2130,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
if (lio_setup_glists(octeon_dev, lio, num_iqueues)) { if (lio_setup_glists(octeon_dev, lio, num_iqueues)) {
dev_err(&octeon_dev->pci_dev->dev, dev_err(&octeon_dev->pci_dev->dev,
"Gather list allocation failed\n"); "Gather list allocation failed\n");
goto setup_nic_dev_fail; goto setup_nic_dev_free;
} }
/* Register ethtool support */ /* Register ethtool support */
...@@ -2184,15 +2145,15 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -2184,15 +2145,15 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
OCTNIC_LROIPV4 | OCTNIC_LROIPV6); OCTNIC_LROIPV4 | OCTNIC_LROIPV6);
if (setup_link_status_change_wq(netdev)) if (setup_link_status_change_wq(netdev))
goto setup_nic_dev_fail; goto setup_nic_dev_free;
if (setup_rx_oom_poll_fn(netdev)) if (setup_rx_oom_poll_fn(netdev))
goto setup_nic_dev_fail; goto setup_nic_dev_free;
/* Register the network device with the OS */ /* Register the network device with the OS */
if (register_netdev(netdev)) { if (register_netdev(netdev)) {
dev_err(&octeon_dev->pci_dev->dev, "Device registration failed\n"); dev_err(&octeon_dev->pci_dev->dev, "Device registration failed\n");
goto setup_nic_dev_fail; goto setup_nic_dev_free;
} }
dev_dbg(&octeon_dev->pci_dev->dev, dev_dbg(&octeon_dev->pci_dev->dev,
...@@ -2215,24 +2176,21 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -2215,24 +2176,21 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
dev_dbg(&octeon_dev->pci_dev->dev, dev_dbg(&octeon_dev->pci_dev->dev,
"NIC ifidx:%d Setup successful\n", i); "NIC ifidx:%d Setup successful\n", i);
octeon_free_soft_command(octeon_dev, sc);
octeon_dev->no_speed_setting = 1; octeon_dev->no_speed_setting = 1;
} }
return 0; return 0;
setup_nic_dev_fail: setup_nic_dev_free:
octeon_free_soft_command(octeon_dev, sc);
setup_nic_wait_intr:
while (i--) { while (i--) {
dev_err(&octeon_dev->pci_dev->dev, dev_err(&octeon_dev->pci_dev->dev,
"NIC ifidx:%d Setup failed\n", i); "NIC ifidx:%d Setup failed\n", i);
liquidio_destroy_nic_device(octeon_dev, i); liquidio_destroy_nic_device(octeon_dev, i);
} }
setup_nic_dev_done:
return -ENODEV; return -ENODEV;
} }
......
...@@ -386,7 +386,7 @@ lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev) ...@@ -386,7 +386,7 @@ lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev)
} }
sc = (struct octeon_soft_command *) sc = (struct octeon_soft_command *)
octeon_alloc_soft_command(oct, 0, 0, 0); octeon_alloc_soft_command(oct, 0, 16, 0);
if (!sc) { if (!sc) {
dev_err(&oct->pci_dev->dev, "VF rep: Soft command alloc failed\n"); dev_err(&oct->pci_dev->dev, "VF rep: Soft command alloc failed\n");
goto xmit_failed; goto xmit_failed;
...@@ -395,6 +395,7 @@ lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev) ...@@ -395,6 +395,7 @@ lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev)
/* Multiple buffers are not used for vf_rep packets. */ /* Multiple buffers are not used for vf_rep packets. */
if (skb_shinfo(skb)->nr_frags != 0) { if (skb_shinfo(skb)->nr_frags != 0) {
dev_err(&oct->pci_dev->dev, "VF rep: nr_frags != 0. Dropping packet\n"); dev_err(&oct->pci_dev->dev, "VF rep: nr_frags != 0. Dropping packet\n");
octeon_free_soft_command(oct, sc);
goto xmit_failed; goto xmit_failed;
} }
...@@ -402,6 +403,7 @@ lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev) ...@@ -402,6 +403,7 @@ lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev)
skb->data, skb->len, DMA_TO_DEVICE); skb->data, skb->len, DMA_TO_DEVICE);
if (dma_mapping_error(&oct->pci_dev->dev, sc->dmadptr)) { if (dma_mapping_error(&oct->pci_dev->dev, sc->dmadptr)) {
dev_err(&oct->pci_dev->dev, "VF rep: DMA mapping failed\n"); dev_err(&oct->pci_dev->dev, "VF rep: DMA mapping failed\n");
octeon_free_soft_command(oct, sc);
goto xmit_failed; goto xmit_failed;
} }
...@@ -422,6 +424,7 @@ lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev) ...@@ -422,6 +424,7 @@ lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev)
if (status == IQ_SEND_FAILED) { if (status == IQ_SEND_FAILED) {
dma_unmap_single(&oct->pci_dev->dev, sc->dmadptr, dma_unmap_single(&oct->pci_dev->dev, sc->dmadptr,
sc->datasize, DMA_TO_DEVICE); sc->datasize, DMA_TO_DEVICE);
octeon_free_soft_command(oct, sc);
goto xmit_failed; goto xmit_failed;
} }
......
...@@ -438,6 +438,7 @@ struct octeon_config { ...@@ -438,6 +438,7 @@ struct octeon_config {
#define MAX_BAR1_IOREMAP_SIZE (16 * OCTEON_BAR1_ENTRY_SIZE) #define MAX_BAR1_IOREMAP_SIZE (16 * OCTEON_BAR1_ENTRY_SIZE)
/* Response lists - 1 ordered, 1 unordered-blocking, 1 unordered-nonblocking /* Response lists - 1 ordered, 1 unordered-blocking, 1 unordered-nonblocking
* 1 process done list, 1 zombie lists(timeouted sc list)
* NoResponse Lists are now maintained with each IQ. (Dec' 2007). * NoResponse Lists are now maintained with each IQ. (Dec' 2007).
*/ */
#define MAX_RESPONSE_LISTS 6 #define MAX_RESPONSE_LISTS 6
......
...@@ -292,10 +292,7 @@ struct octeon_soft_command { ...@@ -292,10 +292,7 @@ struct octeon_soft_command {
u32 ctxsize; u32 ctxsize;
/** Time out and callback */ /** Time out and callback */
size_t wait_time;
size_t timeout;
size_t expiry_time; size_t expiry_time;
u32 iq_no; u32 iq_no;
void (*callback)(struct octeon_device *, u32, void *); void (*callback)(struct octeon_device *, u32, void *);
void *callback_arg; void *callback_arg;
......
...@@ -146,48 +146,6 @@ static inline int octeon_map_pci_barx(struct octeon_device *oct, ...@@ -146,48 +146,6 @@ static inline int octeon_map_pci_barx(struct octeon_device *oct,
return 1; return 1;
} }
static inline int
sleep_cond(wait_queue_head_t *wait_queue, int *condition)
{
int errno = 0;
wait_queue_entry_t we;
init_waitqueue_entry(&we, current);
add_wait_queue(wait_queue, &we);
while (!(READ_ONCE(*condition))) {
set_current_state(TASK_INTERRUPTIBLE);
if (signal_pending(current)) {
errno = -EINTR;
goto out;
}
schedule();
}
out:
set_current_state(TASK_RUNNING);
remove_wait_queue(wait_queue, &we);
return errno;
}
/* Gives up the CPU for a timeout period.
* Check that the condition is not true before we go to sleep for a
* timeout period.
*/
static inline void
sleep_timeout_cond(wait_queue_head_t *wait_queue,
int *condition,
int timeout)
{
wait_queue_entry_t we;
init_waitqueue_entry(&we, current);
add_wait_queue(wait_queue, &we);
set_current_state(TASK_INTERRUPTIBLE);
if (!(*condition))
schedule_timeout(timeout);
set_current_state(TASK_RUNNING);
remove_wait_queue(wait_queue, &we);
}
/* input parameter: /* input parameter:
* sc: pointer to a soft request * sc: pointer to a soft request
* timeout: milli sec which an application wants to wait for the * timeout: milli sec which an application wants to wait for the
......
...@@ -35,12 +35,6 @@ ...@@ -35,12 +35,6 @@
#define LIO_IFSTATE_RX_TIMESTAMP_ENABLED 0x08 #define LIO_IFSTATE_RX_TIMESTAMP_ENABLED 0x08
#define LIO_IFSTATE_RESETTING 0x10 #define LIO_IFSTATE_RESETTING 0x10
struct liquidio_if_cfg_context {
u32 octeon_id;
wait_queue_head_t wc;
int cond;
};
struct liquidio_if_cfg_resp { struct liquidio_if_cfg_resp {
u64 rh; u64 rh;
struct liquidio_if_cfg_info cfg_info; struct liquidio_if_cfg_info cfg_info;
...@@ -228,10 +222,6 @@ int lio_wait_for_clean_oq(struct octeon_device *oct); ...@@ -228,10 +222,6 @@ int lio_wait_for_clean_oq(struct octeon_device *oct);
*/ */
void liquidio_set_ethtool_ops(struct net_device *netdev); void liquidio_set_ethtool_ops(struct net_device *netdev);
void lio_if_cfg_callback(struct octeon_device *oct,
u32 status __attribute__((unused)),
void *buf);
void lio_delete_glists(struct lio *lio); void lio_delete_glists(struct lio *lio);
int lio_setup_glists(struct octeon_device *oct, struct lio *lio, int num_qs); int lio_setup_glists(struct octeon_device *oct, struct lio *lio, int num_qs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment