]> git.openfabrics.org - ~aditr/compat-rdma.git/commitdiff
Fix qede Backports
authorMichal Kalderon <michal.kalderon@cavium.com>
Wed, 5 Sep 2018 15:55:12 +0000 (18:55 +0300)
committerVladimir Sokolovsky <vlad@mellanox.com>
Wed, 5 Sep 2018 16:38:17 +0000 (11:38 -0500)
Modified configure file to define some of the CONFIGs to be "y" instead of "m" for
certain modes.

Added another patch for RHEL7.4 backports
Fixed RHEL7.5 backport ( ndev extended min/max mtu )

Signed-off-by: Michal Kalderon <michal.kalderon@cavium.com>
configure
patches/0006-BACKPORT-qede.patch
patches/0027-qede-Backport-to-RHEL7.4.patch [new file with mode: 0644]

index 85a1ef5fb7531e09b861cec84ebc7eb37fc11d1d..323b0eba798b108ffcf386bcd0b990192768068d 100755 (executable)
--- a/configure
+++ b/configure
@@ -851,11 +851,11 @@ main()
                                ;;
                        --with-qedr-mod)
                                CONFIG_QED="m"
-                               CONFIG_QED_LL2="m"
-                               CONFIG_QED_RDMA="m"
+                               CONFIG_QED_LL2="y"
+                               CONFIG_QED_RDMA="y"
                                CONFIG_QEDE="m"
                                CONFIG_INFINIBAND_QEDR="m"
-                               CONFIG_QED_OOO="m"
+                               CONFIG_QED_OOO="y"
                                ;;
                        --without-qedr-mod)
                                CONFIG_QED=
index a9569bbe80485992430a90433269c7a31ae42256..c75f36890036aa75d2a7441244227eeadb60f255 100644 (file)
@@ -1,3 +1,14 @@
+From 758572e3a297d48aac33aa65781deeb4f5f0bc6e Mon Sep 17 00:00:00 2001
+From: Michal Kalderon <michal.kalderon@cavium.com>
+Date: Wed, 5 Sep 2018 10:34:05 +0300
+Subject: [PATCH 2/4] qede: RHEL 7.5 backport
+
+---
+ drivers/net/ethernet/qlogic/qede/qede.h      | 11 +++++++++++
+ drivers/net/ethernet/qlogic/qede/qede_fp.c   |  3 +++
+ drivers/net/ethernet/qlogic/qede/qede_main.c | 25 +++++++++++++++++++++++++
+ 3 files changed, 39 insertions(+)
+
 diff --git a/drivers/net/ethernet/qlogic/qede/qede.h b/drivers/net/ethernet/qlogic/qede/qede.h
 index 9935978..e70c96a 100644
 --- a/drivers/net/ethernet/qlogic/qede/qede.h
