diff options
author | Michael Chan <mchan@broadcom.com> | 2013-09-02 14:42:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-09-04 00:27:26 -0400 |
commit | 5e65789f694f2977fb7169c500b4997772f5278b (patch) | |
tree | bdcd2a980fed215eae15c6b45473c64edd9e1d19 | |
parent | 104a43edb264321a4d41850e98153b4fa8a9ef42 (diff) |
cnic: Redefine BNX2X_HW_CID using existing bnx2x macros
to avoid duplication of the same logic.
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/broadcom/cnic.c | 25 | ||||
-rw-r--r-- | drivers/net/ethernet/broadcom/cnic.h | 5 |
2 files changed, 18 insertions, 12 deletions
diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c index 3dadc81a3b3c..750b9a621397 100644 --- a/drivers/net/ethernet/broadcom/cnic.c +++ b/drivers/net/ethernet/broadcom/cnic.c | |||
@@ -1384,6 +1384,7 @@ static int cnic_submit_kwqe_16(struct cnic_dev *dev, u32 cmd, u32 cid, | |||
1384 | u32 type, union l5cm_specific_data *l5_data) | 1384 | u32 type, union l5cm_specific_data *l5_data) |
1385 | { | 1385 | { |
1386 | struct cnic_local *cp = dev->cnic_priv; | 1386 | struct cnic_local *cp = dev->cnic_priv; |
1387 | struct bnx2x *bp = netdev_priv(dev->netdev); | ||
1387 | struct l5cm_spe kwqe; | 1388 | struct l5cm_spe kwqe; |
1388 | struct kwqe_16 *kwq[1]; | 1389 | struct kwqe_16 *kwq[1]; |
1389 | u16 type_16; | 1390 | u16 type_16; |
@@ -1391,7 +1392,7 @@ static int cnic_submit_kwqe_16(struct cnic_dev *dev, u32 cmd, u32 cid, | |||
1391 | 1392 | ||
1392 | kwqe.hdr.conn_and_cmd_data = | 1393 | kwqe.hdr.conn_and_cmd_data = |
1393 | cpu_to_le32(((cmd << SPE_HDR_CMD_ID_SHIFT) | | 1394 | cpu_to_le32(((cmd << SPE_HDR_CMD_ID_SHIFT) | |
1394 | BNX2X_HW_CID(cp, cid))); | 1395 | BNX2X_HW_CID(bp, cid))); |
1395 | 1396 | ||
1396 | type_16 = (type << SPE_HDR_CONN_TYPE_SHIFT) & SPE_HDR_CONN_TYPE; | 1397 | type_16 = (type << SPE_HDR_CONN_TYPE_SHIFT) & SPE_HDR_CONN_TYPE; |
1397 | type_16 |= (cp->pfid << SPE_HDR_FUNCTION_ID_SHIFT) & | 1398 | type_16 |= (cp->pfid << SPE_HDR_FUNCTION_ID_SHIFT) & |
@@ -1690,7 +1691,7 @@ static int cnic_setup_bnx2x_ctx(struct cnic_dev *dev, struct kwqe *wqes[], | |||
1690 | struct cnic_context *ctx = &cp->ctx_tbl[req1->iscsi_conn_id]; | 1691 | struct cnic_context *ctx = &cp->ctx_tbl[req1->iscsi_conn_id]; |
1691 | struct cnic_iscsi *iscsi = ctx->proto.iscsi; | 1692 | struct cnic_iscsi *iscsi = ctx->proto.iscsi; |
1692 | u32 cid = ctx->cid; | 1693 | u32 cid = ctx->cid; |
1693 | u32 hw_cid = BNX2X_HW_CID(cp, cid); | 1694 | u32 hw_cid = BNX2X_HW_CID(bp, cid); |
1694 | struct iscsi_context *ictx; | 1695 | struct iscsi_context *ictx; |
1695 | struct regpair context_addr; | 1696 | struct regpair context_addr; |
1696 | int i, j, n = 2, n_max; | 1697 | int i, j, n = 2, n_max; |
@@ -1870,6 +1871,7 @@ static int cnic_bnx2x_iscsi_ofld1(struct cnic_dev *dev, struct kwqe *wqes[], | |||
1870 | struct iscsi_kwqe_conn_offload1 *req1; | 1871 | struct iscsi_kwqe_conn_offload1 *req1; |
1871 | struct iscsi_kwqe_conn_offload2 *req2; | 1872 | struct iscsi_kwqe_conn_offload2 *req2; |
1872 | struct cnic_local *cp = dev->cnic_priv; | 1873 | struct cnic_local *cp = dev->cnic_priv; |
1874 | struct bnx2x *bp = netdev_priv(dev->netdev); | ||
1873 | struct cnic_context *ctx; | 1875 | struct cnic_context *ctx; |
1874 | struct iscsi_kcqe kcqe; | 1876 | struct iscsi_kcqe kcqe; |
1875 | struct kcqe *cqes[1]; | 1877 | struct kcqe *cqes[1]; |
@@ -1923,7 +1925,7 @@ static int cnic_bnx2x_iscsi_ofld1(struct cnic_dev *dev, struct kwqe *wqes[], | |||
1923 | } | 1925 | } |
1924 | 1926 | ||
1925 | kcqe.completion_status = ISCSI_KCQE_COMPLETION_STATUS_SUCCESS; | 1927 | kcqe.completion_status = ISCSI_KCQE_COMPLETION_STATUS_SUCCESS; |
1926 | kcqe.iscsi_conn_context_id = BNX2X_HW_CID(cp, cp->ctx_tbl[l5_cid].cid); | 1928 | kcqe.iscsi_conn_context_id = BNX2X_HW_CID(bp, cp->ctx_tbl[l5_cid].cid); |
1927 | 1929 | ||
1928 | done: | 1930 | done: |
1929 | cqes[0] = (struct kcqe *) &kcqe; | 1931 | cqes[0] = (struct kcqe *) &kcqe; |
@@ -1959,6 +1961,7 @@ static int cnic_bnx2x_iscsi_update(struct cnic_dev *dev, struct kwqe *kwqe) | |||
1959 | static int cnic_bnx2x_destroy_ramrod(struct cnic_dev *dev, u32 l5_cid) | 1961 | static int cnic_bnx2x_destroy_ramrod(struct cnic_dev *dev, u32 l5_cid) |
1960 | { | 1962 | { |
1961 | struct cnic_local *cp = dev->cnic_priv; | 1963 | struct cnic_local *cp = dev->cnic_priv; |
1964 | struct bnx2x *bp = netdev_priv(dev->netdev); | ||
1962 | struct cnic_context *ctx = &cp->ctx_tbl[l5_cid]; | 1965 | struct cnic_context *ctx = &cp->ctx_tbl[l5_cid]; |
1963 | union l5cm_specific_data l5_data; | 1966 | union l5cm_specific_data l5_data; |
1964 | int ret; | 1967 | int ret; |
@@ -1967,7 +1970,7 @@ static int cnic_bnx2x_destroy_ramrod(struct cnic_dev *dev, u32 l5_cid) | |||
1967 | init_waitqueue_head(&ctx->waitq); | 1970 | init_waitqueue_head(&ctx->waitq); |
1968 | ctx->wait_cond = 0; | 1971 | ctx->wait_cond = 0; |
1969 | memset(&l5_data, 0, sizeof(l5_data)); | 1972 | memset(&l5_data, 0, sizeof(l5_data)); |
1970 | hw_cid = BNX2X_HW_CID(cp, ctx->cid); | 1973 | hw_cid = BNX2X_HW_CID(bp, ctx->cid); |
1971 | 1974 | ||
1972 | ret = cnic_submit_kwqe_16(dev, RAMROD_CMD_ID_COMMON_CFC_DEL, | 1975 | ret = cnic_submit_kwqe_16(dev, RAMROD_CMD_ID_COMMON_CFC_DEL, |
1973 | hw_cid, NONE_CONNECTION_TYPE, &l5_data); | 1976 | hw_cid, NONE_CONNECTION_TYPE, &l5_data); |
@@ -2252,11 +2255,12 @@ static int cnic_bnx2x_fcoe_stat(struct cnic_dev *dev, struct kwqe *kwqe) | |||
2252 | struct fcoe_stat_ramrod_params *fcoe_stat; | 2255 | struct fcoe_stat_ramrod_params *fcoe_stat; |
2253 | union l5cm_specific_data l5_data; | 2256 | union l5cm_specific_data l5_data; |
2254 | struct cnic_local *cp = dev->cnic_priv; | 2257 | struct cnic_local *cp = dev->cnic_priv; |
2258 | struct bnx2x *bp = netdev_priv(dev->netdev); | ||
2255 | int ret; | 2259 | int ret; |
2256 | u32 cid; | 2260 | u32 cid; |
2257 | 2261 | ||
2258 | req = (struct fcoe_kwqe_stat *) kwqe; | 2262 | req = (struct fcoe_kwqe_stat *) kwqe; |
2259 | cid = BNX2X_HW_CID(cp, cp->fcoe_init_cid); | 2263 | cid = BNX2X_HW_CID(bp, cp->fcoe_init_cid); |
2260 | 2264 | ||
2261 | fcoe_stat = cnic_get_kwqe_16_data(cp, BNX2X_FCOE_L5_CID_BASE, &l5_data); | 2265 | fcoe_stat = cnic_get_kwqe_16_data(cp, BNX2X_FCOE_L5_CID_BASE, &l5_data); |
2262 | if (!fcoe_stat) | 2266 | if (!fcoe_stat) |
@@ -2275,6 +2279,7 @@ static int cnic_bnx2x_fcoe_init1(struct cnic_dev *dev, struct kwqe *wqes[], | |||
2275 | { | 2279 | { |
2276 | int ret; | 2280 | int ret; |
2277 | struct cnic_local *cp = dev->cnic_priv; | 2281 | struct cnic_local *cp = dev->cnic_priv; |
2282 | struct bnx2x *bp = netdev_priv(dev->netdev); | ||
2278 | u32 cid; | 2283 | u32 cid; |
2279 | struct fcoe_init_ramrod_params *fcoe_init; | 2284 | struct fcoe_init_ramrod_params *fcoe_init; |
2280 | struct fcoe_kwqe_init1 *req1; | 2285 | struct fcoe_kwqe_init1 *req1; |
@@ -2319,7 +2324,7 @@ static int cnic_bnx2x_fcoe_init1(struct cnic_dev *dev, struct kwqe *wqes[], | |||
2319 | fcoe_init->sb_id = HC_INDEX_FCOE_EQ_CONS; | 2324 | fcoe_init->sb_id = HC_INDEX_FCOE_EQ_CONS; |
2320 | cp->kcq2.sw_prod_idx = 0; | 2325 | cp->kcq2.sw_prod_idx = 0; |
2321 | 2326 | ||
2322 | cid = BNX2X_HW_CID(cp, cp->fcoe_init_cid); | 2327 | cid = BNX2X_HW_CID(bp, cp->fcoe_init_cid); |
2323 | ret = cnic_submit_kwqe_16(dev, FCOE_RAMROD_CMD_ID_INIT_FUNC, cid, | 2328 | ret = cnic_submit_kwqe_16(dev, FCOE_RAMROD_CMD_ID_INIT_FUNC, cid, |
2324 | FCOE_CONNECTION_TYPE, &l5_data); | 2329 | FCOE_CONNECTION_TYPE, &l5_data); |
2325 | *work = 3; | 2330 | *work = 3; |
@@ -2332,6 +2337,7 @@ static int cnic_bnx2x_fcoe_ofld1(struct cnic_dev *dev, struct kwqe *wqes[], | |||
2332 | int ret = 0; | 2337 | int ret = 0; |
2333 | u32 cid = -1, l5_cid; | 2338 | u32 cid = -1, l5_cid; |
2334 | struct cnic_local *cp = dev->cnic_priv; | 2339 | struct cnic_local *cp = dev->cnic_priv; |
2340 | struct bnx2x *bp = netdev_priv(dev->netdev); | ||
2335 | struct fcoe_kwqe_conn_offload1 *req1; | 2341 | struct fcoe_kwqe_conn_offload1 *req1; |
2336 | struct fcoe_kwqe_conn_offload2 *req2; | 2342 | struct fcoe_kwqe_conn_offload2 *req2; |
2337 | struct fcoe_kwqe_conn_offload3 *req3; | 2343 | struct fcoe_kwqe_conn_offload3 *req3; |
@@ -2374,7 +2380,7 @@ static int cnic_bnx2x_fcoe_ofld1(struct cnic_dev *dev, struct kwqe *wqes[], | |||
2374 | 2380 | ||
2375 | fctx = cnic_get_bnx2x_ctx(dev, cid, 1, &ctx_addr); | 2381 | fctx = cnic_get_bnx2x_ctx(dev, cid, 1, &ctx_addr); |
2376 | if (fctx) { | 2382 | if (fctx) { |
2377 | u32 hw_cid = BNX2X_HW_CID(cp, cid); | 2383 | u32 hw_cid = BNX2X_HW_CID(bp, cid); |
2378 | u32 val; | 2384 | u32 val; |
2379 | 2385 | ||
2380 | val = CDU_RSRVD_VALUE_TYPE_A(hw_cid, CDU_REGION_NUMBER_XCM_AG, | 2386 | val = CDU_RSRVD_VALUE_TYPE_A(hw_cid, CDU_REGION_NUMBER_XCM_AG, |
@@ -2398,7 +2404,7 @@ static int cnic_bnx2x_fcoe_ofld1(struct cnic_dev *dev, struct kwqe *wqes[], | |||
2398 | memcpy(&fcoe_offload->offload_kwqe3, req3, sizeof(*req3)); | 2404 | memcpy(&fcoe_offload->offload_kwqe3, req3, sizeof(*req3)); |
2399 | memcpy(&fcoe_offload->offload_kwqe4, req4, sizeof(*req4)); | 2405 | memcpy(&fcoe_offload->offload_kwqe4, req4, sizeof(*req4)); |
2400 | 2406 | ||
2401 | cid = BNX2X_HW_CID(cp, cid); | 2407 | cid = BNX2X_HW_CID(bp, cid); |
2402 | ret = cnic_submit_kwqe_16(dev, FCOE_RAMROD_CMD_ID_OFFLOAD_CONN, cid, | 2408 | ret = cnic_submit_kwqe_16(dev, FCOE_RAMROD_CMD_ID_OFFLOAD_CONN, cid, |
2403 | FCOE_CONNECTION_TYPE, &l5_data); | 2409 | FCOE_CONNECTION_TYPE, &l5_data); |
2404 | if (!ret) | 2410 | if (!ret) |
@@ -2556,13 +2562,14 @@ static int cnic_bnx2x_fcoe_fw_destroy(struct cnic_dev *dev, struct kwqe *kwqe) | |||
2556 | struct fcoe_kwqe_destroy *req; | 2562 | struct fcoe_kwqe_destroy *req; |
2557 | union l5cm_specific_data l5_data; | 2563 | union l5cm_specific_data l5_data; |
2558 | struct cnic_local *cp = dev->cnic_priv; | 2564 | struct cnic_local *cp = dev->cnic_priv; |
2565 | struct bnx2x *bp = netdev_priv(dev->netdev); | ||
2559 | int ret; | 2566 | int ret; |
2560 | u32 cid; | 2567 | u32 cid; |
2561 | 2568 | ||
2562 | cnic_bnx2x_delete_wait(dev, MAX_ISCSI_TBL_SZ); | 2569 | cnic_bnx2x_delete_wait(dev, MAX_ISCSI_TBL_SZ); |
2563 | 2570 | ||
2564 | req = (struct fcoe_kwqe_destroy *) kwqe; | 2571 | req = (struct fcoe_kwqe_destroy *) kwqe; |
2565 | cid = BNX2X_HW_CID(cp, cp->fcoe_init_cid); | 2572 | cid = BNX2X_HW_CID(bp, cp->fcoe_init_cid); |
2566 | 2573 | ||
2567 | memset(&l5_data, 0, sizeof(l5_data)); | 2574 | memset(&l5_data, 0, sizeof(l5_data)); |
2568 | ret = cnic_submit_kwqe_16(dev, FCOE_RAMROD_CMD_ID_DESTROY_FUNC, cid, | 2575 | ret = cnic_submit_kwqe_16(dev, FCOE_RAMROD_CMD_ID_DESTROY_FUNC, cid, |
diff --git a/drivers/net/ethernet/broadcom/cnic.h b/drivers/net/ethernet/broadcom/cnic.h index 519f587a25d1..0408ae286b89 100644 --- a/drivers/net/ethernet/broadcom/cnic.h +++ b/drivers/net/ethernet/broadcom/cnic.h | |||
@@ -401,10 +401,9 @@ struct bnx2x_bd_chain_next { | |||
401 | 401 | ||
402 | #define CNIC_PORT(cp) ((cp)->pfid & 1) | 402 | #define CNIC_PORT(cp) ((cp)->pfid & 1) |
403 | #define CNIC_FUNC(cp) ((cp)->func) | 403 | #define CNIC_FUNC(cp) ((cp)->func) |
404 | #define CNIC_E1HVN(cp) ((cp)->pfid >> 1) | ||
405 | 404 | ||
406 | #define BNX2X_HW_CID(cp, x) ((CNIC_PORT(cp) << 23) | \ | 405 | #define BNX2X_HW_CID(bp, x) ((BP_PORT(bp) << 23) | \ |
407 | (CNIC_E1HVN(cp) << 17) | (x)) | 406 | (BP_VN(bp) << 17) | (x)) |
408 | 407 | ||
409 | #define BNX2X_SW_CID(x) (x & 0x1ffff) | 408 | #define BNX2X_SW_CID(x) (x & 0x1ffff) |
410 | 409 | ||