Thread (36 messages) flat view 36 messages, 12 authors, 2014-09-22

Re: [PATCH net-next 4/8] enic: alloc/free rx_cpu_rmap

From: Sergei Shtylyov <hidden>
Date: 2014-06-10 15:00:35

Hello.

On 06/10/2014 05:52 PM, Govindarajulu Varadarajan wrote:
quoted
quoted
@@ -1192,6 +1195,33 @@ static void enic_calc_int_moderation(struct enic
*enic, struct vnic_rq *rq)
      pkt_size_counter->small_pkt_bytes_cnt = 0;
  }

+#ifdef CONFIG_RFS_ACCEL
+static void enic_free_rx_cpu_rmap(struct enic *enic)
+{
+    free_irq_cpu_rmap(enic->netdev->rx_cpu_rmap);
+    enic->netdev->rx_cpu_rmap = NULL;
+}
+
+static inline void enic_set_rx_cpu_rmap(struct enic *enic)
quoted
  No need to use *inline* in a .c file, the compiler should figure it out.
Yes, I agree.
quoted
quoted
+{
+    int i, res;
+
+    if (vnic_dev_get_intr_mode(enic->vdev) == VNIC_DEV_INTR_MODE_MSIX) {
+        enic->netdev->rx_cpu_rmap = alloc_irq_cpu_rmap(enic->rq_count);
+        if (unlikely(!enic->netdev->rx_cpu_rmap))
+            return;
+        for (i = 0; i < enic->rq_count; i++) {
+            res = irq_cpu_rmap_add(enic->netdev->rx_cpu_rmap,
+                           enic->msix_entry[i].vector);
+            if (unlikely(res)) {
+                enic_free_rx_cpu_rmap(enic);
+                return;
+            }
+        }
+    }
+}
quoted
  It's better to do the following here:
quoted
#else
static void enic_free_rx_cpu_rmap(struct enic *enic)
{
}
static void enic_set_rx_cpu_rmap(struct enic *enic)
{
}
How about
static void enic_free_rx_cpu_rmap(struct enic *enic)
{
#ifdef CONFIG_RFS_ACCEL
...
...
#endif
}
I prefer this over yours because, if I use yours tools like cscope finds two
definitions of function enic_free_rx_cpu_rmap. Which makes code walk through
little bit difficult.
    #ifdef's in the function bodies are generally frowned upon. See 
Documentation/SubmittingPatches section 2 item (2).
Thanks
Govind
quoted
quoted
+#endif
+
  static int enic_poll_msix(struct napi_struct *napi, int budget)
  {
      struct net_device *netdev = napi->dev;
@@ -1267,6 +1297,9 @@ static void enic_free_intr(struct enic *enic)
      struct net_device *netdev = enic->netdev;
      unsigned int i;

+#ifdef CONFIG_RFS_ACCEL
+    enic_free_rx_cpu_rmap(enic);
+#endif
quoted
  ... so that you can avoid #ifdef's at the call sites.
WBR, Sergei
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help