Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[linux-2.6-microblaze.git] / drivers / net / ethernet / marvell / mvneta.c
index de32e5b..9d460a2 100644 (file)
@@ -2327,7 +2327,7 @@ mvneta_swbm_build_skb(struct mvneta_port *pp, struct page_pool *pool,
        if (!skb)
                return ERR_PTR(-ENOMEM);
 
-       skb_mark_for_recycle(skb, virt_to_page(xdp->data), pool);
+       skb_mark_for_recycle(skb);
 
        skb_reserve(skb, xdp->data - xdp->data_hard_start);
        skb_put(skb, xdp->data_end - xdp->data);
@@ -2339,10 +2339,6 @@ mvneta_swbm_build_skb(struct mvneta_port *pp, struct page_pool *pool,
                skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
                                skb_frag_page(frag), skb_frag_off(frag),
                                skb_frag_size(frag), PAGE_SIZE);
-               /* We don't need to reset pp_recycle here. It's already set, so
-                * just mark fragments for recycling.
-                */
-               page_pool_store_mem_info(skb_frag_page(frag), pool);
        }
 
        return skb;
@@ -2666,7 +2662,7 @@ static int mvneta_tx_tso(struct sk_buff *skb, struct net_device *dev,
                return 0;
 
        if (skb_headlen(skb) < (skb_transport_offset(skb) + tcp_hdrlen(skb))) {
-               pr_info("*** Is this even  possible???!?!?\n");
+               pr_info("*** Is this even possible?\n");
                return 0;
        }
 
@@ -3832,12 +3828,20 @@ static void mvneta_validate(struct phylink_config *config,
        struct mvneta_port *pp = netdev_priv(ndev);
        __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
 
-       /* We only support QSGMII, SGMII, 802.3z and RGMII modes */
-       if (state->interface != PHY_INTERFACE_MODE_NA &&
-           state->interface != PHY_INTERFACE_MODE_QSGMII &&
-           state->interface != PHY_INTERFACE_MODE_SGMII &&
-           !phy_interface_mode_is_8023z(state->interface) &&
-           !phy_interface_mode_is_rgmii(state->interface)) {
+       /* We only support QSGMII, SGMII, 802.3z and RGMII modes.
+        * When in 802.3z mode, we must have AN enabled:
+        * "Bit 2 Field InBandAnEn In-band Auto-Negotiation enable. ...
+        * When <PortType> = 1 (1000BASE-X) this field must be set to 1."
+        */
+       if (phy_interface_mode_is_8023z(state->interface)) {
+               if (!phylink_test(state->advertising, Autoneg)) {
+                       bitmap_zero(supported, __ETHTOOL_LINK_MODE_MASK_NBITS);
+                       return;
+               }
+       } else if (state->interface != PHY_INTERFACE_MODE_NA &&
+                  state->interface != PHY_INTERFACE_MODE_QSGMII &&
+                  state->interface != PHY_INTERFACE_MODE_SGMII &&
+                  !phy_interface_mode_is_rgmii(state->interface)) {
                bitmap_zero(supported, __ETHTOOL_LINK_MODE_MASK_NBITS);
                return;
        }
@@ -4496,8 +4500,11 @@ static int mvneta_ethtool_nway_reset(struct net_device *dev)
 }
 
 /* Set interrupt coalescing for ethtools */
-static int mvneta_ethtool_set_coalesce(struct net_device *dev,
-                                      struct ethtool_coalesce *c)
+static int
+mvneta_ethtool_set_coalesce(struct net_device *dev,
+                           struct ethtool_coalesce *c,
+                           struct kernel_ethtool_coalesce *kernel_coal,
+                           struct netlink_ext_ack *extack)
 {
        struct mvneta_port *pp = netdev_priv(dev);
        int queue;
@@ -4520,8 +4527,11 @@ static int mvneta_ethtool_set_coalesce(struct net_device *dev,
 }
 
 /* get coalescing for ethtools */
-static int mvneta_ethtool_get_coalesce(struct net_device *dev,
-                                      struct ethtool_coalesce *c)
+static int
+mvneta_ethtool_get_coalesce(struct net_device *dev,
+                           struct ethtool_coalesce *c,
+                           struct kernel_ethtool_coalesce *kernel_coal,
+                           struct netlink_ext_ack *extack)
 {
        struct mvneta_port *pp = netdev_priv(dev);
 
@@ -4986,7 +4996,7 @@ static const struct net_device_ops mvneta_netdev_ops = {
        .ndo_change_mtu      = mvneta_change_mtu,
        .ndo_fix_features    = mvneta_fix_features,
        .ndo_get_stats64     = mvneta_get_stats64,
-       .ndo_do_ioctl        = mvneta_ioctl,
+       .ndo_eth_ioctl        = mvneta_ioctl,
        .ndo_bpf             = mvneta_xdp,
        .ndo_xdp_xmit        = mvneta_xdp_xmit,
        .ndo_setup_tc        = mvneta_setup_tc,