Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

caif: code cleanup

Cleanup of new CAIF code.
* make local functions static
* remove code that is never used
* expand get_caif_conf() since wrapper is no longer needed
* make args to comparison functions const
* rename connect_req_to_link_param to keep exported names
consistent

Compile tested only.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Stephen Hemminger and committed by
David S. Miller
73d6ac63 1c01a80c

+30 -416
+5 -22
include/net/caif/caif_dev.h
··· 74 74 int caif_disconnect_client(struct cflayer *client_layer); 75 75 76 76 /** 77 - * caif_release_client - Release adaptation layer reference to client. 78 - * 79 - * @client_layer: Client layer. 80 - * 81 - * Releases a client/adaptation layer use of the caif stack. 82 - * This function must be used after caif_disconnect_client to 83 - * decrease the reference count of the service layer. 84 - */ 85 - void caif_release_client(struct cflayer *client_layer); 86 - 87 - /** 88 - * connect_req_to_link_param - Translate configuration parameters 89 - * from socket format to internal format. 77 + * caif_connect_req_to_link_param - Translate configuration parameters 78 + * from socket format to internal format. 90 79 * @cnfg: Pointer to configuration handler 91 80 * @con_req: Configuration parameters supplied in function 92 81 * caif_connect_client ··· 83 94 * setting up channels. 84 95 * 85 96 */ 86 - int connect_req_to_link_param(struct cfcnfg *cnfg, 87 - struct caif_connect_request *con_req, 88 - struct cfctrl_link_param *channel_setup_param); 89 - 90 - /** 91 - * get_caif_conf() - Get the configuration handler. 92 - */ 93 - struct cfcnfg *get_caif_conf(void); 94 - 97 + int caif_connect_req_to_link_param(struct cfcnfg *cnfg, 98 + struct caif_connect_request *con_req, 99 + struct cfctrl_link_param *setup_param); 95 100 96 101 #endif /* CAIF_DEV_H_ */
+1 -11
include/net/caif/cfctrl.h
··· 121 121 struct cflayer *user_layer); 122 122 int cfctrl_linkdown_req(struct cflayer *cfctrl, u8 linkid, 123 123 struct cflayer *client); 124 - void cfctrl_sleep_req(struct cflayer *cfctrl); 125 - void cfctrl_wake_req(struct cflayer *cfctrl); 126 - void cfctrl_getstartreason_req(struct cflayer *cfctrl); 124 + 127 125 struct cflayer *cfctrl_create(void); 128 - void cfctrl_set_dnlayer(struct cflayer *this, struct cflayer *dn); 129 - void cfctrl_set_uplayer(struct cflayer *this, struct cflayer *up); 130 126 struct cfctrl_rsp *cfctrl_get_respfuncs(struct cflayer *layer); 131 - bool cfctrl_req_eq(struct cfctrl_request_info *r1, 132 - struct cfctrl_request_info *r2); 133 - void cfctrl_insert_req(struct cfctrl *ctrl, 134 - struct cfctrl_request_info *req); 135 - struct cfctrl_request_info *cfctrl_remove_req(struct cfctrl *ctrl, 136 - struct cfctrl_request_info *req); 137 127 void cfctrl_cancel_req(struct cflayer *layr, struct cflayer *adap_layer); 138 128 139 129 #endif /* CFCTRL_H_ */
-2
include/net/caif/cfmuxl.h
··· 16 16 struct cflayer *cfmuxl_remove_dnlayer(struct cflayer *layr, u8 phyid); 17 17 int cfmuxl_set_dnlayer(struct cflayer *layr, struct cflayer *up, u8 phyid); 18 18 struct cflayer *cfmuxl_remove_uplayer(struct cflayer *layr, u8 linkid); 19 - bool cfmuxl_is_phy_inuse(struct cflayer *layr, u8 phyid); 20 - u8 cfmuxl_get_phyid(struct cflayer *layr, u8 channel_id); 21 19 22 20 #endif /* CFMUXL_H_ */
-75
include/net/caif/cfpkt.h
··· 16 16 */ 17 17 struct cfpkt *cfpkt_create(u16 len); 18 18 19 - /* Create a CAIF packet. 20 - * data Data to copy. 21 - * len Length of packet to be created 22 - * @return New packet. 23 - */ 24 - struct cfpkt *cfpkt_create_uplink(const unsigned char *data, unsigned int len); 25 19 /* 26 20 * Destroy a CAIF Packet. 27 21 * pkt Packet to be destoyed. ··· 175 181 u16 (*iter_func)(u16 chks, void *buf, u16 len), 176 182 u16 data); 177 183 178 - /* Append by giving user access to packet buffer 179 - * cfpkt Packet to append to 180 - * buf Buffer inside pkt that user shall copy data into 181 - * buflen Length of buffer and number of bytes added to packet 182 - * @return 0 on error, 1 on success 183 - */ 184 - int cfpkt_raw_append(struct cfpkt *cfpkt, void **buf, unsigned int buflen); 185 - 186 - /* Extract by giving user access to packet buffer 187 - * cfpkt Packet to extract from 188 - * buf Buffer inside pkt that user shall copy data from 189 - * buflen Length of buffer and number of bytes removed from packet 190 - * @return 0 on error, 1 on success 191 - */ 192 - int cfpkt_raw_extract(struct cfpkt *cfpkt, void **buf, unsigned int buflen); 193 - 194 184 /* Map from a "native" packet (e.g. Linux Socket Buffer) to a CAIF packet. 195 185 * dir - Direction indicating whether this packet is to be sent or received. 196 186 * nativepkt - The native packet to be transformed to a CAIF packet ··· 187 209 * @return The native packet transformed from a CAIF packet. 188 210 */ 189 211 void *cfpkt_tonative(struct cfpkt *pkt); 190 - 191 - /* 192 - * Insert a packet in the packet queue. 193 - * pktq Packet queue to insert into 194 - * pkt Packet to be inserted in queue 195 - * prio Priority of packet 196 - */ 197 - void cfpkt_queue(struct cfpktq *pktq, struct cfpkt *pkt, 198 - unsigned short prio); 199 - 200 - /* 201 - * Remove a packet from the packet queue. 202 - * pktq Packet queue to fetch packets from. 203 - * @return Dequeued packet. 204 - */ 205 - struct cfpkt *cfpkt_dequeue(struct cfpktq *pktq); 206 - 207 - /* 208 - * Peek into a packet from the packet queue. 209 - * pktq Packet queue to fetch packets from. 210 - * @return Peeked packet. 211 - */ 212 - struct cfpkt *cfpkt_qpeek(struct cfpktq *pktq); 213 - 214 - /* 215 - * Initiates the packet queue. 216 - * @return Pointer to new packet queue. 217 - */ 218 - struct cfpktq *cfpktq_create(void); 219 - 220 - /* 221 - * Get the number of packets in the queue. 222 - * pktq Packet queue to fetch count from. 223 - * @return Number of packets in queue. 224 - */ 225 - int cfpkt_qcount(struct cfpktq *pktq); 226 - 227 - /* 228 - * Put content of packet into buffer for debuging purposes. 229 - * pkt Packet to copy data from 230 - * buf Buffer to copy data into 231 - * buflen Length of data to copy 232 - * @return Pointer to copied data 233 - */ 234 - char *cfpkt_log_pkt(struct cfpkt *pkt, char *buf, int buflen); 235 - 236 - /* 237 - * Clones a packet and releases the original packet. 238 - * This is used for taking ownership of a packet e.g queueing. 239 - * pkt Packet to clone and release. 240 - * @return Cloned packet. 241 - */ 242 - struct cfpkt *cfpkt_clone_release(struct cfpkt *pkt); 243 212 244 213 245 214 /*
+1 -2
include/net/caif/cfsrvl.h
··· 22 22 struct kref ref; 23 23 }; 24 24 25 - void cfsrvl_release(struct kref *kref); 26 25 struct cflayer *cfvei_create(u8 linkid, struct dev_info *dev_info); 27 26 struct cflayer *cfdgml_create(u8 linkid, struct dev_info *dev_info); 28 27 struct cflayer *cfutill_create(u8 linkid, struct dev_info *dev_info); ··· 30 31 int mtu_size); 31 32 struct cflayer *cfdbgl_create(u8 linkid, struct dev_info *dev_info); 32 33 bool cfsrvl_phyid_match(struct cflayer *layer, int phyid); 33 - void cfservl_destroy(struct cflayer *layer); 34 + 34 35 void cfsrvl_init(struct cfsrvl *service, 35 36 u8 channel_id, 36 37 struct dev_info *dev_info,
+3 -3
net/caif/caif_config_util.c
··· 10 10 #include <net/caif/cfcnfg.h> 11 11 #include <net/caif/caif_dev.h> 12 12 13 - int connect_req_to_link_param(struct cfcnfg *cnfg, 14 - struct caif_connect_request *s, 15 - struct cfctrl_link_param *l) 13 + int caif_connect_req_to_link_param(struct cfcnfg *cnfg, 14 + struct caif_connect_request *s, 15 + struct cfctrl_link_param *l) 16 16 { 17 17 struct dev_info *dev_info; 18 18 enum cfcnfg_phy_preference pref;
+6 -18
net/caif/caif_dev.c
··· 257 257 break; 258 258 } 259 259 dev_hold(dev); 260 - cfcnfg_add_phy_layer(get_caif_conf(), 260 + cfcnfg_add_phy_layer(cfg, 261 261 phy_type, 262 262 dev, 263 263 &caifd->layer, ··· 300 300 if (atomic_read(&caifd->in_use)) 301 301 netdev_warn(dev, 302 302 "Unregistering an active CAIF device\n"); 303 - cfcnfg_del_phy_layer(get_caif_conf(), &caifd->layer); 303 + cfcnfg_del_phy_layer(cfg, &caifd->layer); 304 304 dev_put(dev); 305 305 atomic_set(&caifd->state, what); 306 306 break; ··· 322 322 .priority = 0, 323 323 }; 324 324 325 - 326 - struct cfcnfg *get_caif_conf(void) 327 - { 328 - return cfg; 329 - } 330 - EXPORT_SYMBOL(get_caif_conf); 331 - 332 325 int caif_connect_client(struct caif_connect_request *conn_req, 333 326 struct cflayer *client_layer, int *ifindex, 334 327 int *headroom, int *tailroom) 335 328 { 336 329 struct cfctrl_link_param param; 337 330 int ret; 338 - ret = connect_req_to_link_param(get_caif_conf(), conn_req, &param); 331 + 332 + ret = caif_connect_req_to_link_param(cfg, conn_req, &param); 339 333 if (ret) 340 334 return ret; 341 335 /* Hook up the adaptation layer. */ 342 - return cfcnfg_add_adaptation_layer(get_caif_conf(), &param, 336 + return cfcnfg_add_adaptation_layer(cfg, &param, 343 337 client_layer, ifindex, 344 338 headroom, tailroom); 345 339 } ··· 341 347 342 348 int caif_disconnect_client(struct cflayer *adap_layer) 343 349 { 344 - return cfcnfg_disconn_adapt_layer(get_caif_conf(), adap_layer); 350 + return cfcnfg_disconn_adapt_layer(cfg, adap_layer); 345 351 } 346 352 EXPORT_SYMBOL(caif_disconnect_client); 347 - 348 - void caif_release_client(struct cflayer *adap_layer) 349 - { 350 - cfcnfg_release_adap_layer(adap_layer); 351 - } 352 - EXPORT_SYMBOL(caif_release_client); 353 353 354 354 /* Per-namespace Caif devices handling */ 355 355 static int caif_init_net(struct net *net)
+1 -1
net/caif/cfcnfg.c
··· 253 253 { 254 254 } 255 255 256 - int protohead[CFCTRL_SRV_MASK] = { 256 + static const int protohead[CFCTRL_SRV_MASK] = { 257 257 [CFCTRL_SRV_VEI] = 4, 258 258 [CFCTRL_SRV_DATAGRAM] = 7, 259 259 [CFCTRL_SRV_UTIL] = 4,
+7 -68
net/caif/cfctrl.c
··· 58 58 return &this->serv.layer; 59 59 } 60 60 61 - static bool param_eq(struct cfctrl_link_param *p1, struct cfctrl_link_param *p2) 61 + static bool param_eq(const struct cfctrl_link_param *p1, 62 + const struct cfctrl_link_param *p2) 62 63 { 63 64 bool eq = 64 65 p1->linktype == p2->linktype && ··· 101 100 return false; 102 101 } 103 102 104 - bool cfctrl_req_eq(struct cfctrl_request_info *r1, 105 - struct cfctrl_request_info *r2) 103 + static bool cfctrl_req_eq(const struct cfctrl_request_info *r1, 104 + const struct cfctrl_request_info *r2) 106 105 { 107 106 if (r1->cmd != r2->cmd) 108 107 return false; ··· 113 112 } 114 113 115 114 /* Insert request at the end */ 116 - void cfctrl_insert_req(struct cfctrl *ctrl, 115 + static void cfctrl_insert_req(struct cfctrl *ctrl, 117 116 struct cfctrl_request_info *req) 118 117 { 119 118 spin_lock(&ctrl->info_list_lock); ··· 124 123 } 125 124 126 125 /* Compare and remove request */ 127 - struct cfctrl_request_info *cfctrl_remove_req(struct cfctrl *ctrl, 128 - struct cfctrl_request_info *req) 126 + static struct cfctrl_request_info *cfctrl_remove_req(struct cfctrl *ctrl, 127 + struct cfctrl_request_info *req) 129 128 { 130 129 struct cfctrl_request_info *p, *tmp, *first; 131 130 ··· 153 152 { 154 153 struct cfctrl *this = container_obj(layer); 155 154 return &this->res; 156 - } 157 - 158 - void cfctrl_set_dnlayer(struct cflayer *this, struct cflayer *dn) 159 - { 160 - this->dn = dn; 161 - } 162 - 163 - void cfctrl_set_uplayer(struct cflayer *this, struct cflayer *up) 164 - { 165 - this->up = up; 166 155 } 167 156 168 157 static void init_info(struct caif_payload_info *info, struct cfctrl *cfctrl) ··· 294 303 } 295 304 return ret; 296 305 } 297 - 298 - void cfctrl_sleep_req(struct cflayer *layer) 299 - { 300 - int ret; 301 - struct cfctrl *cfctrl = container_obj(layer); 302 - struct cfpkt *pkt = cfpkt_create(CFPKT_CTRL_PKT_LEN); 303 - if (!pkt) { 304 - pr_warn("Out of memory\n"); 305 - return; 306 - } 307 - cfpkt_addbdy(pkt, CFCTRL_CMD_SLEEP); 308 - init_info(cfpkt_info(pkt), cfctrl); 309 - ret = 310 - cfctrl->serv.layer.dn->transmit(cfctrl->serv.layer.dn, pkt); 311 - if (ret < 0) 312 - cfpkt_destroy(pkt); 313 - } 314 - 315 - void cfctrl_wake_req(struct cflayer *layer) 316 - { 317 - int ret; 318 - struct cfctrl *cfctrl = container_obj(layer); 319 - struct cfpkt *pkt = cfpkt_create(CFPKT_CTRL_PKT_LEN); 320 - if (!pkt) { 321 - pr_warn("Out of memory\n"); 322 - return; 323 - } 324 - cfpkt_addbdy(pkt, CFCTRL_CMD_WAKE); 325 - init_info(cfpkt_info(pkt), cfctrl); 326 - ret = 327 - cfctrl->serv.layer.dn->transmit(cfctrl->serv.layer.dn, pkt); 328 - if (ret < 0) 329 - cfpkt_destroy(pkt); 330 - } 331 - 332 - void cfctrl_getstartreason_req(struct cflayer *layer) 333 - { 334 - int ret; 335 - struct cfctrl *cfctrl = container_obj(layer); 336 - struct cfpkt *pkt = cfpkt_create(CFPKT_CTRL_PKT_LEN); 337 - if (!pkt) { 338 - pr_warn("Out of memory\n"); 339 - return; 340 - } 341 - cfpkt_addbdy(pkt, CFCTRL_CMD_START_REASON); 342 - init_info(cfpkt_info(pkt), cfctrl); 343 - ret = 344 - cfctrl->serv.layer.dn->transmit(cfctrl->serv.layer.dn, pkt); 345 - if (ret < 0) 346 - cfpkt_destroy(pkt); 347 - } 348 - 349 306 350 307 void cfctrl_cancel_req(struct cflayer *layr, struct cflayer *adap_layer) 351 308 {
-35
net/caif/cfmuxl.c
··· 71 71 return 0; 72 72 } 73 73 74 - bool cfmuxl_is_phy_inuse(struct cflayer *layr, u8 phyid) 75 - { 76 - struct list_head *node; 77 - struct cflayer *layer; 78 - struct cfmuxl *muxl = container_obj(layr); 79 - bool match = false; 80 - spin_lock(&muxl->receive_lock); 81 - 82 - list_for_each(node, &muxl->srvl_list) { 83 - layer = list_entry(node, struct cflayer, node); 84 - if (cfsrvl_phyid_match(layer, phyid)) { 85 - match = true; 86 - break; 87 - } 88 - 89 - } 90 - spin_unlock(&muxl->receive_lock); 91 - return match; 92 - } 93 - 94 - u8 cfmuxl_get_phyid(struct cflayer *layr, u8 channel_id) 95 - { 96 - struct cflayer *up; 97 - int phyid; 98 - struct cfmuxl *muxl = container_obj(layr); 99 - spin_lock(&muxl->receive_lock); 100 - up = get_up(muxl, channel_id); 101 - if (up != NULL) 102 - phyid = cfsrvl_getphyid(up); 103 - else 104 - phyid = 0; 105 - spin_unlock(&muxl->receive_lock); 106 - return phyid; 107 - } 108 - 109 74 int cfmuxl_set_dnlayer(struct cflayer *layr, struct cflayer *dn, u8 phyid) 110 75 { 111 76 struct cfmuxl *muxl = (struct cfmuxl *) layr;
+5 -173
net/caif/cfpkt_skbuff.c
··· 42 42 bool erronous; 43 43 }; 44 44 45 - inline struct cfpkt_priv_data *cfpkt_priv(struct cfpkt *pkt) 45 + static inline struct cfpkt_priv_data *cfpkt_priv(struct cfpkt *pkt) 46 46 { 47 47 return (struct cfpkt_priv_data *) pkt->skb.cb; 48 48 } 49 49 50 - inline bool is_erronous(struct cfpkt *pkt) 50 + static inline bool is_erronous(struct cfpkt *pkt) 51 51 { 52 52 return cfpkt_priv(pkt)->erronous; 53 53 } 54 54 55 - inline struct sk_buff *pkt_to_skb(struct cfpkt *pkt) 55 + static inline struct sk_buff *pkt_to_skb(struct cfpkt *pkt) 56 56 { 57 57 return &pkt->skb; 58 58 } 59 59 60 - inline struct cfpkt *skb_to_pkt(struct sk_buff *skb) 60 + static inline struct cfpkt *skb_to_pkt(struct sk_buff *skb) 61 61 { 62 62 return (struct cfpkt *) skb; 63 63 } ··· 317 317 } 318 318 EXPORT_SYMBOL(cfpkt_setlen); 319 319 320 - struct cfpkt *cfpkt_create_uplink(const unsigned char *data, unsigned int len) 321 - { 322 - struct cfpkt *pkt = cfpkt_create_pfx(len + PKT_POSTFIX, PKT_PREFIX); 323 - if (!pkt) 324 - return NULL; 325 - if (unlikely(data != NULL)) 326 - cfpkt_add_body(pkt, data, len); 327 - return pkt; 328 - } 329 - EXPORT_SYMBOL(cfpkt_create_uplink); 330 - 331 320 struct cfpkt *cfpkt_append(struct cfpkt *dstpkt, 332 321 struct cfpkt *addpkt, 333 322 u16 expectlen) ··· 397 408 } 398 409 EXPORT_SYMBOL(cfpkt_split); 399 410 400 - char *cfpkt_log_pkt(struct cfpkt *pkt, char *buf, int buflen) 401 - { 402 - struct sk_buff *skb = pkt_to_skb(pkt); 403 - char *p = buf; 404 - int i; 405 - 406 - /* 407 - * Sanity check buffer length, it needs to be at least as large as 408 - * the header info: ~=50+ bytes 409 - */ 410 - if (buflen < 50) 411 - return NULL; 412 - 413 - snprintf(buf, buflen, "%s: pkt:%p len:%ld(%ld+%ld) {%ld,%ld} data: [", 414 - is_erronous(pkt) ? "ERRONOUS-SKB" : 415 - (skb->data_len != 0 ? "COMPLEX-SKB" : "SKB"), 416 - skb, 417 - (long) skb->len, 418 - (long) (skb_tail_pointer(skb) - skb->data), 419 - (long) skb->data_len, 420 - (long) (skb->data - skb->head), 421 - (long) (skb_tail_pointer(skb) - skb->head)); 422 - p = buf + strlen(buf); 423 - 424 - for (i = 0; i < skb_tail_pointer(skb) - skb->data && i < 300; i++) { 425 - if (p > buf + buflen - 10) { 426 - sprintf(p, "..."); 427 - p = buf + strlen(buf); 428 - break; 429 - } 430 - sprintf(p, "%02x,", skb->data[i]); 431 - p = buf + strlen(buf); 432 - } 433 - sprintf(p, "]\n"); 434 - return buf; 435 - } 436 - EXPORT_SYMBOL(cfpkt_log_pkt); 437 - 438 - int cfpkt_raw_append(struct cfpkt *pkt, void **buf, unsigned int buflen) 439 - { 440 - struct sk_buff *skb = pkt_to_skb(pkt); 441 - struct sk_buff *lastskb; 442 - 443 - caif_assert(buf != NULL); 444 - if (unlikely(is_erronous(pkt))) 445 - return -EPROTO; 446 - /* Make sure SKB is writable */ 447 - if (unlikely(skb_cow_data(skb, 0, &lastskb) < 0)) { 448 - PKT_ERROR(pkt, "skb_cow_data failed\n"); 449 - return -EPROTO; 450 - } 451 - 452 - if (unlikely(skb_linearize(skb) != 0)) { 453 - PKT_ERROR(pkt, "linearize failed\n"); 454 - return -EPROTO; 455 - } 456 - 457 - if (unlikely(skb_tailroom(skb) < buflen)) { 458 - PKT_ERROR(pkt, "buffer too short - failed\n"); 459 - return -EPROTO; 460 - } 461 - 462 - *buf = skb_put(skb, buflen); 463 - return 1; 464 - } 465 - EXPORT_SYMBOL(cfpkt_raw_append); 466 - 467 - int cfpkt_raw_extract(struct cfpkt *pkt, void **buf, unsigned int buflen) 468 - { 469 - struct sk_buff *skb = pkt_to_skb(pkt); 470 - 471 - caif_assert(buf != NULL); 472 - if (unlikely(is_erronous(pkt))) 473 - return -EPROTO; 474 - 475 - if (unlikely(buflen > skb->len)) { 476 - PKT_ERROR(pkt, "buflen too large - failed\n"); 477 - return -EPROTO; 478 - } 479 - 480 - if (unlikely(buflen > skb_headlen(skb))) { 481 - if (unlikely(skb_linearize(skb) != 0)) { 482 - PKT_ERROR(pkt, "linearize failed\n"); 483 - return -EPROTO; 484 - } 485 - } 486 - 487 - *buf = skb->data; 488 - skb_pull(skb, buflen); 489 - 490 - return 1; 491 - } 492 - EXPORT_SYMBOL(cfpkt_raw_extract); 493 - 494 - inline bool cfpkt_erroneous(struct cfpkt *pkt) 411 + bool cfpkt_erroneous(struct cfpkt *pkt) 495 412 { 496 413 return cfpkt_priv(pkt)->erronous; 497 414 } 498 415 EXPORT_SYMBOL(cfpkt_erroneous); 499 416 500 - struct cfpktq *cfpktq_create(void) 501 - { 502 - struct cfpktq *q = kmalloc(sizeof(struct cfpktq), GFP_ATOMIC); 503 - if (!q) 504 - return NULL; 505 - skb_queue_head_init(&q->head); 506 - atomic_set(&q->count, 0); 507 - spin_lock_init(&q->lock); 508 - return q; 509 - } 510 - EXPORT_SYMBOL(cfpktq_create); 511 - 512 - void cfpkt_queue(struct cfpktq *pktq, struct cfpkt *pkt, unsigned short prio) 513 - { 514 - atomic_inc(&pktq->count); 515 - spin_lock(&pktq->lock); 516 - skb_queue_tail(&pktq->head, pkt_to_skb(pkt)); 517 - spin_unlock(&pktq->lock); 518 - 519 - } 520 - EXPORT_SYMBOL(cfpkt_queue); 521 - 522 - struct cfpkt *cfpkt_qpeek(struct cfpktq *pktq) 523 - { 524 - struct cfpkt *tmp; 525 - spin_lock(&pktq->lock); 526 - tmp = skb_to_pkt(skb_peek(&pktq->head)); 527 - spin_unlock(&pktq->lock); 528 - return tmp; 529 - } 530 - EXPORT_SYMBOL(cfpkt_qpeek); 531 - 532 - struct cfpkt *cfpkt_dequeue(struct cfpktq *pktq) 533 - { 534 - struct cfpkt *pkt; 535 - spin_lock(&pktq->lock); 536 - pkt = skb_to_pkt(skb_dequeue(&pktq->head)); 537 - if (pkt) { 538 - atomic_dec(&pktq->count); 539 - caif_assert(atomic_read(&pktq->count) >= 0); 540 - } 541 - spin_unlock(&pktq->lock); 542 - return pkt; 543 - } 544 - EXPORT_SYMBOL(cfpkt_dequeue); 545 - 546 - int cfpkt_qcount(struct cfpktq *pktq) 547 - { 548 - return atomic_read(&pktq->count); 549 - } 550 - EXPORT_SYMBOL(cfpkt_qcount); 551 - 552 - struct cfpkt *cfpkt_clone_release(struct cfpkt *pkt) 553 - { 554 - struct cfpkt *clone; 555 - clone = skb_to_pkt(skb_clone(pkt_to_skb(pkt), GFP_ATOMIC)); 556 - /* Free original packet. */ 557 - cfpkt_destroy(pkt); 558 - if (!clone) 559 - return NULL; 560 - return clone; 561 - } 562 - EXPORT_SYMBOL(cfpkt_clone_release); 563 417 564 418 struct caif_payload_info *cfpkt_info(struct cfpkt *pkt) 565 419 {
+1 -6
net/caif/cfsrvl.c
··· 151 151 return -EINVAL; 152 152 } 153 153 154 - void cfservl_destroy(struct cflayer *layer) 155 - { 156 - kfree(layer); 157 - } 158 - 159 - void cfsrvl_release(struct kref *kref) 154 + static void cfsrvl_release(struct kref *kref) 160 155 { 161 156 struct cfsrvl *service = container_of(kref, struct cfsrvl, ref); 162 157 kfree(service);