APPLIED[Artful/backlog]: [PATCH][Bionic][SRU Artful] net: hns: add ACPI mode support for ethtool -p
Stefan Bader
stefan.bader at canonical.com
Fri Mar 2 08:56:52 UTC 2018
On 01.03.2018 20:57, dann frazier wrote:
> On Thu, Mar 1, 2018 at 7:18 AM, Kleber Souza <kleber.souza at canonical.com> wrote:
>> On 02/10/18 01:33, dann frazier wrote:
>>> From: Jian Shen <shenjian15 at huawei.com>
>>>
>>> BugLink: https://bugs.launchpad.net/bugs/1748567
>>>
>>> The locate operation interface of fiber port can only
>>> work with DT mode. Add a new interface to control the
>>> locate led for ACPI mode.
>>>
>>> Signed-off-by: Jian Shen <shenjian15 at huawei.com>
>>> Signed-off-by: Peng Li <lipeng321 at huawei.com>
>>> Tested-by: Zhou Wang <wangzhou1 at hisilicon.com>
>>> Signed-off-by: David S. Miller <davem at davemloft.net>
>>> (cherry picked from commit 3abbcccc6f318f858ffbd4e3d82839b66ff1b960)
>>> Signed-off-by: dann frazier <dann.frazier at canonical.com>
>>> ---
>>> drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c | 2 +-
>>> drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c | 57 +++++++++++++++++++++-
>>> 2 files changed, 57 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
>>> index 8b5cdf490850..cac86e9ae0dd 100644
>>> --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
>>> +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
>>> @@ -1168,7 +1168,7 @@ void hns_set_led_opt(struct hns_mac_cb *mac_cb)
>>> int hns_cpld_led_set_id(struct hns_mac_cb *mac_cb,
>>> enum hnae_led_state status)
>>> {
>>> - if (!mac_cb || !mac_cb->cpld_ctrl)
>>> + if (!mac_cb)
>>> return 0;
>>>
>>> return mac_cb->dsaf_dev->misc_op->cpld_set_led_id(mac_cb, status);
>>> diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
>>> index 408b63faf9a8..ca247c2cc238 100644
>>> --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
>>> +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
>>> @@ -18,6 +18,7 @@ enum _dsm_op_index {
>>> HNS_OP_LED_SET_FUNC = 0x3,
>>> HNS_OP_GET_PORT_TYPE_FUNC = 0x4,
>>> HNS_OP_GET_SFP_STAT_FUNC = 0x5,
>>> + HNS_OP_LOCATE_LED_SET_FUNC = 0x6,
>>> };
>>>
>>> enum _dsm_rst_type {
>>> @@ -81,6 +82,33 @@ static void hns_dsaf_acpi_ledctrl_by_port(struct hns_mac_cb *mac_cb, u8 op_type,
>>> ACPI_FREE(obj);
>>> }
>>>
>>> +static void hns_dsaf_acpi_locate_ledctrl_by_port(struct hns_mac_cb *mac_cb,
>>> + u8 op_type, u32 locate,
>>> + u32 port)
>>> +{
>>> + union acpi_object obj_args[2], argv4;
>>> + union acpi_object *obj;
>>> +
>>> + obj_args[0].integer.type = ACPI_TYPE_INTEGER;
>>> + obj_args[0].integer.value = locate;
>>> + obj_args[1].integer.type = ACPI_TYPE_INTEGER;
>>> + obj_args[1].integer.value = port;
>>> +
>>> + argv4.type = ACPI_TYPE_PACKAGE;
>>> + argv4.package.count = 2;
>>> + argv4.package.elements = obj_args;
>>> +
>>> + obj = acpi_evaluate_dsm(ACPI_HANDLE(mac_cb->dev),
>>> + &hns_dsaf_acpi_dsm_guid, 0, op_type, &argv4);
>>> + if (!obj) {
>>> + dev_err(mac_cb->dev, "ledctrl fail, locate:%d port:%d!\n",
>>> + locate, port);
>>> + return;
>>> + }
>>> +
>>> + ACPI_FREE(obj);
>>> +}
>>> +
>>> static void hns_cpld_set_led(struct hns_mac_cb *mac_cb, int link_status,
>>> u16 speed, int data)
>>> {
>>> @@ -160,6 +188,9 @@ static void cpld_led_reset_acpi(struct hns_mac_cb *mac_cb)
>>> static int cpld_set_led_id(struct hns_mac_cb *mac_cb,
>>> enum hnae_led_state status)
>>> {
>>> + if (!mac_cb->cpld_ctrl)
>>> + return 0;
>>> +
>>> switch (status) {
>>> case HNAE_LED_ACTIVE:
>>> mac_cb->cpld_led_value =
>>> @@ -184,6 +215,30 @@ static int cpld_set_led_id(struct hns_mac_cb *mac_cb,
>>> return 0;
>>> }
>>>
>>> +static int cpld_set_led_id_acpi(struct hns_mac_cb *mac_cb,
>>> + enum hnae_led_state status)
>>> +{
>>> + switch (status) {
>>> + case HNAE_LED_ACTIVE:
>>> + hns_dsaf_acpi_locate_ledctrl_by_port(mac_cb,
>>> + HNS_OP_LOCATE_LED_SET_FUNC,
>>> + CPLD_LED_ON_VALUE,
>>> + mac_cb->mac_id);
>>> + break;
>>> + case HNAE_LED_INACTIVE:
>>> + hns_dsaf_acpi_locate_ledctrl_by_port(mac_cb,
>>> + HNS_OP_LOCATE_LED_SET_FUNC,
>>> + CPLD_LED_DEFAULT_VALUE,
>>> + mac_cb->mac_id);
>>> + break;
>>> + default:
>>> + dev_err(mac_cb->dev, "invalid led state: %d!", status);
>>> + return -EINVAL;
>>> + }
>>> +
>>> + return 0;
>>> +}
>>> +
>>> #define RESET_REQ_OR_DREQ 1
>>>
>>> static void hns_dsaf_acpi_srst_by_port(struct dsaf_device *dsaf_dev, u8 op_type,
>>> @@ -660,7 +715,7 @@ struct dsaf_misc_op *hns_misc_op_get(struct dsaf_device *dsaf_dev)
>>> } else if (is_acpi_node(dsaf_dev->dev->fwnode)) {
>>> misc_op->cpld_set_led = hns_cpld_set_led_acpi;
>>> misc_op->cpld_reset_led = cpld_led_reset_acpi;
>>> - misc_op->cpld_set_led_id = cpld_set_led_id;
>>> + misc_op->cpld_set_led_id = cpld_set_led_id_acpi;
>>>
>>> misc_op->dsaf_reset = hns_dsaf_rst_acpi;
>>> misc_op->xge_srst = hns_dsaf_xge_srst_by_port_acpi;
>>>
>>
>> Applied to artful/master-next-backlog branch.
>
> Thanks Kleber!
>
> Would you mind clarifying what it means to be on the
> master-next-backlog branch vs. the master-next branch - specifically
> wrt release timeframe?
>
That was a temporary stashing place to put all those requests while we still
expected to re-spin more often for spectre/meltdown and then point release
kernels. Expect all those backlog branches to move back to normal next when the
next normal cycle starts (Mar-12 so the bitgods allow)
-Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20180302/7de9e762/attachment.sig>
More information about the kernel-team
mailing list