diff mbox

[V6,21/21] net-next/hinic: Add netpoll

Message ID cae481edc7c9217cc61dbeb1f7eb642ba7a9dbfc.1502972069.git.aviad.krawczyk@huawei.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Aviad Krawczyk Aug. 17, 2017, 12:25 p.m. UTC
Add more netdev operation - netpoll.

Signed-off-by: Aviad Krawczyk <aviad.krawczyk@huawei.com>
Signed-off-by: Zhao Chen <zhaochen6@huawei.com>
---
 MAINTAINERS                                    |  7 +++++++
 drivers/net/ethernet/huawei/hinic/hinic_main.c | 20 ++++++++++++++++++++
 2 files changed, 27 insertions(+)

Comments

Sergei Shtylyov Aug. 17, 2017, 12:57 p.m. UTC | #1
Hello.

On 08/17/2017 03:25 PM, Aviad Krawczyk wrote:

> Add more netdev operation - netpoll.
> 
> Signed-off-by: Aviad Krawczyk <aviad.krawczyk@huawei.com>
> Signed-off-by: Zhao Chen <zhaochen6@huawei.com>
> ---
>   MAINTAINERS                                    |  7 +++++++
>   drivers/net/ethernet/huawei/hinic/hinic_main.c | 20 ++++++++++++++++++++
>   2 files changed, 27 insertions(+)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 0e967b3..8f9ea9b 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -6240,6 +6240,13 @@ L:	linux-input@vger.kernel.org
>   S:	Maintained
>   F:	drivers/input/touchscreen/htcpen.c
>   
> +HUAWEI ETHERNET DRIVER
> +M:	Aviad Krawczyk <aviad.krawczyk@huawei.com>
> +L:	netdev@vger.kernel.org
> +S:	Supported
> +F:	Documentation/networking/hinic.txt
> +F:	drivers/net/ethernet/huawei/hinic/
> +

    Sorry for not asking this question before: how is the new MAINTAINERS 
record related to the netpoll support? This should be in a separate patch.

[...]

MBR, Sergei
Aviad Krawczyk Aug. 17, 2017, 12:59 p.m. UTC | #2
Will be fixed in V7

Thanks

On 8/17/2017 3:57 PM, Sergei Shtylyov wrote:
> Hello.
> 
> On 08/17/2017 03:25 PM, Aviad Krawczyk wrote:
> 
>> Add more netdev operation - netpoll.
>>
>> Signed-off-by: Aviad Krawczyk <aviad.krawczyk@huawei.com>
>> Signed-off-by: Zhao Chen <zhaochen6@huawei.com>
>> ---
>>   MAINTAINERS                                    |  7 +++++++
>>   drivers/net/ethernet/huawei/hinic/hinic_main.c | 20 ++++++++++++++++++++
>>   2 files changed, 27 insertions(+)
>>
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 0e967b3..8f9ea9b 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -6240,6 +6240,13 @@ L:    linux-input@vger.kernel.org
>>   S:    Maintained
>>   F:    drivers/input/touchscreen/htcpen.c
>>   +HUAWEI ETHERNET DRIVER
>> +M:    Aviad Krawczyk <aviad.krawczyk@huawei.com>
>> +L:    netdev@vger.kernel.org
>> +S:    Supported
>> +F:    Documentation/networking/hinic.txt
>> +F:    drivers/net/ethernet/huawei/hinic/
>> +
> 
>    Sorry for not asking this question before: how is the new MAINTAINERS record related to the netpoll support? This should be in a separate patch.
> 
> [...]
> 
> MBR, Sergei
> 
> .
>
diff mbox

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index 0e967b3..8f9ea9b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6240,6 +6240,13 @@  L:	linux-input@vger.kernel.org
 S:	Maintained
 F:	drivers/input/touchscreen/htcpen.c
 
+HUAWEI ETHERNET DRIVER
+M:	Aviad Krawczyk <aviad.krawczyk@huawei.com>
+L:	netdev@vger.kernel.org
+S:	Supported
+F:	Documentation/networking/hinic.txt
+F:	drivers/net/ethernet/huawei/hinic/
+
 HUGETLB FILESYSTEM
 M:	Nadia Yvette Chambers <nyc@holomorphy.com>
 S:	Maintained
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_main.c b/drivers/net/ethernet/huawei/hinic/hinic_main.c
index a77a7f8..59f3358 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_main.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_main.c
@@ -787,6 +787,23 @@  static void hinic_get_stats64(struct net_device *netdev,
 	stats->tx_errors  = nic_tx_stats->tx_dropped;
 }
 
+#ifdef CONFIG_NET_POLL_CONTROLLER
+static void hinic_netpoll(struct net_device *netdev)
+{
+	struct hinic_dev *nic_dev = netdev_priv(netdev);
+	int i, num_qps;
+
+	num_qps = hinic_hwdev_num_qps(nic_dev->hwdev);
+	for (i = 0; i < num_qps; i++) {
+		struct hinic_txq *txq = &nic_dev->txqs[i];
+		struct hinic_rxq *rxq = &nic_dev->rxqs[i];
+
+		napi_schedule(&txq->napi);
+		napi_schedule(&rxq->napi);
+	}
+}
+#endif
+
 static const struct net_device_ops hinic_netdev_ops = {
 	.ndo_open = hinic_open,
 	.ndo_stop = hinic_close,
@@ -799,6 +816,9 @@  static void hinic_get_stats64(struct net_device *netdev,
 	.ndo_start_xmit = hinic_xmit_frame,
 	.ndo_tx_timeout = hinic_tx_timeout,
 	.ndo_get_stats64 = hinic_get_stats64,
+#ifdef CONFIG_NET_POLL_CONTROLLER
+	.ndo_poll_controller = hinic_netpoll,
+#endif
 };
 
 static void netdev_features_init(struct net_device *netdev)