summaryrefslogtreecommitdiffstats
path: root/net/ncsi
diff options
context:
space:
mode:
authorVijay Khemka <vijaykhemka@fb.com>2020-01-07 20:30:33 +0100
committerDavid S. Miller <davem@davemloft.net>2020-01-08 22:09:18 +0100
commit7c7b58d46b7636ff3cfb01cc633dda852fda70c8 (patch)
tree0d8c7212dd2b994ddfc690cc04e4245f1ea9794a /net/ncsi
parentnet: 3com: 3c59x: remove set but not used variable 'mii_reg1' (diff)
downloadlinux-7c7b58d46b7636ff3cfb01cc633dda852fda70c8.tar.xz
linux-7c7b58d46b7636ff3cfb01cc633dda852fda70c8.zip
net/ncsi: Send device address as source address
After receiving device mac address from device, send this as a source address for further commands instead of broadcast address. This will help in multi host NIC cards. Signed-off-by: Vijay Khemka <vijaykhemka@fb.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ncsi')
-rw-r--r--net/ncsi/ncsi-cmd.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/net/ncsi/ncsi-cmd.c b/net/ncsi/ncsi-cmd.c
index 0187e65176c0..ba9ae482141b 100644
--- a/net/ncsi/ncsi-cmd.c
+++ b/net/ncsi/ncsi-cmd.c
@@ -369,7 +369,15 @@ int ncsi_xmit_cmd(struct ncsi_cmd_arg *nca)
eh = skb_push(nr->cmd, sizeof(*eh));
eh->h_proto = htons(ETH_P_NCSI);
eth_broadcast_addr(eh->h_dest);
- eth_broadcast_addr(eh->h_source);
+
+ /* If mac address received from device then use it for
+ * source address as unicast address else use broadcast
+ * address as source address
+ */
+ if (nca->ndp->gma_flag == 1)
+ memcpy(eh->h_source, nca->ndp->ndev.dev->dev_addr, ETH_ALEN);
+ else
+ eth_broadcast_addr(eh->h_source);
/* Start the timer for the request that might not have
* corresponding response. Given NCSI is an internal