[v2,4/5] net/ncsi: add shift MAC address property
Commit Message
Add the shift MAC address property for GMA command which provides which
shift should be used but keep old one values for backward compatability.
Signed-off-by: Ivan Mikhaylov <fr0st61te@gmail.com>
---
net/ncsi/ncsi-rsp.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
Comments
On Tue, May 09, 2023 at 02:35:03PM +0000, Ivan Mikhaylov wrote:
> Add the shift MAC address property for GMA command which provides which
> shift should be used but keep old one values for backward compatability.
nit: s/compatability/compatibility/
>
> Signed-off-by: Ivan Mikhaylov <fr0st61te@gmail.com>
> ---
> net/ncsi/ncsi-rsp.c | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/net/ncsi/ncsi-rsp.c b/net/ncsi/ncsi-rsp.c
> index 069c2659074b..1f108db34d85 100644
> --- a/net/ncsi/ncsi-rsp.c
> +++ b/net/ncsi/ncsi-rsp.c
> @@ -9,6 +9,8 @@
> #include <linux/netdevice.h>
> #include <linux/etherdevice.h>
> #include <linux/skbuff.h>
> +#include <linux/platform_device.h>
> +#include <linux/of.h>
>
> #include <net/ncsi.h>
> #include <net/net_namespace.h>
> @@ -616,9 +618,12 @@ static int ncsi_rsp_handler_oem_gma(struct ncsi_request *nr, int mfr_id)
> {
> struct ncsi_dev_priv *ndp = nr->ndp;
> struct net_device *ndev = ndp->ndev.dev;
> + struct platform_device *pdev;
> struct ncsi_rsp_oem_pkt *rsp;
> struct sockaddr saddr;
> u32 mac_addr_off = 0;
> + s32 shift_mac_addr = 0;
> + u64 mac_addr;
> int ret = 0;
nit: please preserve reverse xmas tree - longest line to shortest - order
for local variables in networking code. Or in this case,
move towards rather than away from that pattern.
> /* Get the response header */
> @@ -635,7 +640,17 @@ static int ncsi_rsp_handler_oem_gma(struct ncsi_request *nr, int mfr_id)
>
> memcpy(saddr.sa_data, &rsp->data[mac_addr_off], ETH_ALEN);
> if (mfr_id == NCSI_OEM_MFR_BCM_ID || mfr_id == NCSI_OEM_MFR_INTEL_ID)
> - eth_addr_inc((u8 *)saddr.sa_data);
> + shift_mac_addr = 1;
> +
> + pdev = to_platform_device(ndev->dev.parent);
> + if (pdev)
> + of_property_read_s32(pdev->dev.of_node,
> + "mac-address-increment", &shift_mac_addr);
> +
> + /* Increase mac address by shift value for BMC's address */
> + mac_addr = ether_addr_to_u64((u8 *)saddr.sa_data);
> + mac_addr += shift_mac_addr;
> + u64_to_ether_addr(mac_addr, (u8 *)saddr.sa_data);
> if (!is_valid_ether_addr((const u8 *)saddr.sa_data))
> return -ENXIO;
>
> --
> 2.40.1
>
>
@@ -9,6 +9,8 @@
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
+#include <linux/platform_device.h>
+#include <linux/of.h>
#include <net/ncsi.h>
#include <net/net_namespace.h>
@@ -616,9 +618,12 @@ static int ncsi_rsp_handler_oem_gma(struct ncsi_request *nr, int mfr_id)
{
struct ncsi_dev_priv *ndp = nr->ndp;
struct net_device *ndev = ndp->ndev.dev;
+ struct platform_device *pdev;
struct ncsi_rsp_oem_pkt *rsp;
struct sockaddr saddr;
u32 mac_addr_off = 0;
+ s32 shift_mac_addr = 0;
+ u64 mac_addr;
int ret = 0;
/* Get the response header */
@@ -635,7 +640,17 @@ static int ncsi_rsp_handler_oem_gma(struct ncsi_request *nr, int mfr_id)
memcpy(saddr.sa_data, &rsp->data[mac_addr_off], ETH_ALEN);
if (mfr_id == NCSI_OEM_MFR_BCM_ID || mfr_id == NCSI_OEM_MFR_INTEL_ID)
- eth_addr_inc((u8 *)saddr.sa_data);
+ shift_mac_addr = 1;
+
+ pdev = to_platform_device(ndev->dev.parent);
+ if (pdev)
+ of_property_read_s32(pdev->dev.of_node,
+ "mac-address-increment", &shift_mac_addr);
+
+ /* Increase mac address by shift value for BMC's address */
+ mac_addr = ether_addr_to_u64((u8 *)saddr.sa_data);
+ mac_addr += shift_mac_addr;
+ u64_to_ether_addr(mac_addr, (u8 *)saddr.sa_data);
if (!is_valid_ether_addr((const u8 *)saddr.sa_data))
return -ENXIO;