diff options
author | Thomas Falcon <tlfalcon@linux.vnet.ibm.com> | 2016-03-01 11:20:09 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-03-03 16:36:31 -0500 |
commit | de89e854bcc71ebaf30d415a0c015d1cb6c68856 (patch) | |
tree | 65884e23bdd3b857a46c63420720e07aa403c947 /drivers/net/ethernet/ibm | |
parent | 5d150a985520bbe3cb2aa1ceef24a7e32f20c15f (diff) |
ibmvnic: Fix ibmvnic_capability struct
The ibmvnic_capability struct was defined incorrectly. The last two
elements of the struct are in the wrong order. In addition, the number
element should be 64-bit. Byteswapping functions are updated
as well.
Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/ibm')
-rw-r--r-- | drivers/net/ethernet/ibm/ibmvnic.c | 62 | ||||
-rw-r--r-- | drivers/net/ethernet/ibm/ibmvnic.h | 4 |
2 files changed, 32 insertions, 34 deletions
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c index 7d6570843723..6e9e16eee5d0 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.c +++ b/drivers/net/ethernet/ibm/ibmvnic.c | |||
@@ -1348,44 +1348,44 @@ static void init_sub_crqs(struct ibmvnic_adapter *adapter, int retry) | |||
1348 | crq.request_capability.cmd = REQUEST_CAPABILITY; | 1348 | crq.request_capability.cmd = REQUEST_CAPABILITY; |
1349 | 1349 | ||
1350 | crq.request_capability.capability = cpu_to_be16(REQ_TX_QUEUES); | 1350 | crq.request_capability.capability = cpu_to_be16(REQ_TX_QUEUES); |
1351 | crq.request_capability.number = cpu_to_be32(adapter->req_tx_queues); | 1351 | crq.request_capability.number = cpu_to_be64(adapter->req_tx_queues); |
1352 | ibmvnic_send_crq(adapter, &crq); | 1352 | ibmvnic_send_crq(adapter, &crq); |
1353 | 1353 | ||
1354 | crq.request_capability.capability = cpu_to_be16(REQ_RX_QUEUES); | 1354 | crq.request_capability.capability = cpu_to_be16(REQ_RX_QUEUES); |
1355 | crq.request_capability.number = cpu_to_be32(adapter->req_rx_queues); | 1355 | crq.request_capability.number = cpu_to_be64(adapter->req_rx_queues); |
1356 | ibmvnic_send_crq(adapter, &crq); | 1356 | ibmvnic_send_crq(adapter, &crq); |
1357 | 1357 | ||
1358 | crq.request_capability.capability = cpu_to_be16(REQ_RX_ADD_QUEUES); | 1358 | crq.request_capability.capability = cpu_to_be16(REQ_RX_ADD_QUEUES); |
1359 | crq.request_capability.number = cpu_to_be32(adapter->req_rx_add_queues); | 1359 | crq.request_capability.number = cpu_to_be64(adapter->req_rx_add_queues); |
1360 | ibmvnic_send_crq(adapter, &crq); | 1360 | ibmvnic_send_crq(adapter, &crq); |
1361 | 1361 | ||
1362 | crq.request_capability.capability = | 1362 | crq.request_capability.capability = |
1363 | cpu_to_be16(REQ_TX_ENTRIES_PER_SUBCRQ); | 1363 | cpu_to_be16(REQ_TX_ENTRIES_PER_SUBCRQ); |
1364 | crq.request_capability.number = | 1364 | crq.request_capability.number = |
1365 | cpu_to_be32(adapter->req_tx_entries_per_subcrq); | 1365 | cpu_to_be64(adapter->req_tx_entries_per_subcrq); |
1366 | ibmvnic_send_crq(adapter, &crq); | 1366 | ibmvnic_send_crq(adapter, &crq); |
1367 | 1367 | ||
1368 | crq.request_capability.capability = | 1368 | crq.request_capability.capability = |
1369 | cpu_to_be16(REQ_RX_ADD_ENTRIES_PER_SUBCRQ); | 1369 | cpu_to_be16(REQ_RX_ADD_ENTRIES_PER_SUBCRQ); |
1370 | crq.request_capability.number = | 1370 | crq.request_capability.number = |
1371 | cpu_to_be32(adapter->req_rx_add_entries_per_subcrq); | 1371 | cpu_to_be64(adapter->req_rx_add_entries_per_subcrq); |
1372 | ibmvnic_send_crq(adapter, &crq); | 1372 | ibmvnic_send_crq(adapter, &crq); |
1373 | 1373 | ||
1374 | crq.request_capability.capability = cpu_to_be16(REQ_MTU); | 1374 | crq.request_capability.capability = cpu_to_be16(REQ_MTU); |
1375 | crq.request_capability.number = cpu_to_be32(adapter->req_mtu); | 1375 | crq.request_capability.number = cpu_to_be64(adapter->req_mtu); |
1376 | ibmvnic_send_crq(adapter, &crq); | 1376 | ibmvnic_send_crq(adapter, &crq); |
1377 | 1377 | ||
1378 | if (adapter->netdev->flags & IFF_PROMISC) { | 1378 | if (adapter->netdev->flags & IFF_PROMISC) { |
1379 | if (adapter->promisc_supported) { | 1379 | if (adapter->promisc_supported) { |
1380 | crq.request_capability.capability = | 1380 | crq.request_capability.capability = |
1381 | cpu_to_be16(PROMISC_REQUESTED); | 1381 | cpu_to_be16(PROMISC_REQUESTED); |
1382 | crq.request_capability.number = cpu_to_be32(1); | 1382 | crq.request_capability.number = cpu_to_be64(1); |
1383 | ibmvnic_send_crq(adapter, &crq); | 1383 | ibmvnic_send_crq(adapter, &crq); |
1384 | } | 1384 | } |
1385 | } else { | 1385 | } else { |
1386 | crq.request_capability.capability = | 1386 | crq.request_capability.capability = |
1387 | cpu_to_be16(PROMISC_REQUESTED); | 1387 | cpu_to_be16(PROMISC_REQUESTED); |
1388 | crq.request_capability.number = cpu_to_be32(0); | 1388 | crq.request_capability.number = cpu_to_be64(0); |
1389 | ibmvnic_send_crq(adapter, &crq); | 1389 | ibmvnic_send_crq(adapter, &crq); |
1390 | } | 1390 | } |
1391 | 1391 | ||
@@ -2312,93 +2312,93 @@ static void handle_query_cap_rsp(union ibmvnic_crq *crq, | |||
2312 | switch (be16_to_cpu(crq->query_capability.capability)) { | 2312 | switch (be16_to_cpu(crq->query_capability.capability)) { |
2313 | case MIN_TX_QUEUES: | 2313 | case MIN_TX_QUEUES: |
2314 | adapter->min_tx_queues = | 2314 | adapter->min_tx_queues = |
2315 | be32_to_cpu(crq->query_capability.number); | 2315 | be64_to_cpu(crq->query_capability.number); |
2316 | netdev_dbg(netdev, "min_tx_queues = %lld\n", | 2316 | netdev_dbg(netdev, "min_tx_queues = %lld\n", |
2317 | adapter->min_tx_queues); | 2317 | adapter->min_tx_queues); |
2318 | break; | 2318 | break; |
2319 | case MIN_RX_QUEUES: | 2319 | case MIN_RX_QUEUES: |
2320 | adapter->min_rx_queues = | 2320 | adapter->min_rx_queues = |
2321 | be32_to_cpu(crq->query_capability.number); | 2321 | be64_to_cpu(crq->query_capability.number); |
2322 | netdev_dbg(netdev, "min_rx_queues = %lld\n", | 2322 | netdev_dbg(netdev, "min_rx_queues = %lld\n", |
2323 | adapter->min_rx_queues); | 2323 | adapter->min_rx_queues); |
2324 | break; | 2324 | break; |
2325 | case MIN_RX_ADD_QUEUES: | 2325 | case MIN_RX_ADD_QUEUES: |
2326 | adapter->min_rx_add_queues = | 2326 | adapter->min_rx_add_queues = |
2327 | be32_to_cpu(crq->query_capability.number); | 2327 | be64_to_cpu(crq->query_capability.number); |
2328 | netdev_dbg(netdev, "min_rx_add_queues = %lld\n", | 2328 | netdev_dbg(netdev, "min_rx_add_queues = %lld\n", |
2329 | adapter->min_rx_add_queues); | 2329 | adapter->min_rx_add_queues); |
2330 | break; | 2330 | break; |
2331 | case MAX_TX_QUEUES: | 2331 | case MAX_TX_QUEUES: |
2332 | adapter->max_tx_queues = | 2332 | adapter->max_tx_queues = |
2333 | be32_to_cpu(crq->query_capability.number); | 2333 | be64_to_cpu(crq->query_capability.number); |
2334 | netdev_dbg(netdev, "max_tx_queues = %lld\n", | 2334 | netdev_dbg(netdev, "max_tx_queues = %lld\n", |
2335 | adapter->max_tx_queues); | 2335 | adapter->max_tx_queues); |
2336 | break; | 2336 | break; |
2337 | case MAX_RX_QUEUES: | 2337 | case MAX_RX_QUEUES: |
2338 | adapter->max_rx_queues = | 2338 | adapter->max_rx_queues = |
2339 | be32_to_cpu(crq->query_capability.number); | 2339 | be64_to_cpu(crq->query_capability.number); |
2340 | netdev_dbg(netdev, "max_rx_queues = %lld\n", | 2340 | netdev_dbg(netdev, "max_rx_queues = %lld\n", |
2341 | adapter->max_rx_queues); | 2341 | adapter->max_rx_queues); |
2342 | break; | 2342 | break; |
2343 | case MAX_RX_ADD_QUEUES: | 2343 | case MAX_RX_ADD_QUEUES: |
2344 | adapter->max_rx_add_queues = | 2344 | adapter->max_rx_add_queues = |
2345 | be32_to_cpu(crq->query_capability.number); | 2345 | be64_to_cpu(crq->query_capability.number); |
2346 | netdev_dbg(netdev, "max_rx_add_queues = %lld\n", | 2346 | netdev_dbg(netdev, "max_rx_add_queues = %lld\n", |
2347 | adapter->max_rx_add_queues); | 2347 | adapter->max_rx_add_queues); |
2348 | break; | 2348 | break; |
2349 | case MIN_TX_ENTRIES_PER_SUBCRQ: | 2349 | case MIN_TX_ENTRIES_PER_SUBCRQ: |
2350 | adapter->min_tx_entries_per_subcrq = | 2350 | adapter->min_tx_entries_per_subcrq = |
2351 | be32_to_cpu(crq->query_capability.number); | 2351 | be64_to_cpu(crq->query_capability.number); |
2352 | netdev_dbg(netdev, "min_tx_entries_per_subcrq = %lld\n", | 2352 | netdev_dbg(netdev, "min_tx_entries_per_subcrq = %lld\n", |
2353 | adapter->min_tx_entries_per_subcrq); | 2353 | adapter->min_tx_entries_per_subcrq); |
2354 | break; | 2354 | break; |
2355 | case MIN_RX_ADD_ENTRIES_PER_SUBCRQ: | 2355 | case MIN_RX_ADD_ENTRIES_PER_SUBCRQ: |
2356 | adapter->min_rx_add_entries_per_subcrq = | 2356 | adapter->min_rx_add_entries_per_subcrq = |
2357 | be32_to_cpu(crq->query_capability.number); | 2357 | be64_to_cpu(crq->query_capability.number); |
2358 | netdev_dbg(netdev, "min_rx_add_entrs_per_subcrq = %lld\n", | 2358 | netdev_dbg(netdev, "min_rx_add_entrs_per_subcrq = %lld\n", |
2359 | adapter->min_rx_add_entries_per_subcrq); | 2359 | adapter->min_rx_add_entries_per_subcrq); |
2360 | break; | 2360 | break; |
2361 | case MAX_TX_ENTRIES_PER_SUBCRQ: | 2361 | case MAX_TX_ENTRIES_PER_SUBCRQ: |
2362 | adapter->max_tx_entries_per_subcrq = | 2362 | adapter->max_tx_entries_per_subcrq = |
2363 | be32_to_cpu(crq->query_capability.number); | 2363 | be64_to_cpu(crq->query_capability.number); |
2364 | netdev_dbg(netdev, "max_tx_entries_per_subcrq = %lld\n", | 2364 | netdev_dbg(netdev, "max_tx_entries_per_subcrq = %lld\n", |
2365 | adapter->max_tx_entries_per_subcrq); | 2365 | adapter->max_tx_entries_per_subcrq); |
2366 | break; | 2366 | break; |
2367 | case MAX_RX_ADD_ENTRIES_PER_SUBCRQ: | 2367 | case MAX_RX_ADD_ENTRIES_PER_SUBCRQ: |
2368 | adapter->max_rx_add_entries_per_subcrq = | 2368 | adapter->max_rx_add_entries_per_subcrq = |
2369 | be32_to_cpu(crq->query_capability.number); | 2369 | be64_to_cpu(crq->query_capability.number); |
2370 | netdev_dbg(netdev, "max_rx_add_entrs_per_subcrq = %lld\n", | 2370 | netdev_dbg(netdev, "max_rx_add_entrs_per_subcrq = %lld\n", |
2371 | adapter->max_rx_add_entries_per_subcrq); | 2371 | adapter->max_rx_add_entries_per_subcrq); |
2372 | break; | 2372 | break; |
2373 | case TCP_IP_OFFLOAD: | 2373 | case TCP_IP_OFFLOAD: |
2374 | adapter->tcp_ip_offload = | 2374 | adapter->tcp_ip_offload = |
2375 | be32_to_cpu(crq->query_capability.number); | 2375 | be64_to_cpu(crq->query_capability.number); |
2376 | netdev_dbg(netdev, "tcp_ip_offload = %lld\n", | 2376 | netdev_dbg(netdev, "tcp_ip_offload = %lld\n", |
2377 | adapter->tcp_ip_offload); | 2377 | adapter->tcp_ip_offload); |
2378 | break; | 2378 | break; |
2379 | case PROMISC_SUPPORTED: | 2379 | case PROMISC_SUPPORTED: |
2380 | adapter->promisc_supported = | 2380 | adapter->promisc_supported = |
2381 | be32_to_cpu(crq->query_capability.number); | 2381 | be64_to_cpu(crq->query_capability.number); |
2382 | netdev_dbg(netdev, "promisc_supported = %lld\n", | 2382 | netdev_dbg(netdev, "promisc_supported = %lld\n", |
2383 | adapter->promisc_supported); | 2383 | adapter->promisc_supported); |
2384 | break; | 2384 | break; |
2385 | case MIN_MTU: | 2385 | case MIN_MTU: |
2386 | adapter->min_mtu = be32_to_cpu(crq->query_capability.number); | 2386 | adapter->min_mtu = be64_to_cpu(crq->query_capability.number); |
2387 | netdev_dbg(netdev, "min_mtu = %lld\n", adapter->min_mtu); | 2387 | netdev_dbg(netdev, "min_mtu = %lld\n", adapter->min_mtu); |
2388 | break; | 2388 | break; |
2389 | case MAX_MTU: | 2389 | case MAX_MTU: |
2390 | adapter->max_mtu = be32_to_cpu(crq->query_capability.number); | 2390 | adapter->max_mtu = be64_to_cpu(crq->query_capability.number); |
2391 | netdev_dbg(netdev, "max_mtu = %lld\n", adapter->max_mtu); | 2391 | netdev_dbg(netdev, "max_mtu = %lld\n", adapter->max_mtu); |
2392 | break; | 2392 | break; |
2393 | case MAX_MULTICAST_FILTERS: | 2393 | case MAX_MULTICAST_FILTERS: |
2394 | adapter->max_multicast_filters = | 2394 | adapter->max_multicast_filters = |
2395 | be32_to_cpu(crq->query_capability.number); | 2395 | be64_to_cpu(crq->query_capability.number); |
2396 | netdev_dbg(netdev, "max_multicast_filters = %lld\n", | 2396 | netdev_dbg(netdev, "max_multicast_filters = %lld\n", |
2397 | adapter->max_multicast_filters); | 2397 | adapter->max_multicast_filters); |
2398 | break; | 2398 | break; |
2399 | case VLAN_HEADER_INSERTION: | 2399 | case VLAN_HEADER_INSERTION: |
2400 | adapter->vlan_header_insertion = | 2400 | adapter->vlan_header_insertion = |
2401 | be32_to_cpu(crq->query_capability.number); | 2401 | be64_to_cpu(crq->query_capability.number); |
2402 | if (adapter->vlan_header_insertion) | 2402 | if (adapter->vlan_header_insertion) |
2403 | netdev->features |= NETIF_F_HW_VLAN_STAG_TX; | 2403 | netdev->features |= NETIF_F_HW_VLAN_STAG_TX; |
2404 | netdev_dbg(netdev, "vlan_header_insertion = %lld\n", | 2404 | netdev_dbg(netdev, "vlan_header_insertion = %lld\n", |
@@ -2406,43 +2406,43 @@ static void handle_query_cap_rsp(union ibmvnic_crq *crq, | |||
2406 | break; | 2406 | break; |
2407 | case MAX_TX_SG_ENTRIES: | 2407 | case MAX_TX_SG_ENTRIES: |
2408 | adapter->max_tx_sg_entries = | 2408 | adapter->max_tx_sg_entries = |
2409 | be32_to_cpu(crq->query_capability.number); | 2409 | be64_to_cpu(crq->query_capability.number); |
2410 | netdev_dbg(netdev, "max_tx_sg_entries = %lld\n", | 2410 | netdev_dbg(netdev, "max_tx_sg_entries = %lld\n", |
2411 | adapter->max_tx_sg_entries); | 2411 | adapter->max_tx_sg_entries); |
2412 | break; | 2412 | break; |
2413 | case RX_SG_SUPPORTED: | 2413 | case RX_SG_SUPPORTED: |
2414 | adapter->rx_sg_supported = | 2414 | adapter->rx_sg_supported = |
2415 | be32_to_cpu(crq->query_capability.number); | 2415 | be64_to_cpu(crq->query_capability.number); |
2416 | netdev_dbg(netdev, "rx_sg_supported = %lld\n", | 2416 | netdev_dbg(netdev, "rx_sg_supported = %lld\n", |
2417 | adapter->rx_sg_supported); | 2417 | adapter->rx_sg_supported); |
2418 | break; | 2418 | break; |
2419 | case OPT_TX_COMP_SUB_QUEUES: | 2419 | case OPT_TX_COMP_SUB_QUEUES: |
2420 | adapter->opt_tx_comp_sub_queues = | 2420 | adapter->opt_tx_comp_sub_queues = |
2421 | be32_to_cpu(crq->query_capability.number); | 2421 | be64_to_cpu(crq->query_capability.number); |
2422 | netdev_dbg(netdev, "opt_tx_comp_sub_queues = %lld\n", | 2422 | netdev_dbg(netdev, "opt_tx_comp_sub_queues = %lld\n", |
2423 | adapter->opt_tx_comp_sub_queues); | 2423 | adapter->opt_tx_comp_sub_queues); |
2424 | break; | 2424 | break; |
2425 | case OPT_RX_COMP_QUEUES: | 2425 | case OPT_RX_COMP_QUEUES: |
2426 | adapter->opt_rx_comp_queues = | 2426 | adapter->opt_rx_comp_queues = |
2427 | be32_to_cpu(crq->query_capability.number); | 2427 | be64_to_cpu(crq->query_capability.number); |
2428 | netdev_dbg(netdev, "opt_rx_comp_queues = %lld\n", | 2428 | netdev_dbg(netdev, "opt_rx_comp_queues = %lld\n", |
2429 | adapter->opt_rx_comp_queues); | 2429 | adapter->opt_rx_comp_queues); |
2430 | break; | 2430 | break; |
2431 | case OPT_RX_BUFADD_Q_PER_RX_COMP_Q: | 2431 | case OPT_RX_BUFADD_Q_PER_RX_COMP_Q: |
2432 | adapter->opt_rx_bufadd_q_per_rx_comp_q = | 2432 | adapter->opt_rx_bufadd_q_per_rx_comp_q = |
2433 | be32_to_cpu(crq->query_capability.number); | 2433 | be64_to_cpu(crq->query_capability.number); |
2434 | netdev_dbg(netdev, "opt_rx_bufadd_q_per_rx_comp_q = %lld\n", | 2434 | netdev_dbg(netdev, "opt_rx_bufadd_q_per_rx_comp_q = %lld\n", |
2435 | adapter->opt_rx_bufadd_q_per_rx_comp_q); | 2435 | adapter->opt_rx_bufadd_q_per_rx_comp_q); |
2436 | break; | 2436 | break; |
2437 | case OPT_TX_ENTRIES_PER_SUBCRQ: | 2437 | case OPT_TX_ENTRIES_PER_SUBCRQ: |
2438 | adapter->opt_tx_entries_per_subcrq = | 2438 | adapter->opt_tx_entries_per_subcrq = |
2439 | be32_to_cpu(crq->query_capability.number); | 2439 | be64_to_cpu(crq->query_capability.number); |
2440 | netdev_dbg(netdev, "opt_tx_entries_per_subcrq = %lld\n", | 2440 | netdev_dbg(netdev, "opt_tx_entries_per_subcrq = %lld\n", |
2441 | adapter->opt_tx_entries_per_subcrq); | 2441 | adapter->opt_tx_entries_per_subcrq); |
2442 | break; | 2442 | break; |
2443 | case OPT_RXBA_ENTRIES_PER_SUBCRQ: | 2443 | case OPT_RXBA_ENTRIES_PER_SUBCRQ: |
2444 | adapter->opt_rxba_entries_per_subcrq = | 2444 | adapter->opt_rxba_entries_per_subcrq = |
2445 | be32_to_cpu(crq->query_capability.number); | 2445 | be64_to_cpu(crq->query_capability.number); |
2446 | netdev_dbg(netdev, "opt_rxba_entries_per_subcrq = %lld\n", | 2446 | netdev_dbg(netdev, "opt_rxba_entries_per_subcrq = %lld\n", |
2447 | adapter->opt_rxba_entries_per_subcrq); | 2447 | adapter->opt_rxba_entries_per_subcrq); |
2448 | break; | 2448 | break; |
diff --git a/drivers/net/ethernet/ibm/ibmvnic.h b/drivers/net/ethernet/ibm/ibmvnic.h index 1242925ad34c..1a9993cc79b5 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.h +++ b/drivers/net/ethernet/ibm/ibmvnic.h | |||
@@ -319,10 +319,8 @@ struct ibmvnic_capability { | |||
319 | u8 first; | 319 | u8 first; |
320 | u8 cmd; | 320 | u8 cmd; |
321 | __be16 capability; /* one of ibmvnic_capabilities */ | 321 | __be16 capability; /* one of ibmvnic_capabilities */ |
322 | __be64 number; | ||
322 | struct ibmvnic_rc rc; | 323 | struct ibmvnic_rc rc; |
323 | __be32 number; /*FIX: should be __be64, but I'm getting the least | ||
324 | * significant word first | ||
325 | */ | ||
326 | } __packed __aligned(8); | 324 | } __packed __aligned(8); |
327 | 325 | ||
328 | struct ibmvnic_login { | 326 | struct ibmvnic_login { |