diff options
author | Varun Prakash <varun@chelsio.com> | 2017-06-22 15:47:49 +0530 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2017-06-26 15:01:02 -0400 |
commit | 6c9e27703594131d0f170f27ddb1c12a4eb599c6 (patch) | |
tree | b03e9a2a78b5ddefbd373d0f9e22d779f3d1825c /drivers/scsi/cxgbi | |
parent | 134699d2a896c68781da7416904787011988738b (diff) | |
download | linux-6c9e27703594131d0f170f27ddb1c12a4eb599c6.tar.bz2 |
scsi: cxgb4i: assign rxqs in round robin mode
Assign rxq to TCP connections in round robin mode to use all available
rxqs.
Signed-off-by: Varun Prakash <varun@chelsio.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/cxgbi')
-rw-r--r-- | drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 5 | ||||
-rw-r--r-- | drivers/scsi/cxgbi/libcxgbi.h | 1 |
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c index 0aae094ab91c..fa994713e718 100644 --- a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c +++ b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c @@ -1606,6 +1606,7 @@ static int init_act_open(struct cxgbi_sock *csk) struct neighbour *n = NULL; void *daddr; unsigned int step; + unsigned int rxq_idx; unsigned int size, size6; unsigned int linkspeed; unsigned int rcv_winf, snd_winf; @@ -1684,7 +1685,9 @@ static int init_act_open(struct cxgbi_sock *csk) step = lldi->ntxq / lldi->nchan; csk->txq_idx = cxgb4_port_idx(ndev) * step; step = lldi->nrxq / lldi->nchan; - csk->rss_qid = lldi->rxq_ids[cxgb4_port_idx(ndev) * step]; + rxq_idx = (cxgb4_port_idx(ndev) * step) + (cdev->rxq_idx_cntr % step); + cdev->rxq_idx_cntr++; + csk->rss_qid = lldi->rxq_ids[rxq_idx]; linkspeed = ((struct port_info *)netdev_priv(ndev))->link_cfg.speed; csk->snd_win = cxgb4i_snd_win; csk->rcv_win = cxgb4i_rcv_win; diff --git a/drivers/scsi/cxgbi/libcxgbi.h b/drivers/scsi/cxgbi/libcxgbi.h index 37f07aaab1e4..31a5816c2e8d 100644 --- a/drivers/scsi/cxgbi/libcxgbi.h +++ b/drivers/scsi/cxgbi/libcxgbi.h @@ -477,6 +477,7 @@ struct cxgbi_device { unsigned int skb_rx_extra; /* for msg coalesced mode */ unsigned int tx_max_size; unsigned int rx_max_size; + unsigned int rxq_idx_cntr; struct cxgbi_ports_map pmap; void (*dev_ddp_cleanup)(struct cxgbi_device *); |