@@ -37,7 +48,7 @@ index 9935978..e70c96a 100644
  
  union db_prod {
 diff --git a/drivers/net/ethernet/qlogic/qede/qede_fp.c b/drivers/net/ethernet/qlogic/qede/qede_fp.c
-index 1494130..f612559 100644
+index 1494130..e906d04 100644
 --- a/drivers/net/ethernet/qlogic/qede/qede_fp.c
 +++ b/drivers/net/ethernet/qlogic/qede/qede_fp.c
 @@ -1004,7 +1004,10 @@ static bool qede_rx_xdp(struct qede_dev *edev,
@@ -52,7 +63,7 @@ index 1494130..f612559 100644
        /* Queues always have a full reset currently, so for the time
         * being until there's atomic program replace just mark read
 diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
-index f6655e2..fcf3edc 100644
+index f6655e2..7cc9c6e 100644
 --- a/drivers/net/ethernet/qlogic/qede/qede_main.c
 +++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
 @@ -536,7 +536,9 @@ static const struct net_device_ops qede_netdev_ops = {
@@ -122,19 +133,21 @@ index f6655e2..fcf3edc 100644
  };
  
  /* -------------------------------------------------------------------------
-@@ -720,9 +736,10 @@ static void qede_init_ndev(struct qede_dev *edev)
+@@ -720,8 +736,13 @@ static void qede_init_ndev(struct qede_dev *edev)
        ndev->hw_features = hw_features;
  
        /* MTU range: 46 - 9600 */
 +#ifdef HAVE_NET_DEVICE_MAX_MTU
        ndev->min_mtu = ETH_ZLEN - ETH_HLEN;
        ndev->max_mtu = QEDE_MAX_JUMBO_PACKET_SIZE;
--
++#elif defined(HAVE_NET_DEVICE_MIN_MAX_MTU_EXTENDED)
++        ndev->extended->min_mtu = ETH_ZLEN - ETH_HLEN;
++        ndev->extended->max_mtu = QEDE_MAX_JUMBO_PACKET_SIZE;
 +#endif
        /* Set network device HW mac */
        ether_addr_copy(edev->ndev->dev_addr, edev->dev_info.common.hw_mac);
-@@ -769,8 +786,10 @@ static void qede_free_fp_array(struct qede_dev *edev)
+@@ -769,8 +790,10 @@ static void qede_free_fp_array(struct qede_dev *edev)
                         * didn't register xdp_rxq_info yet.
                         * Implicit only (fp->type & QEDE_FASTPATH_RX)
                         */
@@ -145,7 +158,7 @@ index f6655e2..fcf3edc 100644
                        kfree(fp->rxq);
                        kfree(fp->xdp_tx);
                        kfree(fp->txq);
-@@ -1500,8 +1519,10 @@ static void qede_init_fp(struct qede_dev *edev)
+@@ -1500,8 +1523,10 @@ static void qede_init_fp(struct qede_dev *edev)
                        fp->rxq->dev = &edev->pdev->dev;
  
                        /* Driver have no error path from here */
@@ -156,3 +169,6 @@ index f6655e2..fcf3edc 100644
                }
  
                if (fp->type & QEDE_FASTPATH_TX) {
+-- 
+1.8.3.1
+
diff --git a/patches/0027-qede-Backport-to-RHEL7.4.patch b/patches/0027-qede-Backport-to-RHEL7.4.patch
new file mode 100644 (file)
index 0000000..c97cb68
--- /dev/null
@@ -0,0 +1,291 @@
+From b1233de057b8152569881c113aaeb0993c360480 Mon Sep 17 00:00:00 2001
+From: Michal Kalderon <michal.kalderon@cavium.com>
+Date: Wed, 5 Sep 2018 12:42:53 +0300
+Subject: [PATCH] qede: Backport to RHEL7.4
+
+Some fixes required for RHEL7.4 compilation
+
+Signed-off-by: Michal Kalderon <michal.kalderon@cavium.com>
+---
+ drivers/net/ethernet/qlogic/qede/qede.h        |  2 ++
+ drivers/net/ethernet/qlogic/qede/qede_dcbnl.c  | 11 ++++++++-
+ drivers/net/ethernet/qlogic/qede/qede_filter.c |  2 ++
+ drivers/net/ethernet/qlogic/qede/qede_fp.c     | 17 +++++++++++++-
+ drivers/net/ethernet/qlogic/qede/qede_main.c   | 32 ++++++++++++++++++++++----
+ 5 files changed, 58 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/net/ethernet/qlogic/qede/qede.h b/drivers/net/ethernet/qlogic/qede/qede.h
+index e70c96a..0386a7a 100644
+--- a/drivers/net/ethernet/qlogic/qede/qede.h
++++ b/drivers/net/ethernet/qlogic/qede/qede.h
+@@ -518,7 +518,9 @@ void qede_fill_rss_params(struct qede_dev *edev,
+ void qede_udp_tunnel_add(struct net_device *dev, struct udp_tunnel_info *ti);
+ void qede_udp_tunnel_del(struct net_device *dev, struct udp_tunnel_info *ti);
++#ifdef HAVE_NETDEV_BPF
+ int qede_xdp(struct net_device *dev, struct netdev_bpf *xdp);
++#endif
+ #ifdef CONFIG_DCB
+ void qede_set_dcbnl_ops(struct net_device *ndev);
+diff --git a/drivers/net/ethernet/qlogic/qede/qede_dcbnl.c b/drivers/net/ethernet/qlogic/qede/qede_dcbnl.c
+index 6e7747b..355ac48 100644
+--- a/drivers/net/ethernet/qlogic/qede/qede_dcbnl.c
++++ b/drivers/net/ethernet/qlogic/qede/qede_dcbnl.c
+@@ -104,8 +104,11 @@ static u8 qede_dcbnl_getpfcstate(struct net_device *netdev)
+       return edev->ops->dcb->getpfcstate(edev->cdev);
+ }
+-
++#ifdef NDO_GETAPP_RETURNS_INT
+ static int qede_dcbnl_getapp(struct net_device *netdev, u8 idtype, u16 id)
++#else
++static u8 qede_dcbnl_getapp(struct net_device *netdev, u8 idtype, u16 id)
++#endif
+ {
+       struct qede_dev *edev = netdev_priv(netdev);
+@@ -174,8 +177,14 @@ static void qede_dcbnl_setpfcstate(struct net_device *netdev, u8 state)
+       return edev->ops->dcb->setpfcstate(edev->cdev, state);
+ }
++#ifdef NDO_SETAPP_RETURNS_INT
+ static int qede_dcbnl_setapp(struct net_device *netdev, u8 idtype, u16 idval,
+                            u8 up)
++#else
++static u8 qede_dcbnl_setapp(struct net_device *netdev, u8 idtype, u16 idval,
++                           u8 up)
++#endif
++
+ {
+       struct qede_dev *edev = netdev_priv(netdev);
+diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/ethernet/qlogic/qede/qede_filter.c
+index 6687e04..9da9e1e 100644
+--- a/drivers/net/ethernet/qlogic/qede/qede_filter.c
++++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c
+@@ -1066,6 +1066,7 @@ void qede_udp_tunnel_del(struct net_device *dev,
+       }
+ }
++#ifdef HAVE_XDP
+ static void qede_xdp_reload_func(struct qede_dev *edev,
+                                struct qede_reload_args *args)
+ {
+@@ -1103,6 +1104,7 @@ int qede_xdp(struct net_device *dev, struct netdev_bpf *xdp)
+               return -EINVAL;
+       }
+ }
++#endif
+ static int qede_set_mcast_rx_mac(struct qede_dev *edev,
+                                enum qed_filter_xcast_params_type opcode,
+diff --git a/drivers/net/ethernet/qlogic/qede/qede_fp.c b/drivers/net/ethernet/qlogic/qede/qede_fp.c
+index e906d04..766b1c9 100644
+--- a/drivers/net/ethernet/qlogic/qede/qede_fp.c
++++ b/drivers/net/ethernet/qlogic/qede/qede_fp.c
+@@ -327,6 +327,7 @@ static inline void qede_update_tx_producer(struct qede_tx_queue *txq)
+       wmb();
+ }
++#ifdef HAVE_XDP
+ static int qede_xdp_xmit(struct qede_dev *edev, struct qede_fastpath *fp,
+                        struct sw_rx_data *metadata, u16 padding, u16 length)
+ {
+@@ -371,6 +372,7 @@ static int qede_xdp_xmit(struct qede_dev *edev, struct qede_fastpath *fp,
+       return 0;
+ }
++#endif
+ int qede_txq_has_work(struct qede_tx_queue *txq)
+ {
+@@ -385,6 +387,7 @@ int qede_txq_has_work(struct qede_tx_queue *txq)
+       return hw_bd_cons != qed_chain_get_cons_idx(&txq->tx_pbl);
+ }
++#ifdef HAVE_XDP
+ static void qede_xdp_tx_int(struct qede_dev *edev, struct qede_tx_queue *txq)
+ {
+       u16 hw_bd_cons, idx;
+@@ -405,6 +408,7 @@ static void qede_xdp_tx_int(struct qede_dev *edev, struct qede_tx_queue *txq)
+               txq->xmit_pkts++;
+       }
+ }
++#endif
+ static int qede_tx_int(struct qede_dev *edev, struct qede_tx_queue *txq)
+ {
+@@ -988,6 +992,7 @@ static bool qede_pkt_is_ip_fragmented(struct eth_fast_path_rx_reg_cqe *cqe,
+       return false;
+ }
++#ifdef HAVE_XDP
+ /* Return true iff packet is to be passed to stack */
+ static bool qede_rx_xdp(struct qede_dev *edev,
+                       struct qede_fastpath *fp,
+@@ -1060,6 +1065,7 @@ static bool qede_rx_xdp(struct qede_dev *edev,
+       return false;
+ }
++#endif
+ static struct sk_buff *qede_rx_allocate_skb(struct qede_dev *edev,
+                                           struct qede_rx_queue *rxq,
+@@ -1201,7 +1207,9 @@ static int qede_rx_process_cqe(struct qede_dev *edev,
+                              struct qede_fastpath *fp,
+                              struct qede_rx_queue *rxq)
+ {
++#ifdef HAVE_XDP
+       struct bpf_prog *xdp_prog = READ_ONCE(rxq->xdp_prog);
++#endif
+       struct eth_fast_path_rx_reg_cqe *fp_cqe;
+       u16 len, pad, bd_cons_idx, parse_flag;
+       enum eth_rx_cqe_type cqe_type;
+@@ -1238,11 +1246,13 @@ static int qede_rx_process_cqe(struct qede_dev *edev,
+       len = le16_to_cpu(fp_cqe->len_on_first_bd);
+       pad = fp_cqe->placement_offset + rxq->rx_headroom;
++#ifdef HAVE_XDP
+       /* Run eBPF program if one is attached */
+       if (xdp_prog)
+               if (!qede_rx_xdp(edev, fp, rxq, xdp_prog, bd, fp_cqe,
+                                &pad, &len))
+                       return 0;
++#endif
+       /* If this is an error packet then drop it */
+       flags = cqe->fast_path_regular.pars_flags.flags;
+@@ -1351,9 +1361,11 @@ static bool qede_poll_is_more_work(struct qede_fastpath *fp)
+               if (qede_has_rx_work(fp->rxq))
+                       return true;
++#ifdef HAVE_XDP
+       if (fp->type & QEDE_FASTPATH_XDP)
+               if (qede_txq_has_work(fp->xdp_tx))
+                       return true;
++#endif
+       if (likely(fp->type & QEDE_FASTPATH_TX))
+               if (qede_txq_has_work(fp->txq))
+@@ -1375,9 +1387,10 @@ int qede_poll(struct napi_struct *napi, int budget)
+       if (likely(fp->type & QEDE_FASTPATH_TX) && qede_txq_has_work(fp->txq))
+               qede_tx_int(edev, fp->txq);
++#ifdef HAVE_XDP
+       if ((fp->type & QEDE_FASTPATH_XDP) && qede_txq_has_work(fp->xdp_tx))
+               qede_xdp_tx_int(edev, fp->xdp_tx);
+-
++#endif
+       rx_work_done = (likely(fp->type & QEDE_FASTPATH_RX) &&
+                       qede_has_rx_work(fp->rxq)) ?
+                       qede_rx_int(fp, budget) : 0;
+@@ -1392,6 +1405,7 @@ int qede_poll(struct napi_struct *napi, int budget)
+               }
+       }
++#ifdef HAVE_XDP
+       if (fp->xdp_xmit) {
+               u16 xdp_prod = qed_chain_get_prod_idx(&fp->xdp_tx->tx_pbl);
+@@ -1399,6 +1413,7 @@ int qede_poll(struct napi_struct *napi, int budget)
+               fp->xdp_tx->tx_db.data.bd_prod = cpu_to_le16(xdp_prod);
+               qede_update_tx_producer(fp->xdp_tx);
+       }
++#endif
+       return rx_work_done;
+ }
+diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
+index 8ab2dac..07028fb 100644
+--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
++++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
+@@ -427,13 +427,25 @@ void qede_fill_by_demand_stats(struct qede_dev *edev)
+       }
+ }
+-static void qede_get_stats64(struct net_device *dev,
+-                           struct rtnl_link_stats64 *stats)
++#ifdef HAVE_NDO_GET_STATS64_RET_VOID
++void qede_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
++#elif defined(HAVE_NDO_GET_STATS64)
++static
++struct rtnl_link_stats64 *qede_get_stats64(struct net_device *dev,
++                                         struct rtnl_link_stats64 *stats)
++#else
++static
++struct rtnl_link_stats64 *qede_get_stats64(struct net_device *dev)
++#endif
+ {
+       struct qede_dev *edev = netdev_priv(dev);
++#if defined(HAVE_NDO_GET_STATS64)
+       struct qede_stats_common *p_common;
++#endif
+       qede_fill_by_demand_stats(edev);
++
++#if defined(HAVE_NDO_GET_STATS64)
+       p_common = &edev->stats.common;
+       stats->rx_packets = p_common->rx_ucast_pkts + p_common->rx_mcast_pkts +
+@@ -455,6 +467,11 @@ static void qede_get_stats64(struct net_device *dev,
+               stats->collisions = edev->stats.bb.tx_total_collisions;
+       stats->rx_crc_errors = p_common->rx_crc_errors;
+       stats->rx_frame_errors = p_common->rx_align_errors;
++#endif
++
++#ifndef HAVE_NDO_GET_STATS64_RET_VOID
++      return stats;
++#endif
+ }
+ #ifdef CONFIG_QED_SRIOV
+@@ -549,7 +566,11 @@ static const struct net_device_ops qede_netdev_ops = {
+       .ndo_vlan_rx_kill_vid = qede_vlan_rx_kill_vid,
+       .ndo_fix_features = qede_fix_features,
+       .ndo_set_features = qede_set_features,
+-      .ndo_get_stats64 = qede_get_stats64,
++#if defined(HAVE_NDO_GET_STATS64) || defined(HAVE_NDO_GET_STATS64_RET_VOID)
++        .ndo_get_stats64         = qede_get_stats64,
++#else
++        .ndo_get_stats           = qede_get_stats64,
++#endif
+ #ifdef CONFIG_QED_SRIOV
+       .ndo_set_vf_link_state = qede_set_vf_link_state,
+       .ndo_set_vf_spoofchk = qede_set_vf_spoofchk,
+@@ -1777,6 +1798,7 @@ static int qede_stop_queues(struct qede_dev *edev)
+                       }
+               }
++#ifdef HAVE_XDP
+               /* Stop the XDP forwarding queue */
+               if (fp->type & QEDE_FASTPATH_XDP) {
+                       rc = qede_stop_txq(edev, fp->xdp_tx, i);
+@@ -1785,6 +1807,7 @@ static int qede_stop_queues(struct qede_dev *edev)
+                       bpf_prog_put(fp->rxq->xdp_prog);
+               }
++#endif
+       }
+       /* Stop the vport */
+@@ -1922,7 +1945,7 @@ static int qede_start_queues(struct qede_dev *edev, bool clear_stats)
+                       qede_update_rx_prod(edev, rxq);
+               }
+-
++#ifdef HAVE_XDP
+               if (fp->type & QEDE_FASTPATH_XDP) {
+                       rc = qede_start_txq(edev, fp, fp->xdp_tx, i, XDP_PI);
+                       if (rc)
+@@ -1935,6 +1958,7 @@ static int qede_start_queues(struct qede_dev *edev, bool clear_stats)
+                               goto out;
+                       }
+               }
++#endif
+               if (fp->type & QEDE_FASTPATH_TX) {
+                       rc = qede_start_txq(edev, fp, fp->txq, i, TX_PI(0));
+-- 
+1.8.3.1
+