Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 203156
b: refs/heads/master
c: 520efdf
h: refs/heads/master
v: v3
  • Loading branch information
Michael Chan authored and David S. Miller committed Jun 26, 2010
1 parent 147de3a commit f74b42d
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 16 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 39c9cf07077146b14ab077a0e27c869c6f0e6199
refs/heads/master: 520efdf44f0140eef9018518fdae5edfc86f3b6c
32 changes: 18 additions & 14 deletions trunk/drivers/net/cnic.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ static int cnic_get_l5_cid(struct cnic_local *cp, u32 cid, u32 *l5_cid)
{
u32 i;

for (i = 0; i < MAX_ISCSI_TBL_SZ; i++) {
for (i = 0; i < cp->max_cid_space; i++) {
if (cp->ctx_tbl[i].cid == cid) {
*l5_cid = i;
return 0;
Expand Down Expand Up @@ -981,17 +981,10 @@ static int cnic_alloc_bnx2_resc(struct cnic_dev *dev)
static int cnic_alloc_bnx2x_context(struct cnic_dev *dev)
{
struct cnic_local *cp = dev->cnic_priv;
struct cnic_eth_dev *ethdev = cp->ethdev;
int ctx_blk_size = cp->ethdev->ctx_blk_size;
int total_mem, blks, i, cid_space;

if (BNX2X_ISCSI_START_CID < ethdev->starting_cid)
return -EINVAL;

cid_space = MAX_ISCSI_TBL_SZ +
(BNX2X_ISCSI_START_CID - ethdev->starting_cid);
int total_mem, blks, i;

total_mem = BNX2X_CONTEXT_MEM_SIZE * cid_space;
total_mem = BNX2X_CONTEXT_MEM_SIZE * cp->max_cid_space;
blks = total_mem / ctx_blk_size;
if (total_mem % ctx_blk_size)
blks++;
Expand Down Expand Up @@ -1035,16 +1028,27 @@ static int cnic_alloc_bnx2x_context(struct cnic_dev *dev)
static int cnic_alloc_bnx2x_resc(struct cnic_dev *dev)
{
struct cnic_local *cp = dev->cnic_priv;
struct cnic_eth_dev *ethdev = cp->ethdev;
u32 start_cid = ethdev->starting_cid;
int i, j, n, ret, pages;
struct cnic_dma *kwq_16_dma = &cp->kwq_16_data_info;

cp->max_cid_space = MAX_ISCSI_TBL_SZ;
cp->iscsi_start_cid = start_cid;
if (start_cid < BNX2X_ISCSI_START_CID) {
u32 delta = BNX2X_ISCSI_START_CID - start_cid;

cp->iscsi_start_cid = BNX2X_ISCSI_START_CID;
cp->max_cid_space += delta;
}

cp->iscsi_tbl = kzalloc(sizeof(struct cnic_iscsi) * MAX_ISCSI_TBL_SZ,
GFP_KERNEL);
if (!cp->iscsi_tbl)
goto error;

cp->ctx_tbl = kzalloc(sizeof(struct cnic_context) *
MAX_CNIC_L5_CONTEXT, GFP_KERNEL);
cp->max_cid_space, GFP_KERNEL);
if (!cp->ctx_tbl)
goto error;

Expand All @@ -1053,15 +1057,15 @@ static int cnic_alloc_bnx2x_resc(struct cnic_dev *dev)
cp->ctx_tbl[i].ulp_proto_id = CNIC_ULP_ISCSI;
}

pages = PAGE_ALIGN(MAX_CNIC_L5_CONTEXT * CNIC_KWQ16_DATA_SIZE) /
pages = PAGE_ALIGN(cp->max_cid_space * CNIC_KWQ16_DATA_SIZE) /
PAGE_SIZE;

ret = cnic_alloc_dma(dev, kwq_16_dma, pages, 0);
if (ret)
return -ENOMEM;

n = PAGE_SIZE / CNIC_KWQ16_DATA_SIZE;
for (i = 0, j = 0; i < MAX_ISCSI_TBL_SZ; i++) {
for (i = 0, j = 0; i < cp->max_cid_space; i++) {
long off = CNIC_KWQ16_DATA_SIZE * (i % n);

cp->ctx_tbl[i].kwqe_data = kwq_16_dma->pg_arr[j] + off;
Expand Down Expand Up @@ -4129,7 +4133,7 @@ static int cnic_start_bnx2x_hw(struct cnic_dev *dev)
u8 sb_id = cp->status_blk_num;

ret = cnic_init_id_tbl(&cp->cid_tbl, MAX_ISCSI_TBL_SZ,
BNX2X_ISCSI_START_CID);
cp->iscsi_start_cid);

if (ret)
return -ENOMEM;
Expand Down
4 changes: 3 additions & 1 deletion trunk/drivers/net/cnic.h
Original file line number Diff line number Diff line change
Expand Up @@ -248,8 +248,10 @@ struct cnic_local {
struct cnic_iscsi *iscsi_tbl;
struct cnic_context *ctx_tbl;
struct cnic_id_tbl cid_tbl;
int max_iscsi_conn;
atomic_t iscsi_conn;
u32 iscsi_start_cid;

u32 max_cid_space;

/* per connection parameters */
int num_iscsi_tasks;
Expand Down

0 comments on commit f74b42d

Please sign in to comment.