|
|
@@ -2326,7 +2326,7 @@ struct opa_port_status_req {
|
|
|
__be32 vl_select_mask;
|
|
|
};
|
|
|
|
|
|
-#define VL_MASK_ALL 0x000080ff
|
|
|
+#define VL_MASK_ALL 0x00000000000080ffUL
|
|
|
|
|
|
struct opa_port_status_rsp {
|
|
|
__u8 port_num;
|
|
|
@@ -2625,15 +2625,14 @@ static int pma_get_opa_classportinfo(struct opa_pma_mad *pmp,
|
|
|
}
|
|
|
|
|
|
static void a0_portstatus(struct hfi1_pportdata *ppd,
|
|
|
- struct opa_port_status_rsp *rsp, u32 vl_select_mask)
|
|
|
+ struct opa_port_status_rsp *rsp)
|
|
|
{
|
|
|
if (!is_bx(ppd->dd)) {
|
|
|
unsigned long vl;
|
|
|
u64 sum_vl_xmit_wait = 0;
|
|
|
- u32 vl_all_mask = VL_MASK_ALL;
|
|
|
+ unsigned long vl_all_mask = VL_MASK_ALL;
|
|
|
|
|
|
- for_each_set_bit(vl, (unsigned long *)&(vl_all_mask),
|
|
|
- 8 * sizeof(vl_all_mask)) {
|
|
|
+ for_each_set_bit(vl, &vl_all_mask, BITS_PER_LONG) {
|
|
|
u64 tmp = sum_vl_xmit_wait +
|
|
|
read_port_cntr(ppd, C_TX_WAIT_VL,
|
|
|
idx_from_vl(vl));
|
|
|
@@ -2730,12 +2729,12 @@ static int pma_get_opa_portstatus(struct opa_pma_mad *pmp,
|
|
|
(struct opa_port_status_req *)pmp->data;
|
|
|
struct hfi1_devdata *dd = dd_from_ibdev(ibdev);
|
|
|
struct opa_port_status_rsp *rsp;
|
|
|
- u32 vl_select_mask = be32_to_cpu(req->vl_select_mask);
|
|
|
+ unsigned long vl_select_mask = be32_to_cpu(req->vl_select_mask);
|
|
|
unsigned long vl;
|
|
|
size_t response_data_size;
|
|
|
u32 nports = be32_to_cpu(pmp->mad_hdr.attr_mod) >> 24;
|
|
|
u8 port_num = req->port_num;
|
|
|
- u8 num_vls = hweight32(vl_select_mask);
|
|
|
+ u8 num_vls = hweight64(vl_select_mask);
|
|
|
struct _vls_pctrs *vlinfo;
|
|
|
struct hfi1_ibport *ibp = to_iport(ibdev, port);
|
|
|
struct hfi1_pportdata *ppd = ppd_from_ibp(ibp);
|
|
|
@@ -2771,7 +2770,7 @@ static int pma_get_opa_portstatus(struct opa_pma_mad *pmp,
|
|
|
|
|
|
hfi1_read_link_quality(dd, &rsp->link_quality_indicator);
|
|
|
|
|
|
- rsp->vl_select_mask = cpu_to_be32(vl_select_mask);
|
|
|
+ rsp->vl_select_mask = cpu_to_be32((u32)vl_select_mask);
|
|
|
rsp->port_xmit_data = cpu_to_be64(read_dev_cntr(dd, C_DC_XMIT_FLITS,
|
|
|
CNTR_INVALID_VL));
|
|
|
rsp->port_rcv_data = cpu_to_be64(read_dev_cntr(dd, C_DC_RCV_FLITS,
|
|
|
@@ -2842,8 +2841,7 @@ static int pma_get_opa_portstatus(struct opa_pma_mad *pmp,
|
|
|
* So in the for_each_set_bit() loop below, we don't need
|
|
|
* any additional checks for vl.
|
|
|
*/
|
|
|
- for_each_set_bit(vl, (unsigned long *)&(vl_select_mask),
|
|
|
- 8 * sizeof(vl_select_mask)) {
|
|
|
+ for_each_set_bit(vl, &vl_select_mask, BITS_PER_LONG) {
|
|
|
memset(vlinfo, 0, sizeof(*vlinfo));
|
|
|
|
|
|
tmp = read_dev_cntr(dd, C_DC_RX_FLIT_VL, idx_from_vl(vl));
|
|
|
@@ -2884,7 +2882,7 @@ static int pma_get_opa_portstatus(struct opa_pma_mad *pmp,
|
|
|
vfi++;
|
|
|
}
|
|
|
|
|
|
- a0_portstatus(ppd, rsp, vl_select_mask);
|
|
|
+ a0_portstatus(ppd, rsp);
|
|
|
|
|
|
if (resp_len)
|
|
|
*resp_len += response_data_size;
|
|
|
@@ -2931,16 +2929,14 @@ static u64 get_error_counter_summary(struct ib_device *ibdev, u8 port,
|
|
|
return error_counter_summary;
|
|
|
}
|
|
|
|
|
|
-static void a0_datacounters(struct hfi1_pportdata *ppd, struct _port_dctrs *rsp,
|
|
|
- u32 vl_select_mask)
|
|
|
+static void a0_datacounters(struct hfi1_pportdata *ppd, struct _port_dctrs *rsp)
|
|
|
{
|
|
|
if (!is_bx(ppd->dd)) {
|
|
|
unsigned long vl;
|
|
|
u64 sum_vl_xmit_wait = 0;
|
|
|
- u32 vl_all_mask = VL_MASK_ALL;
|
|
|
+ unsigned long vl_all_mask = VL_MASK_ALL;
|
|
|
|
|
|
- for_each_set_bit(vl, (unsigned long *)&(vl_all_mask),
|
|
|
- 8 * sizeof(vl_all_mask)) {
|
|
|
+ for_each_set_bit(vl, &vl_all_mask, BITS_PER_LONG) {
|
|
|
u64 tmp = sum_vl_xmit_wait +
|
|
|
read_port_cntr(ppd, C_TX_WAIT_VL,
|
|
|
idx_from_vl(vl));
|
|
|
@@ -2995,7 +2991,7 @@ static int pma_get_opa_datacounters(struct opa_pma_mad *pmp,
|
|
|
u64 port_mask;
|
|
|
u8 port_num;
|
|
|
unsigned long vl;
|
|
|
- u32 vl_select_mask;
|
|
|
+ unsigned long vl_select_mask;
|
|
|
int vfi;
|
|
|
u16 link_width;
|
|
|
u16 link_speed;
|
|
|
@@ -3073,8 +3069,7 @@ static int pma_get_opa_datacounters(struct opa_pma_mad *pmp,
|
|
|
* So in the for_each_set_bit() loop below, we don't need
|
|
|
* any additional checks for vl.
|
|
|
*/
|
|
|
- for_each_set_bit(vl, (unsigned long *)&(vl_select_mask),
|
|
|
- 8 * sizeof(req->vl_select_mask)) {
|
|
|
+ for_each_set_bit(vl, &vl_select_mask, BITS_PER_LONG) {
|
|
|
memset(vlinfo, 0, sizeof(*vlinfo));
|
|
|
|
|
|
rsp->vls[vfi].port_vl_xmit_data =
|
|
|
@@ -3122,7 +3117,7 @@ static int pma_get_opa_datacounters(struct opa_pma_mad *pmp,
|
|
|
vfi++;
|
|
|
}
|
|
|
|
|
|
- a0_datacounters(ppd, rsp, vl_select_mask);
|
|
|
+ a0_datacounters(ppd, rsp);
|
|
|
|
|
|
if (resp_len)
|
|
|
*resp_len += response_data_size;
|
|
|
@@ -3217,7 +3212,7 @@ static int pma_get_opa_porterrors(struct opa_pma_mad *pmp,
|
|
|
struct _vls_ectrs *vlinfo;
|
|
|
unsigned long vl;
|
|
|
u64 port_mask, tmp;
|
|
|
- u32 vl_select_mask;
|
|
|
+ unsigned long vl_select_mask;
|
|
|
int vfi;
|
|
|
|
|
|
req = (struct opa_port_error_counters64_msg *)pmp->data;
|
|
|
@@ -3276,8 +3271,7 @@ static int pma_get_opa_porterrors(struct opa_pma_mad *pmp,
|
|
|
vlinfo = &rsp->vls[0];
|
|
|
vfi = 0;
|
|
|
vl_select_mask = be32_to_cpu(req->vl_select_mask);
|
|
|
- for_each_set_bit(vl, (unsigned long *)&(vl_select_mask),
|
|
|
- 8 * sizeof(req->vl_select_mask)) {
|
|
|
+ for_each_set_bit(vl, &vl_select_mask, BITS_PER_LONG) {
|
|
|
memset(vlinfo, 0, sizeof(*vlinfo));
|
|
|
rsp->vls[vfi].port_vl_xmit_discards =
|
|
|
cpu_to_be64(read_port_cntr(ppd, C_SW_XMIT_DSCD_VL,
|
|
|
@@ -3488,7 +3482,7 @@ static int pma_set_opa_portstatus(struct opa_pma_mad *pmp,
|
|
|
u32 nports = be32_to_cpu(pmp->mad_hdr.attr_mod) >> 24;
|
|
|
u64 portn = be64_to_cpu(req->port_select_mask[3]);
|
|
|
u32 counter_select = be32_to_cpu(req->counter_select_mask);
|
|
|
- u32 vl_select_mask = VL_MASK_ALL; /* clear all per-vl cnts */
|
|
|
+ unsigned long vl_select_mask = VL_MASK_ALL; /* clear all per-vl cnts */
|
|
|
unsigned long vl;
|
|
|
|
|
|
if ((nports != 1) || (portn != 1 << port)) {
|
|
|
@@ -3582,8 +3576,7 @@ static int pma_set_opa_portstatus(struct opa_pma_mad *pmp,
|
|
|
if (counter_select & CS_UNCORRECTABLE_ERRORS)
|
|
|
write_dev_cntr(dd, C_DC_UNC_ERR, CNTR_INVALID_VL, 0);
|
|
|
|
|
|
- for_each_set_bit(vl, (unsigned long *)&(vl_select_mask),
|
|
|
- 8 * sizeof(vl_select_mask)) {
|
|
|
+ for_each_set_bit(vl, &vl_select_mask, BITS_PER_LONG) {
|
|
|
if (counter_select & CS_PORT_XMIT_DATA)
|
|
|
write_port_cntr(ppd, C_TX_FLIT_VL, idx_from_vl(vl), 0);
|
|
|
|