hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/net/ethernet/broadcom/cnic.c
....@@ -1918,7 +1918,6 @@
19181918 ret = cnic_alloc_bnx2x_conn_resc(dev, l5_cid);
19191919 if (ret) {
19201920 atomic_dec(&cp->iscsi_conn);
1921
- ret = 0;
19221921 goto done;
19231922 }
19241923 ret = cnic_setup_bnx2x_ctx(dev, wqes, num);
....@@ -3010,10 +3009,10 @@
30103009 return cnic_service_bnx2_queues(dev);
30113010 }
30123011
3013
-static void cnic_service_bnx2_msix(unsigned long data)
3012
+static void cnic_service_bnx2_msix(struct tasklet_struct *t)
30143013 {
3015
- struct cnic_dev *dev = (struct cnic_dev *) data;
3016
- struct cnic_local *cp = dev->cnic_priv;
3014
+ struct cnic_local *cp = from_tasklet(cp, t, cnic_irq_task);
3015
+ struct cnic_dev *dev = cp->dev;
30173016
30183017 cp->last_status_idx = cnic_service_bnx2_queues(dev);
30193018
....@@ -3135,10 +3134,10 @@
31353134 return last_status;
31363135 }
31373136
3138
-static void cnic_service_bnx2x_bh(unsigned long data)
3137
+static void cnic_service_bnx2x_bh(struct tasklet_struct *t)
31393138 {
3140
- struct cnic_dev *dev = (struct cnic_dev *) data;
3141
- struct cnic_local *cp = dev->cnic_priv;
3139
+ struct cnic_local *cp = from_tasklet(cp, t, cnic_irq_task);
3140
+ struct cnic_dev *dev = cp->dev;
31423141 struct bnx2x *bp = netdev_priv(dev->netdev);
31433142 u32 status_idx, new_status_idx;
31443143
....@@ -3312,7 +3311,7 @@
33123311 }
33133312 case CNIC_CTL_FCOE_STATS_GET_CMD:
33143313 ulp_type = CNIC_ULP_FCOE;
3315
- /* fall through */
3314
+ fallthrough;
33163315 case CNIC_CTL_ISCSI_STATS_GET_CMD:
33173316 cnic_hold(dev);
33183317 cnic_copy_ulp_stats(dev, ulp_type);
....@@ -4038,15 +4037,14 @@
40384037 case L5CM_RAMROD_CMD_ID_CLOSE: {
40394038 struct iscsi_kcqe *l5kcqe = (struct iscsi_kcqe *) kcqe;
40404039
4041
- if (l4kcqe->status != 0 || l5kcqe->completion_status != 0) {
4042
- netdev_warn(dev->netdev, "RAMROD CLOSE compl with status 0x%x completion status 0x%x\n",
4043
- l4kcqe->status, l5kcqe->completion_status);
4044
- opcode = L4_KCQE_OPCODE_VALUE_CLOSE_COMP;
4045
- /* Fall through */
4046
- } else {
4040
+ if (l4kcqe->status == 0 && l5kcqe->completion_status == 0)
40474041 break;
4048
- }
4042
+
4043
+ netdev_warn(dev->netdev, "RAMROD CLOSE compl with status 0x%x completion status 0x%x\n",
4044
+ l4kcqe->status, l5kcqe->completion_status);
4045
+ opcode = L4_KCQE_OPCODE_VALUE_CLOSE_COMP;
40494046 }
4047
+ fallthrough;
40504048 case L4_KCQE_OPCODE_VALUE_RESET_RECEIVED:
40514049 case L4_KCQE_OPCODE_VALUE_CLOSE_COMP:
40524050 case L4_KCQE_OPCODE_VALUE_RESET_COMP:
....@@ -4097,11 +4095,15 @@
40974095 {
40984096 struct cnic_local *cp = dev->cnic_priv;
40994097 u32 port_id;
4098
+ int i;
41004099
41014100 cp->csk_tbl = kvcalloc(MAX_CM_SK_TBL_SZ, sizeof(struct cnic_sock),
41024101 GFP_KERNEL);
41034102 if (!cp->csk_tbl)
41044103 return -ENOMEM;
4104
+
4105
+ for (i = 0; i < MAX_CM_SK_TBL_SZ; i++)
4106
+ atomic_set(&cp->csk_tbl[i].ref_count, 0);
41054107
41064108 port_id = prandom_u32();
41074109 port_id %= CNIC_LOCAL_PORT_RANGE;
....@@ -4456,8 +4458,7 @@
44564458 CNIC_WR(dev, base + BNX2_HC_CMD_TICKS_OFF, (64 << 16) | 220);
44574459
44584460 cp->last_status_idx = cp->status_blk.bnx2->status_idx;
4459
- tasklet_init(&cp->cnic_irq_task, cnic_service_bnx2_msix,
4460
- (unsigned long) dev);
4461
+ tasklet_setup(&cp->cnic_irq_task, cnic_service_bnx2_msix);
44614462 err = cnic_request_irq(dev);
44624463 if (err)
44634464 return err;
....@@ -4866,8 +4867,7 @@
48664867 struct cnic_eth_dev *ethdev = cp->ethdev;
48674868 int err = 0;
48684869
4869
- tasklet_init(&cp->cnic_irq_task, cnic_service_bnx2x_bh,
4870
- (unsigned long) dev);
4870
+ tasklet_setup(&cp->cnic_irq_task, cnic_service_bnx2x_bh);
48714871 if (ethdev->drv_state & CNIC_DRV_STATE_USING_MSIX)
48724872 err = cnic_request_irq(dev);
48734873
....@@ -5205,6 +5205,8 @@
52055205 cnic_init_bnx2x_tx_ring(dev, data);
52065206 cnic_init_bnx2x_rx_ring(dev, data);
52075207
5208
+ data->general.fp_hsi_ver = ETH_FP_HSI_VERSION;
5209
+
52085210 l5_data.phy_address.lo = udev->l2_buf_map & 0xffffffff;
52095211 l5_data.phy_address.hi = (u64) udev->l2_buf_map >> 32;
52105212
....@@ -5481,6 +5483,7 @@
54815483 cdev->unregister_device = cnic_unregister_device;
54825484 cdev->iscsi_nl_msg_recv = cnic_iscsi_nl_msg_recv;
54835485 cdev->get_fc_npiv_tbl = cnic_get_fc_npiv_tbl;
5486
+ atomic_set(&cdev->ref_count, 0);
54845487
54855488 cp = cdev->cnic_priv;
54865489 cp->dev = cdev;
....@@ -5731,7 +5734,7 @@
57315734 if (realdev) {
57325735 dev = cnic_from_netdev(realdev);
57335736 if (dev) {
5734
- vid |= VLAN_TAG_PRESENT;
5737
+ vid |= VLAN_CFI_MASK; /* make non-zero */
57355738 cnic_rcv_netevent(dev->cnic_priv, event, vid);
57365739 cnic_put(dev);
57375740 }