Skip to content

Commit ff91a55

Browse files
committed
Merge branch 'qlcnic'
Rajesh Borundia says: ==================== qlcnic: Bug fixes The patch series contains following bug fixes. * Aggregating tx stats in adapter variable was resulting in increase of stats when user runs ifconfig command and no traffic is running. Instead aggregate tx stats in local variable and then assign it to adapter struct variable. * Set_driver_version was called after registering netdev which was resulting in a race between FLR in open handler and set_driver_version command as open handler can be called simulatneously on another cpu even if probe is not complete. So call this command before registering netdev. * dcbnl_ops should be initialized before registering netdev as they are referenced in open handler. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents f2294eb + cd1560e commit ff91a55

File tree

3 files changed

+19
-11
lines changed

3 files changed

+19
-11
lines changed

drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ int qlcnic_82xx_issue_cmd(struct qlcnic_adapter *adapter,
136136
rsp = qlcnic_poll_rsp(adapter);
137137

138138
if (rsp == QLCNIC_CDRP_RSP_TIMEOUT) {
139-
dev_err(&pdev->dev, "card response timeout.\n");
139+
dev_err(&pdev->dev, "command timeout, response = 0x%x\n", rsp);
140140
cmd->rsp.arg[0] = QLCNIC_RCODE_TIMEOUT;
141141
} else if (rsp == QLCNIC_CDRP_RSP_FAIL) {
142142
cmd->rsp.arg[0] = QLCRD32(adapter, QLCNIC_CDRP_ARG(1), &err);

drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,17 +1290,25 @@ static u64 *qlcnic_fill_stats(u64 *data, void *stats, int type)
12901290

12911291
void qlcnic_update_stats(struct qlcnic_adapter *adapter)
12921292
{
1293+
struct qlcnic_tx_queue_stats tx_stats;
12931294
struct qlcnic_host_tx_ring *tx_ring;
12941295
int ring;
12951296

1297+
memset(&tx_stats, 0, sizeof(tx_stats));
12961298
for (ring = 0; ring < adapter->drv_tx_rings; ring++) {
12971299
tx_ring = &adapter->tx_ring[ring];
1298-
adapter->stats.xmit_on += tx_ring->tx_stats.xmit_on;
1299-
adapter->stats.xmit_off += tx_ring->tx_stats.xmit_off;
1300-
adapter->stats.xmitcalled += tx_ring->tx_stats.xmit_called;
1301-
adapter->stats.xmitfinished += tx_ring->tx_stats.xmit_finished;
1302-
adapter->stats.txbytes += tx_ring->tx_stats.tx_bytes;
1300+
tx_stats.xmit_on += tx_ring->tx_stats.xmit_on;
1301+
tx_stats.xmit_off += tx_ring->tx_stats.xmit_off;
1302+
tx_stats.xmit_called += tx_ring->tx_stats.xmit_called;
1303+
tx_stats.xmit_finished += tx_ring->tx_stats.xmit_finished;
1304+
tx_stats.tx_bytes += tx_ring->tx_stats.tx_bytes;
13031305
}
1306+
1307+
adapter->stats.xmit_on = tx_stats.xmit_on;
1308+
adapter->stats.xmit_off = tx_stats.xmit_off;
1309+
adapter->stats.xmitcalled = tx_stats.xmit_called;
1310+
adapter->stats.xmitfinished = tx_stats.xmit_finished;
1311+
adapter->stats.txbytes = tx_stats.tx_bytes;
13041312
}
13051313

13061314
static u64 *qlcnic_fill_tx_queue_stats(u64 *data, void *stats)

drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2323,14 +2323,14 @@ qlcnic_setup_netdev(struct qlcnic_adapter *adapter, struct net_device *netdev,
23232323
if (err)
23242324
return err;
23252325

2326+
qlcnic_dcb_init_dcbnl_ops(adapter->dcb);
2327+
23262328
err = register_netdev(netdev);
23272329
if (err) {
23282330
dev_err(&pdev->dev, "failed to register net device\n");
23292331
return err;
23302332
}
23312333

2332-
qlcnic_dcb_init_dcbnl_ops(adapter->dcb);
2333-
23342334
return 0;
23352335
}
23362336

@@ -2623,13 +2623,13 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
26232623
if (err)
26242624
goto err_out_disable_mbx_intr;
26252625

2626+
if (adapter->portnum == 0)
2627+
qlcnic_set_drv_version(adapter);
2628+
26262629
err = qlcnic_setup_netdev(adapter, netdev, pci_using_dac);
26272630
if (err)
26282631
goto err_out_disable_mbx_intr;
26292632

2630-
if (adapter->portnum == 0)
2631-
qlcnic_set_drv_version(adapter);
2632-
26332633
pci_set_drvdata(pdev, adapter);
26342634

26352635
if (qlcnic_82xx_check(adapter))

0 commit comments

Comments
 (0)