aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/ibm
diff options
context:
space:
mode:
authorThomas Falcon <tlfalcon@linux.vnet.ibm.com>2016-03-01 11:20:09 -0500
committerDavid S. Miller <davem@davemloft.net>2016-03-03 16:36:31 -0500
commitde89e854bcc71ebaf30d415a0c015d1cb6c68856 (patch)
tree65884e23bdd3b857a46c63420720e07aa403c947 /drivers/net/ethernet/ibm
parent5d150a985520bbe3cb2aa1ceef24a7e32f20c15f (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.c62
-rw-r--r--drivers/net/ethernet/ibm/ibmvnic.h4
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
328struct ibmvnic_login { 326struct ibmvnic_login {