* [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions
@ 2015-10-22 10:11 Shivani Bhardwaj
2015-10-22 10:34 ` [Outreachy kernel] " Julia Lawall
0 siblings, 1 reply; 12+ messages in thread
From: Shivani Bhardwaj @ 2015-10-22 10:11 UTC (permalink / raw)
To: outreachy-kernel
Remove the wrapper functions get_address1, get_address2 and get_address3
as they are not required and replace their calls by suitable functions.
Semantic patch used:
@@
identifier f,g;
@@
*f(...) {
g(...); }
Signed-off-by: Shivani Bhardwaj <shivanib134@gmail.com>
---
drivers/staging/wilc1000/coreconfigurator.c | 38 ++++++++++-------------------
1 file changed, 13 insertions(+), 25 deletions(-)
diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c
index 427adfd..38bc2c4 100644
--- a/drivers/staging/wilc1000/coreconfigurator.c
+++ b/drivers/staging/wilc1000/coreconfigurator.c
@@ -171,38 +171,26 @@ static inline u8 get_from_ds(u8 *header)
return ((header[1] & 0x02) >> 1);
}
-/* This function extracts the MAC Address in 'address1' field of the MAC */
-/* header and updates the MAC Address in the allocated 'addr' variable. */
-static inline void get_address1(u8 *pu8msa, u8 *addr)
-{
- memcpy(addr, pu8msa + 4, 6);
-}
-
-/* This function extracts the MAC Address in 'address2' field of the MAC */
-/* header and updates the MAC Address in the allocated 'addr' variable. */
-static inline void get_address2(u8 *pu8msa, u8 *addr)
-{
- memcpy(addr, pu8msa + 10, 6);
-}
-
-/* This function extracts the MAC Address in 'address3' field of the MAC */
-/* header and updates the MAC Address in the allocated 'addr' variable. */
-static inline void get_address3(u8 *pu8msa, u8 *addr)
-{
- memcpy(addr, pu8msa + 16, 6);
-}
-
/* This function extracts the BSSID from the incoming WLAN packet based on */
-/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr' */
+/* the 'from ds' bit, and updates the MAC Address in the allocated 'data' */
/* variable. */
static inline void get_BSSID(u8 *data, u8 *bssid)
{
if (get_from_ds(data) == 1)
- get_address2(data, bssid);
+ /* Extract the MAC Address in 'address2' field of the MAC */
+ /* header and update the MAC Address in the allocated 'data'
+ * variable. */
+ memcpy(data, bssid + 10, 6);
else if (get_to_ds(data) == 1)
- get_address1(data, bssid);
+ /* Extract the MAC Address in 'address1' field of the MAC */
+ /* header and update the MAC Address in the allocated 'data'
+ * variable. */
+ memcpy(data, bssid + 4, 6);
else
- get_address3(data, bssid);
+ /* Extract the MAC Address in 'address3' field of the MAC */
+ /* header and update the MAC Address in the allocated 'data'
+ * variable. */
+ memcpy(data, bssid + 16, 6);
}
/* This function extracts the SSID from a beacon/probe response frame */
--
2.1.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [Outreachy kernel] [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions 2015-10-22 10:11 [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions Shivani Bhardwaj @ 2015-10-22 10:34 ` Julia Lawall 2015-10-22 11:01 ` Shivani Bhardwaj 0 siblings, 1 reply; 12+ messages in thread From: Julia Lawall @ 2015-10-22 10:34 UTC (permalink / raw) To: Shivani Bhardwaj; +Cc: outreachy-kernel On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > Remove the wrapper functions get_address1, get_address2 and get_address3 > as they are not required and replace their calls by suitable functions. The existing functions serve two purposes: 1. They make clear that an ethernet address is being copied 2. They hide the offsets To preserve the first property, the kernel has a function for copying ethernet addresses. To preserve the second property, maybe it would be possible to #define constants that describe the offsets, if there is any way to figure out what they semantically mean. julia > Semantic patch used: > @@ > identifier f,g; > @@ > > *f(...) { > g(...); } > > Signed-off-by: Shivani Bhardwaj <shivanib134@gmail.com> > --- > drivers/staging/wilc1000/coreconfigurator.c | 38 ++++++++++------------------- > 1 file changed, 13 insertions(+), 25 deletions(-) > > diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c > index 427adfd..38bc2c4 100644 > --- a/drivers/staging/wilc1000/coreconfigurator.c > +++ b/drivers/staging/wilc1000/coreconfigurator.c > @@ -171,38 +171,26 @@ static inline u8 get_from_ds(u8 *header) > return ((header[1] & 0x02) >> 1); > } > > -/* This function extracts the MAC Address in 'address1' field of the MAC */ > -/* header and updates the MAC Address in the allocated 'addr' variable. */ > -static inline void get_address1(u8 *pu8msa, u8 *addr) > -{ > - memcpy(addr, pu8msa + 4, 6); > -} > - > -/* This function extracts the MAC Address in 'address2' field of the MAC */ > -/* header and updates the MAC Address in the allocated 'addr' variable. */ > -static inline void get_address2(u8 *pu8msa, u8 *addr) > -{ > - memcpy(addr, pu8msa + 10, 6); > -} > - > -/* This function extracts the MAC Address in 'address3' field of the MAC */ > -/* header and updates the MAC Address in the allocated 'addr' variable. */ > -static inline void get_address3(u8 *pu8msa, u8 *addr) > -{ > - memcpy(addr, pu8msa + 16, 6); > -} > - > /* This function extracts the BSSID from the incoming WLAN packet based on */ > -/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr' */ > +/* the 'from ds' bit, and updates the MAC Address in the allocated 'data' */ > /* variable. */ > static inline void get_BSSID(u8 *data, u8 *bssid) > { > if (get_from_ds(data) == 1) > - get_address2(data, bssid); > + /* Extract the MAC Address in 'address2' field of the MAC */ > + /* header and update the MAC Address in the allocated 'data' > + * variable. */ > + memcpy(data, bssid + 10, 6); > else if (get_to_ds(data) == 1) > - get_address1(data, bssid); > + /* Extract the MAC Address in 'address1' field of the MAC */ > + /* header and update the MAC Address in the allocated 'data' > + * variable. */ > + memcpy(data, bssid + 4, 6); > else > - get_address3(data, bssid); > + /* Extract the MAC Address in 'address3' field of the MAC */ > + /* header and update the MAC Address in the allocated 'data' > + * variable. */ > + memcpy(data, bssid + 16, 6); > } > > /* This function extracts the SSID from a beacon/probe response frame */ > -- > 2.1.0 > > -- > You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. > To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. > To post to this group, send email to outreachy-kernel@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20151022101158.GA17223%40ubuntu. > For more options, visit https://groups.google.com/d/optout. > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Outreachy kernel] [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions 2015-10-22 10:34 ` [Outreachy kernel] " Julia Lawall @ 2015-10-22 11:01 ` Shivani Bhardwaj 2015-10-22 11:13 ` Julia Lawall 0 siblings, 1 reply; 12+ messages in thread From: Shivani Bhardwaj @ 2015-10-22 11:01 UTC (permalink / raw) To: Julia Lawall; +Cc: outreachy-kernel On Thu, Oct 22, 2015 at 4:04 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> Remove the wrapper functions get_address1, get_address2 and get_address3 >> as they are not required and replace their calls by suitable functions. > > The existing functions serve two purposes: > > 1. They make clear that an ethernet address is being copied > 2. They hide the offsets > > To preserve the first property, the kernel has a function for copying > ethernet addresses. > > To preserve the second property, maybe it would be possible to #define > constants that describe the offsets, if there is any way to figure out > what they semantically mean. > > julia > Right. I am thinking of writing one wrapper function instead of three where I'll pass on an offset each time which will be #defined. For example, #define ofs 4 #define c 6 static inline void get_address(u8 *pum8sa, u8 *addr, u8 *offset){ ether_addr_copy(addr, pum8sa + offset); } func() { if(...) get_address(data, bssid, ofs); //for address1 else if(...) get_address(data, bssid, ofs + c); //for address2 else get_address(data, bssid, ofs + 2*c); //for address3 } This will make the work of function clear. Also, offset is not going to be clear. Is this going to be a good idea? Thank you >> Semantic patch used: >> @@ >> identifier f,g; >> @@ >> >> *f(...) { >> g(...); } >> >> Signed-off-by: Shivani Bhardwaj <shivanib134@gmail.com> >> --- >> drivers/staging/wilc1000/coreconfigurator.c | 38 ++++++++++------------------- >> 1 file changed, 13 insertions(+), 25 deletions(-) >> >> diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c >> index 427adfd..38bc2c4 100644 >> --- a/drivers/staging/wilc1000/coreconfigurator.c >> +++ b/drivers/staging/wilc1000/coreconfigurator.c >> @@ -171,38 +171,26 @@ static inline u8 get_from_ds(u8 *header) >> return ((header[1] & 0x02) >> 1); >> } >> >> -/* This function extracts the MAC Address in 'address1' field of the MAC */ >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> -static inline void get_address1(u8 *pu8msa, u8 *addr) >> -{ >> - memcpy(addr, pu8msa + 4, 6); >> -} >> - >> -/* This function extracts the MAC Address in 'address2' field of the MAC */ >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> -static inline void get_address2(u8 *pu8msa, u8 *addr) >> -{ >> - memcpy(addr, pu8msa + 10, 6); >> -} >> - >> -/* This function extracts the MAC Address in 'address3' field of the MAC */ >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> -static inline void get_address3(u8 *pu8msa, u8 *addr) >> -{ >> - memcpy(addr, pu8msa + 16, 6); >> -} >> - >> /* This function extracts the BSSID from the incoming WLAN packet based on */ >> -/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr' */ >> +/* the 'from ds' bit, and updates the MAC Address in the allocated 'data' */ >> /* variable. */ >> static inline void get_BSSID(u8 *data, u8 *bssid) >> { >> if (get_from_ds(data) == 1) >> - get_address2(data, bssid); >> + /* Extract the MAC Address in 'address2' field of the MAC */ >> + /* header and update the MAC Address in the allocated 'data' >> + * variable. */ >> + memcpy(data, bssid + 10, 6); >> else if (get_to_ds(data) == 1) >> - get_address1(data, bssid); >> + /* Extract the MAC Address in 'address1' field of the MAC */ >> + /* header and update the MAC Address in the allocated 'data' >> + * variable. */ >> + memcpy(data, bssid + 4, 6); >> else >> - get_address3(data, bssid); >> + /* Extract the MAC Address in 'address3' field of the MAC */ >> + /* header and update the MAC Address in the allocated 'data' >> + * variable. */ >> + memcpy(data, bssid + 16, 6); >> } >> >> /* This function extracts the SSID from a beacon/probe response frame */ >> -- >> 2.1.0 >> >> -- >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. >> To post to this group, send email to outreachy-kernel@googlegroups.com. >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20151022101158.GA17223%40ubuntu. >> For more options, visit https://groups.google.com/d/optout. >> ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Outreachy kernel] [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions 2015-10-22 11:01 ` Shivani Bhardwaj @ 2015-10-22 11:13 ` Julia Lawall 2015-10-22 11:28 ` Shivani Bhardwaj 0 siblings, 1 reply; 12+ messages in thread From: Julia Lawall @ 2015-10-22 11:13 UTC (permalink / raw) To: Shivani Bhardwaj; +Cc: outreachy-kernel On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > On Thu, Oct 22, 2015 at 4:04 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > > > >> Remove the wrapper functions get_address1, get_address2 and get_address3 > >> as they are not required and replace their calls by suitable functions. > > > > The existing functions serve two purposes: > > > > 1. They make clear that an ethernet address is being copied > > 2. They hide the offsets > > > > To preserve the first property, the kernel has a function for copying > > ethernet addresses. > > > > To preserve the second property, maybe it would be possible to #define > > constants that describe the offsets, if there is any way to figure out > > what they semantically mean. > > > > julia > > > > Right. I am thinking of writing one wrapper function instead of three > where I'll pass on an offset each time which will be #defined. > For example, > > #define ofs 4 > #define c 6 #define things should always be in all (or at least mostly) capital letters. > static inline void get_address(u8 *pum8sa, u8 *addr, u8 *offset){ > ether_addr_copy(addr, pum8sa + offset); > } I don't think this is the best idea. ether_addr_copy is something that is easily understandable to someone reading the code. get_address, on the other hand, could be anything. If you can find meaningful names for the offsets, then it would be better to say eg: ether_addr_copy(addr, pum8sa + NAME1) julia > func() > { > if(...) > get_address(data, bssid, ofs); //for address1 > else if(...) > get_address(data, bssid, ofs + c); //for address2 > else > get_address(data, bssid, ofs + 2*c); //for address3 > } > > This will make the work of function clear. Also, offset is not going > to be clear. > Is this going to be a good idea? > > Thank you > > >> Semantic patch used: > >> @@ > >> identifier f,g; > >> @@ > >> > >> *f(...) { > >> g(...); } > >> > >> Signed-off-by: Shivani Bhardwaj <shivanib134@gmail.com> > >> --- > >> drivers/staging/wilc1000/coreconfigurator.c | 38 ++++++++++------------------- > >> 1 file changed, 13 insertions(+), 25 deletions(-) > >> > >> diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c > >> index 427adfd..38bc2c4 100644 > >> --- a/drivers/staging/wilc1000/coreconfigurator.c > >> +++ b/drivers/staging/wilc1000/coreconfigurator.c > >> @@ -171,38 +171,26 @@ static inline u8 get_from_ds(u8 *header) > >> return ((header[1] & 0x02) >> 1); > >> } > >> > >> -/* This function extracts the MAC Address in 'address1' field of the MAC */ > >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ > >> -static inline void get_address1(u8 *pu8msa, u8 *addr) > >> -{ > >> - memcpy(addr, pu8msa + 4, 6); > >> -} > >> - > >> -/* This function extracts the MAC Address in 'address2' field of the MAC */ > >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ > >> -static inline void get_address2(u8 *pu8msa, u8 *addr) > >> -{ > >> - memcpy(addr, pu8msa + 10, 6); > >> -} > >> - > >> -/* This function extracts the MAC Address in 'address3' field of the MAC */ > >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ > >> -static inline void get_address3(u8 *pu8msa, u8 *addr) > >> -{ > >> - memcpy(addr, pu8msa + 16, 6); > >> -} > >> - > >> /* This function extracts the BSSID from the incoming WLAN packet based on */ > >> -/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr' */ > >> +/* the 'from ds' bit, and updates the MAC Address in the allocated 'data' */ > >> /* variable. */ > >> static inline void get_BSSID(u8 *data, u8 *bssid) > >> { > >> if (get_from_ds(data) == 1) > >> - get_address2(data, bssid); > >> + /* Extract the MAC Address in 'address2' field of the MAC */ > >> + /* header and update the MAC Address in the allocated 'data' > >> + * variable. */ > >> + memcpy(data, bssid + 10, 6); > >> else if (get_to_ds(data) == 1) > >> - get_address1(data, bssid); > >> + /* Extract the MAC Address in 'address1' field of the MAC */ > >> + /* header and update the MAC Address in the allocated 'data' > >> + * variable. */ > >> + memcpy(data, bssid + 4, 6); > >> else > >> - get_address3(data, bssid); > >> + /* Extract the MAC Address in 'address3' field of the MAC */ > >> + /* header and update the MAC Address in the allocated 'data' > >> + * variable. */ > >> + memcpy(data, bssid + 16, 6); > >> } > >> > >> /* This function extracts the SSID from a beacon/probe response frame */ > >> -- > >> 2.1.0 > >> > >> -- > >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. > >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. > >> To post to this group, send email to outreachy-kernel@googlegroups.com. > >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20151022101158.GA17223%40ubuntu. > >> For more options, visit https://groups.google.com/d/optout. > >> > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Outreachy kernel] [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions 2015-10-22 11:13 ` Julia Lawall @ 2015-10-22 11:28 ` Shivani Bhardwaj 2015-10-22 11:43 ` Julia Lawall 0 siblings, 1 reply; 12+ messages in thread From: Shivani Bhardwaj @ 2015-10-22 11:28 UTC (permalink / raw) To: Julia Lawall; +Cc: outreachy-kernel On Thu, Oct 22, 2015 at 4:43 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> On Thu, Oct 22, 2015 at 4:04 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: >> > >> >> Remove the wrapper functions get_address1, get_address2 and get_address3 >> >> as they are not required and replace their calls by suitable functions. >> > >> > The existing functions serve two purposes: >> > >> > 1. They make clear that an ethernet address is being copied >> > 2. They hide the offsets >> > >> > To preserve the first property, the kernel has a function for copying >> > ethernet addresses. >> > >> > To preserve the second property, maybe it would be possible to #define >> > constants that describe the offsets, if there is any way to figure out >> > what they semantically mean. >> > >> > julia >> > >> >> Right. I am thinking of writing one wrapper function instead of three >> where I'll pass on an offset each time which will be #defined. >> For example, >> >> #define ofs 4 >> #define c 6 > > #define things should always be in all (or at least mostly) capital > letters. > >> static inline void get_address(u8 *pum8sa, u8 *addr, u8 *offset){ >> ether_addr_copy(addr, pum8sa + offset); >> } > > I don't think this is the best idea. ether_addr_copy is something that is > easily understandable to someone reading the code. get_address, on the > other hand, could be anything. If you can find meaningful names for the > offsets, then it would be better to say eg: > > ether_addr_copy(addr, pum8sa + NAME1) > > julia > #define NAME1 4 #define NAME2 10 #define NAME3 16 func() { if(...) ether_addr_copy(addr, pum8sa + NAME1); //for address1 else if(...) ether_addr_copy(addr, pum8sa + NAME2)); //for address2 else ether_addr_copy(addr, pum8sa + NAME3); //for address3 } Like this? >> func() >> { >> if(...) >> get_address(data, bssid, ofs); //for address1 >> else if(...) >> get_address(data, bssid, ofs + c); //for address2 >> else >> get_address(data, bssid, ofs + 2*c); //for address3 >> } >> >> This will make the work of function clear. Also, offset is not going >> to be clear. >> Is this going to be a good idea? >> >> Thank you >> >> >> Semantic patch used: >> >> @@ >> >> identifier f,g; >> >> @@ >> >> >> >> *f(...) { >> >> g(...); } >> >> >> >> Signed-off-by: Shivani Bhardwaj <shivanib134@gmail.com> >> >> --- >> >> drivers/staging/wilc1000/coreconfigurator.c | 38 ++++++++++------------------- >> >> 1 file changed, 13 insertions(+), 25 deletions(-) >> >> >> >> diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c >> >> index 427adfd..38bc2c4 100644 >> >> --- a/drivers/staging/wilc1000/coreconfigurator.c >> >> +++ b/drivers/staging/wilc1000/coreconfigurator.c >> >> @@ -171,38 +171,26 @@ static inline u8 get_from_ds(u8 *header) >> >> return ((header[1] & 0x02) >> 1); >> >> } >> >> >> >> -/* This function extracts the MAC Address in 'address1' field of the MAC */ >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> >> -static inline void get_address1(u8 *pu8msa, u8 *addr) >> >> -{ >> >> - memcpy(addr, pu8msa + 4, 6); >> >> -} >> >> - >> >> -/* This function extracts the MAC Address in 'address2' field of the MAC */ >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> >> -static inline void get_address2(u8 *pu8msa, u8 *addr) >> >> -{ >> >> - memcpy(addr, pu8msa + 10, 6); >> >> -} >> >> - >> >> -/* This function extracts the MAC Address in 'address3' field of the MAC */ >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> >> -static inline void get_address3(u8 *pu8msa, u8 *addr) >> >> -{ >> >> - memcpy(addr, pu8msa + 16, 6); >> >> -} >> >> - >> >> /* This function extracts the BSSID from the incoming WLAN packet based on */ >> >> -/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr' */ >> >> +/* the 'from ds' bit, and updates the MAC Address in the allocated 'data' */ >> >> /* variable. */ >> >> static inline void get_BSSID(u8 *data, u8 *bssid) >> >> { >> >> if (get_from_ds(data) == 1) >> >> - get_address2(data, bssid); >> >> + /* Extract the MAC Address in 'address2' field of the MAC */ >> >> + /* header and update the MAC Address in the allocated 'data' >> >> + * variable. */ >> >> + memcpy(data, bssid + 10, 6); >> >> else if (get_to_ds(data) == 1) >> >> - get_address1(data, bssid); >> >> + /* Extract the MAC Address in 'address1' field of the MAC */ >> >> + /* header and update the MAC Address in the allocated 'data' >> >> + * variable. */ >> >> + memcpy(data, bssid + 4, 6); >> >> else >> >> - get_address3(data, bssid); >> >> + /* Extract the MAC Address in 'address3' field of the MAC */ >> >> + /* header and update the MAC Address in the allocated 'data' >> >> + * variable. */ >> >> + memcpy(data, bssid + 16, 6); >> >> } >> >> >> >> /* This function extracts the SSID from a beacon/probe response frame */ >> >> -- >> >> 2.1.0 >> >> >> >> -- >> >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. >> >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. >> >> To post to this group, send email to outreachy-kernel@googlegroups.com. >> >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20151022101158.GA17223%40ubuntu. >> >> For more options, visit https://groups.google.com/d/optout. >> >> >> ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Outreachy kernel] [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions 2015-10-22 11:28 ` Shivani Bhardwaj @ 2015-10-22 11:43 ` Julia Lawall 2015-10-22 12:26 ` Shivani Bhardwaj 0 siblings, 1 reply; 12+ messages in thread From: Julia Lawall @ 2015-10-22 11:43 UTC (permalink / raw) To: Shivani Bhardwaj; +Cc: outreachy-kernel On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > On Thu, Oct 22, 2015 at 4:43 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > > > >> On Thu, Oct 22, 2015 at 4:04 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> > > >> >> Remove the wrapper functions get_address1, get_address2 and get_address3 > >> >> as they are not required and replace their calls by suitable functions. > >> > > >> > The existing functions serve two purposes: > >> > > >> > 1. They make clear that an ethernet address is being copied > >> > 2. They hide the offsets > >> > > >> > To preserve the first property, the kernel has a function for copying > >> > ethernet addresses. > >> > > >> > To preserve the second property, maybe it would be possible to #define > >> > constants that describe the offsets, if there is any way to figure out > >> > what they semantically mean. > >> > > >> > julia > >> > > >> > >> Right. I am thinking of writing one wrapper function instead of three > >> where I'll pass on an offset each time which will be #defined. > >> For example, > >> > >> #define ofs 4 > >> #define c 6 > > > > #define things should always be in all (or at least mostly) capital > > letters. > > > >> static inline void get_address(u8 *pum8sa, u8 *addr, u8 *offset){ > >> ether_addr_copy(addr, pum8sa + offset); > >> } > > > > I don't think this is the best idea. ether_addr_copy is something that is > > easily understandable to someone reading the code. get_address, on the > > other hand, could be anything. If you can find meaningful names for the > > offsets, then it would be better to say eg: > > > > ether_addr_copy(addr, pum8sa + NAME1) > > > > julia > > > > #define NAME1 4 > #define NAME2 10 > #define NAME3 16 Sorry, NAME was just supposed to be a metavariable, that you could fill in with something appropriate. From the comments in the code it seems like it should be ADDRESS1, ADDRESS2, etc. julia > > func() > { > if(...) > ether_addr_copy(addr, pum8sa + NAME1); //for address1 > else if(...) > ether_addr_copy(addr, pum8sa + NAME2)); //for address2 > else > ether_addr_copy(addr, pum8sa + NAME3); //for address3 > } > > Like this? > > >> func() > >> { > >> if(...) > >> get_address(data, bssid, ofs); //for address1 > >> else if(...) > >> get_address(data, bssid, ofs + c); //for address2 > >> else > >> get_address(data, bssid, ofs + 2*c); //for address3 > >> } > >> > >> This will make the work of function clear. Also, offset is not going > >> to be clear. > >> Is this going to be a good idea? > >> > >> Thank you > >> > >> >> Semantic patch used: > >> >> @@ > >> >> identifier f,g; > >> >> @@ > >> >> > >> >> *f(...) { > >> >> g(...); } > >> >> > >> >> Signed-off-by: Shivani Bhardwaj <shivanib134@gmail.com> > >> >> --- > >> >> drivers/staging/wilc1000/coreconfigurator.c | 38 ++++++++++------------------- > >> >> 1 file changed, 13 insertions(+), 25 deletions(-) > >> >> > >> >> diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c > >> >> index 427adfd..38bc2c4 100644 > >> >> --- a/drivers/staging/wilc1000/coreconfigurator.c > >> >> +++ b/drivers/staging/wilc1000/coreconfigurator.c > >> >> @@ -171,38 +171,26 @@ static inline u8 get_from_ds(u8 *header) > >> >> return ((header[1] & 0x02) >> 1); > >> >> } > >> >> > >> >> -/* This function extracts the MAC Address in 'address1' field of the MAC */ > >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ > >> >> -static inline void get_address1(u8 *pu8msa, u8 *addr) > >> >> -{ > >> >> - memcpy(addr, pu8msa + 4, 6); > >> >> -} > >> >> - > >> >> -/* This function extracts the MAC Address in 'address2' field of the MAC */ > >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ > >> >> -static inline void get_address2(u8 *pu8msa, u8 *addr) > >> >> -{ > >> >> - memcpy(addr, pu8msa + 10, 6); > >> >> -} > >> >> - > >> >> -/* This function extracts the MAC Address in 'address3' field of the MAC */ > >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ > >> >> -static inline void get_address3(u8 *pu8msa, u8 *addr) > >> >> -{ > >> >> - memcpy(addr, pu8msa + 16, 6); > >> >> -} > >> >> - > >> >> /* This function extracts the BSSID from the incoming WLAN packet based on */ > >> >> -/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr' */ > >> >> +/* the 'from ds' bit, and updates the MAC Address in the allocated 'data' */ > >> >> /* variable. */ > >> >> static inline void get_BSSID(u8 *data, u8 *bssid) > >> >> { > >> >> if (get_from_ds(data) == 1) > >> >> - get_address2(data, bssid); > >> >> + /* Extract the MAC Address in 'address2' field of the MAC */ > >> >> + /* header and update the MAC Address in the allocated 'data' > >> >> + * variable. */ > >> >> + memcpy(data, bssid + 10, 6); > >> >> else if (get_to_ds(data) == 1) > >> >> - get_address1(data, bssid); > >> >> + /* Extract the MAC Address in 'address1' field of the MAC */ > >> >> + /* header and update the MAC Address in the allocated 'data' > >> >> + * variable. */ > >> >> + memcpy(data, bssid + 4, 6); > >> >> else > >> >> - get_address3(data, bssid); > >> >> + /* Extract the MAC Address in 'address3' field of the MAC */ > >> >> + /* header and update the MAC Address in the allocated 'data' > >> >> + * variable. */ > >> >> + memcpy(data, bssid + 16, 6); > >> >> } > >> >> > >> >> /* This function extracts the SSID from a beacon/probe response frame */ > >> >> -- > >> >> 2.1.0 > >> >> > >> >> -- > >> >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. > >> >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. > >> >> To post to this group, send email to outreachy-kernel@googlegroups.com. > >> >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20151022101158.GA17223%40ubuntu. > >> >> For more options, visit https://groups.google.com/d/optout. > >> >> > >> > > -- > You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. > To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. > To post to this group, send email to outreachy-kernel@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/CAKHNQQHP7dpLZdz6E%3DCC%2BziN4df1Cdtb7Es-qc2KCFVnXrpF6w%40mail.gmail.com. > For more options, visit https://groups.google.com/d/optout. > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Outreachy kernel] [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions 2015-10-22 11:43 ` Julia Lawall @ 2015-10-22 12:26 ` Shivani Bhardwaj 2015-10-22 12:30 ` Julia Lawall 0 siblings, 1 reply; 12+ messages in thread From: Shivani Bhardwaj @ 2015-10-22 12:26 UTC (permalink / raw) To: Julia Lawall; +Cc: outreachy-kernel On Thu, Oct 22, 2015 at 5:13 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > > > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> On Thu, Oct 22, 2015 at 4:43 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: >> > >> >> On Thu, Oct 22, 2015 at 4:04 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: >> >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: >> >> > >> >> >> Remove the wrapper functions get_address1, get_address2 and get_address3 >> >> >> as they are not required and replace their calls by suitable functions. >> >> > >> >> > The existing functions serve two purposes: >> >> > >> >> > 1. They make clear that an ethernet address is being copied >> >> > 2. They hide the offsets >> >> > >> >> > To preserve the first property, the kernel has a function for copying >> >> > ethernet addresses. >> >> > >> >> > To preserve the second property, maybe it would be possible to #define >> >> > constants that describe the offsets, if there is any way to figure out >> >> > what they semantically mean. >> >> > >> >> > julia >> >> > >> >> >> >> Right. I am thinking of writing one wrapper function instead of three >> >> where I'll pass on an offset each time which will be #defined. >> >> For example, >> >> >> >> #define ofs 4 >> >> #define c 6 >> > >> > #define things should always be in all (or at least mostly) capital >> > letters. >> > >> >> static inline void get_address(u8 *pum8sa, u8 *addr, u8 *offset){ >> >> ether_addr_copy(addr, pum8sa + offset); >> >> } >> > >> > I don't think this is the best idea. ether_addr_copy is something that is >> > easily understandable to someone reading the code. get_address, on the >> > other hand, could be anything. If you can find meaningful names for the >> > offsets, then it would be better to say eg: >> > >> > ether_addr_copy(addr, pum8sa + NAME1) >> > >> > julia >> > >> >> #define NAME1 4 >> #define NAME2 10 >> #define NAME3 16 > > Sorry, NAME was just supposed to be a metavariable, that you could fill in > with something appropriate. From the comments in the code it seems like > it should be ADDRESS1, ADDRESS2, etc. > > julia > > Yes, I understand that. I was just presenting a prototype. :) I was thinking of ADDR1, ADDR2.. But, ADDRESS1, ADDRESS2,.. would be fine too. Thank you, Julia! :) >> >> func() >> { >> if(...) >> ether_addr_copy(addr, pum8sa + NAME1); //for address1 >> else if(...) >> ether_addr_copy(addr, pum8sa + NAME2)); //for address2 >> else >> ether_addr_copy(addr, pum8sa + NAME3); //for address3 >> } >> >> Like this? >> >> >> func() >> >> { >> >> if(...) >> >> get_address(data, bssid, ofs); //for address1 >> >> else if(...) >> >> get_address(data, bssid, ofs + c); //for address2 >> >> else >> >> get_address(data, bssid, ofs + 2*c); //for address3 >> >> } >> >> >> >> This will make the work of function clear. Also, offset is not going >> >> to be clear. >> >> Is this going to be a good idea? >> >> >> >> Thank you >> >> >> >> >> Semantic patch used: >> >> >> @@ >> >> >> identifier f,g; >> >> >> @@ >> >> >> >> >> >> *f(...) { >> >> >> g(...); } >> >> >> >> >> >> Signed-off-by: Shivani Bhardwaj <shivanib134@gmail.com> >> >> >> --- >> >> >> drivers/staging/wilc1000/coreconfigurator.c | 38 ++++++++++------------------- >> >> >> 1 file changed, 13 insertions(+), 25 deletions(-) >> >> >> >> >> >> diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c >> >> >> index 427adfd..38bc2c4 100644 >> >> >> --- a/drivers/staging/wilc1000/coreconfigurator.c >> >> >> +++ b/drivers/staging/wilc1000/coreconfigurator.c >> >> >> @@ -171,38 +171,26 @@ static inline u8 get_from_ds(u8 *header) >> >> >> return ((header[1] & 0x02) >> 1); >> >> >> } >> >> >> >> >> >> -/* This function extracts the MAC Address in 'address1' field of the MAC */ >> >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> >> >> -static inline void get_address1(u8 *pu8msa, u8 *addr) >> >> >> -{ >> >> >> - memcpy(addr, pu8msa + 4, 6); >> >> >> -} >> >> >> - >> >> >> -/* This function extracts the MAC Address in 'address2' field of the MAC */ >> >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> >> >> -static inline void get_address2(u8 *pu8msa, u8 *addr) >> >> >> -{ >> >> >> - memcpy(addr, pu8msa + 10, 6); >> >> >> -} >> >> >> - >> >> >> -/* This function extracts the MAC Address in 'address3' field of the MAC */ >> >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> >> >> -static inline void get_address3(u8 *pu8msa, u8 *addr) >> >> >> -{ >> >> >> - memcpy(addr, pu8msa + 16, 6); >> >> >> -} >> >> >> - >> >> >> /* This function extracts the BSSID from the incoming WLAN packet based on */ >> >> >> -/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr' */ >> >> >> +/* the 'from ds' bit, and updates the MAC Address in the allocated 'data' */ >> >> >> /* variable. */ >> >> >> static inline void get_BSSID(u8 *data, u8 *bssid) >> >> >> { >> >> >> if (get_from_ds(data) == 1) >> >> >> - get_address2(data, bssid); >> >> >> + /* Extract the MAC Address in 'address2' field of the MAC */ >> >> >> + /* header and update the MAC Address in the allocated 'data' >> >> >> + * variable. */ >> >> >> + memcpy(data, bssid + 10, 6); >> >> >> else if (get_to_ds(data) == 1) >> >> >> - get_address1(data, bssid); >> >> >> + /* Extract the MAC Address in 'address1' field of the MAC */ >> >> >> + /* header and update the MAC Address in the allocated 'data' >> >> >> + * variable. */ >> >> >> + memcpy(data, bssid + 4, 6); >> >> >> else >> >> >> - get_address3(data, bssid); >> >> >> + /* Extract the MAC Address in 'address3' field of the MAC */ >> >> >> + /* header and update the MAC Address in the allocated 'data' >> >> >> + * variable. */ >> >> >> + memcpy(data, bssid + 16, 6); >> >> >> } >> >> >> >> >> >> /* This function extracts the SSID from a beacon/probe response frame */ >> >> >> -- >> >> >> 2.1.0 >> >> >> >> >> >> -- >> >> >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. >> >> >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. >> >> >> To post to this group, send email to outreachy-kernel@googlegroups.com. >> >> >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20151022101158.GA17223%40ubuntu. >> >> >> For more options, visit https://groups.google.com/d/optout. >> >> >> >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. >> To post to this group, send email to outreachy-kernel@googlegroups.com. >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/CAKHNQQHP7dpLZdz6E%3DCC%2BziN4df1Cdtb7Es-qc2KCFVnXrpF6w%40mail.gmail.com. >> For more options, visit https://groups.google.com/d/optout. >> ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Outreachy kernel] [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions 2015-10-22 12:26 ` Shivani Bhardwaj @ 2015-10-22 12:30 ` Julia Lawall 2015-10-22 12:33 ` Shivani Bhardwaj 0 siblings, 1 reply; 12+ messages in thread From: Julia Lawall @ 2015-10-22 12:30 UTC (permalink / raw) To: Shivani Bhardwaj; +Cc: outreachy-kernel On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > On Thu, Oct 22, 2015 at 5:13 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > > > > > > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > > > >> On Thu, Oct 22, 2015 at 4:43 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> > > >> >> On Thu, Oct 22, 2015 at 4:04 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > >> >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> >> > > >> >> >> Remove the wrapper functions get_address1, get_address2 and get_address3 > >> >> >> as they are not required and replace their calls by suitable functions. > >> >> > > >> >> > The existing functions serve two purposes: > >> >> > > >> >> > 1. They make clear that an ethernet address is being copied > >> >> > 2. They hide the offsets > >> >> > > >> >> > To preserve the first property, the kernel has a function for copying > >> >> > ethernet addresses. > >> >> > > >> >> > To preserve the second property, maybe it would be possible to #define > >> >> > constants that describe the offsets, if there is any way to figure out > >> >> > what they semantically mean. > >> >> > > >> >> > julia > >> >> > > >> >> > >> >> Right. I am thinking of writing one wrapper function instead of three > >> >> where I'll pass on an offset each time which will be #defined. > >> >> For example, > >> >> > >> >> #define ofs 4 > >> >> #define c 6 > >> > > >> > #define things should always be in all (or at least mostly) capital > >> > letters. > >> > > >> >> static inline void get_address(u8 *pum8sa, u8 *addr, u8 *offset){ > >> >> ether_addr_copy(addr, pum8sa + offset); > >> >> } > >> > > >> > I don't think this is the best idea. ether_addr_copy is something that is > >> > easily understandable to someone reading the code. get_address, on the > >> > other hand, could be anything. If you can find meaningful names for the > >> > offsets, then it would be better to say eg: > >> > > >> > ether_addr_copy(addr, pum8sa + NAME1) > >> > > >> > julia > >> > > >> > >> #define NAME1 4 > >> #define NAME2 10 > >> #define NAME3 16 > > > > Sorry, NAME was just supposed to be a metavariable, that you could fill in > > with something appropriate. From the comments in the code it seems like > > it should be ADDRESS1, ADDRESS2, etc. > > > > julia > > > > > > Yes, I understand that. I was just presenting a prototype. :) > I was thinking of ADDR1, ADDR2.. But, ADDRESS1, ADDRESS2,.. would be fine too. Either way should be OK. julia > > Thank you, Julia! :) > > >> > >> func() > >> { > >> if(...) > >> ether_addr_copy(addr, pum8sa + NAME1); //for address1 > >> else if(...) > >> ether_addr_copy(addr, pum8sa + NAME2)); //for address2 > >> else > >> ether_addr_copy(addr, pum8sa + NAME3); //for address3 > >> } > >> > >> Like this? > >> > >> >> func() > >> >> { > >> >> if(...) > >> >> get_address(data, bssid, ofs); //for address1 > >> >> else if(...) > >> >> get_address(data, bssid, ofs + c); //for address2 > >> >> else > >> >> get_address(data, bssid, ofs + 2*c); //for address3 > >> >> } > >> >> > >> >> This will make the work of function clear. Also, offset is not going > >> >> to be clear. > >> >> Is this going to be a good idea? > >> >> > >> >> Thank you > >> >> > >> >> >> Semantic patch used: > >> >> >> @@ > >> >> >> identifier f,g; > >> >> >> @@ > >> >> >> > >> >> >> *f(...) { > >> >> >> g(...); } > >> >> >> > >> >> >> Signed-off-by: Shivani Bhardwaj <shivanib134@gmail.com> > >> >> >> --- > >> >> >> drivers/staging/wilc1000/coreconfigurator.c | 38 ++++++++++------------------- > >> >> >> 1 file changed, 13 insertions(+), 25 deletions(-) > >> >> >> > >> >> >> diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c > >> >> >> index 427adfd..38bc2c4 100644 > >> >> >> --- a/drivers/staging/wilc1000/coreconfigurator.c > >> >> >> +++ b/drivers/staging/wilc1000/coreconfigurator.c > >> >> >> @@ -171,38 +171,26 @@ static inline u8 get_from_ds(u8 *header) > >> >> >> return ((header[1] & 0x02) >> 1); > >> >> >> } > >> >> >> > >> >> >> -/* This function extracts the MAC Address in 'address1' field of the MAC */ > >> >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ > >> >> >> -static inline void get_address1(u8 *pu8msa, u8 *addr) > >> >> >> -{ > >> >> >> - memcpy(addr, pu8msa + 4, 6); > >> >> >> -} > >> >> >> - > >> >> >> -/* This function extracts the MAC Address in 'address2' field of the MAC */ > >> >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ > >> >> >> -static inline void get_address2(u8 *pu8msa, u8 *addr) > >> >> >> -{ > >> >> >> - memcpy(addr, pu8msa + 10, 6); > >> >> >> -} > >> >> >> - > >> >> >> -/* This function extracts the MAC Address in 'address3' field of the MAC */ > >> >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ > >> >> >> -static inline void get_address3(u8 *pu8msa, u8 *addr) > >> >> >> -{ > >> >> >> - memcpy(addr, pu8msa + 16, 6); > >> >> >> -} > >> >> >> - > >> >> >> /* This function extracts the BSSID from the incoming WLAN packet based on */ > >> >> >> -/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr' */ > >> >> >> +/* the 'from ds' bit, and updates the MAC Address in the allocated 'data' */ > >> >> >> /* variable. */ > >> >> >> static inline void get_BSSID(u8 *data, u8 *bssid) > >> >> >> { > >> >> >> if (get_from_ds(data) == 1) > >> >> >> - get_address2(data, bssid); > >> >> >> + /* Extract the MAC Address in 'address2' field of the MAC */ > >> >> >> + /* header and update the MAC Address in the allocated 'data' > >> >> >> + * variable. */ > >> >> >> + memcpy(data, bssid + 10, 6); > >> >> >> else if (get_to_ds(data) == 1) > >> >> >> - get_address1(data, bssid); > >> >> >> + /* Extract the MAC Address in 'address1' field of the MAC */ > >> >> >> + /* header and update the MAC Address in the allocated 'data' > >> >> >> + * variable. */ > >> >> >> + memcpy(data, bssid + 4, 6); > >> >> >> else > >> >> >> - get_address3(data, bssid); > >> >> >> + /* Extract the MAC Address in 'address3' field of the MAC */ > >> >> >> + /* header and update the MAC Address in the allocated 'data' > >> >> >> + * variable. */ > >> >> >> + memcpy(data, bssid + 16, 6); > >> >> >> } > >> >> >> > >> >> >> /* This function extracts the SSID from a beacon/probe response frame */ > >> >> >> -- > >> >> >> 2.1.0 > >> >> >> > >> >> >> -- > >> >> >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. > >> >> >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. > >> >> >> To post to this group, send email to outreachy-kernel@googlegroups.com. > >> >> >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20151022101158.GA17223%40ubuntu. > >> >> >> For more options, visit https://groups.google.com/d/optout. > >> >> >> > >> >> > >> > >> -- > >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. > >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. > >> To post to this group, send email to outreachy-kernel@googlegroups.com. > >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/CAKHNQQHP7dpLZdz6E%3DCC%2BziN4df1Cdtb7Es-qc2KCFVnXrpF6w%40mail.gmail.com. > >> For more options, visit https://groups.google.com/d/optout. > >> > > -- > You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. > To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. > To post to this group, send email to outreachy-kernel@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/CAKHNQQE-rMmuZ-UyzLyYkaS4kcT7UMqLRec-kzhKODA%2BzX8bAw%40mail.gmail.com. > For more options, visit https://groups.google.com/d/optout. > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Outreachy kernel] [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions 2015-10-22 12:30 ` Julia Lawall @ 2015-10-22 12:33 ` Shivani Bhardwaj 2015-10-22 12:37 ` Julia Lawall 0 siblings, 1 reply; 12+ messages in thread From: Shivani Bhardwaj @ 2015-10-22 12:33 UTC (permalink / raw) To: Julia Lawall; +Cc: outreachy-kernel On Thu, Oct 22, 2015 at 6:00 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > > > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> On Thu, Oct 22, 2015 at 5:13 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: >> > >> > >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: >> > >> >> On Thu, Oct 22, 2015 at 4:43 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: >> >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: >> >> > >> >> >> On Thu, Oct 22, 2015 at 4:04 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: >> >> >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: >> >> >> > >> >> >> >> Remove the wrapper functions get_address1, get_address2 and get_address3 >> >> >> >> as they are not required and replace their calls by suitable functions. >> >> >> > >> >> >> > The existing functions serve two purposes: >> >> >> > >> >> >> > 1. They make clear that an ethernet address is being copied >> >> >> > 2. They hide the offsets >> >> >> > >> >> >> > To preserve the first property, the kernel has a function for copying >> >> >> > ethernet addresses. >> >> >> > >> >> >> > To preserve the second property, maybe it would be possible to #define >> >> >> > constants that describe the offsets, if there is any way to figure out >> >> >> > what they semantically mean. >> >> >> > >> >> >> > julia >> >> >> > >> >> >> >> >> >> Right. I am thinking of writing one wrapper function instead of three >> >> >> where I'll pass on an offset each time which will be #defined. >> >> >> For example, >> >> >> >> >> >> #define ofs 4 >> >> >> #define c 6 >> >> > >> >> > #define things should always be in all (or at least mostly) capital >> >> > letters. >> >> > >> >> >> static inline void get_address(u8 *pum8sa, u8 *addr, u8 *offset){ >> >> >> ether_addr_copy(addr, pum8sa + offset); >> >> >> } >> >> > >> >> > I don't think this is the best idea. ether_addr_copy is something that is >> >> > easily understandable to someone reading the code. get_address, on the >> >> > other hand, could be anything. If you can find meaningful names for the >> >> > offsets, then it would be better to say eg: >> >> > >> >> > ether_addr_copy(addr, pum8sa + NAME1) >> >> > >> >> > julia >> >> > >> >> >> >> #define NAME1 4 >> >> #define NAME2 10 >> >> #define NAME3 16 >> > >> > Sorry, NAME was just supposed to be a metavariable, that you could fill in >> > with something appropriate. From the comments in the code it seems like >> > it should be ADDRESS1, ADDRESS2, etc. >> > >> > julia >> > >> > >> >> Yes, I understand that. I was just presenting a prototype. :) >> I was thinking of ADDR1, ADDR2.. But, ADDRESS1, ADDRESS2,.. would be fine too. > > Either way should be OK. > > julia > Thanks. I'm sending v2. I'm getting implicit function declaration error for ether_addr_copy function. Can it be ignored? >> >> Thank you, Julia! :) >> >> >> >> >> func() >> >> { >> >> if(...) >> >> ether_addr_copy(addr, pum8sa + NAME1); //for address1 >> >> else if(...) >> >> ether_addr_copy(addr, pum8sa + NAME2)); //for address2 >> >> else >> >> ether_addr_copy(addr, pum8sa + NAME3); //for address3 >> >> } >> >> >> >> Like this? >> >> >> >> >> func() >> >> >> { >> >> >> if(...) >> >> >> get_address(data, bssid, ofs); //for address1 >> >> >> else if(...) >> >> >> get_address(data, bssid, ofs + c); //for address2 >> >> >> else >> >> >> get_address(data, bssid, ofs + 2*c); //for address3 >> >> >> } >> >> >> >> >> >> This will make the work of function clear. Also, offset is not going >> >> >> to be clear. >> >> >> Is this going to be a good idea? >> >> >> >> >> >> Thank you >> >> >> >> >> >> >> Semantic patch used: >> >> >> >> @@ >> >> >> >> identifier f,g; >> >> >> >> @@ >> >> >> >> >> >> >> >> *f(...) { >> >> >> >> g(...); } >> >> >> >> >> >> >> >> Signed-off-by: Shivani Bhardwaj <shivanib134@gmail.com> >> >> >> >> --- >> >> >> >> drivers/staging/wilc1000/coreconfigurator.c | 38 ++++++++++------------------- >> >> >> >> 1 file changed, 13 insertions(+), 25 deletions(-) >> >> >> >> >> >> >> >> diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c >> >> >> >> index 427adfd..38bc2c4 100644 >> >> >> >> --- a/drivers/staging/wilc1000/coreconfigurator.c >> >> >> >> +++ b/drivers/staging/wilc1000/coreconfigurator.c >> >> >> >> @@ -171,38 +171,26 @@ static inline u8 get_from_ds(u8 *header) >> >> >> >> return ((header[1] & 0x02) >> 1); >> >> >> >> } >> >> >> >> >> >> >> >> -/* This function extracts the MAC Address in 'address1' field of the MAC */ >> >> >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> >> >> >> -static inline void get_address1(u8 *pu8msa, u8 *addr) >> >> >> >> -{ >> >> >> >> - memcpy(addr, pu8msa + 4, 6); >> >> >> >> -} >> >> >> >> - >> >> >> >> -/* This function extracts the MAC Address in 'address2' field of the MAC */ >> >> >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> >> >> >> -static inline void get_address2(u8 *pu8msa, u8 *addr) >> >> >> >> -{ >> >> >> >> - memcpy(addr, pu8msa + 10, 6); >> >> >> >> -} >> >> >> >> - >> >> >> >> -/* This function extracts the MAC Address in 'address3' field of the MAC */ >> >> >> >> -/* header and updates the MAC Address in the allocated 'addr' variable. */ >> >> >> >> -static inline void get_address3(u8 *pu8msa, u8 *addr) >> >> >> >> -{ >> >> >> >> - memcpy(addr, pu8msa + 16, 6); >> >> >> >> -} >> >> >> >> - >> >> >> >> /* This function extracts the BSSID from the incoming WLAN packet based on */ >> >> >> >> -/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr' */ >> >> >> >> +/* the 'from ds' bit, and updates the MAC Address in the allocated 'data' */ >> >> >> >> /* variable. */ >> >> >> >> static inline void get_BSSID(u8 *data, u8 *bssid) >> >> >> >> { >> >> >> >> if (get_from_ds(data) == 1) >> >> >> >> - get_address2(data, bssid); >> >> >> >> + /* Extract the MAC Address in 'address2' field of the MAC */ >> >> >> >> + /* header and update the MAC Address in the allocated 'data' >> >> >> >> + * variable. */ >> >> >> >> + memcpy(data, bssid + 10, 6); >> >> >> >> else if (get_to_ds(data) == 1) >> >> >> >> - get_address1(data, bssid); >> >> >> >> + /* Extract the MAC Address in 'address1' field of the MAC */ >> >> >> >> + /* header and update the MAC Address in the allocated 'data' >> >> >> >> + * variable. */ >> >> >> >> + memcpy(data, bssid + 4, 6); >> >> >> >> else >> >> >> >> - get_address3(data, bssid); >> >> >> >> + /* Extract the MAC Address in 'address3' field of the MAC */ >> >> >> >> + /* header and update the MAC Address in the allocated 'data' >> >> >> >> + * variable. */ >> >> >> >> + memcpy(data, bssid + 16, 6); >> >> >> >> } >> >> >> >> >> >> >> >> /* This function extracts the SSID from a beacon/probe response frame */ >> >> >> >> -- >> >> >> >> 2.1.0 >> >> >> >> >> >> >> >> -- >> >> >> >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. >> >> >> >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. >> >> >> >> To post to this group, send email to outreachy-kernel@googlegroups.com. >> >> >> >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20151022101158.GA17223%40ubuntu. >> >> >> >> For more options, visit https://groups.google.com/d/optout. >> >> >> >> >> >> >> >> >> >> >> -- >> >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. >> >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. >> >> To post to this group, send email to outreachy-kernel@googlegroups.com. >> >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/CAKHNQQHP7dpLZdz6E%3DCC%2BziN4df1Cdtb7Es-qc2KCFVnXrpF6w%40mail.gmail.com. >> >> For more options, visit https://groups.google.com/d/optout. >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. >> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. >> To post to this group, send email to outreachy-kernel@googlegroups.com. >> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/CAKHNQQE-rMmuZ-UyzLyYkaS4kcT7UMqLRec-kzhKODA%2BzX8bAw%40mail.gmail.com. >> For more options, visit https://groups.google.com/d/optout. >> ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Outreachy kernel] [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions 2015-10-22 12:33 ` Shivani Bhardwaj @ 2015-10-22 12:37 ` Julia Lawall 2015-10-22 12:38 ` Shivani Bhardwaj 0 siblings, 1 reply; 12+ messages in thread From: Julia Lawall @ 2015-10-22 12:37 UTC (permalink / raw) To: Shivani Bhardwaj; +Cc: outreachy-kernel On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > On Thu, Oct 22, 2015 at 6:00 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > > > > > > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > > > >> On Thu, Oct 22, 2015 at 5:13 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > >> > > >> > > >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> > > >> >> On Thu, Oct 22, 2015 at 4:43 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > >> >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> >> > > >> >> >> On Thu, Oct 22, 2015 at 4:04 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > >> >> >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> >> >> > > >> >> >> >> Remove the wrapper functions get_address1, get_address2 and get_address3 > >> >> >> >> as they are not required and replace their calls by suitable functions. > >> >> >> > > >> >> >> > The existing functions serve two purposes: > >> >> >> > > >> >> >> > 1. They make clear that an ethernet address is being copied > >> >> >> > 2. They hide the offsets > >> >> >> > > >> >> >> > To preserve the first property, the kernel has a function for copying > >> >> >> > ethernet addresses. > >> >> >> > > >> >> >> > To preserve the second property, maybe it would be possible to #define > >> >> >> > constants that describe the offsets, if there is any way to figure out > >> >> >> > what they semantically mean. > >> >> >> > > >> >> >> > julia > >> >> >> > > >> >> >> > >> >> >> Right. I am thinking of writing one wrapper function instead of three > >> >> >> where I'll pass on an offset each time which will be #defined. > >> >> >> For example, > >> >> >> > >> >> >> #define ofs 4 > >> >> >> #define c 6 > >> >> > > >> >> > #define things should always be in all (or at least mostly) capital > >> >> > letters. > >> >> > > >> >> >> static inline void get_address(u8 *pum8sa, u8 *addr, u8 *offset){ > >> >> >> ether_addr_copy(addr, pum8sa + offset); > >> >> >> } > >> >> > > >> >> > I don't think this is the best idea. ether_addr_copy is something that is > >> >> > easily understandable to someone reading the code. get_address, on the > >> >> > other hand, could be anything. If you can find meaningful names for the > >> >> > offsets, then it would be better to say eg: > >> >> > > >> >> > ether_addr_copy(addr, pum8sa + NAME1) > >> >> > > >> >> > julia > >> >> > > >> >> > >> >> #define NAME1 4 > >> >> #define NAME2 10 > >> >> #define NAME3 16 > >> > > >> > Sorry, NAME was just supposed to be a metavariable, that you could fill in > >> > with something appropriate. From the comments in the code it seems like > >> > it should be ADDRESS1, ADDRESS2, etc. > >> > > >> > julia > >> > > >> > > >> > >> Yes, I understand that. I was just presenting a prototype. :) > >> I was thinking of ADDR1, ADDR2.. But, ADDRESS1, ADDRESS2,.. would be fine too. > > > > Either way should be OK. > > > > julia > > > Thanks. I'm sending v2. > I'm getting implicit function declaration error for ether_addr_copy > function. Can it be ignored? No. You need to find the appropriate header file to include. julia ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Outreachy kernel] [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions 2015-10-22 12:37 ` Julia Lawall @ 2015-10-22 12:38 ` Shivani Bhardwaj 0 siblings, 0 replies; 12+ messages in thread From: Shivani Bhardwaj @ 2015-10-22 12:38 UTC (permalink / raw) To: Julia Lawall; +Cc: outreachy-kernel On Thu, Oct 22, 2015 at 6:07 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: > > > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: > >> On Thu, Oct 22, 2015 at 6:00 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: >> > >> > >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: >> > >> >> On Thu, Oct 22, 2015 at 5:13 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: >> >> > >> >> > >> >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: >> >> > >> >> >> On Thu, Oct 22, 2015 at 4:43 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: >> >> >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: >> >> >> > >> >> >> >> On Thu, Oct 22, 2015 at 4:04 PM, Julia Lawall <julia.lawall@lip6.fr> wrote: >> >> >> >> > On Thu, 22 Oct 2015, Shivani Bhardwaj wrote: >> >> >> >> > >> >> >> >> >> Remove the wrapper functions get_address1, get_address2 and get_address3 >> >> >> >> >> as they are not required and replace their calls by suitable functions. >> >> >> >> > >> >> >> >> > The existing functions serve two purposes: >> >> >> >> > >> >> >> >> > 1. They make clear that an ethernet address is being copied >> >> >> >> > 2. They hide the offsets >> >> >> >> > >> >> >> >> > To preserve the first property, the kernel has a function for copying >> >> >> >> > ethernet addresses. >> >> >> >> > >> >> >> >> > To preserve the second property, maybe it would be possible to #define >> >> >> >> > constants that describe the offsets, if there is any way to figure out >> >> >> >> > what they semantically mean. >> >> >> >> > >> >> >> >> > julia >> >> >> >> > >> >> >> >> >> >> >> >> Right. I am thinking of writing one wrapper function instead of three >> >> >> >> where I'll pass on an offset each time which will be #defined. >> >> >> >> For example, >> >> >> >> >> >> >> >> #define ofs 4 >> >> >> >> #define c 6 >> >> >> > >> >> >> > #define things should always be in all (or at least mostly) capital >> >> >> > letters. >> >> >> > >> >> >> >> static inline void get_address(u8 *pum8sa, u8 *addr, u8 *offset){ >> >> >> >> ether_addr_copy(addr, pum8sa + offset); >> >> >> >> } >> >> >> > >> >> >> > I don't think this is the best idea. ether_addr_copy is something that is >> >> >> > easily understandable to someone reading the code. get_address, on the >> >> >> > other hand, could be anything. If you can find meaningful names for the >> >> >> > offsets, then it would be better to say eg: >> >> >> > >> >> >> > ether_addr_copy(addr, pum8sa + NAME1) >> >> >> > >> >> >> > julia >> >> >> > >> >> >> >> >> >> #define NAME1 4 >> >> >> #define NAME2 10 >> >> >> #define NAME3 16 >> >> > >> >> > Sorry, NAME was just supposed to be a metavariable, that you could fill in >> >> > with something appropriate. From the comments in the code it seems like >> >> > it should be ADDRESS1, ADDRESS2, etc. >> >> > >> >> > julia >> >> > >> >> > >> >> >> >> Yes, I understand that. I was just presenting a prototype. :) >> >> I was thinking of ADDR1, ADDR2.. But, ADDRESS1, ADDRESS2,.. would be fine too. >> > >> > Either way should be OK. >> > >> > julia >> > >> Thanks. I'm sending v2. >> I'm getting implicit function declaration error for ether_addr_copy >> function. Can it be ignored? > > No. You need to find the appropriate header file to include. > > julia All right. Thank you ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions
@ 2015-10-22 12:53 Shivani Bhardwaj
0 siblings, 0 replies; 12+ messages in thread
From: Shivani Bhardwaj @ 2015-10-22 12:53 UTC (permalink / raw)
To: outreachy-kernel
Remove the wrapper functions get_address1, get_address2 and get_address3
as they are not required and replace their calls by suitable functions.
Semantic patch used:
@@
identifier f,g;
@@
*f(...) {
g(...); }
Signed-off-by: Shivani Bhardwaj <shivanib134@gmail.com>
---
drivers/staging/wilc1000/coreconfigurator.c | 48 ++++++++++++++---------------
1 file changed, 23 insertions(+), 25 deletions(-)
diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c
index 427adfd..6dfe26d 100644
--- a/drivers/staging/wilc1000/coreconfigurator.c
+++ b/drivers/staging/wilc1000/coreconfigurator.c
@@ -13,8 +13,12 @@
#include "wilc_wlan.h"
#include <linux/errno.h>
#include <linux/slab.h>
+#include <linux/etherdevice.h>
#define TAG_PARAM_OFFSET (MAC_HDR_LEN + TIME_STAMP_LEN + \
BEACON_INTERVAL_LEN + CAP_INFO_LEN)
+#define ADDR1 4
+#define ADDR2 10
+#define ADDR3 16
/* Basic Frame Type Codes (2-bit) */
enum basic_frame_type {
@@ -171,38 +175,32 @@ static inline u8 get_from_ds(u8 *header)
return ((header[1] & 0x02) >> 1);
}
-/* This function extracts the MAC Address in 'address1' field of the MAC */
-/* header and updates the MAC Address in the allocated 'addr' variable. */
-static inline void get_address1(u8 *pu8msa, u8 *addr)
-{
- memcpy(addr, pu8msa + 4, 6);
-}
-
-/* This function extracts the MAC Address in 'address2' field of the MAC */
-/* header and updates the MAC Address in the allocated 'addr' variable. */
-static inline void get_address2(u8 *pu8msa, u8 *addr)
-{
- memcpy(addr, pu8msa + 10, 6);
-}
-
-/* This function extracts the MAC Address in 'address3' field of the MAC */
-/* header and updates the MAC Address in the allocated 'addr' variable. */
-static inline void get_address3(u8 *pu8msa, u8 *addr)
-{
- memcpy(addr, pu8msa + 16, 6);
-}
-
/* This function extracts the BSSID from the incoming WLAN packet based on */
-/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr' */
+/* the 'from ds' bit, and updates the MAC Address in the allocated 'data' */
/* variable. */
static inline void get_BSSID(u8 *data, u8 *bssid)
{
if (get_from_ds(data) == 1)
- get_address2(data, bssid);
+ /*
+ * Extract the MAC Address in 'address2' field of the MAC
+ * header and update the MAC Address in the allocated 'data'
+ * variable.
+ */
+ ether_addr_copy(data, bssid + ADDR2);
else if (get_to_ds(data) == 1)
- get_address1(data, bssid);
+ /*
+ * Extract the MAC Address in 'address1' field of the MAC
+ * header and update the MAC Address in the allocated 'data'
+ * variable.
+ */
+ ether_addr_copy(data, bssid + ADDR1);
else
- get_address3(data, bssid);
+ /*
+ * Extract the MAC Address in 'address3' field of the MAC
+ * header and update the MAC Address in the allocated 'data'
+ * variable.
+ */
+ ether_addr_copy(data, bssid + ADDR3);
}
/* This function extracts the SSID from a beacon/probe response frame */
--
2.1.0
^ permalink raw reply related [flat|nested] 12+ messages in threadend of thread, other threads:[~2015-10-22 12:53 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-10-22 10:11 [PATCH] Staging: wilc1000: coreconfigurator: Drop unneeded wrapper functions Shivani Bhardwaj 2015-10-22 10:34 ` [Outreachy kernel] " Julia Lawall 2015-10-22 11:01 ` Shivani Bhardwaj 2015-10-22 11:13 ` Julia Lawall 2015-10-22 11:28 ` Shivani Bhardwaj 2015-10-22 11:43 ` Julia Lawall 2015-10-22 12:26 ` Shivani Bhardwaj 2015-10-22 12:30 ` Julia Lawall 2015-10-22 12:33 ` Shivani Bhardwaj 2015-10-22 12:37 ` Julia Lawall 2015-10-22 12:38 ` Shivani Bhardwaj -- strict thread matches above, loose matches on Subject: below -- 2015-10-22 12:53 Shivani Bhardwaj
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.