Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f342945 authored by Julian Wiedmann's avatar Julian Wiedmann Committed by David S. Miller
Browse files

s390/qeth: support SG for more device types



NETIF_F_SG support is currently limited to OSA (and for L2 even OSD)
devices. Advertise it for some more device types (OSM, L2 OSX, z/VM OSA)
that share the same code paths. For now, keep it switched off by
default on these devices.

Signed-off-by: default avatarJulian Wiedmann <jwi@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d857e111
Loading
Loading
Loading
Loading
+9 −7
Original line number Original line Diff line number Diff line
@@ -991,9 +991,16 @@ static int qeth_l2_setup_netdev(struct qeth_card *card)
		card->dev->features |= NETIF_F_VLAN_CHALLENGED;
		card->dev->features |= NETIF_F_VLAN_CHALLENGED;
	else
	else
		card->dev->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
		card->dev->features |= NETIF_F_HW_VLAN_CTAG_FILTER;

	if (card->info.type != QETH_CARD_TYPE_OSN &&
	    card->info.type != QETH_CARD_TYPE_IQD) {
		card->dev->priv_flags &= ~IFF_TX_SKB_SHARING;
		card->dev->needed_headroom = sizeof(struct qeth_hdr);
		card->dev->hw_features |= NETIF_F_SG;
		card->dev->vlan_features |= NETIF_F_SG;
	}

	if (card->info.type == QETH_CARD_TYPE_OSD && !card->info.guestlan) {
	if (card->info.type == QETH_CARD_TYPE_OSD && !card->info.guestlan) {
		card->dev->hw_features = NETIF_F_SG;
		card->dev->vlan_features = NETIF_F_SG;
		card->dev->features |= NETIF_F_SG;
		card->dev->features |= NETIF_F_SG;
		/* OSA 3S and earlier has no RX/TX support */
		/* OSA 3S and earlier has no RX/TX support */
		if (qeth_is_supported(card, IPA_OUTBOUND_CHECKSUM)) {
		if (qeth_is_supported(card, IPA_OUTBOUND_CHECKSUM)) {
@@ -1005,11 +1012,6 @@ static int qeth_l2_setup_netdev(struct qeth_card *card)
			card->dev->vlan_features |= NETIF_F_RXCSUM;
			card->dev->vlan_features |= NETIF_F_RXCSUM;
		}
		}
	}
	}
	if (card->info.type != QETH_CARD_TYPE_OSN &&
	    card->info.type != QETH_CARD_TYPE_IQD) {
		card->dev->priv_flags &= ~IFF_TX_SKB_SHARING;
		card->dev->needed_headroom = sizeof(struct qeth_hdr);
	}


	card->info.broadcast_capable = 1;
	card->info.broadcast_capable = 1;
	qeth_l2_request_initial_mac(card);
	qeth_l2_request_initial_mac(card);
+8 −6
Original line number Original line Diff line number Diff line
@@ -2785,14 +2785,16 @@ static int qeth_l3_setup_netdev(struct qeth_card *card)
			if (!(card->info.unique_id & UNIQUE_ID_NOT_BY_CARD))
			if (!(card->info.unique_id & UNIQUE_ID_NOT_BY_CARD))
				card->dev->dev_id = card->info.unique_id &
				card->dev->dev_id = card->info.unique_id &
							 0xffff;
							 0xffff;

			card->dev->hw_features |= NETIF_F_SG;
			card->dev->vlan_features |= NETIF_F_SG;

			if (!card->info.guestlan) {
			if (!card->info.guestlan) {
				card->dev->hw_features = NETIF_F_SG |
					NETIF_F_RXCSUM | NETIF_F_IP_CSUM |
					NETIF_F_TSO;
				card->dev->vlan_features = NETIF_F_SG |
					NETIF_F_RXCSUM | NETIF_F_IP_CSUM |
					NETIF_F_TSO;
				card->dev->features |= NETIF_F_SG;
				card->dev->features |= NETIF_F_SG;
				card->dev->hw_features |= NETIF_F_TSO |
					NETIF_F_RXCSUM | NETIF_F_IP_CSUM;
				card->dev->vlan_features |= NETIF_F_TSO |
					NETIF_F_RXCSUM | NETIF_F_IP_CSUM;
			}
			}
		}
		}
	} else if (card->info.type == QETH_CARD_TYPE_IQD) {
	} else if (card->info.type == QETH_CARD_TYPE_IQD) {