27
27
MODULE_AUTHOR("ServerEngines Corporation");
28
28
MODULE_LICENSE("GPL");
30
static unsigned int num_vfs;
31
module_param(num_vfs, uint, S_IRUGO);
32
MODULE_PARM_DESC(num_vfs, "Number of PCI VFs to initialize");
30
34
static ushort rx_frag_size = 2048;
31
static unsigned int num_vfs;
32
35
module_param(rx_frag_size, ushort, S_IRUGO);
33
module_param(num_vfs, uint, S_IRUGO);
34
36
MODULE_PARM_DESC(rx_frag_size, "Size of a fragment that holds rcvd data.");
35
MODULE_PARM_DESC(num_vfs, "Number of PCI VFs to initialize");
37
38
static DEFINE_PCI_DEVICE_TABLE(be_dev_ids) = {
38
39
{ PCI_DEVICE(BE_VENDOR_ID, BE_DEVICE_ID1) },
494
void be_link_status_update(struct be_adapter *adapter, u32 link_status)
499
void be_link_status_update(struct be_adapter *adapter, u8 link_status)
496
501
struct net_device *netdev = adapter->netdev;
498
/* when link status changes, link speed must be re-queried from card */
499
adapter->link_speed = -1;
500
if ((link_status & LINK_STATUS_MASK) == LINK_UP) {
503
if (!(adapter->flags & BE_FLAGS_LINK_STATUS_INIT)) {
504
netif_carrier_off(netdev);
505
adapter->flags |= BE_FLAGS_LINK_STATUS_INIT;
508
if ((link_status & LINK_STATUS_MASK) == LINK_UP)
501
509
netif_carrier_on(netdev);
502
dev_info(&adapter->pdev->dev, "%s: Link up\n", netdev->name);
504
511
netif_carrier_off(netdev);
505
dev_info(&adapter->pdev->dev, "%s: Link down\n", netdev->name);
509
514
static void be_tx_stats_update(struct be_tx_obj *txo,
549
554
wrb->frag_len = len & ETH_WRB_FRAG_LEN_MASK;
557
static inline u16 be_get_tx_vlan_tag(struct be_adapter *adapter,
563
vlan_tag = vlan_tx_tag_get(skb);
564
vlan_prio = (vlan_tag & VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT;
565
/* If vlan priority provided by OS is NOT in available bmap */
566
if (!(adapter->vlan_prio_bmap & (1 << vlan_prio)))
567
vlan_tag = (vlan_tag & ~VLAN_PRIO_MASK) |
568
adapter->recommended_prio;
552
573
static void wrb_fill_hdr(struct be_adapter *adapter, struct be_eth_hdr_wrb *hdr,
553
574
struct sk_buff *skb, u32 wrb_cnt, u32 len)
558
578
memset(hdr, 0, sizeof(*hdr));
585
605
if (vlan_tx_tag_present(skb)) {
586
606
AMAP_SET_BITS(struct amap_eth_hdr_wrb, vlan, hdr, 1);
587
vlan_tag = vlan_tx_tag_get(skb);
588
vlan_prio = (vlan_tag & VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT;
589
/* If vlan priority provided by OS is NOT in available bmap */
590
if (!(adapter->vlan_prio_bmap & (1 << vlan_prio)))
591
vlan_tag = (vlan_tag & ~VLAN_PRIO_MASK) |
592
adapter->recommended_prio;
607
vlan_tag = be_get_tx_vlan_tag(adapter, skb);
593
608
AMAP_SET_BITS(struct amap_eth_hdr_wrb, vlan_tag, hdr, vlan_tag);
692
707
u32 start = txq->head;
693
708
bool dummy_wrb, stopped = false;
710
/* For vlan tagged pkts, BE
711
* 1) calculates checksum even when CSO is not requested
712
* 2) calculates checksum wrongly for padded pkt less than
714
* As a workaround disable TX vlan offloading in such cases.
716
if (unlikely(vlan_tx_tag_present(skb) &&
717
(skb->ip_summed != CHECKSUM_PARTIAL || skb->len <= 60))) {
718
skb = skb_share_check(skb, GFP_ATOMIC);
722
skb = __vlan_put_tag(skb, be_get_tx_vlan_tag(adapter, skb));
695
729
wrb_cnt = wrb_cnt_for_skb(adapter, skb, &dummy_wrb);
697
731
copied = make_tx_wrbs(adapter, txq, skb, wrb_cnt, dummy_wrb);
747
782
static int be_vid_config(struct be_adapter *adapter, bool vf, u32 vf_num)
784
struct be_vf_cfg *vf_cfg = &adapter->vf_cfg[vf_num];
749
785
u16 vtag[BE_NUM_VLANS_SUPPORTED];
750
786
u16 ntags = 0, i;
755
if_handle = adapter->vf_cfg[vf_num].vf_if_handle;
756
vtag[0] = cpu_to_le16(adapter->vf_cfg[vf_num].vf_vlan_tag);
757
status = be_cmd_vlan_config(adapter, if_handle, vtag, 1, 1, 0);
790
vtag[0] = cpu_to_le16(vf_cfg->vlan_tag);
791
status = be_cmd_vlan_config(adapter, vf_cfg->if_handle, vtag,
760
795
/* No need to further configure vids if in promiscuous mode */
840
875
static int be_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
842
877
struct be_adapter *adapter = netdev_priv(netdev);
878
struct be_vf_cfg *vf_cfg = &adapter->vf_cfg[vf];
845
if (!adapter->sriov_enabled)
881
if (!sriov_enabled(adapter))
848
if (!is_valid_ether_addr(mac) || (vf >= num_vfs))
884
if (!is_valid_ether_addr(mac) || vf >= adapter->num_vfs)
851
if (adapter->vf_cfg[vf].vf_pmac_id != BE_INVALID_PMAC_ID)
852
status = be_cmd_pmac_del(adapter,
853
adapter->vf_cfg[vf].vf_if_handle,
854
adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
887
if (lancer_chip(adapter)) {
888
status = be_cmd_set_mac_list(adapter, mac, 1, vf + 1);
890
status = be_cmd_pmac_del(adapter, vf_cfg->if_handle,
891
vf_cfg->pmac_id, vf + 1);
856
status = be_cmd_pmac_add(adapter, mac,
857
adapter->vf_cfg[vf].vf_if_handle,
858
&adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
893
status = be_cmd_pmac_add(adapter, mac, vf_cfg->if_handle,
894
&vf_cfg->pmac_id, vf + 1);
861
898
dev_err(&adapter->pdev->dev, "MAC %pM set on VF %d Failed\n",
864
memcpy(adapter->vf_cfg[vf].vf_mac_addr, mac, ETH_ALEN);
901
memcpy(vf_cfg->mac_addr, mac, ETH_ALEN);
870
907
struct ifla_vf_info *vi)
872
909
struct be_adapter *adapter = netdev_priv(netdev);
910
struct be_vf_cfg *vf_cfg = &adapter->vf_cfg[vf];
874
if (!adapter->sriov_enabled)
912
if (!sriov_enabled(adapter))
915
if (vf >= adapter->num_vfs)
881
vi->tx_rate = adapter->vf_cfg[vf].vf_tx_rate;
882
vi->vlan = adapter->vf_cfg[vf].vf_vlan_tag;
919
vi->tx_rate = vf_cfg->tx_rate;
920
vi->vlan = vf_cfg->vlan_tag;
884
memcpy(&vi->mac, adapter->vf_cfg[vf].vf_mac_addr, ETH_ALEN);
922
memcpy(&vi->mac, vf_cfg->mac_addr, ETH_ALEN);
892
930
struct be_adapter *adapter = netdev_priv(netdev);
895
if (!adapter->sriov_enabled)
933
if (!sriov_enabled(adapter))
898
if ((vf >= num_vfs) || (vlan > 4095))
936
if (vf >= adapter->num_vfs || vlan > 4095)
902
adapter->vf_cfg[vf].vf_vlan_tag = vlan;
940
adapter->vf_cfg[vf].vlan_tag = vlan;
903
941
adapter->vlans_added++;
905
adapter->vf_cfg[vf].vf_vlan_tag = 0;
943
adapter->vf_cfg[vf].vlan_tag = 0;
906
944
adapter->vlans_added--;
920
958
struct be_adapter *adapter = netdev_priv(netdev);
923
if (!adapter->sriov_enabled)
961
if (!sriov_enabled(adapter))
926
if ((vf >= num_vfs) || (rate < 0))
932
adapter->vf_cfg[vf].vf_tx_rate = rate;
964
if (vf >= adapter->num_vfs)
967
if (rate < 100 || rate > 10000) {
968
dev_err(&adapter->pdev->dev,
969
"tx rate must be between 100 and 10000 Mbps\n");
933
973
status = be_cmd_set_qos(adapter, rate / 10, vf + 1);
936
dev_info(&adapter->pdev->dev,
976
dev_err(&adapter->pdev->dev,
937
977
"tx rate %d on VF %d failed\n", rate, vf);
979
adapter->vf_cfg[vf].tx_rate = rate;
1965
2006
mcc_compl = be_process_mcc(adapter, &status);
1967
2008
if (mcc_compl) {
1968
struct be_mcc_obj *mcc_obj = &adapter->mcc_obj;
1969
2009
be_cq_notify(adapter, mcc_obj->cq.id, true, mcc_compl);
1972
2012
napi_complete(napi);
2014
/* Arm CQ again to regenerate EQEs for Lancer in INTx mode */
2015
if (lancer_chip(adapter) && !msix_enabled(adapter)) {
2016
for_all_tx_queues(adapter, txo, i)
2017
be_cq_notify(adapter, txo->cq.id, true, 0);
2019
be_cq_notify(adapter, mcc_obj->cq.id, true, 0);
1974
2022
be_eq_notify(adapter, tx_eq->q.id, true, false, 0);
1975
2023
adapter->drv_stats.tx_events++;
2039
static void be_worker(struct work_struct *work)
2041
struct be_adapter *adapter =
2042
container_of(work, struct be_adapter, work.work);
2043
struct be_rx_obj *rxo;
2046
if (!adapter->ue_detected)
2047
be_detect_dump_ue(adapter);
2049
/* when interrupts are not yet enabled, just reap any pending
2050
* mcc completions */
2051
if (!netif_running(adapter->netdev)) {
2052
int mcc_compl, status = 0;
2054
mcc_compl = be_process_mcc(adapter, &status);
2057
struct be_mcc_obj *mcc_obj = &adapter->mcc_obj;
2058
be_cq_notify(adapter, mcc_obj->cq.id, false, mcc_compl);
2064
if (!adapter->stats_cmd_sent) {
2065
if (lancer_chip(adapter))
2066
lancer_cmd_get_pport_stats(adapter,
2067
&adapter->stats_cmd);
2069
be_cmd_get_stats(adapter, &adapter->stats_cmd);
2072
for_all_rx_queues(adapter, rxo, i) {
2073
be_rx_eqd_update(adapter, rxo);
2075
if (rxo->rx_post_starved) {
2076
rxo->rx_post_starved = false;
2077
be_post_rx_frags(rxo, GFP_KERNEL);
2082
adapter->work_counter++;
2083
schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000));
2086
2091
static void be_msix_disable(struct be_adapter *adapter)
2088
2093
if (msix_enabled(adapter)) {
2119
2124
static int be_sriov_enable(struct be_adapter *adapter)
2121
2126
be_check_sriov_fn_type(adapter);
2122
2128
#ifdef CONFIG_PCI_IOV
2123
2129
if (be_physfn(adapter) && num_vfs) {
2124
2130
int status, pos;
2127
2133
pos = pci_find_ext_capability(adapter->pdev,
2128
2134
PCI_EXT_CAP_ID_SRIOV);
2129
2135
pci_read_config_word(adapter->pdev,
2130
pos + PCI_SRIOV_TOTAL_VF, &nvfs);
2136
pos + PCI_SRIOV_TOTAL_VF, &dev_vfs);
2132
if (num_vfs > nvfs) {
2138
adapter->num_vfs = min_t(u16, num_vfs, dev_vfs);
2139
if (adapter->num_vfs != num_vfs)
2133
2140
dev_info(&adapter->pdev->dev,
2134
"Device supports %d VFs and not %d\n",
2139
status = pci_enable_sriov(adapter->pdev, num_vfs);
2140
adapter->sriov_enabled = status ? false : true;
2142
if (adapter->sriov_enabled) {
2141
"Device supports %d VFs and not %d\n",
2142
adapter->num_vfs, num_vfs);
2144
status = pci_enable_sriov(adapter->pdev, adapter->num_vfs);
2146
adapter->num_vfs = 0;
2148
if (adapter->num_vfs) {
2143
2149
adapter->vf_cfg = kcalloc(num_vfs,
2144
2150
sizeof(struct be_vf_cfg),
2366
2372
if (be_multi_rxq(adapter)) {
2367
for_all_rss_queues(adapter, rxo, i)
2368
rsstable[i] = rxo->rss_id;
2373
for (j = 0; j < 128; j += adapter->num_rx_qs - 1) {
2374
for_all_rss_queues(adapter, rxo, i) {
2377
rsstable[j + i] = rxo->rss_id;
2380
rc = be_cmd_rss_config(adapter, rsstable, 128);
2370
rc = be_cmd_rss_config(adapter, rsstable,
2371
adapter->num_rx_qs - 1);
2466
2482
int status = 0;
2467
2483
u8 mac[ETH_ALEN];
2484
struct be_vf_cfg *vf_cfg;
2469
2486
be_vf_eth_addr_generate(adapter, mac);
2471
for (vf = 0; vf < num_vfs; vf++) {
2472
status = be_cmd_pmac_add(adapter, mac,
2473
adapter->vf_cfg[vf].vf_if_handle,
2474
&adapter->vf_cfg[vf].vf_pmac_id,
2488
for_all_vfs(adapter, vf_cfg, vf) {
2489
if (lancer_chip(adapter)) {
2490
status = be_cmd_set_mac_list(adapter, mac, 1, vf + 1);
2492
status = be_cmd_pmac_add(adapter, mac,
2494
&vf_cfg->pmac_id, vf + 1);
2477
2498
dev_err(&adapter->pdev->dev,
2478
"Mac address add failed for VF %d\n", vf);
2499
"Mac address assignment failed for VF %d\n", vf);
2480
memcpy(adapter->vf_cfg[vf].vf_mac_addr, mac, ETH_ALEN);
2501
memcpy(vf_cfg->mac_addr, mac, ETH_ALEN);
2487
2508
static void be_vf_clear(struct be_adapter *adapter)
2510
struct be_vf_cfg *vf_cfg;
2491
for (vf = 0; vf < num_vfs; vf++) {
2492
if (adapter->vf_cfg[vf].vf_pmac_id != BE_INVALID_PMAC_ID)
2493
be_cmd_pmac_del(adapter,
2494
adapter->vf_cfg[vf].vf_if_handle,
2495
adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
2513
for_all_vfs(adapter, vf_cfg, vf) {
2514
if (lancer_chip(adapter))
2515
be_cmd_set_mac_list(adapter, NULL, 0, vf + 1);
2517
be_cmd_pmac_del(adapter, vf_cfg->if_handle,
2518
vf_cfg->pmac_id, vf + 1);
2520
be_cmd_if_destroy(adapter, vf_cfg->if_handle, vf + 1);
2498
for (vf = 0; vf < num_vfs; vf++)
2499
if (adapter->vf_cfg[vf].vf_if_handle)
2500
be_cmd_if_destroy(adapter,
2501
adapter->vf_cfg[vf].vf_if_handle, vf + 1);
2504
2524
static int be_clear(struct be_adapter *adapter)
2506
if (be_physfn(adapter) && adapter->sriov_enabled)
2526
if (sriov_enabled(adapter))
2507
2527
be_vf_clear(adapter);
2509
2529
be_cmd_if_destroy(adapter, adapter->if_handle, 0);
2511
2531
be_mcc_queues_destroy(adapter);
2512
2532
be_rx_queues_destroy(adapter);
2513
2533
be_tx_queues_destroy(adapter);
2514
adapter->eq_next_idx = 0;
2516
adapter->be3_native = false;
2517
adapter->promiscuous = false;
2519
2535
/* tell fw we're done with firing cmds */
2520
2536
be_cmd_fw_clean(adapter);
2540
static void be_vf_setup_init(struct be_adapter *adapter)
2542
struct be_vf_cfg *vf_cfg;
2545
for_all_vfs(adapter, vf_cfg, vf) {
2546
vf_cfg->if_handle = -1;
2547
vf_cfg->pmac_id = -1;
2524
2551
static int be_vf_setup(struct be_adapter *adapter)
2553
struct be_vf_cfg *vf_cfg;
2526
2554
u32 cap_flags, en_flags, vf;
2530
cap_flags = en_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST;
2531
for (vf = 0; vf < num_vfs; vf++) {
2558
be_vf_setup_init(adapter);
2560
cap_flags = en_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST |
2561
BE_IF_FLAGS_MULTICAST;
2562
for_all_vfs(adapter, vf_cfg, vf) {
2532
2563
status = be_cmd_if_create(adapter, cap_flags, en_flags, NULL,
2533
&adapter->vf_cfg[vf].vf_if_handle,
2537
adapter->vf_cfg[vf].vf_pmac_id = BE_INVALID_PMAC_ID;
2540
if (!lancer_chip(adapter)) {
2541
status = be_vf_eth_addr_config(adapter);
2546
for (vf = 0; vf < num_vfs; vf++) {
2564
&vf_cfg->if_handle, NULL, vf + 1);
2569
status = be_vf_eth_addr_config(adapter);
2573
for_all_vfs(adapter, vf_cfg, vf) {
2547
2574
status = be_cmd_link_status_query(adapter, NULL, &lnk_speed,
2551
adapter->vf_cfg[vf].vf_tx_rate = lnk_speed * 10;
2578
vf_cfg->tx_rate = lnk_speed * 10;
2585
static void be_setup_init(struct be_adapter *adapter)
2587
adapter->vlan_prio_bmap = 0xff;
2588
adapter->link_speed = -1;
2589
adapter->if_handle = -1;
2590
adapter->be3_native = false;
2591
adapter->promiscuous = false;
2592
adapter->eq_next_idx = 0;
2595
static int be_configure_mac_from_list(struct be_adapter *adapter, u8 *mac)
2598
int status = be_cmd_get_mac_from_list(adapter, 0, &pmac_id);
2601
status = be_cmd_mac_addr_query(adapter, mac,
2602
MAC_ADDRESS_TYPE_NETWORK,
2603
false, adapter->if_handle, pmac_id);
2606
status = be_cmd_pmac_add(adapter, mac, adapter->if_handle,
2607
&adapter->pmac_id, 0);
2558
2612
static int be_setup(struct be_adapter *adapter)
2560
2614
struct net_device *netdev = adapter->netdev;
2561
2615
u32 cap_flags, en_flags;
2562
2616
u32 tx_fc, rx_fc;
2564
2618
u8 mac[ETH_ALEN];
2619
struct be_tx_obj *txo;
2566
/* Allow all priorities by default. A GRP5 evt may modify this */
2567
adapter->vlan_prio_bmap = 0xff;
2568
adapter->link_speed = -1;
2621
be_setup_init(adapter);
2570
2623
be_cmd_req_native_mode(adapter);
2603
2657
if (status != 0)
2606
/* For BEx, the VF's permanent mac queried from card is incorrect.
2607
* Query the mac configued by the PF using if_handle
2609
if (!be_physfn(adapter) && !lancer_chip(adapter)) {
2610
status = be_cmd_mac_addr_query(adapter, mac,
2611
MAC_ADDRESS_TYPE_NETWORK, false, adapter->if_handle);
2660
for_all_tx_queues(adapter, txo, i) {
2661
status = be_cmd_txq_create(adapter, &txo->q, &txo->cq);
2666
/* The VF's permanent mac queried from card is incorrect.
2667
* For BEx: Query the mac configued by the PF using if_handle
2668
* For Lancer: Get and use mac_list to obtain mac address.
2670
if (!be_physfn(adapter)) {
2671
if (lancer_chip(adapter))
2672
status = be_configure_mac_from_list(adapter, mac);
2674
status = be_cmd_mac_addr_query(adapter, mac,
2675
MAC_ADDRESS_TYPE_NETWORK, false,
2676
adapter->if_handle, 0);
2613
2678
memcpy(adapter->netdev->dev_addr, mac, ETH_ALEN);
2614
2679
memcpy(adapter->netdev->perm_addr, mac, ETH_ALEN);
2624
2689
be_set_rx_mode(adapter->netdev);
2626
2691
status = be_cmd_get_flow_control(adapter, &tx_fc, &rx_fc);
2692
/* For Lancer: It is legal for this cmd to fail on VF */
2693
if (status && (be_physfn(adapter) || !lancer_chip(adapter)))
2629
2696
if (rx_fc != adapter->rx_fc || tx_fc != adapter->tx_fc) {
2630
2697
status = be_cmd_set_flow_control(adapter, adapter->tx_fc,
2631
2698
adapter->rx_fc);
2699
/* For Lancer: It is legal for this cmd to fail on VF */
2700
if (status && (be_physfn(adapter) || !lancer_chip(adapter)))
2636
2704
pcie_set_readrq(adapter->pdev, 4096);
2638
if (be_physfn(adapter) && adapter->sriov_enabled) {
2706
if (sriov_enabled(adapter)) {
2639
2707
status = be_vf_setup(adapter);
2718
#ifdef CONFIG_NET_POLL_CONTROLLER
2719
static void be_netpoll(struct net_device *netdev)
2721
struct be_adapter *adapter = netdev_priv(netdev);
2722
struct be_rx_obj *rxo;
2725
event_handle(adapter, &adapter->tx_eq, false);
2726
for_all_rx_queues(adapter, rxo, i)
2727
event_handle(adapter, &rxo->rx_eq, true);
2650
2731
#define FW_FILE_HDR_SIGN "ServerEngines Corp. "
2651
2732
static bool be_flash_redboot(struct be_adapter *adapter,
2652
2733
const u8 *p, u32 img_start, int image_size,
2995
3076
.ndo_set_vf_mac = be_set_vf_mac,
2996
3077
.ndo_set_vf_vlan = be_set_vf_vlan,
2997
3078
.ndo_set_vf_tx_rate = be_set_vf_tx_rate,
2998
.ndo_get_vf_config = be_get_vf_config
3079
.ndo_get_vf_config = be_get_vf_config,
3080
#ifdef CONFIG_NET_POLL_CONTROLLER
3081
.ndo_poll_controller = be_netpoll,
3001
3085
static void be_netdev_init(struct net_device *netdev)
3401
static void lancer_test_and_recover_fn_err(struct be_adapter *adapter)
3406
if (adapter->eeh_err || adapter->ue_detected)
3409
sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET);
3411
if (sliport_status & SLIPORT_STATUS_ERR_MASK) {
3412
dev_err(&adapter->pdev->dev,
3413
"Adapter in error state."
3414
"Trying to recover.\n");
3416
status = lancer_test_and_set_rdy_state(adapter);
3420
netif_device_detach(adapter->netdev);
3422
if (netif_running(adapter->netdev))
3423
be_close(adapter->netdev);
3427
adapter->fw_timeout = false;
3429
status = be_setup(adapter);
3433
if (netif_running(adapter->netdev)) {
3434
status = be_open(adapter->netdev);
3439
netif_device_attach(adapter->netdev);
3441
dev_err(&adapter->pdev->dev,
3442
"Adapter error recovery succeeded\n");
3446
dev_err(&adapter->pdev->dev,
3447
"Adapter error recovery failed\n");
3450
static void be_worker(struct work_struct *work)
3452
struct be_adapter *adapter =
3453
container_of(work, struct be_adapter, work.work);
3454
struct be_rx_obj *rxo;
3457
if (lancer_chip(adapter))
3458
lancer_test_and_recover_fn_err(adapter);
3460
be_detect_dump_ue(adapter);
3462
/* when interrupts are not yet enabled, just reap any pending
3463
* mcc completions */
3464
if (!netif_running(adapter->netdev)) {
3465
int mcc_compl, status = 0;
3467
mcc_compl = be_process_mcc(adapter, &status);
3470
struct be_mcc_obj *mcc_obj = &adapter->mcc_obj;
3471
be_cq_notify(adapter, mcc_obj->cq.id, false, mcc_compl);
3477
if (!adapter->stats_cmd_sent) {
3478
if (lancer_chip(adapter))
3479
lancer_cmd_get_pport_stats(adapter,
3480
&adapter->stats_cmd);
3482
be_cmd_get_stats(adapter, &adapter->stats_cmd);
3485
for_all_rx_queues(adapter, rxo, i) {
3486
be_rx_eqd_update(adapter, rxo);
3488
if (rxo->rx_post_starved) {
3489
rxo->rx_post_starved = false;
3490
be_post_rx_frags(rxo, GFP_KERNEL);
3495
adapter->work_counter++;
3496
schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000));
3316
3499
static int __devinit be_probe(struct pci_dev *pdev,
3317
3500
const struct pci_device_id *pdev_id)