Skip to content

Commit fe94e2e

Browse files
braunudavem330
authored andcommitted
qeth: exploit source MAC address for inbound layer3 packets
OSA-devices operating in layer3 mode offer adding of the source MAC address to the QDIO header of inbound packets. The qeth driver can exploit this functionality to replace FAKELL-entries in the ethernet header of received packets. Signed-off-by: Ursula Braun <[email protected]> Signed-off-by: Frank Blaschka <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 906f1f0 commit fe94e2e

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

drivers/s390/net/qeth_core.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,6 @@ struct qeth_card_options {
643643
int macaddr_mode;
644644
int fake_broadcast;
645645
int add_hhlen;
646-
int fake_ll;
647646
int layer2;
648647
enum qeth_large_send_types large_send;
649648
int performance_stats;

drivers/s390/net/qeth_core_main.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1072,7 +1072,6 @@ static void qeth_set_intial_options(struct qeth_card *card)
10721072
card->options.macaddr_mode = QETH_TR_MACADDR_NONCANONICAL;
10731073
card->options.fake_broadcast = 0;
10741074
card->options.add_hhlen = DEFAULT_ADD_HHLEN;
1075-
card->options.fake_ll = 0;
10761075
card->options.performance_stats = 0;
10771076
card->options.rx_sg_cb = QETH_RX_SG_CB;
10781077
}

drivers/s390/net/qeth_l3_main.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1207,12 +1207,9 @@ static int qeth_l3_start_ipa_source_mac(struct qeth_card *card)
12071207

12081208
QETH_DBF_TEXT(TRACE, 3, "stsrcmac");
12091209

1210-
if (!card->options.fake_ll)
1211-
return -EOPNOTSUPP;
1212-
12131210
if (!qeth_is_supported(card, IPA_SOURCE_MAC)) {
12141211
dev_info(&card->gdev->dev,
1215-
"Inbound source address not supported on %s\n",
1212+
"Inbound source MAC-address not supported on %s\n",
12161213
QETH_CARD_IFNAME(card));
12171214
return -EOPNOTSUPP;
12181215
}
@@ -1221,7 +1218,7 @@ static int qeth_l3_start_ipa_source_mac(struct qeth_card *card)
12211218
IPA_CMD_ASS_START, 0);
12221219
if (rc)
12231220
dev_warn(&card->gdev->dev,
1224-
"Starting proxy ARP support for %s failed\n",
1221+
"Starting source MAC-address support for %s failed\n",
12251222
QETH_CARD_IFNAME(card));
12261223
return rc;
12271224
}
@@ -1921,8 +1918,13 @@ static inline __u16 qeth_l3_rebuild_skb(struct qeth_card *card,
19211918
memcpy(tg_addr, card->dev->dev_addr,
19221919
card->dev->addr_len);
19231920
}
1924-
card->dev->header_ops->create(skb, card->dev, prot, tg_addr,
1925-
"FAKELL", card->dev->addr_len);
1921+
if (hdr->hdr.l3.ext_flags & QETH_HDR_EXT_SRC_MAC_ADDR)
1922+
card->dev->header_ops->create(skb, card->dev, prot,
1923+
tg_addr, &hdr->hdr.l3.dest_addr[2],
1924+
card->dev->addr_len);
1925+
else
1926+
card->dev->header_ops->create(skb, card->dev, prot,
1927+
tg_addr, "FAKELL", card->dev->addr_len);
19261928
}
19271929

19281930
#ifdef CONFIG_TR

0 commit comments

Comments
 (0)