Skip to content

Commit

Permalink
cxgb3 - Expose HW memory page info
Browse files Browse the repository at this point in the history
A HW issue requires limiting the receive window size
to 23 pages of internal memory.
These pages can be configured to different sizes,
thus the RDMA driver needs to know the
page size to enforce the upper limit.

Also assign explicit enum values.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Divy Le Ray authored and David S. Miller committed Oct 10, 2007
1 parent 27186dc commit e22bb45
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 21 deletions.
52 changes: 31 additions & 21 deletions drivers/net/cxgb3/cxgb3_ctl_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,27 +33,29 @@
#define _CXGB3_OFFLOAD_CTL_DEFS_H

enum {
GET_MAX_OUTSTANDING_WR,
GET_TX_MAX_CHUNK,
GET_TID_RANGE,
GET_STID_RANGE,
GET_RTBL_RANGE,
GET_L2T_CAPACITY,
GET_MTUS,
GET_WR_LEN,
GET_IFF_FROM_MAC,
GET_DDP_PARAMS,
GET_PORTS,

ULP_ISCSI_GET_PARAMS,
ULP_ISCSI_SET_PARAMS,

RDMA_GET_PARAMS,
RDMA_CQ_OP,
RDMA_CQ_SETUP,
RDMA_CQ_DISABLE,
RDMA_CTRL_QP_SETUP,
RDMA_GET_MEM,
GET_MAX_OUTSTANDING_WR = 0,
GET_TX_MAX_CHUNK = 1,
GET_TID_RANGE = 2,
GET_STID_RANGE = 3,
GET_RTBL_RANGE = 4,
GET_L2T_CAPACITY = 5,
GET_MTUS = 6,
GET_WR_LEN = 7,
GET_IFF_FROM_MAC = 8,
GET_DDP_PARAMS = 9,
GET_PORTS = 10,

ULP_ISCSI_GET_PARAMS = 11,
ULP_ISCSI_SET_PARAMS = 12,

RDMA_GET_PARAMS = 13,
RDMA_CQ_OP = 14,
RDMA_CQ_SETUP = 15,
RDMA_CQ_DISABLE = 16,
RDMA_CTRL_QP_SETUP = 17,
RDMA_GET_MEM = 18,

GET_RX_PAGE_INFO = 50,
};

/*
Expand Down Expand Up @@ -161,4 +163,12 @@ struct rdma_ctrlqp_setup {
unsigned long long base_addr;
unsigned int size;
};

/*
* Offload TX/RX page information.
*/
struct ofld_page_info {
unsigned int page_size; /* Page size, should be a power of 2 */
unsigned int num; /* Number of pages */
};
#endif /* _CXGB3_OFFLOAD_CTL_DEFS_H */
7 changes: 7 additions & 0 deletions drivers/net/cxgb3/cxgb3_offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,8 @@ static int cxgb_offload_ctl(struct t3cdev *tdev, unsigned int req, void *data)
struct iff_mac *iffmacp;
struct ddp_params *ddpp;
struct adap_ports *ports;
struct ofld_page_info *rx_page_info;
struct tp_params *tp = &adapter->params.tp;
int i;

switch (req) {
Expand Down Expand Up @@ -382,6 +384,11 @@ static int cxgb_offload_ctl(struct t3cdev *tdev, unsigned int req, void *data)
if (!offload_running(adapter))
return -EAGAIN;
return cxgb_rdma_ctl(adapter, req, data);
case GET_RX_PAGE_INFO:
rx_page_info = data;
rx_page_info->page_size = tp->rx_pg_size;
rx_page_info->num = tp->rx_num_pgs;
break;
default:
return -EOPNOTSUPP;
}
Expand Down

0 comments on commit e22bb45

Please sign in to comment.